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
This commit is contained in:
Andoni Morales Alastruey 2013-04-15 17:37:01 +02:00
parent 4a78a77e65
commit bb980775f8
2 changed files with 12 additions and 13 deletions

View File

@ -135,8 +135,6 @@ GType gst_osx_video_sink_get_type(void);
@interface GstOSXVideoSinkObject : NSObject @interface GstOSXVideoSinkObject : NSObject
{ {
BOOL destroyed;
@public @public
GstOSXVideoSink *osxvideosink; GstOSXVideoSink *osxvideosink;
} }

View File

@ -862,7 +862,7 @@ gst_osx_video_sink_get_type (void)
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
GstBuffer *buf = object->buf; GstBuffer *buf = object->buf;
if (!destroyed) if (osxvideosink->osxwindow != NULL)
{ {
gst_buffer_map (buf, &info, GST_MAP_READ); gst_buffer_map (buf, &info, GST_MAP_READ);
viewdata = (guint8 *) [osxvideosink->osxwindow->gstview getTextureBuffer]; viewdata = (guint8 *) [osxvideosink->osxwindow->gstview getTextureBuffer];
@ -880,25 +880,26 @@ gst_osx_video_sink_get_type (void)
-(void) destroy -(void) destroy
{ {
NSAutoreleasePool *pool; NSAutoreleasePool *pool;
GstOSXWindow *osxwindow;
pool = [[NSAutoreleasePool alloc] init]; pool = [[NSAutoreleasePool alloc] init];
destroyed = TRUE; osxwindow = osxvideosink->osxwindow;
osxvideosink->osxwindow = NULL;
if (osxvideosink->osxwindow) { if (osxwindow) {
if (osxvideosink->superview) { if (osxvideosink->superview) {
[osxvideosink->osxwindow->gstview removeFromSuperview]; [osxwindow->gstview removeFromSuperview];
} }
[osxvideosink->osxwindow->gstview release]; [osxwindow->gstview release];
if (osxvideosink->osxwindow->internal) { if (osxwindow->internal) {
if (!osxvideosink->osxwindow->closed) { if (!osxwindow->closed) {
osxvideosink->osxwindow->closed = TRUE; osxwindow->closed = TRUE;
[osxvideosink->osxwindow->win release]; [osxwindow->win release];
} }
} }
g_free (osxvideosink->osxwindow); g_free (osxwindow);
osxvideosink->osxwindow = NULL;
} }
[pool release]; [pool release];
} }