diff --git a/subprojects/gst-plugins-base/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m b/subprojects/gst-plugins-base/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m index 95e8e9170a..3a0371588f 100644 --- a/subprojects/gst-plugins-base/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m +++ b/subprojects/gst-plugins-base/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m @@ -236,6 +236,8 @@ gst_gl_window_cocoa_create_window (GstGLWindowCocoa *window_cocoa) gst_gl_window_cocoa_set_window_handle (window, (guintptr) priv->external_view); + [NSApp setActivationPolicy:NSApplicationActivationPolicyRegular]; + return TRUE; } diff --git a/subprojects/gst-plugins-good/sys/osxvideo/osxvideosink.m b/subprojects/gst-plugins-good/sys/osxvideo/osxvideosink.m index 4d5d2b4551..6c38be473e 100644 --- a/subprojects/gst-plugins-good/sys/osxvideo/osxvideosink.m +++ b/subprojects/gst-plugins-good/sys/osxvideo/osxvideosink.m @@ -96,7 +96,6 @@ static void gst_osx_video_sink_call_from_main_thread(GstOSXVideoSink *osxvideosink, NSObject * object, SEL function, NSObject *data, BOOL waitUntilDone) { - NSThread *thread; NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; @@ -276,15 +275,19 @@ gst_osx_video_sink_osxwindow_create (GstOSXVideoSink * osxvideosink, gint width, * from the main thread */ GST_INFO_OBJECT (osxvideosink, "we have a superview, adding our view to it"); - gst_osx_video_sink_call_from_main_thread(osxvideosink, osxwindow->gstview, + gst_osx_video_sink_call_from_main_thread (osxvideosink, osxwindow->gstview, @selector(addToSuperview:), osxvideosink->superview, NO); } else { - gst_osx_video_sink_call_from_main_thread(osxvideosink, + gst_osx_video_sink_call_from_main_thread (osxvideosink, osxvideosink->osxvideosinkobject, @selector(createInternalWindow), nil, YES); GST_INFO_OBJECT (osxvideosink, "No superview, creating an internal window."); } + + gst_osx_video_sink_call_from_main_thread (osxvideosink, osxvideosink->osxvideosinkobject, + @selector(setActivationPolicy), nil, YES); + [osxwindow->gstview setNavigation: GST_NAVIGATION(osxvideosink)]; [osxvideosink->osxwindow->gstview setKeepAspectRatio: osxvideosink->keep_par]; @@ -301,7 +304,7 @@ gst_osx_video_sink_osxwindow_destroy (GstOSXVideoSink * osxvideosink) g_return_if_fail (GST_IS_OSX_VIDEO_SINK (osxvideosink)); pool = [[NSAutoreleasePool alloc] init]; - gst_osx_video_sink_call_from_main_thread(osxvideosink, + gst_osx_video_sink_call_from_main_thread (osxvideosink, osxvideosink->osxvideosinkobject, @selector(destroy), (id) nil, YES); #ifndef GSTREAMER_GLIB_COCOA_NSAPPLICATION @@ -432,7 +435,7 @@ gst_osx_video_sink_show_frame (GstBaseSink * bsink, GstBuffer * buf) GST_DEBUG ("show_frame"); bufferobject = [[GstBufferObject alloc] initWithBuffer:buf]; - gst_osx_video_sink_call_from_main_thread(osxvideosink, + gst_osx_video_sink_call_from_main_thread (osxvideosink, osxvideosink->osxvideosinkobject, @selector(showFrame:), bufferobject, NO); [pool release]; @@ -656,7 +659,7 @@ gst_osx_video_sink_set_window_handle (GstVideoOverlay * overlay, guintptr handle GstOSXVideoSink *osxvideosink = GST_OSX_VIDEO_SINK (overlay); NSView *view = (NSView *) handle_id; - gst_osx_video_sink_call_from_main_thread(osxvideosink, + gst_osx_video_sink_call_from_main_thread (osxvideosink, osxvideosink->osxvideosinkobject, @selector(setView:), view, YES); } @@ -739,7 +742,7 @@ gst_osx_video_sink_get_type (void) if (!osxvideosink->osxwindow->closed) { osxvideosink->osxwindow->closed = TRUE; GST_ELEMENT_ERROR (osxvideosink, RESOURCE, NOT_FOUND, ("Output window was closed"), (NULL)); - gst_osx_video_sink_osxwindow_destroy(osxvideosink); + gst_osx_video_sink_osxwindow_destroy (osxvideosink); } } @@ -800,6 +803,11 @@ gst_osx_video_sink_get_type (void) return YES; } +- (void) setActivationPolicy +{ + [NSApp setActivationPolicy: NSApplicationActivationPolicyRegular]; +} + - (void) setView: (NSView*)view { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; @@ -931,7 +939,7 @@ no_texture_buffer: g_free (osxwindow); } GST_OBJECT_UNLOCK (osxvideosink); - + [pool release]; } @@ -994,7 +1002,6 @@ no_texture_buffer: static gboolean plugin_init (GstPlugin * plugin) { - if (!gst_element_register (plugin, "osxvideosink", GST_RANK_MARGINAL, GST_TYPE_OSX_VIDEO_SINK)) return FALSE;