xwayland: Use ConfigNotify screen hook instead of ResizeWindow
Preparation for later commits, no functional change intended. Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1300>
This commit is contained in:
parent
3a0fc2684a
commit
fa7b1c20c4
|
@ -1113,8 +1113,8 @@ xwl_screen_init(ScreenPtr pScreen, int argc, char **argv)
|
||||||
xwl_screen->ClipNotify = pScreen->ClipNotify;
|
xwl_screen->ClipNotify = pScreen->ClipNotify;
|
||||||
pScreen->ClipNotify = xwl_clip_notify;
|
pScreen->ClipNotify = xwl_clip_notify;
|
||||||
|
|
||||||
xwl_screen->ResizeWindow = pScreen->ResizeWindow;
|
xwl_screen->ConfigNotify = pScreen->ConfigNotify;
|
||||||
pScreen->ResizeWindow = xwl_resize_window;
|
pScreen->ConfigNotify = xwl_config_notify;
|
||||||
|
|
||||||
xwl_screen->MoveWindow = pScreen->MoveWindow;
|
xwl_screen->MoveWindow = pScreen->MoveWindow;
|
||||||
pScreen->MoveWindow = xwl_move_window;
|
pScreen->MoveWindow = xwl_move_window;
|
||||||
|
|
|
@ -71,6 +71,7 @@ struct xwl_screen {
|
||||||
ClipNotifyProcPtr ClipNotify;
|
ClipNotifyProcPtr ClipNotify;
|
||||||
CreateScreenResourcesProcPtr CreateScreenResources;
|
CreateScreenResourcesProcPtr CreateScreenResources;
|
||||||
CloseScreenProcPtr CloseScreen;
|
CloseScreenProcPtr CloseScreen;
|
||||||
|
ConfigNotifyProcPtr ConfigNotify;
|
||||||
CreateWindowProcPtr CreateWindow;
|
CreateWindowProcPtr CreateWindow;
|
||||||
RealizeWindowProcPtr RealizeWindow;
|
RealizeWindowProcPtr RealizeWindow;
|
||||||
UnrealizeWindowProcPtr UnrealizeWindow;
|
UnrealizeWindowProcPtr UnrealizeWindow;
|
||||||
|
@ -79,7 +80,6 @@ struct xwl_screen {
|
||||||
SetWindowPixmapProcPtr SetWindowPixmap;
|
SetWindowPixmapProcPtr SetWindowPixmap;
|
||||||
ChangeWindowAttributesProcPtr ChangeWindowAttributes;
|
ChangeWindowAttributesProcPtr ChangeWindowAttributes;
|
||||||
ReparentWindowProcPtr ReparentWindow;
|
ReparentWindowProcPtr ReparentWindow;
|
||||||
ResizeWindowProcPtr ResizeWindow;
|
|
||||||
MoveWindowProcPtr MoveWindow;
|
MoveWindowProcPtr MoveWindow;
|
||||||
|
|
||||||
int (*GrabServer) (ClientPtr client);
|
int (*GrabServer) (ClientPtr client);
|
||||||
|
|
|
@ -1649,25 +1649,29 @@ xwl_clip_notify(WindowPtr window, int dx, int dy)
|
||||||
xwl_window_update_surface_window(xwl_window);
|
xwl_window_update_surface_window(xwl_window);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
int
|
||||||
xwl_resize_window(WindowPtr window,
|
xwl_config_notify(WindowPtr window,
|
||||||
int x, int y,
|
int x, int y,
|
||||||
unsigned int width, unsigned int height,
|
int width, int height, int bw,
|
||||||
WindowPtr sib)
|
WindowPtr sib)
|
||||||
{
|
{
|
||||||
ScreenPtr screen = window->drawable.pScreen;
|
ScreenPtr screen = window->drawable.pScreen;
|
||||||
struct xwl_screen *xwl_screen;
|
struct xwl_screen *xwl_screen;
|
||||||
struct xwl_window *xwl_window;
|
struct xwl_window *xwl_window;
|
||||||
|
Bool size_changed;
|
||||||
|
int ret;
|
||||||
|
|
||||||
xwl_screen = xwl_screen_get(screen);
|
xwl_screen = xwl_screen_get(screen);
|
||||||
xwl_window = xwl_window_from_window(window);
|
xwl_window = xwl_window_from_window(window);
|
||||||
|
|
||||||
screen->ResizeWindow = xwl_screen->ResizeWindow;
|
size_changed = width != window->drawable.width || height != window->drawable.height;
|
||||||
(*screen->ResizeWindow) (window, x, y, width, height, sib);
|
|
||||||
xwl_screen->ResizeWindow = screen->ResizeWindow;
|
|
||||||
screen->ResizeWindow = xwl_resize_window;
|
|
||||||
|
|
||||||
if (xwl_window) {
|
screen->ConfigNotify = xwl_screen->ConfigNotify;
|
||||||
|
ret = screen->ConfigNotify(window, x, y, width, height, bw, sib);
|
||||||
|
xwl_screen->ConfigNotify = screen->ConfigNotify;
|
||||||
|
screen->ConfigNotify = xwl_config_notify;
|
||||||
|
|
||||||
|
if (size_changed && xwl_window) {
|
||||||
if (xwl_window_get(window) || xwl_window_is_toplevel(window))
|
if (xwl_window_get(window) || xwl_window_is_toplevel(window))
|
||||||
xwl_window_check_resolution_change_emulation(xwl_window);
|
xwl_window_check_resolution_change_emulation(xwl_window);
|
||||||
if (window == screen->root) {
|
if (window == screen->root) {
|
||||||
|
@ -1682,6 +1686,8 @@ xwl_resize_window(WindowPtr window,
|
||||||
xwl_window_check_fractional_scale_viewport(xwl_window, width, height);
|
xwl_window_check_fractional_scale_viewport(xwl_window, width, height);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -129,10 +129,10 @@ Bool xwl_realize_window(WindowPtr window);
|
||||||
Bool xwl_unrealize_window(WindowPtr window);
|
Bool xwl_unrealize_window(WindowPtr window);
|
||||||
Bool xwl_change_window_attributes(WindowPtr window, unsigned long mask);
|
Bool xwl_change_window_attributes(WindowPtr window, unsigned long mask);
|
||||||
void xwl_clip_notify(WindowPtr window, int dx, int dy);
|
void xwl_clip_notify(WindowPtr window, int dx, int dy);
|
||||||
void xwl_resize_window(WindowPtr window,
|
int xwl_config_notify(WindowPtr window,
|
||||||
int x, int y,
|
int x, int y,
|
||||||
unsigned int width, unsigned int height,
|
int width, int height, int bw,
|
||||||
WindowPtr sib);
|
WindowPtr sib);
|
||||||
void xwl_move_window(WindowPtr window,
|
void xwl_move_window(WindowPtr window,
|
||||||
int x, int y,
|
int x, int y,
|
||||||
WindowPtr next_sib,
|
WindowPtr next_sib,
|
||||||
|
|
Loading…
Reference in New Issue