[Xfce4-commits] <xfce4-panel:devel> Make a standalone macro for the preinit function.
Nick Schermer
noreply at xfce.org
Wed Jan 20 21:08:03 CET 2010
Updating branch refs/heads/devel
to d0a1bdb597ddbf3a99951836159960d60043cce7 (commit)
from 9d9afb43e8d445f550cf9398a9636a7d2be60891 (commit)
commit d0a1bdb597ddbf3a99951836159960d60043cce7
Author: Nick Schermer <nick at xfce.org>
Date: Wed Jan 13 19:03:06 2010 +0100
Make a standalone macro for the preinit function.
docs/references/libxfce4panel-sections.txt | 1 +
libxfce4panel/xfce-panel-macros.h | 57 ++++++++++++++++++---------
2 files changed, 39 insertions(+), 19 deletions(-)
diff --git a/docs/references/libxfce4panel-sections.txt b/docs/references/libxfce4panel-sections.txt
index 1b044a3..28566d4 100644
--- a/docs/references/libxfce4panel-sections.txt
+++ b/docs/references/libxfce4panel-sections.txt
@@ -91,6 +91,7 @@ xfce_panel_plugin_xfconf_channel_new
XFCE_PANEL_DEFINE_PLUGIN
XFCE_PANEL_DEFINE_PLUGIN_RESIDENT
XFCE_PANEL_DEFINE_TYPE
+XFCE_PANEL_DEFINE_PREINIT_FUNC
XFCE_PANEL_PLUGIN_REGISTER
XFCE_PANEL_PLUGIN_REGISTER_WITH_CHECK
XFCE_PANEL_PLUGIN_REGISTER_FULL
diff --git a/libxfce4panel/xfce-panel-macros.h b/libxfce4panel/xfce-panel-macros.h
index bf70d2d..f02b1e1 100644
--- a/libxfce4panel/xfce-panel-macros.h
+++ b/libxfce4panel/xfce-panel-macros.h
@@ -214,6 +214,37 @@ typedef GTypeModule XfcePanelTypeModule;
/**
+ * XFCE_PANEL_DEFINE_PREINIT_FUNC:
+ * @preinit_func: name of the function that points to an
+ * #XfcePanelPluginPreInit function.
+ *
+ * Registers a pre-init function in the plugin module. This function
+ * is called before gtk_init() and can be used to initialize
+ * special libaries.
+ * Downside of this that the plugin cannot run internal. Even if you
+ * set X-XFCE-Interal=TRUE in the desktop file, the panel will force
+ * the plugin to run inside a wrapper (this because the panel called
+ * gtk_init() long before it starts to load the plugins).
+ *
+ * Note that you can only use this once and it only works in
+ * combination with the plugins register/define functions added
+ * in 4.8.
+ *
+ * Since: 4.8.0
+ **/
+#define XFCE_PANEL_DEFINE_PREINIT_FUNC(preinit_func) \
+ G_MODULE_EXPORT gboolean xfce_panel_module_preinit (gint argc, gchar **argv); \
+ \
+ G_MODULE_EXPORT gboolean \
+ xfce_panel_module_preinit (gint argc, \
+ gchar **argv) \
+ { \
+ return (*preinit_func) (argc, argv); \
+ }
+
+
+
+/**
* XFCE_PANEL_PLUGIN_REGISTER:
* @construct_func : name of the function that points to an
* #XfcePanelPluginFunc function.
@@ -248,6 +279,8 @@ typedef GTypeModule XfcePanelTypeModule;
XFCE_PANEL_PLUGIN_REGISTER_EXTENDED (construct_func, /* foo */, \
if (G_LIKELY ((*check_func) (xpp_screen) == TRUE)))
+
+
/**
* XFCE_PANEL_PLUGIN_REGISTER_FULL:
* @construct_func : name of the function that points to an
@@ -257,29 +290,15 @@ typedef GTypeModule XfcePanelTypeModule;
* @check_func : name of the function that points to an
* #XfcePanelPluginCheck function.
*
- * Same as #XFCE_PANEL_PLUGIN_REGISTER_WITH_CHECK, but with a preinit
- * function. This function is called before all the other functions and
- * also before gtk_init(), so you can use this to enable threads or
- * initialize other libraries/functions.
- *
- * Downside of this that the plugin cannot run internal. Even if you set
- * X-XFCE-Interal=TRUE in the desktop file, the panel will force the
- * plugin to run inside a wrapper.
+ * Same as calling #XFCE_PANEL_DEFINE_PREINIT_FUNC and
+ * #XFCE_PANEL_PLUGIN_REGISTER_WITH_CHECK. See those macros
+ * for more information.
*
* Since: 4.8.0
**/
#define XFCE_PANEL_PLUGIN_REGISTER_FULL(construct_func, preinit_func, check_func) \
- XFCE_PANEL_PLUGIN_REGISTER_EXTENDED (construct_func, \
- G_MODULE_EXPORT gboolean xfce_panel_module_preinit (gint argc, gchar **argv); \
- \
- G_MODULE_EXPORT gboolean \
- xfce_panel_module_preinit (gint argc, \
- gchar **argv) \
- { \
- return (*preinit_func) (argc, argv); \
- }, \
- \
- if (G_LIKELY ((*check_func) (xpp_screen) == TRUE)))
+ XFCE_PANEL_DEFINE_PREINIT_FUNC (preinit_func) \
+ XFCE_PANEL_PLUGIN_REGISTER_WITH_CHECK (construct_func, check_func)
More information about the Xfce4-commits
mailing list