From fc4619f8a9475227e4655a01bc395c6b429c121e Mon Sep 17 00:00:00 2001 From: Matthew Waters Date: Sun, 18 Nov 2012 01:16:44 +1100 Subject: [PATCH] [613/906] window_cocoa: fix segfault with gst-launch-1.0 -e ... and sending SIGINT (Ctrl-C) GNUstep has a signal handler for SIGINT which runs in the main thread. However that thread has never been 'registered' with GNUstep so the autorelease magic of objective-c causes a segfault from accessing a null NSThread object somewhere deep in GNUstep. --- gst-libs/gst/gl/gstglwindow_cocoa.m | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/gst-libs/gst/gl/gstglwindow_cocoa.m b/gst-libs/gst/gl/gstglwindow_cocoa.m index c25c00221a..2c657dac28 100755 --- a/gst-libs/gst/gl/gstglwindow_cocoa.m +++ b/gst-libs/gst/gl/gstglwindow_cocoa.m @@ -588,6 +588,17 @@ gst_gl_window_cocoa_send_message (GstGLWindow * window, GstGLWindowCB callback, } - (void) applicationWillTerminate:(NSNotification *)aNotification { +#ifdef GNUSTEP + /* fixes segfault with gst-launch-1.0 -e ... and sending SIGINT (Ctrl-C) + * which causes GNUstep to run a signal handler in the main thread. + * However that thread has never been 'registered' with GNUstep so + * the autorelease magic of objective-c causes a segfault from accessing + * a null NSThread object somewhere deep in GNUstep. + * + * I put it here because this is the first time we can register the thread. + */ + GSRegisterCurrentThread(); +#endif } @end