[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