]> Dogcows Code - chaz/openbox/blobdiff - openbox/engine.c
move config option loading for the kernel into config.c/h
[chaz/openbox] / openbox / engine.c
index 3457da1838bd9c9f8e35ae0a5f7b4fb9fbfdd353..53e10debebf80701741ae03f7cba282a43e2063e 100644 (file)
@@ -1,4 +1,5 @@
 #include "engine.h"
+#include "config.h"
 
 #include <glib.h>
 #include <gmodule.h>
@@ -6,9 +7,24 @@
 #  include <stdlib.h>
 #endif
 
-static GModule *module;
-static EngineStartup *estartup;
-static EngineShutdown *eshutdown;
+EngineFrameNew *engine_frame_new;
+EngineFrameGrabClient *engine_frame_grab_client;
+EngineFrameReleaseClient *engine_frame_release_client;
+EngineFrameAdjustArea *engine_frame_adjust_area;
+EngineFrameAdjustShape *engine_frame_adjust_shape;
+EngineFrameAdjustState *engine_frame_adjust_state;
+EngineFrameAdjustFocus *engine_frame_adjust_focus;
+EngineFrameAdjustTitle *engine_frame_adjust_title;
+EngineFrameAdjustIcon *engine_frame_adjust_icon;
+EngineFrameShow *engine_frame_show;
+EngineFrameHide *engine_frame_hide;
+EngineGetContext *engine_get_context;
+EngineRenderLabel *engine_render_label;
+EngineSizeLabel *engine_size_label;
+
+static GModule *module = NULL;
+static EngineStartup *estartup = NULL;
+static EngineShutdown *eshutdown = NULL;
 
 #define LOADSYM(name, var) \
     if (!g_module_symbol(module, #name, (gpointer*)&var)) { \
@@ -22,19 +38,21 @@ static gboolean load(char *name)
 
     g_assert(module == NULL);
 
-    path = g_build_filename(ENGINEDIR, name, NULL);
-    module = g_module_open(path, G_MODULE_BIND_LAZY);
+    path = g_build_filename(g_get_home_dir(), ".openbox", "engines", name,
+                            NULL);
+    module = g_module_open(path, 0);
     g_free(path);
 
     if (module == NULL) {
-       path = g_build_filename(g_get_home_dir(), ".openbox", "engines", name,
-                               NULL);
-       module = g_module_open(path, G_MODULE_BIND_LAZY);
-       g_free(path);
+        path = g_build_filename(ENGINEDIR, name, NULL);
+        module = g_module_open(path, 0);
+        g_free(path);
     }
 
-    if (module == NULL)
+    if (module == NULL) {
+        g_warning(g_module_error());
        return FALSE;
+    }
 
     /* load the engine's symbols */
     LOADSYM(startup, estartup);
@@ -42,8 +60,7 @@ static gboolean load(char *name)
     LOADSYM(frame_new, engine_frame_new);
     LOADSYM(frame_grab_client, engine_frame_grab_client);
     LOADSYM(frame_release_client, engine_frame_release_client);
-    LOADSYM(frame_adjust_size, engine_frame_adjust_size);
-    LOADSYM(frame_adjust_position, engine_frame_adjust_position);
+    LOADSYM(frame_adjust_area, engine_frame_adjust_area);
     LOADSYM(frame_adjust_shape, engine_frame_adjust_shape);
     LOADSYM(frame_adjust_state, engine_frame_adjust_state);
     LOADSYM(frame_adjust_focus, engine_frame_adjust_focus);
@@ -52,6 +69,8 @@ static gboolean load(char *name)
     LOADSYM(frame_show, engine_frame_show);
     LOADSYM(frame_hide, engine_frame_hide);
     LOADSYM(get_context, engine_get_context);
+    LOADSYM(render_label, engine_render_label);
+    LOADSYM(size_label, engine_size_label);
 
     if (!estartup())
        return FALSE;
@@ -59,15 +78,20 @@ static gboolean load(char *name)
     return TRUE;
 }
 
-void engine_startup(char *engine)
+void engine_startup()
 {
     module = NULL;
+}
 
-    if (engine != NULL) {
-       if (load(engine))
-           return;
-       g_warning("Failed to load the engine '%s'", engine);
-       g_message("Falling back to the default: '%s'", DEFAULT_ENGINE);
+void engine_load()
+{
+    if (load(config_engine_name))
+        return;
+    g_warning("Failed to load the engine '%s'", config_engine_name);
+    g_message("Falling back to the default: '%s'", DEFAULT_ENGINE);
+    if (module != NULL) {
+       g_module_close(module);
+        module = NULL;
     }
     if (!load(DEFAULT_ENGINE)) {
        g_critical("Failed to load the engine '%s'. Aborting", DEFAULT_ENGINE);
This page took 0.02166 seconds and 4 git commands to generate.