Don't create a pixmap for CT_ROOT and CT_OUTPUT containers.
Such containers never require a pixmap anyway. In particular for the __i3 output (used for the scratchpad workspace), this would cause an allocation error anyway because it can be very big -- so big, in fact, that X cannot allocate the pixmap for it. Until now, this error was silently ignored due to the fact that we did not create the pixmap checked (and asserted its success), but with cairo this would cause a crash because we'd try to create a surface for a pixmap which doesn't exist. relates to #1278
This commit is contained in:
parent
a4afd1b642
commit
d2126027ce
6
src/x.c
6
src/x.c
|
@ -746,6 +746,12 @@ void x_push_node(Con *con) {
|
||||||
con->parent->layout == L_STACKED ||
|
con->parent->layout == L_STACKED ||
|
||||||
con->parent->layout == L_TABBED);
|
con->parent->layout == L_TABBED);
|
||||||
|
|
||||||
|
/* The root con and output cons will never require a pixmap. In particular for the
|
||||||
|
* __i3 output, this will likely not work anyway because it might be ridiculously
|
||||||
|
* large, causing an XCB_ALLOC error. */
|
||||||
|
if (con->type == CT_ROOT || con->type == CT_OUTPUT)
|
||||||
|
is_pixmap_needed = false;
|
||||||
|
|
||||||
bool fake_notify = false;
|
bool fake_notify = false;
|
||||||
/* Set new position if rect changed (and if height > 0) or if the pixmap
|
/* Set new position if rect changed (and if height > 0) or if the pixmap
|
||||||
* needs to be recreated */
|
* needs to be recreated */
|
||||||
|
|
Loading…
Reference in New Issue