xwayland: Make window_get_none_wm_owner return a Window instead of a Client
Make window_get_none_wm_owner return the first non-wm-window instead of the owner (client) of the first non-wm-window and rename it to window_get_client_toplevel to match its new behavior. This is a preparation patch for switching to using the drawable coordinates in xwl_window_should_enable_viewport() Changes by Hans de Goede: - Split this change out into a separate patch for easier reviewing - Rename window_get_none_wm_owner to window_get_client_toplevel to match its new behavior Signed-off-by: Roman Gilg <subdiff@gmail.com> Acked-by: Olivier Fourdan <ofourdan@redhat.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
parent
a69f7fbb54
commit
060f10062e
|
@ -246,10 +246,10 @@ window_is_wm_window(WindowPtr window)
|
||||||
return CLIENT_ID(window->drawable.id) == xwl_screen->wm_client_id;
|
return CLIENT_ID(window->drawable.id) == xwl_screen->wm_client_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
static ClientPtr
|
static WindowPtr
|
||||||
window_get_none_wm_owner(WindowPtr window)
|
window_get_client_toplevel(WindowPtr window)
|
||||||
{
|
{
|
||||||
ClientPtr client = wClient(window);
|
assert(window);
|
||||||
|
|
||||||
/* If the toplevel window is owned by the window-manager, then the
|
/* If the toplevel window is owned by the window-manager, then the
|
||||||
* actual client toplevel window has been reparented to some window-manager
|
* actual client toplevel window has been reparented to some window-manager
|
||||||
|
@ -258,12 +258,12 @@ window_get_none_wm_owner(WindowPtr window)
|
||||||
*/
|
*/
|
||||||
if (window_is_wm_window(window)) {
|
if (window_is_wm_window(window)) {
|
||||||
if (window->firstChild && window->firstChild == window->lastChild)
|
if (window->firstChild && window->firstChild == window->lastChild)
|
||||||
return window_get_none_wm_owner(window->firstChild);
|
return window_get_client_toplevel(window->firstChild);
|
||||||
else
|
else
|
||||||
return NULL; /* Should never happen, skip resolution emulation */
|
return NULL; /* Should never happen, skip resolution emulation */
|
||||||
}
|
}
|
||||||
|
|
||||||
return client;
|
return window;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Bool
|
static Bool
|
||||||
|
@ -275,14 +275,17 @@ xwl_window_should_enable_viewport(struct xwl_window *xwl_window,
|
||||||
struct xwl_emulated_mode *emulated_mode;
|
struct xwl_emulated_mode *emulated_mode;
|
||||||
struct xwl_output *xwl_output;
|
struct xwl_output *xwl_output;
|
||||||
ClientPtr owner;
|
ClientPtr owner;
|
||||||
|
WindowPtr window;
|
||||||
|
|
||||||
if (!xwl_screen_has_resolution_change_emulation(xwl_screen))
|
if (!xwl_screen_has_resolution_change_emulation(xwl_screen))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
owner = window_get_none_wm_owner(xwl_window->window);
|
window = window_get_client_toplevel(xwl_window->window);
|
||||||
if (!owner)
|
if (!window)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
owner = wClient(window);
|
||||||
|
|
||||||
/* 1. Test if the window matches the emulated mode on one of the outputs
|
/* 1. Test if the window matches the emulated mode on one of the outputs
|
||||||
* This path gets hit by most games / libs (e.g. SDL, SFML, OGRE)
|
* This path gets hit by most games / libs (e.g. SDL, SFML, OGRE)
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue