[Xfce4-commits] [apps/xfdashboard] 01/01: Implement simple and stupid switch between x11 and new experimental GDK backend. It can be controlled via environment variable XFDASHBOARD_BACKEND which can be set to "x11" or "gdk". If this environment variable is missed the old behaviour (enforcing X11 backend) is used.

noreply at xfce.org noreply at xfce.org
Fri Jun 2 10:14:45 CEST 2017


This is an automated email from the git hooks/post-receive script.

n   o   m   a   d       p   u   s   h   e   d       a       c   o   m   m   i   t       t   o       b   r   a   n   c   h       m   a   s   t   e   r   
   in repository apps/xfdashboard.

commit 1e28628f7d32f4aa3ee28f8ee7b6ef03efbc5036
Author: Stephan Haller <nomad at froevel.de>
Date:   Fri Jun 2 10:12:38 2017 +0200

    Implement simple and stupid switch between x11 and new experimental GDK backend. It can be controlled via environment variable XFDASHBOARD_BACKEND which can be set to "x11" or "gdk". If this environment variable is missed the old behaviour (enforcing X11 backend) is used.
    
    Affect enhancement for GH #129
---
 libxfdashboard/gdk/window-tracker-gdk.c |  2 +-
 libxfdashboard/window-tracker.c         | 30 ++++++++++++++++++++++++++++--
 libxfdashboard/x11/window-tracker-x11.c |  2 +-
 xfdashboard/main.c                      | 15 ++++++++++++---
 4 files changed, 42 insertions(+), 7 deletions(-)

diff --git a/libxfdashboard/gdk/window-tracker-gdk.c b/libxfdashboard/gdk/window-tracker-gdk.c
index f51b699..9aa4cc5 100644
--- a/libxfdashboard/gdk/window-tracker-gdk.c
+++ b/libxfdashboard/gdk/window-tracker-gdk.c
@@ -1858,7 +1858,7 @@ void xfdashboard_window_tracker_gdk_init(XfdashboardWindowTrackerGDK *self)
 
 	priv=self->priv=XFDASHBOARD_WINDOW_TRACKER_GDK_GET_PRIVATE(self);
 
-	XFDASHBOARD_DEBUG(self, WINDOWS, "Initializing window tracker");
+	XFDASHBOARD_DEBUG(self, WINDOWS, "Initializing GDK window tracker");
 
 	/* Set default values */
 	priv->windows=NULL;
diff --git a/libxfdashboard/window-tracker.c b/libxfdashboard/window-tracker.c
index a96bbd4..92c3a7f 100644
--- a/libxfdashboard/window-tracker.c
+++ b/libxfdashboard/window-tracker.c
@@ -32,8 +32,10 @@
 #include <glib/gi18n-lib.h>
 
 #include <libxfdashboard/x11/window-tracker-x11.h>
+#include <libxfdashboard/gdk/window-tracker-gdk.h>
 #include <libxfdashboard/marshal.h>
 #include <libxfdashboard/compat.h>
+#include <libxfdashboard/debug.h>
 
 
 /* Define this class in GObject system */
@@ -578,8 +580,32 @@ XfdashboardWindowTracker* xfdashboard_window_tracker_get_default(void)
 {
 	if(G_UNLIKELY(_xfdashboard_window_tracker_singleton==NULL))
 	{
-		_xfdashboard_window_tracker_singleton=
-			XFDASHBOARD_WINDOW_TRACKER(g_object_new(XFDASHBOARD_TYPE_WINDOW_TRACKER_X11, NULL));
+		GType			windowTrackerBackendType=G_TYPE_INVALID;
+		const gchar		*windowTrackerBackend;
+
+		/* Check if a specific backend was requested */
+		windowTrackerBackend=g_getenv("XFDASHBOARD_BACKEND");
+
+		if(g_strcmp0(windowTrackerBackend, "gdk")==0)
+		{
+			windowTrackerBackendType=XFDASHBOARD_TYPE_WINDOW_TRACKER_GDK;
+		}
+
+		/* If no specific backend was requested use default one */
+		if(windowTrackerBackendType==G_TYPE_INVALID)
+		{
+			windowTrackerBackendType=XFDASHBOARD_TYPE_WINDOW_TRACKER_X11;
+			XFDASHBOARD_DEBUG(NULL, WINDOWS,
+								"Using default backend %s",
+								g_type_name(windowTrackerBackendType));
+		}
+
+		/* Create singleton */
+		_xfdashboard_window_tracker_singleton=XFDASHBOARD_WINDOW_TRACKER(g_object_new(windowTrackerBackendType, NULL));
+		XFDASHBOARD_DEBUG(_xfdashboard_window_tracker_singleton, WINDOWS,
+							"Created window tracker of type %s for %s backend",
+							_xfdashboard_window_tracker_singleton ? G_OBJECT_TYPE_NAME(_xfdashboard_window_tracker_singleton) : "<<unknown>>",
+							windowTrackerBackend ? windowTrackerBackend : "default");
 	}
 		else g_object_ref(_xfdashboard_window_tracker_singleton);
 
diff --git a/libxfdashboard/x11/window-tracker-x11.c b/libxfdashboard/x11/window-tracker-x11.c
index ef59958..b92d3e6 100644
--- a/libxfdashboard/x11/window-tracker-x11.c
+++ b/libxfdashboard/x11/window-tracker-x11.c
@@ -1855,7 +1855,7 @@ void xfdashboard_window_tracker_x11_init(XfdashboardWindowTrackerX11 *self)
 
 	priv=self->priv=XFDASHBOARD_WINDOW_TRACKER_X11_GET_PRIVATE(self);
 
-	XFDASHBOARD_DEBUG(self, WINDOWS, "Initializing window tracker");
+	XFDASHBOARD_DEBUG(self, WINDOWS, "Initializing X11 window tracker");
 
 	/* Set default values */
 	priv->windows=NULL;
diff --git a/xfdashboard/main.c b/xfdashboard/main.c
index 0da5dfc..1f7f347 100644
--- a/xfdashboard/main.c
+++ b/xfdashboard/main.c
@@ -186,6 +186,9 @@ int main(int argc, char **argv)
 {
 	XfdashboardApplication		*app=NULL;
 	gint						status;
+#if CLUTTER_CHECK_VERSION(1, 16, 0)
+	const gchar					*backend;
+#endif
 
 #ifdef ENABLE_NLS
 	/* Set up localization */
@@ -198,10 +201,16 @@ int main(int argc, char **argv)
 #endif
 
 #if CLUTTER_CHECK_VERSION(1, 16, 0)
-	/* Enforce X11 backend in Clutter. This function must be called before any
-	 * other Clutter API function.
+	/* Enforce X11 backend in Clutter if no specific backend was requesetd.
+	 * This function must be called before any other Clutter API function.
 	 */
-	clutter_set_windowing_backend("x11");
+	backend=g_getenv("XFDASHBOARD_BACKEND");
+	if(!backend ||
+		g_strcmp0(backend, "x11")==0)
+	{
+		clutter_set_windowing_backend("x11");
+		g_debug("Enforcing X11 backend");
+	}
 #endif
 
 	/* Tell clutter to try to initialize an RGBA visual */

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list