Fixed a playlist race condition on input events.
The playlist was loosing state events from input. And thus it may not
always be able to detect (by itself) the end of a stream (It happens
easily with small playlist files).
Setting that argument to NULL will make playlist_CreateNode() behave like previously.
That way we can create only one input per pair of node (for local playlist, media library, and service discovery)
Previous behaviour was to create 2 inputs with the same i_id member, but we would store both input in a binary search tree (sorted by i_id), and that kind of tree MUST NOT have 2 items with the same key, else we will get some bad memory corruption when the wrong input is removed from the tree (the other being left in the tree while the memory referred by it was freed).
Note that this breaks ABI
releasing it. mutex locks /= 20 on a standard preparse run
* Only create absolutely necessary variables while preparsing
--> Preparse speed *= 4 (with item in disk cache of course)
* Do not rebuild playlist too much while adding a directory. Add a new flag
to NodeCreate and Add to control this behaviour
* libvlc sources and plugins now define __LIBVLC__ and headers exported to
plugins (ie, include/vlc_*.h) check for this
* libvlc sources use the value of the "libvlc" component in vlc-config instead
of vlc
* Apply flags directly to "libvlc" in configure.ac - might temporarily break win32 :)
* Headers in include must contain the structures and prototypes needed
by the plugins and should be named vlc_*.
* Headers in include/vlc must contain the structures and prototypes
needed by external libvlc clients
* Moved and renamed some things in headers.
- Removed vlc_cpu.h, vlc_error.h (merged in vlc_common)
- Removed snapshot.h (merged in vlc_vout.h)
- Removed vlc_spu.h (merged in vlc_osd.h)
- Removed intf_eject.h and vlc_interaction.h (merged in vlc_interface)
- Moved all internal headers to src
- Merged vlc_video.h and video_output.h and move private things to src
- Removed vlc/intf.h, vlc/aout.h, vlc/vout.h, vlc/decoder.h and vlc/input.h
(meta headers for use in modules, and often implying too large
dependencies)
* Removed some useless dependencies
* Unexported a bunch of functions and structures used only in src/
(--> Still some work here)
* Finally made input_thread_t and input_source_t (mostly) private.
Added input_GetItem to fetch the input_item of an input_thread
* Cleaned up deprecated entries in vlc_symbols.h and bumped up symbol
prefix
This commit has a 99% probability of breaking the build, 0.1% of killing
your cat and 0% of getting you hot chicks.
* Unexported a few internal functions
(playlist_ItemDelete, playlist_ThreadCreate, playlist_ThreadDestroy)
* Remove playlist_AddSDModules and merge its features into ServicesDiscoveryAdd
* Fix a bug in signaling of node destruction (fixes Qt source selector assertion failures)
* Disable unused generic devices probe code
- Remove a bunch of transition now-useless API.
- Remove all playlist_Lock* functions. Matching functions now accept a
b_locked parameter that should be set to VLC_TRUE if the playlist is
locked when calling the function. The advantages are that it reduces
the API bloat and that the b_locked flag can be propagated in the
call stack
- Remove useless playlist testsuite
- Remove broken daap plugin (unmaintained wrt VLC API changes, relies on
an unmaintained library, probably unable to read content from new itunes,
...). Implementations exist in rhythmbox, xmms2 and
daap-sharp, we should see if a proper lib exists or if we could
make one
- Reduce verbosity a bit
- Documentation
Not tested heavily yet ...
For interaction implementers: you need to call playlist_Signal after changing the status of a dialog. Please see the diff for qt4/dialogs/interaction.cpp
* Remove the random special case
* Use the array of currently playing items for all cases
* Convert array items to array API
* Replace standard searches in sorted arrays by bsearches
* Size is not yet fixed (next round).
Array
* Add reset/value and bsearch functions
* Add foreach helper
* Secondary queue items now have a b_fetch_art flag
* You can use the playlist_AskForArtEnqueue function to ask for art from an interface. This will enqueue at the begining of the secondary queue
* other stuff which i don't remember :)
* (fix issues with previous (and unrelated) DIR_SEP commit)
What is currently broken:
* Some playlist demuxers (shout, dvb and pls)
* DAAP
* BeOS playlist
* GPE playlist, I suppose
What has some trouble:
* Meta handling in several demuxers (most notably TS)
* Skins2 playlist (doesn't refresh correctly)
* OS X playlist (see bigben's latest commits)