diff options
author | Florian Müllner <fmuellner@gnome.org> | 2015-03-21 16:43:09 +0100 |
---|---|---|
committer | Emmanuele Bassi <ebassi@gnome.org> | 2015-03-23 11:00:00 +0000 |
commit | 38c4807230ad24fd5fb1a154cdff18493fda9760 (patch) | |
tree | aac25f79a59f1c48b0869c54f795cd814a9852b6 | |
parent | fc5fe98c3f4fb2bea8d8092a9e05c3ab85e858ad (diff) | |
download | clutter-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.c | 81 |
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 */ |