osxvideosink: allow switching views at runtime.
authorAlessandro Decina <alessandro.d@gmail.com>
Tue, 11 May 2010 20:28:08 +0000 (22:28 +0200)
committerAlessandro Decina <alessandro.d@gmail.com>
Tue, 11 May 2010 20:30:03 +0000 (22:30 +0200)
sys/osxvideo/osxvideosink.m

index 4187960..0a546fc 100644 (file)
@@ -424,11 +424,20 @@ gst_osx_video_sink_set_xwindow_id (GstXOverlay * overlay, gulong window_id)
 
   if (osxvideosink->superview) {
     GST_INFO_OBJECT (osxvideosink, "old xwindow id %p", osxvideosink->superview);
+    if (osxvideosink->osxwindow) {
+      [osxvideosink->osxwindow->gstview
+          performSelectorOnMainThread:@selector(removeFromSuperview:)
+            withObject:(id)nil waitUntilDone:YES];
+    }
     [osxvideosink->superview release];
   }
 
   GST_INFO_OBJECT (osxvideosink, "set xwindow id 0x%lx", window_id);
   osxvideosink->superview = [((NSView *) window_id) retain];
+  if (osxvideosink->osxwindow) {
+      [osxvideosink->osxwindow->gstview performSelectorOnMainThread:@selector(addToSuperview:)
+          withObject:osxvideosink->superview waitUntilDone:YES];
+  }
 }
 
 static void