On Tue, 24 Apr 2012 22:20:26 +0200 Tomasz Borowik <[email protected]> wrote:
> From: timon37 <[email protected]> > Date: Tue, 24 Apr 2012 22:13:38 +0200 > Subject: [PATCH] Fix infinite loop in xwl_screen_post_damage > > Happens when first two windows are damaged, then later one is damaged and > the other is unrealized. It makes the damaged windows next point to itself. > > Triggers most often on menus or tooltips. > --- > hw/xfree86/xwayland/xwayland-window.c | 10 +++++++++- > 1 files changed, 9 insertions(+), 1 deletions(-) > > diff --git a/hw/xfree86/xwayland/xwayland-window.c > b/hw/xfree86/xwayland/xwayland-window.c > index e58350f..8db54e1 100644 > --- a/hw/xfree86/xwayland/xwayland-window.c > +++ b/hw/xfree86/xwayland/xwayland-window.c > @@ -218,7 +218,7 @@ xwl_unrealize_window(WindowPtr window) > { > ScreenPtr screen = window->drawable.pScreen; > struct xwl_screen *xwl_screen; > - struct xwl_window *xwl_window; > + struct xwl_window *xwl_window, *iter, *tmp; > struct xwl_input_device *xwl_input_device; > Bool ret; > > @@ -248,6 +248,14 @@ xwl_unrealize_window(WindowPtr window) > wl_buffer_destroy(xwl_window->buffer); > wl_surface_destroy(xwl_window->surface); > xorg_list_del(&xwl_window->link); > + > + xorg_list_for_each_entry_safe(iter, tmp, > + &xwl_screen->damage_window_list, link_damage) { > + if (iter == xwl_window) { > + xorg_list_del(&xwl_window->link_damage); > + break; > + } > + } > xorg_list_del(&xwl_window->link_damage); This second del call seems strange, is it intentional? > DamageUnregister(&window->drawable, xwl_window->damage); > DamageDestroy(xwl_window->damage); Thanks, pq _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
