This is just called from xwl_window_realize() ATM, but will be useful in future commits.
Signed-off-by: Carlos Garnacho <[email protected]> --- hw/xwayland/xwayland.c | 65 ++++++++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 25 deletions(-) diff --git a/hw/xwayland/xwayland.c b/hw/xwayland/xwayland.c index 7f70b950d..279358e07 100644 --- a/hw/xwayland/xwayland.c +++ b/hw/xwayland/xwayland.c @@ -522,7 +522,7 @@ send_surface_id_event(struct xwl_window *xwl_window) } static Bool -xwl_realize_window(WindowPtr window) +create_surface_for_window(WindowPtr window) { ScreenPtr screen = window->drawable.pScreen; struct xwl_screen *xwl_screen; @@ -530,29 +530,10 @@ xwl_realize_window(WindowPtr window) struct wl_region *region; Bool ret; - xwl_screen = xwl_screen_get(screen); - - screen->RealizeWindow = xwl_screen->RealizeWindow; - ret = (*screen->RealizeWindow) (window); - xwl_screen->RealizeWindow = screen->RealizeWindow; - screen->RealizeWindow = xwl_realize_window; - - if (xwl_screen->rootless && !window->parent) { - BoxRec box = { 0, 0, xwl_screen->width, xwl_screen->height }; - - RegionReset(&window->winSize, &box); - RegionNull(&window->clipList); - RegionNull(&window->borderClip); - } + if (xwl_window_get(window)) + return TRUE; - if (xwl_screen->rootless) { - if (window->redirectDraw != RedirectDrawManual) - return ret; - } - else { - if (window->parent) - return ret; - } + xwl_screen = xwl_screen_get(screen); xwl_window = calloc(1, sizeof *xwl_window); if (xwl_window == NULL) @@ -599,8 +580,6 @@ xwl_realize_window(WindowPtr window) compRedirectWindow(serverClient, window, CompositeRedirectManual); - register_damage(window); - dixSetPrivate(&window->devPrivates, &xwl_window_private_key, xwl_window); xorg_list_init(&xwl_window->link_damage); @@ -617,6 +596,42 @@ err: return FALSE; } +static Bool +xwl_realize_window(WindowPtr window) +{ + ScreenPtr screen = window->drawable.pScreen; + struct xwl_screen *xwl_screen; + Bool ret; + + xwl_screen = xwl_screen_get(screen); + + screen->RealizeWindow = xwl_screen->RealizeWindow; + ret = (*screen->RealizeWindow) (window); + xwl_screen->RealizeWindow = screen->RealizeWindow; + screen->RealizeWindow = xwl_realize_window; + + if (xwl_screen->rootless && !window->parent) { + BoxRec box = { 0, 0, xwl_screen->width, xwl_screen->height }; + + RegionReset(&window->winSize, &box); + RegionNull(&window->clipList); + RegionNull(&window->borderClip); + } + + register_damage(window); + + if (xwl_screen->rootless) { + if (window->redirectDraw != RedirectDrawManual) + return ret; + } + else { + if (window->parent) + return ret; + } + + return create_surface_for_window(window); +} + static Bool xwl_unrealize_window(WindowPtr window) { -- 2.19.2 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
