- Fix 2 shutdown races. - Open user file immediately when only logo is playing. - Clean shutdown on panel close. ok sthen@
34 lines
1.3 KiB
Plaintext
34 lines
1.3 KiB
Plaintext
$OpenBSD: patch-src_xitk_panel_c,v 1.5 2013/04/29 02:36:23 brad Exp $
|
|
|
|
Clean shutdown on panel close.
|
|
|
|
--- src/xitk/panel.c.orig Sat Apr 27 19:37:50 2013
|
|
+++ src/xitk/panel.c Sat Apr 27 19:40:13 2013
|
|
@@ -882,6 +882,11 @@ static void panel_slider_cb(xitk_widget_t *w, void *da
|
|
static void panel_handle_event(XEvent *event, void *data) {
|
|
|
|
switch(event->type) {
|
|
+ case DestroyNotify:
|
|
+ if(gGui->panel_window == event->xany.window)
|
|
+ gui_exit(NULL, NULL);
|
|
+ break;
|
|
+
|
|
case ButtonPress:
|
|
{
|
|
XButtonEvent *bevent = (XButtonEvent *) event;
|
|
@@ -1160,6 +1165,14 @@ void panel_init (void) {
|
|
gGui->imlib_data->x.visual,
|
|
CWBackPixel | CWBorderPixel | CWColormap | CWOverrideRedirect,
|
|
&attr);
|
|
+
|
|
+ {
|
|
+ /* prevent window manager from killing us through exit() when user closes panel.
|
|
+ That wont work with OpenGL* video out because libGL does install an exit handler
|
|
+ that calls X functions - while video out loop still tries the same -> deadlock */
|
|
+ Atom wm_delete_window = XInternAtom(gGui->display, "WM_DELETE_WINDOW", False);
|
|
+ XSetWMProtocols(gGui->display, gGui->panel_window, &wm_delete_window, 1);
|
|
+ }
|
|
|
|
XmbSetWMProperties(gGui->display, gGui->panel_window, title, title, NULL, 0,
|
|
&hint, NULL, NULL);
|