From 5f3d03fbbf20495f88f871776df3e8a1e0b6cebc Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Sat, 19 May 2007 20:57:48 +0000 Subject: [PATCH] Use static storage rather than libvlc_global for stuff that is only used in a single file. --- src/misc/threads.c | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/src/misc/threads.c b/src/misc/threads.c index 7db64fcfd0..c579485e94 100644 --- a/src/misc/threads.c +++ b/src/misc/threads.c @@ -27,6 +27,7 @@ #include #include +#include "libvlc.h" #define VLC_THREADS_UNINITIALIZED 0 #define VLC_THREADS_PENDING 1 @@ -44,9 +45,12 @@ static vlc_object_t *p_root; #elif defined( ST_INIT_IN_ST_H ) #elif defined( UNDER_CE ) #elif defined( WIN32 ) +static SIGNALOBJECTANDWAIT SignalObjectAndWait = NULL; +static vlc_bool_t b_fast_mutex = 0; +static int i_win9x_cv = 0; #elif defined( HAVE_KERNEL_SCHEDULER_H ) #elif defined( PTHREAD_COND_T_IN_PTHREAD_H ) - static pthread_mutex_t once_mutex = PTHREAD_MUTEX_INITIALIZER; +static pthread_mutex_t once_mutex = PTHREAD_MUTEX_INITIALIZER; #elif defined( HAVE_CTHREADS_H ) #endif @@ -102,18 +106,11 @@ int __vlc_threads_init( vlc_object_t *p_this ) hInstLib = LoadLibrary( "kernel32" ); if( hInstLib ) { - p_libvlc_global->SignalObjectAndWait = + SignalObjectAndWait = (SIGNALOBJECTANDWAIT)GetProcAddress( hInstLib, "SignalObjectAndWait" ); } } - else - { - p_libvlc_global->SignalObjectAndWait = NULL; - } - - p_libvlc_global->b_fast_mutex = 0; - p_libvlc_global->i_win9x_cv = 0; #elif defined( HAVE_KERNEL_SCHEDULER_H ) #elif defined( PTHREAD_COND_T_IN_PTHREAD_H ) @@ -236,8 +233,7 @@ int __vlc_mutex_init( vlc_object_t *p_this, vlc_mutex_t *p_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( p_this->p_libvlc_global->SignalObjectAndWait && - !p_this->p_libvlc_global->b_fast_mutex ) + if( SignalObjectAndWait && !b_fast_mutex ) { /* We are running on NT/2K/XP, we can use SignalObjectAndWait */ p_mutex->mutex = CreateMutex( 0, FALSE, 0 ); @@ -386,11 +382,10 @@ int __vlc_cond_init( vlc_object_t *p_this, vlc_cond_t *p_condvar ) p_condvar->i_waiting_threads = 0; /* Misc init */ - p_condvar->i_win9x_cv = p_this->p_libvlc_global->i_win9x_cv; - p_condvar->SignalObjectAndWait = p_this->p_libvlc_global->SignalObjectAndWait; + p_condvar->i_win9x_cv = i_win9x_cv; + p_condvar->SignalObjectAndWait = SignalObjectAndWait; - if( (p_condvar->SignalObjectAndWait && - !p_this->p_libvlc_global->b_fast_mutex) + if( (p_condvar->SignalObjectAndWait && !b_fast_mutex) || p_condvar->i_win9x_cv == 0 ) { /* Create an auto-reset event. */ -- 2.39.2