From 5a77081c5538477f0bde3ca9248f408e7b54e9aa Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Tue, 29 Sep 2009 12:26:53 +0200 Subject: [PATCH] Bugfix: When rendering, skip containers which are not yet initialized MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is necessary now, because when creating a new row, several containers have to be created. Since the implementation of the default mode for containers, this also involves rendering the layout. However, when rendering the layout, all of the containers are potentially accessed… --- src/layout.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/layout.c b/src/layout.c index fa18bbc1..59309c9d 100644 --- a/src/layout.c +++ b/src/layout.c @@ -632,7 +632,10 @@ void ignore_enter_notify_forall(xcb_connection_t *conn, Workspace *workspace, bo Client *client; uint32_t values[1]; - FOR_TABLE(workspace) + FOR_TABLE(workspace) { + if (workspace->table[cols][rows] == NULL) + continue; + CIRCLEQ_FOREACH(client, &(workspace->table[cols][rows]->clients), clients) { /* Change event mask for the decorations */ values[0] = FRAME_EVENT_MASK; @@ -646,6 +649,7 @@ void ignore_enter_notify_forall(xcb_connection_t *conn, Workspace *workspace, bo values[0] &= ~(XCB_EVENT_MASK_ENTER_WINDOW); xcb_change_window_attributes(conn, client->child, XCB_CW_EVENT_MASK, values); } + } } /* @@ -678,6 +682,8 @@ void render_workspace(xcb_connection_t *conn, i3Screen *screen, Workspace *r_ws) /* Go through the whole table and render what’s necessary */ FOR_TABLE(r_ws) { Container *container = r_ws->table[cols][rows]; + if (container == NULL) + continue; int single_width = -1, single_height = -1; /* Update position of the container */ container->row = rows;