[vlc-devel] D-Bus multiple APIs in vlc code
funman at videolan.org
Tue Nov 28 14:38:21 CET 2006
VLC, in trunk, at the moment support 4 different versions of D-Bus api ( < 0.30, 0.30, 0.92, 1.0.0) and 2 different versions of HAL api ( >= 0.2.97, >= 0.5.0 )
D-Bus has been changing API fast over its development, and now has reached version 1.0, with a stable API.
You will note that before D-Bus 1.0RC3 (released 6 days before 1.0) you had to define "DBUS_API_SUBJECT_TO_CHANGE" to be able to compile code using it, to ensure programmers did know that API was unstable.
HAL is still considered API-unstable.
When doing some D-Bus and HAL related code, I fixed a non-critical bug, where vlc didn't unreference the D-Bus connection when it wouldn't use it anymore.
This is the correct way to use D-Bus.
However JP Saman noticed that this would cause vlc to segfault on his distro, using version 0.33 of D-Bus.
Another problem of D-Bus is that for an application to be able to use it from multiple threads, it has to call the dbus_thread_init() function.
You have to provide this function pointers to a lot of function needed for threads management, and it is not possible given current vlc threads implementation.
However, this is simple since D-Bus 0.93, because this version added dbus_thread_init_default() that is all we really need.
So my proposal is to get rid of 4 D-Bus dependancies, and only be compatible with D-Bus >= 1.0.0 to avoid using old, buggy & deprecated stuff.
The same could be applied for HAL, but I got no trouble reports on that part. Anyway that would make code look far better to only support one API.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Size: 187 bytes
Desc: not available
More information about the vlc-devel