]> git.sesse.net Git - vlc/blobdiff - include/vlc_common.h
Hide libvlc_global_data_t from plugins
[vlc] / include / vlc_common.h
index a50a6f338dda76b073dede837d46b9736006d7b8..0001dde096a900bac1e4c21e880a46c8d4272f6d 100644 (file)
@@ -472,22 +472,39 @@ typedef int ( * vlc_callback_t ) ( vlc_object_t *,      /* variable's object */
 
 #if defined (WIN32) && defined (DLL_EXPORT)
 #  ifdef __cplusplus
+#    define VLC_PUBLIC_API __declspec(dllexport) 
 #    define   VLC_EXPORT( type, name, args ) extern "C" __declspec(dllexport) type name args
 #    define VLC_INTERNAL( type, name, args ) extern "C" type name args
 #  else
+#    define VLC_PUBLIC_API extern __declspec(dllexport) 
 #    define   VLC_EXPORT( type, name, args ) __declspec(dllexport) type name args
 #    define VLC_INTERNAL( type, name, args ) type name args
 #  endif
 #else
 #  if !defined (__PLUGIN__) || defined (HAVE_SHARED_LIBVLC)
 #    ifdef __cplusplus
+#      if HAVE_ATTRIBUTE_VISIBILITY
+#         define VLC_PUBLIC_API __attribute__((visibility("default")))
+#         define   VLC_EXPORT( type, name, args ) extern "C" __attribute__((visibility("default"))) type name args
+#         define VLC_INTERNAL( type, name, args ) extern "C" __attribute__((visibility("hidden"))) type name args
+#      else
+#         define VLC_PUBLIC_API
 #         define   VLC_EXPORT( type, name, args ) extern "C" type name args
 #         define VLC_INTERNAL( type, name, args ) extern "C" type name args
+#      endif
 #    else
+#      if HAVE_ATTRIBUTE_VISIBILITY
+#         define VLC_PUBLIC_API extern __attribute__((visibility("default")))
+#         define   VLC_EXPORT( type, name, args ) __attribute__((visibility("default"))) type name args
+#         define VLC_INTERNAL( type, name, args ) __attribute__((visibility("hidden"))) type name args
+#      else
+#         define VLC_PUBLIC_API extern 
 #         define   VLC_EXPORT( type, name, args ) type name args
 #         define VLC_INTERNAL( type, name, args ) type name args
+#      endif
 #    endif
 #  else
+#    define VLC_PUBLIC_API 
 #    define   VLC_EXPORT( type, name, args ) struct _u_n_u_s_e_d_
 #    define VLC_INTERNAL( type, name, args ) struct _u_n_u_s_e_d_
      extern module_symbols_t* p_symbols;
@@ -549,7 +566,7 @@ typedef int ( * vlc_callback_t ) ( vlc_object_t *,      /* variable's object */
     variable_t *    p_vars;                                                 \
                                                                             \
     /* Stuff related to the libvlc structure */                             \
-    libvlc_global_data_t *p_libvlc_global;         /**< root of all evil */ \
+    vlc_object_t *p_libvlc_global;                 /**< root of all evil */ \
     libvlc_int_t *p_libvlc;                  /**< (root of all evil) - 1 */ \
                                                                             \
     volatile int    i_refcount;                         /**< usage count */ \
@@ -1145,6 +1162,7 @@ VLC_EXPORT( int, __vlc_execve, ( vlc_object_t *p_object, int i_argc, char *const
 #define CPU_CAPABILITY_SSE2    (1<<7)
 #define CPU_CAPABILITY_ALTIVEC (1<<16)
 #define CPU_CAPABILITY_FPU     (1<<31)
+VLC_EXPORT( unsigned, vlc_CPU, ( void ) );
 
 /*****************************************************************************
  * I18n stuff
@@ -1185,6 +1203,7 @@ VLC_EXPORT( const char *, VLC_CompileHost, ( void ) );
 VLC_EXPORT( const char *, VLC_CompileDomain, ( void ) );
 VLC_EXPORT( const char *, VLC_Compiler, ( void ) );
 VLC_EXPORT( const char *, VLC_Error, ( int ) );
+VLC_EXPORT( const char *, VLC_Changeset, ( void ) );
 
 /*****************************************************************************
  * Additional vlc stuff
@@ -1193,10 +1212,7 @@ VLC_EXPORT( const char *, VLC_Error, ( int ) );
 #   ifdef HAVE_DIRENT_H
 #   include <dirent.h>  /* for DIR typedef in vlc_symbols.h */
 #   endif
-VLC_EXPORT( const char *, VLC_Changeset, ( void ) );
 #   include "vlc_symbols.h"
-#else
-#   define VLC_Changeset( ) ("exported")
 #endif
 #include "vlc_os_specific.h"
 #include "vlc_messages.h"