]> git.sesse.net Git - vlc/commitdiff
Support static modules using extern NULL-terminated list
authorRafaël Carré <rafael.carre@gmail.com>
Mon, 29 Aug 2011 12:46:05 +0000 (08:46 -0400)
committerRafaël Carré <rafael.carre@gmail.com>
Mon, 29 Aug 2011 12:46:05 +0000 (08:46 -0400)
src/modules/bank.c

index b001d1bdc947b88742d25f7af4ce6799e0d354f6..a67128ec68dad38f32e43c47711e98ffbc2ecfde 100644 (file)
@@ -71,6 +71,25 @@ static void module_StoreBank (module_t *module)
     modules.head = module;
 }
 
+#ifdef __GNUC__
+__attribute__((weak))
+#else
+#pragma weak vlc_static_modules
+#endif
+extern vlc_plugin_cb vlc_static_modules[];
+
+static void module_InitStaticModules(void)
+{
+    if (!vlc_static_modules)
+        return;
+
+    for (unsigned i = 0; vlc_static_modules[i]; i++) {
+        module_t *module = module_InitStatic (vlc_static_modules[i]);
+        if (likely(module != NULL))
+            module_StoreBank (module);
+    }
+}
+
 /**
  * Init bank
  *
@@ -92,6 +111,7 @@ void module_InitBank (void)
         if (likely(module != NULL))
             module_StoreBank (module);
 
+        module_InitStaticModules();
         config_SortConfig ();
     }
     modules.usage++;