From d78eef52115a003f31f837a9234e1f803b2b748d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= Date: Wed, 9 May 2018 12:48:13 +0300 Subject: [PATCH] winvlc: use exit handler --- bin/winvlc.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/bin/winvlc.c b/bin/winvlc.c index e55f043a8b..5634ce7957 100644 --- a/bin/winvlc.c +++ b/bin/winvlc.c @@ -111,6 +111,13 @@ static void PrioritizeSystem32(void) SetProcessMitigationPolicy( 10 /* ProcessImageLoadPolicy */, &m, sizeof( m ) ); } +static void vlc_kill(void *data) +{ + HANDLE *semp = data; + + ReleaseSemaphore(*semp, 1, NULL); +} + int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) @@ -240,6 +247,9 @@ int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, vlc = libvlc_new (argc, (const char **)argv); if (vlc != NULL) { + HANDLE sem = CreateSemaphore(NULL, 0, 1, NULL); + + libvlc_set_exit_handler(vlc, vlc_kill, &sem); libvlc_set_app_id (vlc, "org.VideoLAN.VLC", PACKAGE_VERSION, PACKAGE_NAME); libvlc_set_user_agent (vlc, "VLC media player", "VLC/"PACKAGE_VERSION); @@ -247,7 +257,10 @@ int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, libvlc_add_intf (vlc, "globalhotkeys,none"); libvlc_add_intf (vlc, NULL); libvlc_playlist_play (vlc); - libvlc_wait (vlc); + + WaitForSingleObject(sem, INFINITE); + CloseHandle(sem); + libvlc_release (vlc); } else