]> git.sesse.net Git - vlc/commitdiff
Allowed vout_display_DeleteWindow(vd, NULL) to destroy unused window.
authorLaurent Aimar <fenrir@videolan.org>
Thu, 20 May 2010 21:06:58 +0000 (23:06 +0200)
committerLaurent Aimar <fenrir@videolan.org>
Thu, 20 May 2010 21:51:26 +0000 (23:51 +0200)
include/vlc_vout_display.h
src/video_output/video_output.c

index 6f5b35f2eb94223fd3685df862e1fc49ee4ee088..8b32efceef1d5f64de9f0305eb475f48c31642c2 100644 (file)
@@ -389,6 +389,10 @@ static inline vout_window_t *vout_display_NewWindow(vout_display_t *vd, const vo
 {
     return vd->owner.window_new(vd, cfg);
 }
+/**
+ * Deletes a window created by vout_display_NewWindow if window is non NULL
+ * or any unused windows otherwise.
+ */
 static inline void vout_display_DeleteWindow(vout_display_t *vd,
                                              vout_window_t *window)
 {
index 21c4a8c12de934979b0fc033961717b0e38ee35c..f9d8de29d6bceb09150af4b2e4bc68ef3c5b7cb3 100644 (file)
@@ -504,10 +504,15 @@ void vout_DeleteDisplayWindow(vout_thread_t *vout, vout_display_t *vd,
                               vout_window_t *window)
 {
     VLC_UNUSED(vd);
-    if (!vout->p->window.is_unused && vout->p->window.object == window)
+    if (!vout->p->window.is_unused && vout->p->window.object == window) {
         vout->p->window.is_unused = true;
-    else
+    } else if (vout->p->window.is_unused && vout->p->window.object && !window) {
+        vout_window_Delete(vout->p->window.object);
+        vout->p->window.is_unused = true;
+        vout->p->window.object    = NULL;
+    } else if (window) {
         vout_window_Delete(window);
+    }
 }
 
 /* */