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 <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;
#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);
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));
/* 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);
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");
}
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;
{
static gboolean yet_warned = FALSE;
if (!yet_warned)
{
yet_warned = TRUE;
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");
}
}
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 */