On Tue, Jun 05, 2012 at 07:15:32PM +0300, Tiago Vignatti wrote: > On 06/05/2012 07:13 PM, Kristian Høgsberg wrote: > >On Mon, Jun 04, 2012 at 08:01:45PM +0300, Tiago Vignatti wrote: > >>"top-level window is a window whose override-redirect attribute is False", > >>ICCCM 4.1.1 > >> > >>Signed-off-by: Tiago Vignatti<[email protected]> > >>--- > >> src/xwayland/window-manager.c | 14 +++++++++----- > >> 1 file changed, 9 insertions(+), 5 deletions(-) > >> > >>diff --git a/src/xwayland/window-manager.c b/src/xwayland/window-manager.c > >>index baa49e2..b5d39d3 100644 > >>--- a/src/xwayland/window-manager.c > >>+++ b/src/xwayland/window-manager.c > >>@@ -109,6 +109,7 @@ struct weston_wm_window { > >> int width, height; > >> int x, y; > >> int decorate; > >>+ int override_redirect; > >> }; > >> > >> static struct weston_wm_window * > >>@@ -692,7 +693,7 @@ weston_wm_handle_property_notify(struct weston_wm *wm, > >>xcb_generic_event_t *even > >> > >> static void > >> weston_wm_window_create(struct weston_wm *wm, > >>- xcb_window_t id, int width, int height) > >>+ xcb_window_t id, int width, int height, int override) > >> { > >> struct weston_wm_window *window; > >> uint32_t values[1]; > >>@@ -710,7 +711,7 @@ weston_wm_window_create(struct weston_wm *wm, > >> window->wm = wm; > >> window->id = id; > >> window->properties_dirty = 1; > >>- > >>+ window->override_redirect = override; > >> window->width = width; > >> window->height = height; > >> > >>@@ -741,7 +742,8 @@ weston_wm_handle_create_notify(struct weston_wm *wm, > >>xcb_generic_event_t *event) > >> return; > >> > >> weston_wm_window_create(wm, create_notify->window, > >>- create_notify->width, create_notify->height); > >>+ create_notify->width, create_notify->height, > >>+ create_notify->override_redirect); > >> } > >> > >> static void > >>@@ -777,7 +779,8 @@ weston_wm_handle_reparent_notify(struct weston_wm *wm, > >>xcb_generic_event_t *even > >> reparent_notify->event); > >> > >> if (reparent_notify->parent == wm->screen->root) { > >>- weston_wm_window_create(wm, reparent_notify->window, 10, 10); > >>+ weston_wm_window_create(wm, reparent_notify->window, 10, 10, > >>+ reparent_notify->override_redirect); > >> } else if (!our_resource(wm, reparent_notify->parent)) { > >> window = hash_table_lookup(wm->window_hash, > >> reparent_notify->window); > >>@@ -1322,7 +1325,8 @@ xserver_map_shell_surface(struct weston_wm *wm, > >> window->surface, > >> &shell_client); > >> > >>- if (!window->transient_for) { > >>+ /* ICCCM 4.1.1 */ > >>+ if (!window->override_redirect) { > >> shell_interface->set_toplevel(window->shsurf); > >> return; > >> } > > > >When I get here with an override_redirect window that's not transient > >for another window, I crash when just below we try: > > > > parent = hash_table_lookup(wm->window_hash, > > window->transient_for->id); > > yes, expected. And that's fixed with the 6/6.
No, not cool. You can't just have a patch in the middle of a series that crashes the compositor. Kristian _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
