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

Axel Davy davy at clipper.ens.fr
Fri Nov 15 02:24:03 PST 2013


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>


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;



More information about the wayland-devel mailing list