[PATCH xwayland 3/3] Check if the frame exists before reading its size

Kristian Høgsberg hoegsberg at gmail.com
Tue Dec 3 16:07:29 PST 2013


On Fri, Nov 15, 2013 at 11:24:03AM +0100, Axel Davy wrote:
> You were faster than me!
> 
> I was just about sending this very same patch.
> 
> The patch is correct as I was explaining in my commit message:
> "XWayland: Don't access the frame field for unmapped windows.
> 
>     There are situations where weston_wm_window_get_frame_size
>     and weston_wm_window_get_child_position are called on
>     an unmapped window.
>     In these cases, the decorations are not yet drawn,
>     so we must behave as if there was no decoration.
> "
> 
> Correct the commit message ("I don't know if this correct" shouldn't be in),
> and this is
> Reviewed-by: Axel Davy <axel.davy at ens.fr>

Thanks, all three patches applied.

Kristian

> Axel Davy
> 
> On 15/11/2013 , Dima Ryazanov wrote :
> >This fixes crashes caused by popup windows that don't have override_redirect
> >(e.g., menus in VLC and KDE apps), though I don't know if this is correct.
> >
> >Signed-off-by: Dima Ryazanov <dima at gmail.com>
> >---
> >  src/xwayland/window-manager.c | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> >
> >diff --git a/src/xwayland/window-manager.c b/src/xwayland/window-manager.c
> >index 6d29026..eea0349 100644
> >--- a/src/xwayland/window-manager.c
> >+++ b/src/xwayland/window-manager.c
> >@@ -497,7 +497,7 @@ weston_wm_window_get_frame_size(struct weston_wm_window *window,
> >  	if (window->fullscreen) {
> >  		*width = window->width;
> >  		*height = window->height;
> >-	} else if (window->decorate) {
> >+	} else if (window->decorate && window->frame) {
> >  		*width = frame_width(window->frame);
> >  		*height = frame_height(window->frame);
> >  	} else {
> >@@ -515,7 +515,7 @@ weston_wm_window_get_child_position(struct weston_wm_window *window,
> >  	if (window->fullscreen) {
> >  		*x = 0;
> >  		*y = 0;
> >-	} else if (window->decorate) {
> >+	} else if (window->decorate && window->frame) {
> >  		frame_interior(window->frame, x, y, NULL, NULL);
> >  	} else {
> >  		*x = t->margin;
> 
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel


More information about the wayland-devel mailing list