openbsd-ports/multimedia/xine-ui/patches/patch-src_xitk_panel_c
brad 9c41e19b5f Some bug fixes from upstream..
- Fix 2 shutdown races.
- Open user file immediately when only logo is playing.
- Clean shutdown on panel close.

ok sthen@
2013-04-29 02:36:23 +00:00

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