$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);
