From: Laurent Aimar Date: Thu, 20 May 2010 21:06:58 +0000 (+0200) Subject: Allowed vout_display_DeleteWindow(vd, NULL) to destroy unused window. X-Git-Tag: 1.2.0-pre1~6575 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=5741789dd874a3156b9c55a99b25bfa2053170b5;p=vlc Allowed vout_display_DeleteWindow(vd, NULL) to destroy unused window. --- diff --git a/include/vlc_vout_display.h b/include/vlc_vout_display.h index 6f5b35f2eb..8b32efceef 100644 --- a/include/vlc_vout_display.h +++ b/include/vlc_vout_display.h @@ -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) { diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c index 21c4a8c12d..f9d8de29d6 100644 --- a/src/video_output/video_output.c +++ b/src/video_output/video_output.c @@ -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); + } } /* */