From 3784076449bf9fabd146710908013496befd9700 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Hugo=20Beauz=C3=A9e-Luyssen?= Date: Tue, 13 Feb 2018 11:09:24 +0100 Subject: [PATCH] win32: inhibit: Ensure we restore the state when cancelled --- modules/video_output/win32/inhibit.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/modules/video_output/win32/inhibit.c b/modules/video_output/win32/inhibit.c index aae006daaa..7a4ce0053a 100644 --- a/modules/video_output/win32/inhibit.c +++ b/modules/video_output/win32/inhibit.c @@ -49,6 +49,13 @@ static void Inhibit (vlc_inhibit_t *ih, unsigned mask) vlc_cond_signal(&sys->cond); } +static void RestoreStateOnCancel( void* p_opaque ) +{ + VLC_UNUSED(p_opaque); + SetThreadExecutionState( ES_CONTINUOUS ); + msg_Err( (vlc_object_t*)p_opaque, "Restored context" ); +} + static void* Run(void* obj) { vlc_inhibit_t *ih = (vlc_inhibit_t*)obj; @@ -62,12 +69,14 @@ static void* Run(void* obj) vlc_mutex_lock(&sys->mutex); mutex_cleanup_push(&sys->mutex); + vlc_cleanup_push(RestoreStateOnCancel, ih); while (!sys->signaled) vlc_cond_wait(&sys->cond, &sys->mutex); mask = sys->mask; sys->signaled = false; vlc_mutex_unlock(&sys->mutex); vlc_cleanup_pop(); + vlc_cleanup_pop(); bool suspend = (mask & VLC_INHIBIT_DISPLAY) != 0; if (suspend) -- 2.11.4.GIT