From 18397c82725b7cee22bf82b0539a4fb36dd49fe9 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 22 Apr 2009 17:08:17 -0500 Subject: Turning versions into a function and adding a name symbol. Not yet used though. --- libindicator/indicator.h | 13 +++++++++++-- src/applet-main.c | 9 ++++++--- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/libindicator/indicator.h b/libindicator/indicator.h index f2bd51d..8947f5b 100644 --- a/libindicator/indicator.h +++ b/libindicator/indicator.h @@ -16,10 +16,19 @@ GtkImage * get_icon (void); typedef GtkMenu * (*get_menu_t) (void); GtkMenu * get_menu (void); +#define INDICATOR_GET_VERSION_S "get_version" +typedef gchar * (*get_version_t) (void); +gchar * get_version (void); + #define INDICATOR_VERSION "0.2.0" -#define INDICATOR_SET_VERSION gchar * indicator_version_symbol = INDICATOR_VERSION; -#define INDICATOR_VERSION_S "indicator_version_symbol" +#define INDICATOR_SET_VERSION gchar * get_version(void) { return INDICATOR_VERSION; } #define INDICATOR_VERSION_CHECK(x) (!g_strcmp0(x, INDICATOR_VERSION)) +#define INDICATOR_GET_NAME_S "get_name" +typedef gchar * (*get_name_t) (void); +gchar * get_name (void); +#define INDICATOR_SET_NAME(x) gchar * get_name(void) {return (x); } + + #endif /* __LIBINDICATOR_INDICATOR_H_SEEN__ */ diff --git a/src/applet-main.c b/src/applet-main.c index 74d948a..f979beb 100644 --- a/src/applet-main.c +++ b/src/applet-main.c @@ -80,9 +80,12 @@ load_module (const gchar * name, GtkWidget * menu) g_free(fullpath); g_return_val_if_fail(module != NULL, FALSE); - gchar * version; - g_return_val_if_fail(g_module_symbol(module, INDICATOR_VERSION_S, (gpointer *)(&version)), FALSE); - g_return_val_if_fail(INDICATOR_VERSION_CHECK(version), FALSE); + get_version_t lget_version; + g_return_val_if_fail(g_module_symbol(module, INDICATOR_GET_VERSION_S, (gpointer *)(&lget_version)), FALSE); + if (!INDICATOR_VERSION_CHECK(lget_version())) { + g_warning("Indicator using API version '%s' we're expecting '%s'", lget_version(), INDICATOR_VERSION); + return FALSE; + } get_label_t lget_label; g_return_val_if_fail(g_module_symbol(module, INDICATOR_GET_LABEL_S, (gpointer *)(&lget_label)), FALSE); -- cgit v1.2.3