summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Müllner <fmuellner@gnome.org>2015-03-21 16:43:09 +0100
committerEmmanuele Bassi <ebassi@gnome.org>2015-03-23 11:00:00 +0000
commit38c4807230ad24fd5fb1a154cdff18493fda9760 (patch)
treeaac25f79a59f1c48b0869c54f795cd814a9852b6
parentfc5fe98c3f4fb2bea8d8092a9e05c3ab85e858ad (diff)
downloadclutter-38c4807230ad24fd5fb1a154cdff18493fda9760.tar.gz
cally-actor: Don't assume X11 backend is used when supported
_cally_actor_get_top_level_origin() uses a compile time check without runtime check, which will obviously fail when another backend like wayland is used. https://bugzilla.gnome.org/show_bug.cgi?id=746575
-rw-r--r--clutter/cally/cally-actor.c81
1 files changed, 41 insertions, 40 deletions
diff --git a/clutter/cally/cally-actor.c b/clutter/cally/cally-actor.c
index 7783e5fa0..6c861ad83 100644
--- a/clutter/cally/cally-actor.c
+++ b/clutter/cally/cally-actor.c
@@ -74,7 +74,7 @@
#include <glib.h>
#include <clutter/clutter.h>
-#ifdef HAVE_CLUTTER_GLX
+#ifdef CLUTTER_WINDOWING_X11
#include <clutter/x11/clutter-x11.h>
#endif
@@ -754,51 +754,52 @@ _cally_actor_get_top_level_origin (ClutterActor *actor,
gint x = 0;
gint y = 0;
-#ifdef HAVE_CLUTTER_GLX
- {
- ClutterActor *stage = NULL;
- Display *display = NULL;
- Window root_window;
- Window stage_window;
- Window child;
- gint return_val = 0;
-
- stage = clutter_actor_get_stage (actor);
-
- /* FIXME: what happens if you use another display with
- clutter_backend_x11_set_display ?*/
- display = clutter_x11_get_default_display ();
- root_window = clutter_x11_get_root_window ();
- stage_window = clutter_x11_get_stage_window (CLUTTER_STAGE (stage));
-
- return_val = XTranslateCoordinates (display, stage_window, root_window,
- 0, 0, &x, &y,
- &child);
-
- if (!return_val)
- g_warning ("[x11] We were not able to get proper absolute "
- "position of the stage");
- }
+#ifdef CLUTTER_WINDOWING_X11
+ if (clutter_check_windowing_backend (CLUTTER_WINDOWING_X11))
+ {
+ ClutterActor *stage = NULL;
+ Display *display = NULL;
+ Window root_window;
+ Window stage_window;
+ Window child;
+ gint return_val = 0;
+
+ stage = clutter_actor_get_stage (actor);
+
+ /* FIXME: what happens if you use another display with
+ clutter_backend_x11_set_display ?*/
+ display = clutter_x11_get_default_display ();
+ root_window = clutter_x11_get_root_window ();
+ stage_window = clutter_x11_get_stage_window (CLUTTER_STAGE (stage));
+
+ return_val = XTranslateCoordinates (display, stage_window, root_window,
+ 0, 0, &x, &y,
+ &child);
+
+ if (!return_val)
+ g_warning ("[x11] We were not able to get proper absolute "
+ "position of the stage");
+ }
+ else
#else
- {
- static gboolean yet_warned = FALSE;
-
- if (!yet_warned)
- {
- yet_warned = TRUE;
-
- g_warning ("Using a clutter backend not supported. "
- "atk_component_get_extents using ATK_XY_SCREEN "
- "could return a wrong screen position");
- }
- }
+ {
+ static gboolean yet_warned = FALSE;
+
+ if (!yet_warned)
+ {
+ yet_warned = TRUE;
+
+ g_warning ("The current Clutter backend does not support using "
+ "atk_component_get_extents() with ATK_XY_SCREEN.");
+ }
+ }
#endif
if (xp)
- *xp = x;
+ *xp = x;
if (yp)
- *yp = y;
+ *yp = y;
}
/* AtkAction implementation */