all repos — tint2 @ 0a3876dc8cb1fa211eb008a50cb1b5d081443949

fork of the tint2 desktop panel for my custom setup - only minimized windows across all desktops for the taskbar

systray: prevent race in error detection
o9000 o9000
commit

0a3876dc8cb1fa211eb008a50cb1b5d081443949

parent

e2d95acfa1506c7a0e053d69a7c332e28573ea3f

1 files changed, 4 insertions(+), 0 deletions(-)

jump to
M src/systray/systraybar.csrc/systray/systraybar.c

@@ -442,6 +442,7 @@ }

Window parent = XCreateWindow(server.dsp, panel->main_win, 0, 0, 30, 30, 0, attr.depth, InputOutput, visual, mask, &set_attr); // Watch for the icon trying to resize itself / closing again + XSync(server.dsp, False); error = FALSE; XErrorHandler old = XSetErrorHandler(window_error_handler); XSelectInput(server.dsp, win, StructureNotifyMask);

@@ -493,6 +494,7 @@

Panel* panel = systray.area.panel; // Reparent + XSync(server.dsp, False); error = FALSE; XErrorHandler old = XSetErrorHandler(window_error_handler); XReparentWindow(server.dsp, traywin->win, traywin->parent, 0, 0);

@@ -523,6 +525,7 @@ e.xclient.data.l[1] = XEMBED_EMBEDDED_NOTIFY;

e.xclient.data.l[2] = 0; e.xclient.data.l[3] = traywin->parent; e.xclient.data.l[4] = 0; + XSync(server.dsp, False); error = FALSE; XErrorHandler old = XSetErrorHandler(window_error_handler); XSendEvent(server.dsp, traywin->win, False, 0xFFFFFF, &e);

@@ -587,6 +590,7 @@ if (traywin->damage)

XDamageDestroy(server.dsp, traywin->damage); // reparent to root + XSync(server.dsp, False); error = FALSE; old = XSetErrorHandler(window_error_handler); if (!traywin->hide)