compositor: allow double-loading modules
authorPekka Paalanen <pekka.paalanen@collabora.com>
Mon, 4 Nov 2019 12:07:51 +0000 (14:07 +0200)
committerDaniel Stone <daniel@fooishbar.org>
Thu, 21 Nov 2019 16:32:55 +0000 (16:32 +0000)
This is necessary for the test harness to be able to execute the compositor
multiple times in the same process. As we never unload opened modules, the
first compositor iteration will leave them all loaded and following compositor
iterations will then have them already loaded.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
compositor/main.c

index 22ac8b2394770e77fcf3ba4ebb5b550abad6b231..07ec931655407ee8a7fb359d845d4b762eda5b82 100644 (file)
@@ -865,15 +865,13 @@ wet_load_module_entrypoint(const char *name, const char *entrypoint)
        module = dlopen(path, RTLD_NOW | RTLD_NOLOAD);
        if (module) {
                weston_log("Module '%s' already loaded\n", path);
-               dlclose(module);
-               return NULL;
-       }
-
-       weston_log("Loading module '%s'\n", path);
-       module = dlopen(path, RTLD_NOW);
-       if (!module) {
-               weston_log("Failed to load module: %s\n", dlerror());
-               return NULL;
+       } else {
+               weston_log("Loading module '%s'\n", path);
+               module = dlopen(path, RTLD_NOW);
+               if (!module) {
+                       weston_log("Failed to load module: %s\n", dlerror());
+                       return NULL;
+               }
        }
 
        init = dlsym(module, entrypoint);