Initialize the configuration R/W lock statically
authorRémi Denis-Courmont <remi@remlab.net>
Thu, 18 Aug 2011 15:19:24 +0000 (18:19 +0300)
committerRémi Denis-Courmont <remi@remlab.net>
Thu, 18 Aug 2011 14:22:58 +0000 (17:22 +0300)
The lock is static anyway (and so is the data).

src/config/core.c
src/modules/bank.c
src/win32/thread.c

index d575061..66ba61e 100644 (file)
@@ -36,7 +36,7 @@
 #include "configuration.h"
 #include "modules/modules.h"
 
 #include "configuration.h"
 #include "modules/modules.h"
 
-vlc_rwlock_t config_lock;
+vlc_rwlock_t config_lock = VLC_STATIC_RWLOCK;
 
 static inline char *strdupnull (const char *src)
 {
 
 static inline char *strdupnull (const char *src)
 {
index fa5b7f1..ece0f8d 100644 (file)
@@ -92,7 +92,6 @@ void module_InitBank (void)
         if (likely(module != NULL))
             module_StoreBank (module);
 
         if (likely(module != NULL))
             module_StoreBank (module);
 
-        vlc_rwlock_init (&config_lock);
         config_SortConfig ();
     }
     modules.usage++;
         config_SortConfig ();
     }
     modules.usage++;
@@ -126,7 +125,6 @@ void module_EndBank (bool b_plugins)
     if (--modules.usage == 0)
     {
         config_UnsortConfig ();
     if (--modules.usage == 0)
     {
         config_UnsortConfig ();
-        vlc_rwlock_destroy (&config_lock);
         head = modules.head;
         modules.head = NULL;
     }
         head = modules.head;
         modules.head = NULL;
     }
index 99e54b5..965db99 100644 (file)
@@ -39,6 +39,7 @@
 #ifdef UNDER_CE
 # include <mmsystem.h>
 #endif
 #ifdef UNDER_CE
 # include <mmsystem.h>
 #endif
+#include "config/configuration.h"
 
 static vlc_threadvar_t thread_key;
 
 
 static vlc_threadvar_t thread_key;
 
@@ -79,9 +80,11 @@ BOOL WINAPI DllMain (HINSTANCE hinstDll, DWORD fdwReason, LPVOID lpvReserved)
                 return FALSE;
             InitializeCriticalSection (&super_mutex);
             vlc_threadvar_create (&thread_key, NULL);
                 return FALSE;
             InitializeCriticalSection (&super_mutex);
             vlc_threadvar_create (&thread_key, NULL);
+            vlc_rwlock_init (&config_lock);
             break;
 
         case DLL_PROCESS_DETACH:
             break;
 
         case DLL_PROCESS_DETACH:
+            vlc_rwlock_destroy (&config_lock);
             vlc_threadvar_delete (&thread_key);
             DeleteCriticalSection (&super_mutex);
             CloseHandle (super_cond);
             vlc_threadvar_delete (&thread_key);
             DeleteCriticalSection (&super_mutex);
             CloseHandle (super_cond);