summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYaakov Selkowitz <[email protected]>2012-12-25 21:50:14 -0600
committerStefano Karapetsas <[email protected]>2013-01-04 17:29:50 +0100
commit61d109a6e5794cf393d1f9d5bebda10f8efce902 (patch)
tree308bbb77ef752ad600020bb77a59d542d854f26b
parent2f0f21bde5e00fc0abb3379ffb9f23574e9508ad (diff)
downloadmate-notification-daemon-61d109a6e5794cf393d1f9d5bebda10f8efce902.tar.bz2
mate-notification-daemon-61d109a6e5794cf393d1f9d5bebda10f8efce902.tar.xz
Fix engine loading portability
Use GModule APIs for determining engine filenames. Also, link with the -no-undefined flag, required on PE platforms.
-rw-r--r--src/capplet/mate-notification-properties.c5
-rw-r--r--src/daemon/engines.c7
-rw-r--r--src/themes/coco/Makefile.am2
-rw-r--r--src/themes/nodoka/Makefile.am2
-rw-r--r--src/themes/slider/Makefile.am2
-rw-r--r--src/themes/standard/Makefile.am2
6 files changed, 9 insertions, 11 deletions
diff --git a/src/capplet/mate-notification-properties.c b/src/capplet/mate-notification-properties.c
index 2c5612e..0a641b5 100644
--- a/src/capplet/mate-notification-properties.c
+++ b/src/capplet/mate-notification-properties.c
@@ -23,6 +23,7 @@
#include <glib/gi18n.h>
#include <glib.h>
+#include <gmodule.h>
#include <gtk/gtk.h>
#include <gio/gio.h>
#include <string.h>
@@ -186,7 +187,7 @@ static gchar* get_theme_name(const gchar* filename)
{
/* TODO: Remove magic numbers. Strip "lib" and ".so" */
gchar* result = g_strdup(filename + 3);
- result[strlen(result) - 3] = '\0';
+ result[strlen(result) - strlen("." G_MODULE_SUFFIX)] = '\0';
return result;
}
@@ -210,7 +211,7 @@ static void notification_properties_dialog_setup_themes(NotificationAppletDialog
{
while ((filename = g_dir_read_name(dir)))
{
- if (g_str_has_prefix(filename, "lib") && g_str_has_suffix(filename, ".so"))
+ if (g_str_has_suffix(filename, "." G_MODULE_SUFFIX))
{
theme_name = get_theme_name(filename);
diff --git a/src/daemon/engines.c b/src/daemon/engines.c
index 23a2ade..2217f28 100644
--- a/src/daemon/engines.c
+++ b/src/daemon/engines.c
@@ -56,12 +56,9 @@ static ThemeEngine* active_engine = NULL;
static ThemeEngine* load_theme_engine(const char *name)
{
ThemeEngine* engine;
- char* filename;
char* path;
- filename = g_strdup_printf("lib%s.so", name);
- path = g_build_filename(ENGINES_DIR, filename, NULL);
- g_free (filename);
+ path = g_module_build_path (ENGINES_DIR, name);
engine = g_new0(ThemeEngine, 1);
engine->ref_count = 1;
@@ -113,7 +110,7 @@ static ThemeEngine* load_theme_engine(const char *name)
if (engine->module != NULL && !g_module_close (engine->module))
{
- g_warning("%s: %s", filename, g_module_error());
+ g_warning("%s: %s", name, g_module_error());
}
g_free(engine);
diff --git a/src/themes/coco/Makefile.am b/src/themes/coco/Makefile.am
index bdfa229..52f7a6f 100644
--- a/src/themes/coco/Makefile.am
+++ b/src/themes/coco/Makefile.am
@@ -5,5 +5,5 @@ engine_LTLIBRARIES = libcoco.la
libcoco_la_SOURCES = coco-theme.c
-libcoco_la_LDFLAGS = -module -avoid-version
+libcoco_la_LDFLAGS = -module -avoid-version -no-undefined
libcoco_la_LIBADD = $(THEME_LIBS)
diff --git a/src/themes/nodoka/Makefile.am b/src/themes/nodoka/Makefile.am
index 71ab399..38b797c 100644
--- a/src/themes/nodoka/Makefile.am
+++ b/src/themes/nodoka/Makefile.am
@@ -5,5 +5,5 @@ engine_LTLIBRARIES = libnodoka.la
libnodoka_la_SOURCES = nodoka-theme.c
-libnodoka_la_LDFLAGS = -module -avoid-version
+libnodoka_la_LDFLAGS = -module -avoid-version -no-undefined
libnodoka_la_LIBADD = $(THEME_LIBS)
diff --git a/src/themes/slider/Makefile.am b/src/themes/slider/Makefile.am
index a94ceaa..46dcdd2 100644
--- a/src/themes/slider/Makefile.am
+++ b/src/themes/slider/Makefile.am
@@ -7,7 +7,7 @@ AM_CPPFLAGS = $(THEME_CFLAGS)
libslider_la_SOURCES = theme.c
-libslider_la_LDFLAGS = -module -avoid-version
+libslider_la_LDFLAGS = -module -avoid-version -no-undefined
libslider_la_LIBADD = \
$(THEME_LIBS) \
$(NULL)
diff --git a/src/themes/standard/Makefile.am b/src/themes/standard/Makefile.am
index 9d6a6ae..d5b4a2a 100644
--- a/src/themes/standard/Makefile.am
+++ b/src/themes/standard/Makefile.am
@@ -3,7 +3,7 @@ enginedir = $(libdir)/mate-notification-daemon/engines
engine_LTLIBRARIES = libstandard.la
libstandard_la_SOURCES = theme.c
-libstandard_la_LDFLAGS = -module -avoid-version
+libstandard_la_LDFLAGS = -module -avoid-version -no-undefined
libstandard_la_LIBADD = $(NOTIFICATION_DAEMON_LIBS)
INCLUDES = $(NOTIFICATION_DAEMON_CFLAGS)