* Make registration thread-safe, and independent on vlc_list_find().
* Fix use-after-free race condition when destroying the interface
(interaction will be lost instead).
While reading this, you will find a bunch of:
while (find (VLC_OBJECT_INTERFACE))
release; release;
These are of course plain BUGS (which are neither introduced nor fixed
by this commit). Imagine, for instance, what happens if two threads run
the code above at the same time... they end up releasing the interface
once too many.
Some comments about the naming of the subtitles (mplayer doesn't name as gnome-subtitles does, and none of them respect the main conventions)
Most of the subtitles format are now parsed. However, some styles are still discarded.
* 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.
When true, the interface will automatically start playing the playlist when (and only when) it is ready. (particularly useful for embedded vouts).
* src/libvlc.c, src/vlc.c: new VLC_AddIntf() prototype.
* src/interface/interface.c: if the interface doesn't support "playing on start", do it ourselves.
* modules/gui/wxwindows/wxwindows.cpp: implement "play on start".
* modules/gui/wxwindows/video.cpp: implement vout_ControlWindow().
* modules/video_output/directx/events.c, modules/video_output/x11/xcommon.c:
+ call vout_ControlWindow() when resizing in embedded mode.
+ implemented a VOUT_REPARENT/CLOSE mode in Control() so the interface can signal that it closes its video window.
+ new input_Control() function (doesn't do much for now).
+ started bookmarks support through input_Control().
+ new --bookmarks={name=foo,bytes=foo,time=foo},{...} config option.
* src/video_output/*:
+ started support for embeddable vouts (vout_RequestWindow()/vout_ReleaseWindow())
+ new --video-x/y config options
- splitted the enormous playlist.c file
- implemented a better item group system: groups have a name
and must be created before use by
playlist_CreateGroup( p_playlist, "newgroupname")
* modules/misc/sap.c
- Create our own playlist group ("SAP") and use it
* modules/access/slp.c
- Create our own playlist group ("SLP") and use it
* modules/demux/util/id3tag.c
- Trigger playlist update when we have parsed our tag
* modules/gui/wxwindows/interface.cpp
- Fixed the about box by using vlc_wraptext
- Added the simple open and the streaming wizard icons
*** Icons need to be changed ! ***
- Added the visualization to the extended gui
* modules/gui/wxwindows/preferences.cpp && include/vlc_help.h
- Enlarged the window to fit the wrapped text
- Added help for audio encoders
* modules/gui/wxwindows/stream.cpp & open.cpp & include/vlc_interface.h
- Created a "streaming wizard" window (3-step streaming)
* modules/gui/wxwindows/iteminfo.cpp:
- Group change is now based on the name
* modules/gui/wxwindows/playlist.cpp
- Added author and group columns to the listview
- Redesigned the window
- Added the Sort menu with several criteria (title, author, group)
- Added up/down buttons to move an item in the playlist
- Added the group menu to enable/disable a group in an understandable way
TODO:
-----
* playlist core :
- Implement advanced sort capabilities (multi-criteria)
- File format to save the new features
- export playlist (to M3U, eg)
- more robust group creation (duplicates check, ...)
* wxWindows playlist:
The idea of a treeview seems impossible, because of wxWindow's treeview,
that don't allow multi-selection, and, as far as I know, multi-columns.
- Provide a frontend to advanced sort (when it's done :-) )
- Allow moving items by drag & drop (well, if possible, haven't checked yet)
- Allow moving several items at once
- Customizable listview (ability to remove/move columns)
- Find a solution to the focus problem
(when you change track, the selected one scrolls at the
bottom of the visible screen)
* wxWindows interface:
- New icons, our icons begin to get old and not so pretty
- Find a solution for the volume bar (nobody understands what it is)
Use wxApp::OnExit() to cleanup the dialogs provider.
Added a "Miscellaneous" section to the menu. Added a "Switch interface" and "Add interface" entries to this menu.
* modules/gui/skins/src/*: dialog providers have object types of VLC_OBJECT_DIALOGS.
Don't forget to attach/detach the dialogs provider to its parent intf.
Work around a bug in imlib2 when we close the plugin.
* src/misc/objects.c, include/vlc_objects.h: added VLC_OBJECT_DIALOGS for dialogs providers.
* src/interface/interface.c, include/vlc_interface.h: added 2 object variables to switch/add interfaces on the fly (intf-switch and intf-add).
Dialog providers expose an api that allow other modules to use the GUI dialogs the module provides (open dialogs, etc...).
+ misc small enhancements.
* modules/gui/skins/*: completely removed the dependancy on the wxwindows code (which also eliminates the need for the basic_skins module).
The skins module will now try to load a "dialogs provider" to display the open, messages, file info and preferences dialogs.