From: Erwan Tulou Date: Mon, 22 Feb 2010 20:55:16 +0000 (+0100) Subject: Win32: use linked_with_a_crap_library_which_uses_atexit() (libxml2 and libqt4) X-Git-Tag: 1.1.0-pre1~690 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=2bac8977d8c2d8877dc0c0df7bc635a6dc5cbdf4;p=vlc Win32: use linked_with_a_crap_library_which_uses_atexit() (libxml2 and libqt4) On windows, - libxml2 spawns a 'watchdog' thread, when statically linked. - libqt4 spawns a 'watcher' thread. These threads clean up remaining ressources once their initiator thread has terminated. So, the associated dll must NOT be freed explicitly and blindly. Since there is no means to know when these 'cleanup' threads terminate, the safe approach is to not free the dlls and let freeing occur when vlc terminates. --- diff --git a/modules/gui/qt4/qt4.cpp b/modules/gui/qt4/qt4.cpp index b70275616a..d3d9ad266c 100644 --- a/modules/gui/qt4/qt4.cpp +++ b/modules/gui/qt4/qt4.cpp @@ -246,6 +246,10 @@ vlc_module_begin () add_obsolete_bool( "qt-blingbling" ) /* Suppressed since 1.0.0 */ +#ifdef WIN32 + linked_with_a_crap_library_which_uses_atexit() +#endif + add_submodule () set_description( "Dialogs provider" ) set_capability( "dialogs provider", 51 ) diff --git a/modules/misc/xml/libxml.c b/modules/misc/xml/libxml.c index 71f26e69ab..80c44a5252 100644 --- a/modules/misc/xml/libxml.c +++ b/modules/misc/xml/libxml.c @@ -45,6 +45,11 @@ vlc_module_begin () set_description( N_("XML Parser (using libxml2)") ) set_capability( "xml", 10 ) set_callbacks( Open, Close ) + +#ifdef WIN32 + linked_with_a_crap_library_which_uses_atexit() +#endif + vlc_module_end () struct xml_reader_sys_t