From a46fb0e4e14d971e7482b010bb42c6bc93df66f7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Sat, 2 Aug 2008 16:55:43 +0300 Subject: [PATCH] Do not leak the IPC helper - might fix #1598 --- src/libvlc.h | 4 ++++ src/misc/win32_specific.c | 12 +++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/libvlc.h b/src/libvlc.h index 94e2a6919b..0c7c295846 100644 --- a/src/libvlc.h +++ b/src/libvlc.h @@ -259,6 +259,10 @@ typedef struct libvlc_priv_t unsigned threads_count; vlc_mutex_t threads_lock; vlc_cond_t threads_wait; + +#ifdef WIN32 + vlc_object_t *ipc_helper; +#endif } libvlc_priv_t; static inline libvlc_priv_t *libvlc_priv (libvlc_int_t *libvlc) diff --git a/src/misc/win32_specific.c b/src/misc/win32_specific.c index 9b53f77f1a..17af95b2cd 100644 --- a/src/misc/win32_specific.c +++ b/src/misc/win32_specific.c @@ -149,6 +149,8 @@ void system_Configure( libvlc_int_t *p_this, int *pi_argc, const char *ppsz_argv } } + libvlc_priv (p_this)->ipc_helper = NULL; + if( config_GetInt( p_this, "one-instance" ) || ( config_GetInt( p_this, "one-instance-when-started-from-file" ) && config_GetInt( p_this, "started-from-file" ) ) ) @@ -181,8 +183,10 @@ void system_Configure( libvlc_int_t *p_this, int *pi_argc, const char *ppsz_argv { msg_Err( p_this, "one instance mode DISABLED " "(IPC helper thread couldn't be created)" ); - + vlc_object_release (p_helper); } + else + libvlc_priv (p_this)->ipc_helper = p_helper; /* Initialization done. * Release the mutex to unblock other instances */ @@ -360,6 +364,12 @@ void system_End( libvlc_int_t *p_this ) free( vlc_global()->psz_vlcpath ); vlc_global()->psz_vlcpath = NULL; } + vlc_object_t *obj = libvlc_priv (p_this)->ipc_helper; + if (obj) + { + vlc_thread_join (obj); + vlc_object_release (obj); + } #if !defined( UNDER_CE ) timeEndPeriod(5); -- 2.39.2