Commit 63baa1df authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

Win32: don't use weak linking for SignalObjectAndWait

parent 14d8baf7
...@@ -140,7 +140,6 @@ typedef struct ...@@ -140,7 +140,6 @@ typedef struct
volatile int i_waiting_threads; volatile int i_waiting_threads;
/* WinNT/2K/XP implementation */ /* WinNT/2K/XP implementation */
HANDLE event; HANDLE event;
SIGNALOBJECTANDWAIT SignalObjectAndWait;
/* Win95/98/ME implementation */ /* Win95/98/ME implementation */
HANDLE semaphore; HANDLE semaphore;
CRITICAL_SECTION csection; CRITICAL_SECTION csection;
......
...@@ -282,12 +282,8 @@ static inline void __vlc_cond_wait( const char * psz_file, int i_line, ...@@ -282,12 +282,8 @@ static inline void __vlc_cond_wait( const char * psz_file, int i_line,
if( p_mutex->mutex ) if( p_mutex->mutex )
{ {
/* It is only possible to atomically release the mutex and SignalObjectAndWait( p_mutex->mutex, p_condvar->event,
* initiate the waiting on WinNT/2K/XP. Win9x doesn't have INFINITE, FALSE );
* SignalObjectAndWait(). */
p_condvar->SignalObjectAndWait( p_mutex->mutex,
p_condvar->event,
INFINITE, FALSE );
} }
else else
{ {
...@@ -414,12 +410,8 @@ static inline int __vlc_cond_timedwait( const char * psz_file, int i_line, ...@@ -414,12 +410,8 @@ static inline int __vlc_cond_timedwait( const char * psz_file, int i_line,
if( p_mutex->mutex ) if( p_mutex->mutex )
{ {
/* It is only possible to atomically release the mutex and result = SignalObjectAndWait( p_mutex->mutex, p_condvar->event,
* initiate the waiting on WinNT/2K/XP. Win9x doesn't have delay_ms, FALSE );
* SignalObjectAndWait(). */
result = p_condvar->SignalObjectAndWait( p_mutex->mutex,
p_condvar->event,
delay_ms, FALSE );
} }
else else
{ {
......
...@@ -51,9 +51,6 @@ static vlc_object_t *p_root; ...@@ -51,9 +51,6 @@ static vlc_object_t *p_root;
#if defined( UNDER_CE ) #if defined( UNDER_CE )
#elif defined( WIN32 ) #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 ** On Windows NT/2K/XP we use a slow mutex implementation but which
** allows us to correctly implement condition variables. ** allows us to correctly implement condition variables.
...@@ -164,29 +161,6 @@ int __vlc_threads_init( vlc_object_t *p_this ) ...@@ -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. */ /* We should be safe now. Do all the initialization stuff we want. */
p_libvlc_global->b_ready = false; 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, p_root = vlc_custom_create( VLC_OBJECT(p_libvlc_global), 0,
VLC_OBJECT_GLOBAL, "global" ); VLC_OBJECT_GLOBAL, "global" );
if( p_root == NULL ) if( p_root == NULL )
...@@ -279,13 +253,8 @@ int __vlc_mutex_init( vlc_mutex_t *p_mutex ) ...@@ -279,13 +253,8 @@ int __vlc_mutex_init( vlc_mutex_t *p_mutex )
return 0; return 0;
#elif defined( WIN32 ) #elif defined( WIN32 )
/* We use mutexes on WinNT/2K/XP because we can use the SignalObjectAndWait if( !b_fast_mutex )
* 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 )
{ {
/* We are running on NT/2K/XP, we can use SignalObjectAndWait */
p_mutex->mutex = CreateMutex( 0, FALSE, 0 ); p_mutex->mutex = CreateMutex( 0, FALSE, 0 );
return ( p_mutex->mutex != NULL ? 0 : 1 ); return ( p_mutex->mutex != NULL ? 0 : 1 );
} }
...@@ -426,10 +395,8 @@ int __vlc_cond_init( vlc_cond_t *p_condvar ) ...@@ -426,10 +395,8 @@ int __vlc_cond_init( vlc_cond_t *p_condvar )
/* Misc init */ /* Misc init */
p_condvar->i_win9x_cv = i_win9x_cv; p_condvar->i_win9x_cv = i_win9x_cv;
p_condvar->SignalObjectAndWait = pf_SignalObjectAndWait;
if( (p_condvar->SignalObjectAndWait && !b_fast_mutex) if( !b_fast_mutex || p_condvar->i_win9x_cv == 0 )
|| p_condvar->i_win9x_cv == 0 )
{ {
/* Create an auto-reset event. */ /* Create an auto-reset event. */
p_condvar->event = CreateEvent( NULL, /* no security */ p_condvar->event = CreateEvent( NULL, /* no security */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment