From: RĂ©mi Denis-Courmont Date: Sat, 2 Aug 2008 13:55:43 +0000 (+0300) Subject: Do not leak the IPC helper - might fix #1598 X-Git-Tag: 0.9.0-test3~1 X-Git-Url: https://git.sesse.net/?p=vlc;a=commitdiff_plain;h=a46fb0e4e14d971e7482b010bb42c6bc93df66f7 Do not leak the IPC helper - might fix #1598 --- 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);