From bb980775f8efad30e7be51e57cb30bdc94f84053 Mon Sep 17 00:00:00 2001 From: Andoni Morales Alastruey Date: Mon, 15 Apr 2013 17:37:01 +0200 Subject: [PATCH] osxvideosink: fix setting window handle after transition The destroyed flag was not reset properly and it's also not needed as we can check osxwindow != NULL --- sys/osxvideo/osxvideosink.h | 2 -- sys/osxvideo/osxvideosink.m | 23 ++++++++++++----------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/sys/osxvideo/osxvideosink.h b/sys/osxvideo/osxvideosink.h index 831ed39..cf0410f 100644 --- a/sys/osxvideo/osxvideosink.h +++ b/sys/osxvideo/osxvideosink.h @@ -135,8 +135,6 @@ GType gst_osx_video_sink_get_type(void); @interface GstOSXVideoSinkObject : NSObject { - BOOL destroyed; - @public GstOSXVideoSink *osxvideosink; } diff --git a/sys/osxvideo/osxvideosink.m b/sys/osxvideo/osxvideosink.m index cf939b1..f235c8b 100644 --- a/sys/osxvideo/osxvideosink.m +++ b/sys/osxvideo/osxvideosink.m @@ -862,7 +862,7 @@ gst_osx_video_sink_get_type (void) NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; GstBuffer *buf = object->buf; - if (!destroyed) + if (osxvideosink->osxwindow != NULL) { gst_buffer_map (buf, &info, GST_MAP_READ); viewdata = (guint8 *) [osxvideosink->osxwindow->gstview getTextureBuffer]; @@ -880,25 +880,26 @@ gst_osx_video_sink_get_type (void) -(void) destroy { NSAutoreleasePool *pool; + GstOSXWindow *osxwindow; pool = [[NSAutoreleasePool alloc] init]; - destroyed = TRUE; + osxwindow = osxvideosink->osxwindow; + osxvideosink->osxwindow = NULL; - if (osxvideosink->osxwindow) { + if (osxwindow) { if (osxvideosink->superview) { - [osxvideosink->osxwindow->gstview removeFromSuperview]; + [osxwindow->gstview removeFromSuperview]; } - [osxvideosink->osxwindow->gstview release]; - if (osxvideosink->osxwindow->internal) { - if (!osxvideosink->osxwindow->closed) { - osxvideosink->osxwindow->closed = TRUE; - [osxvideosink->osxwindow->win release]; + [osxwindow->gstview release]; + if (osxwindow->internal) { + if (!osxwindow->closed) { + osxwindow->closed = TRUE; + [osxwindow->win release]; } } - g_free (osxvideosink->osxwindow); - osxvideosink->osxwindow = NULL; + g_free (osxwindow); } [pool release]; } -- 2.7.4