vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Wed May  9 
12:48:13 2018 +0300| [d78eef52115a003f31f837a9234e1f803b2b748d] | committer: 
Rémi Denis-Courmont

winvlc: use exit handler

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=d78eef52115a003f31f837a9234e1f803b2b748d
---

 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

_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to