/*****************************************************************************
* 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>
#include "vlc_error.h"
#include "vlc_interface.h"
+#include "vlc_interaction.h"
#include "intf_eject.h"
#include "vlc_playlist.h"
#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"
/*
* 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
/* 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 */
#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
}
}
# 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 )
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++ )
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;