vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Mon Sep 10 17:43:26 2012 +0300| [82f89ed61448dbd70f956b2dda5def44b16a62be] | committer: Rémi Denis-Courmont
Merge Win32 SelectClockSource() into vlc_threads_setup() Also reorder Win32 functions to avoid forward declarations. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=82f89ed61448dbd70f956b2dda5def44b16a62be --- src/libvlc.c | 6 +-- src/libvlc.h | 1 - src/win32/thread.c | 114 ++++++++++++++++++++++++++-------------------------- 3 files changed, 59 insertions(+), 62 deletions(-) diff --git a/src/libvlc.c b/src/libvlc.c index 857960c..9936c03 100644 --- a/src/libvlc.c +++ b/src/libvlc.c @@ -177,9 +177,7 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc, msg_Dbg( p_libvlc, "%s", COPYRIGHT_MESSAGE ); msg_Dbg( p_libvlc, "revision %s", psz_vlc_changeset ); msg_Dbg( p_libvlc, "configured with %s", CONFIGURE_LINE ); -#ifdef WIN32 - SelectClockSource (VLC_OBJECT(p_libvlc)); -#endif + vlc_threads_setup (p_libvlc); /* Load the builtins and plugins into the module_bank. * We have to do it before config_Load*() because this also gets the @@ -400,8 +398,6 @@ dbus_out: var_SetInteger( p_libvlc, "verbose", -1 ); priv->i_verbose = -1; } - vlc_threads_setup( p_libvlc ); - if( priv->b_color ) priv->b_color = var_InheritBool( p_libvlc, "color" ); diff --git a/src/libvlc.h b/src/libvlc.h index 2940bf8..88ad1f9 100644 --- a/src/libvlc.h +++ b/src/libvlc.h @@ -43,7 +43,6 @@ void system_Init ( void ); void system_Configure ( libvlc_int_t *, int, const char *const [] ); #ifdef WIN32 void system_End(void); -void SelectClockSource( vlc_object_t * ); size_t EnumClockSource( vlc_object_t *, char ***, char *** ); #endif void vlc_CPU_init(void); diff --git a/src/win32/thread.c b/src/win32/thread.c index be8c494..5b12c45 100644 --- a/src/win32/thread.c +++ b/src/win32/thread.c @@ -37,62 +37,12 @@ #include <limits.h> #include <errno.h> -static vlc_threadvar_t thread_key; - -/** - * Per-thread data - */ -struct vlc_thread -{ - HANDLE id; - - bool detached; - bool killable; - bool killed; - vlc_cleanup_t *cleaners; - - void *(*entry) (void *); - void *data; -}; - -static CRITICAL_SECTION clock_lock; +/*** Static mutex and condition variable ***/ static vlc_mutex_t super_mutex; static vlc_cond_t super_variable; -extern vlc_rwlock_t config_lock, msg_lock; -BOOL WINAPI DllMain (HINSTANCE, DWORD, LPVOID); - -BOOL WINAPI DllMain (HINSTANCE hinstDll, DWORD fdwReason, LPVOID lpvReserved) -{ - (void) hinstDll; - (void) lpvReserved; - - switch (fdwReason) - { - case DLL_PROCESS_ATTACH: - InitializeCriticalSection (&clock_lock); - vlc_mutex_init (&super_mutex); - vlc_cond_init (&super_variable); - vlc_threadvar_create (&thread_key, NULL); - vlc_rwlock_init (&config_lock); - vlc_rwlock_init (&msg_lock); - vlc_CPU_init (); - break; - - case DLL_PROCESS_DETACH: - vlc_rwlock_destroy (&msg_lock); - vlc_rwlock_destroy (&config_lock); - vlc_threadvar_delete (&thread_key); - vlc_cond_destroy (&super_variable); - vlc_mutex_destroy (&super_mutex); - DeleteCriticalSection (&clock_lock); - break; - } - return TRUE; -} - -static void CALLBACK vlc_cancel_self (ULONG_PTR); +/*** Common helpers ***/ static DWORD vlc_WaitForMultipleObjects (DWORD count, const HANDLE *handles, DWORD delay) { @@ -494,10 +444,21 @@ void *vlc_threadvar_get (vlc_threadvar_t key) } /*** Threads ***/ -void vlc_threads_setup (libvlc_int_t *p_libvlc) +static vlc_threadvar_t thread_key; + +/** Per-thread data */ +struct vlc_thread { - (void) p_libvlc; -} + HANDLE id; + + bool detached; + bool killable; + bool killed; + vlc_cleanup_t *cleaners; + + void *(*entry) (void *); + void *data; +}; static void vlc_thread_cleanup (struct vlc_thread *th) { @@ -703,6 +664,8 @@ void vlc_control_cancel (int cmd, ...) } /*** Clock ***/ +static CRITICAL_SECTION clock_lock; + static mtime_t mdate_giveup (void) { abort (); @@ -828,7 +791,7 @@ void msleep (mtime_t delay) mwait (mdate () + delay); } -void SelectClockSource (vlc_object_t *obj) +static void SelectClockSource (vlc_object_t *obj) { EnterCriticalSection (&clock_lock); if (mdate_selected != mdate_giveup) @@ -1029,3 +992,42 @@ unsigned vlc_GetCPUCount (void) return popcount (system); return 1; } + + +/*** Initialization ***/ +void vlc_threads_setup (libvlc_int_t *p_libvlc) +{ + SelectClockSource (VLC_OBJECT(p_libvlc)); +} + +extern vlc_rwlock_t config_lock, msg_lock; +BOOL WINAPI DllMain (HINSTANCE, DWORD, LPVOID); + +BOOL WINAPI DllMain (HINSTANCE hinstDll, DWORD fdwReason, LPVOID lpvReserved) +{ + (void) hinstDll; + (void) lpvReserved; + + switch (fdwReason) + { + case DLL_PROCESS_ATTACH: + InitializeCriticalSection (&clock_lock); + vlc_mutex_init (&super_mutex); + vlc_cond_init (&super_variable); + vlc_threadvar_create (&thread_key, NULL); + vlc_rwlock_init (&config_lock); + vlc_rwlock_init (&msg_lock); + vlc_CPU_init (); + break; + + case DLL_PROCESS_DETACH: + vlc_rwlock_destroy (&msg_lock); + vlc_rwlock_destroy (&config_lock); + vlc_threadvar_delete (&thread_key); + vlc_cond_destroy (&super_variable); + vlc_mutex_destroy (&super_mutex); + DeleteCriticalSection (&clock_lock); + break; + } + return TRUE; +} _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
