]> git.sesse.net Git - vlc/blobdiff - src/misc/modules.c
* - This should fix the "crash upon quit" issue with VLC Mac OS X.
[vlc] / src / misc / modules.c
index f2b661853cf8bcd3d26d92ea637c1ebd101a47a9..7efcd796613c89a5d7efa8584063aff64c76658a 100644 (file)
@@ -1,7 +1,7 @@
 /*****************************************************************************
  * modules.c : Builtin and plugin modules management functions
  *****************************************************************************
- * Copyright (C) 2001-2004 VideoLAN
+ * Copyright (C) 2001-2004 the VideoLAN team
  * $Id$
  *
  * Authors: Sam Hocevar <sam@zoy.org>
@@ -79,6 +79,7 @@
 #include "vlc_error.h"
 
 #include "vlc_interface.h"
+#include "vlc_interaction.h"
 #include "intf_eject.h"
 
 #include "vlc_playlist.h"
@@ -92,8 +93,8 @@
 #include "aout_internal.h"
 
 #include "stream_output.h"
-#include "osd.h"
 #include "vlc_httpd.h"
+#include "vlc_acl.h"
 #include "vlc_tls.h"
 #include "vlc_md5.h"
 #include "vlc_xml.h"
 #include "vlc_vlm.h"
 
 #include "vlc_image.h"
+#include "vlc_osd.h"
 
 #if defined( _MSC_VER ) && defined( UNDER_CE )
 #    include "modules_builtin_evc.h"
@@ -192,7 +194,7 @@ void __module_InitBank( vlc_object_t *p_this )
     /*
      * Store the symbols to be exported
      */
-#ifdef HAVE_DYNAMIC_PLUGINS
+#if defined (HAVE_DYNAMIC_PLUGINS) && !defined (HAVE_SHARED_LIBVLC)
     STORE_SYMBOLS( &p_bank->symbols );
 #endif
 
@@ -1088,7 +1090,9 @@ static module_t * AllocatePlugin( vlc_object_t * p_this, char * psz_file )
     /* We need to fill these since they may be needed by CallEntry() */
     p_module->psz_filename = psz_file;
     p_module->handle = handle;
+#ifndef HAVE_SHARED_LIBVLC
     p_module->p_symbols = &p_this->p_libvlc->p_module_bank->symbols;
+#endif
     p_module->b_loaded = VLC_TRUE;
 
     /* Initialize the module: fill p_module, default config */
@@ -1376,7 +1380,6 @@ static int LoadModule( vlc_object_t *p_this, char *psz_file,
 
 #elif defined(HAVE_DL_DLOPEN) && defined(RTLD_NOW)
     /* static is OK, we are called atomically */
-    static vlc_bool_t b_kde = VLC_FALSE;
 
 #   if defined(SYS_LINUX)
     /* XXX HACK #1 - we should NOT open modules with RTLD_GLOBAL, or we
@@ -1393,18 +1396,6 @@ static int LoadModule( vlc_object_t *p_this, char *psz_file,
         }
     }
 #   endif
-    /* XXX HACK #2 - the ugly KDE workaround. It seems that libkdewhatever
-     * causes dlopen() to segfault if libstdc++ is not loaded in the caller,
-     * so we just load libstdc++. Bwahahaha! ph34r! -- Sam. */
-    /* Update: FYI, this is Debian bug #180505, and seems to be fixed. */
-    if( !b_kde && !strstr( psz_file, "kde" ) )
-    {
-        dlopen( "libstdc++.so.6", RTLD_NOW )
-         || dlopen( "libstdc++.so.5", RTLD_NOW )
-         || dlopen( "libstdc++.so.4", RTLD_NOW )
-         || dlopen( "libstdc++.so.3", RTLD_NOW );
-        b_kde = VLC_TRUE;
-    }
 
     handle = dlopen( psz_file, RTLD_NOW );
     if( handle == NULL )
@@ -2157,7 +2148,9 @@ static void CacheMerge( vlc_object_t *p_this, module_t *p_cache,
 
     p_cache->pf_activate = p_module->pf_activate;
     p_cache->pf_deactivate = p_module->pf_deactivate;
+#ifndef HAVE_SHARED_LIBVLC
     p_cache->p_symbols = p_module->p_symbols;
+#endif
     p_cache->handle = p_module->handle;
 
     for( i_submodule = 0; i_submodule < p_module->i_children; i_submodule++ )
@@ -2166,7 +2159,9 @@ static void CacheMerge( vlc_object_t *p_this, module_t *p_cache,
         module_t *p_cchild = (module_t*)p_cache->pp_children[i_submodule];
         p_cchild->pf_activate = p_child->pf_activate;
         p_cchild->pf_deactivate = p_child->pf_deactivate;
+#ifndef HAVE_SHARED_LIBVLC
         p_cchild->p_symbols = p_child->p_symbols;
+#endif
     }
 
     p_cache->b_loaded = VLC_TRUE;