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
This commit is contained in:
Florian Müllner 2015-03-21 16:43:09 +01:00 committed by Emmanuele Bassi
parent fc5fe98c3f
commit 38c4807230

View File

@ -74,7 +74,7 @@
#include <glib.h> #include <glib.h>
#include <clutter/clutter.h> #include <clutter/clutter.h>
#ifdef HAVE_CLUTTER_GLX #ifdef CLUTTER_WINDOWING_X11
#include <clutter/x11/clutter-x11.h> #include <clutter/x11/clutter-x11.h>
#endif #endif
@ -754,51 +754,52 @@ _cally_actor_get_top_level_origin (ClutterActor *actor,
gint x = 0; gint x = 0;
gint y = 0; gint y = 0;
#ifdef HAVE_CLUTTER_GLX #ifdef CLUTTER_WINDOWING_X11
{ if (clutter_check_windowing_backend (CLUTTER_WINDOWING_X11))
ClutterActor *stage = NULL; {
Display *display = NULL; ClutterActor *stage = NULL;
Window root_window; Display *display = NULL;
Window stage_window; Window root_window;
Window child; Window stage_window;
gint return_val = 0; Window child;
gint return_val = 0;
stage = clutter_actor_get_stage (actor); stage = clutter_actor_get_stage (actor);
/* FIXME: what happens if you use another display with /* FIXME: what happens if you use another display with
clutter_backend_x11_set_display ?*/ clutter_backend_x11_set_display ?*/
display = clutter_x11_get_default_display (); display = clutter_x11_get_default_display ();
root_window = clutter_x11_get_root_window (); root_window = clutter_x11_get_root_window ();
stage_window = clutter_x11_get_stage_window (CLUTTER_STAGE (stage)); stage_window = clutter_x11_get_stage_window (CLUTTER_STAGE (stage));
return_val = XTranslateCoordinates (display, stage_window, root_window, return_val = XTranslateCoordinates (display, stage_window, root_window,
0, 0, &x, &y, 0, 0, &x, &y,
&child); &child);
if (!return_val) if (!return_val)
g_warning ("[x11] We were not able to get proper absolute " g_warning ("[x11] We were not able to get proper absolute "
"position of the stage"); "position of the stage");
} }
else
#else #else
{ {
static gboolean yet_warned = FALSE; static gboolean yet_warned = FALSE;
if (!yet_warned) if (!yet_warned)
{ {
yet_warned = TRUE; yet_warned = TRUE;
g_warning ("Using a clutter backend not supported. " g_warning ("The current Clutter backend does not support using "
"atk_component_get_extents using ATK_XY_SCREEN " "atk_component_get_extents() with ATK_XY_SCREEN.");
"could return a wrong screen position"); }
} }
}
#endif #endif
if (xp) if (xp)
*xp = x; *xp = x;
if (yp) if (yp)
*yp = y; *yp = y;
} }
/* AtkAction implementation */ /* AtkAction implementation */