* Meaning, that when created objects gets a refcount to 1.
* Destroying is instantaneous and we don't have to poll for a few secondss or so to wait until the object's refcount reach 0.
* We now track vlc_object_t's mem leaks when libvlc_global is released (Hard error for now, so they don't get unoticed)
* We fail hard if an object is released with a refcount of 1 without being detached from its parent and its children, to make sure such cases don't go unoticed.
(make test or make check still pass after that one. VLC is known to leak one object when no module is loaded, this must be fixed).
Missing some cases that I could not test.
Also ffmpeg/chroma.c is locked, so I can but leave it broken.
Fix is for the remaining modules is obvious and the issue is easy to detect.
Also, make it clearer what is shared and instance-specific
So,
libvlc_t ==> libvlc_global_t
vlc_t ==> libvlc_int_t (internal instance)
p_object->p_libvlc ==> p_object->p_libvlc_globale
p_object->p_vlc ==> p_object->p_libvlc
VLC_OBJECT_VLC ==> VLC_OBJECT_LIBVLC
And by the way, there is some cleanup required :) (ie, some things are created in the global object instead of the instance-specific one)
+ Added pda.glade to the list of Glade2 generated files.
+ Remove strings such as "http://" or "/dev/video0" from the list of
translated strings in the PDA interface.
* Fixed grammar, spelling, a few pathetic inconsistencies, removed trailing
whitespaces and tabulations here and there.
./modules/gui/gtk/gnome.c, ./modules/gui/familiar/familiar.c: added a
terminating NULL pointer in the fake argv values we pass to gtk_init().
* ./modules/misc/qte_main.cpp, ./modules/misc/gtk_main.c: these plugins now
have the "gui-helper" capability.
* ./modules/misc/gtk_main.c: paved the way for Gtk2.
vlc_mutex_need() and vlc_mutex_unneed().
* ./src/misc/variables.c: implemented VLC_VAR_MUTEX variables.
* ./modules/misc/gtk_main.c, ./src/libvlc.c: replaced named mutexes with
named mutex variables.
* ./src/misc/objects.c: structure_lock is now local.
* ./src/misc/threads.c: implemented named mutexes which provide a handy
way to protect data across plugins which might be sharing the same
resources. Thread-unsafe libraries come to mind, but we can imagine
using a named mutex for configuration files, or special devices.
* ./include/main.h: removed global_lock because of vlc_mutex_need, removed
p_global_data because it was never used, removed structure_lock because
it did not belong here.
* ./modules/misc/testsuite/*: moved the null module into three test modules
that are only built when --enable-testsuite is activated. This directory
can be a good place for compilation tests or performance benchmarks.
p_libvlc, and each p_vlc is a child of p_libvlc. Reasons for this are:
o the module bank and the message bank only need to be initialized once,
which gives faster loads when multiple instances of libvlc are used,
o we allow the possibility of different p_vlc sharing objects, for
instance the audio output,
o the CPU detection is only done once.
This patch is not polished yet, but I cannot do any intensive tests for
the moment because of a bug somewhere that leaves audio output objects
lying here and there which needs to be investigated first. The current
major issue is that the module bank is no longer freed.
* ALL : Added a priority argument to vlc_thread_create(), so that audio
and input threads can run with a higher real-time priority, on systems
allowing you to use priorities.
won't unload it. This makes us more fault-tolerant with crap libraries
that are making use of atexit().
* ./configure.in: svgalib can now be a plugin.
* ./modules/misc/gtk_main.c: gtk_main doesn't need g_atexit anymore.
gtk_main() in its own thread, and does nothing on subsequent calls. This
ensures that gtk_main is only running once.
* ./modules/gui/familiar/*, modules/gui/gtk/*: the familiar, gtk and gnome
modules are now fully reentrant thanks to their use of the gtk_main module.
* ./src/libvlc.c: implemented vlc_set(), a wrapper for config_Put* available
to external programs.
* ./src/libvlc.c: removed vlc_stop() and vlc_end(), everything is now done
by vlc_destroy().
* ./modules/control/rc/rc.c: implemented a few new functions. For instance,
run "vlc -I rc" and then type "intf gtk" or "intf gnome". You can even
launch several of them. "segfault" works, too.