Bugfix: When rendering, skip containers which are not yet initialized

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…
This commit is contained in:
Michael Stapelberg 2009-09-29 12:26:53 +02:00
parent 9ec6ea61de
commit 5a77081c55

View File

@ -632,7 +632,10 @@ void ignore_enter_notify_forall(xcb_connection_t *conn, Workspace *workspace, bo
Client *client; Client *client;
uint32_t values[1]; 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) { CIRCLEQ_FOREACH(client, &(workspace->table[cols][rows]->clients), clients) {
/* Change event mask for the decorations */ /* Change event mask for the decorations */
values[0] = FRAME_EVENT_MASK; values[0] = FRAME_EVENT_MASK;
@ -647,6 +650,7 @@ void ignore_enter_notify_forall(xcb_connection_t *conn, Workspace *workspace, bo
xcb_change_window_attributes(conn, client->child, XCB_CW_EVENT_MASK, values); xcb_change_window_attributes(conn, client->child, XCB_CW_EVENT_MASK, values);
} }
} }
}
/* /*
* Renders the given workspace on the given screen * Renders the given workspace on the given screen
@ -678,6 +682,8 @@ void render_workspace(xcb_connection_t *conn, i3Screen *screen, Workspace *r_ws)
/* Go through the whole table and render whats necessary */ /* Go through the whole table and render whats necessary */
FOR_TABLE(r_ws) { FOR_TABLE(r_ws) {
Container *container = r_ws->table[cols][rows]; Container *container = r_ws->table[cols][rows];
if (container == NULL)
continue;
int single_width = -1, single_height = -1; int single_width = -1, single_height = -1;
/* Update position of the container */ /* Update position of the container */
container->row = rows; container->row = rows;