libcdio-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Libcdio-devel] Miscellaneous questions, primarily on design


From: Samuel May
Subject: [Libcdio-devel] Miscellaneous questions, primarily on design
Date: Fri, 20 Mar 2020 13:48:55 -0700

Hello everyone!

I'm working on Haskell bindings to libcdio (I have ~plans~ for wrangling 
my weird music library requirements and/or preferences into a generally 
usable program suite and just love that language; of course I couldn't 
simply half-ass the layers nobody cares about...), and in the process of 
writing those I've come up with a few questions:

* Is there any deliberate reasoning behind 2.1.0 not adding a
  cdtext_get_language_index(..) with cdtext_select_language_index(..)?  
  Having the means to jump exactly where you want doesn't mean that you 
  can get back to where you started with just cdtext_get_language(..) -- 
  what if we just happen to have been on the /second/ 
  CDTEXT_LANGUAGE_ENGLISH block by some perverse CDTEXT author, or more 
  realistically which of several CDTEXT_LANGUAGE_UNUSED?

* What about changing the language of a block?  I know libcdio 
  isn't primarily a disc-authoring library, though with cdtext_set(..) 
  and cdio_get_cdtext_raw(..) it can definitely be used constructively 
  -- but without cdtext_set_current_language(..) or similar, there's 
  always a little bit which would need to be tweaked afterward, or empty 
  blocks which need to be generated and piped into cdtext_data_init(..) 
  manually before starting to write anything new.

* Likewise should cdtext_set(..) really leave cdtext_get_first_track(..) 
  and cdtext_get_last_track(..) with the original bounds?  I'm sure some 
  weirdness might crop up if those don't match with the start/end tracks 
  from the disc as a whole, but on the other hand I didn't expect the 
  current behaviour and I'm sure I'm not the only one -- at the very 
  least, it should be documented.

* On a less general note, is there any API or #define means to disable 
  or redirect the warning messages printed to stdout?  I still need to 
  figure out how to pass them to the user, but Haskell has a thing about 
  avoiding unexpected side effects, and text suddenly appearing in the 
  terminal certainly counts.

* More troublingly, has anyone ever run into issues with CdIo_t sessions 
  locking up your drives?  If I call some functions (I don't /think/ it 
  happens across the board, but I haven't gone looking for a pattern 
  yet) the physical button on the front of my drive stops working until 
  I call cdio_eject_media(..) or *_drive(..) from the software side.  I 
  know it's an issue with my Haskell, and likely with cdio_destroy(..) 
  not getting called by the garbage collector for some reason, but I 
  figured if anyone had come across before it in earlier development, 
  you could save me time digging to verify that.

* Finally, is there a vetting process or anything else I should be aware 
  of for language bindings?  It's not ready for prime time yet, as that 
  last question shows, but I will be hoping to release these for public 
  use once I get a bit more patching and polishing done -- at first with 
  just what an "#import <cdio/cdio.h>" will get you, but eventually with 
  the entire library.

Thanks!

Sam



reply via email to

[Prev in Thread] Current Thread [Next in Thread]