[vlc-devel] commit: Win32: don't use weak linking for SignalObjectAndWait ( Rémi Denis-Courmont )

git version control git at videolan.org
Wed Apr 23 20:32:46 CEST 2008


vlc | branch: master | Rémi Denis-Courmont <rem at videolan.org> | Wed Apr 23 21:33:45 2008 +0300| [63baa1df69663f280e010d58e5fdc5f740e3a4c0]

Win32: don't use weak linking for SignalObjectAndWait

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=63baa1df69663f280e010d58e5fdc5f740e3a4c0
---

 include/vlc_threads.h       |    1 -
 include/vlc_threads_funcs.h |   16 ++++------------
 src/misc/threads.c          |   37 ++-----------------------------------
 3 files changed, 6 insertions(+), 48 deletions(-)

diff --git a/include/vlc_threads.h b/include/vlc_threads.h
index e35ce88..4b695f7 100644
--- a/include/vlc_threads.h
+++ b/include/vlc_threads.h
@@ -140,7 +140,6 @@ typedef struct
     volatile int        i_waiting_threads;
     /* WinNT/2K/XP implementation */
     HANDLE              event;
-    SIGNALOBJECTANDWAIT SignalObjectAndWait;
     /* Win95/98/ME implementation */
     HANDLE              semaphore;
     CRITICAL_SECTION    csection;
diff --git a/include/vlc_threads_funcs.h b/include/vlc_threads_funcs.h
index 1992826..adadb03 100644
--- a/include/vlc_threads_funcs.h
+++ b/include/vlc_threads_funcs.h
@@ -282,12 +282,8 @@ static inline void __vlc_cond_wait( const char * psz_file, int i_line,
 
         if( p_mutex->mutex )
         {
-            /* It is only possible to atomically release the mutex and
-             * initiate the waiting on WinNT/2K/XP. Win9x doesn't have
-             * SignalObjectAndWait(). */
-            p_condvar->SignalObjectAndWait( p_mutex->mutex,
-                                            p_condvar->event,
-                                            INFINITE, FALSE );
+            SignalObjectAndWait( p_mutex->mutex, p_condvar->event,
+                                 INFINITE, FALSE );
         }
         else
         {
@@ -414,12 +410,8 @@ static inline int __vlc_cond_timedwait( const char * psz_file, int i_line,
 
         if( p_mutex->mutex )
         {
-            /* It is only possible to atomically release the mutex and
-             * initiate the waiting on WinNT/2K/XP. Win9x doesn't have
-             * SignalObjectAndWait(). */
-            result = p_condvar->SignalObjectAndWait( p_mutex->mutex,
-                                            p_condvar->event,
-                                            delay_ms, FALSE );
+            result = SignalObjectAndWait( p_mutex->mutex, p_condvar->event,
+                                          delay_ms, FALSE );
         }
         else
         {
diff --git a/src/misc/threads.c b/src/misc/threads.c
index b634b64..f535232 100644
--- a/src/misc/threads.c
+++ b/src/misc/threads.c
@@ -51,9 +51,6 @@ static vlc_object_t *p_root;
 #if defined( UNDER_CE )
 #elif defined( WIN32 )
 
-/* following is only available on NT/2000/XP and above */
-static SIGNALOBJECTANDWAIT pf_SignalObjectAndWait = NULL;
-
 /*
 ** On Windows NT/2K/XP we use a slow mutex implementation but which
 ** allows us to correctly implement condition variables.
@@ -164,29 +161,6 @@ int __vlc_threads_init( vlc_object_t *p_this )
         /* We should be safe now. Do all the initialization stuff we want. */
         p_libvlc_global->b_ready = false;
 
-#if defined( UNDER_CE )
-        /* Nothing to initialize */
-
-#elif defined( WIN32 )
-        /* Dynamically get the address of SignalObjectAndWait */
-        if( GetVersion() < 0x80000000 )
-        {
-            HINSTANCE hInstLib;
-
-            /* We are running on NT/2K/XP, we can use SignalObjectAndWait */
-            hInstLib = LoadLibrary(_T("kernel32"));
-            if( hInstLib )
-            {
-                pf_SignalObjectAndWait =
-                    (SIGNALOBJECTANDWAIT)GetProcAddress( hInstLib,
-                                                  _T("SignalObjectAndWait") );
-            }
-        }
-
-#elif defined( HAVE_KERNEL_SCHEDULER_H )
-#elif defined( LIBVLC_USE_PTHREAD )
-#endif
-
         p_root = vlc_custom_create( VLC_OBJECT(p_libvlc_global), 0,
                                     VLC_OBJECT_GLOBAL, "global" );
         if( p_root == NULL )
@@ -279,13 +253,8 @@ int __vlc_mutex_init( vlc_mutex_t *p_mutex )
     return 0;
 
 #elif defined( WIN32 )
-    /* We use mutexes on WinNT/2K/XP because we can use the SignalObjectAndWait
-     * function and have a 100% correct vlc_cond_wait() implementation.
-     * As this function is not available on Win9x, we can use the faster
-     * CriticalSections */
-    if( pf_SignalObjectAndWait && !b_fast_mutex )
+    if( !b_fast_mutex )
     {
-        /* We are running on NT/2K/XP, we can use SignalObjectAndWait */
         p_mutex->mutex = CreateMutex( 0, FALSE, 0 );
         return ( p_mutex->mutex != NULL ? 0 : 1 );
     }
@@ -426,10 +395,8 @@ int __vlc_cond_init( vlc_cond_t *p_condvar )
 
     /* Misc init */
     p_condvar->i_win9x_cv = i_win9x_cv;
-    p_condvar->SignalObjectAndWait = pf_SignalObjectAndWait;
 
-    if( (p_condvar->SignalObjectAndWait && !b_fast_mutex)
-        || p_condvar->i_win9x_cv == 0 )
+    if( !b_fast_mutex || p_condvar->i_win9x_cv == 0 )
     {
         /* Create an auto-reset event. */
         p_condvar->event = CreateEvent( NULL,   /* no security */




More information about the vlc-devel mailing list