[vlc-devel] commit: Do not leak the IPC helper - might fix #1598 ( Rémi Denis-Courmont )
git version control
git at videolan.org
Sat Aug 2 16:00:14 CEST 2008
vlc | branch: master | Rémi Denis-Courmont <rdenis at simphalempin.com> | Sat Aug 2 16:55:43 2008 +0300| [a46fb0e4e14d971e7482b010bb42c6bc93df66f7] | committer: Rémi Denis-Courmont
Do not leak the IPC helper - might fix #1598
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=a46fb0e4e14d971e7482b010bb42c6bc93df66f7
---
src/libvlc.h | 4 ++++
src/misc/win32_specific.c | 12 +++++++++++-
2 files changed, 15 insertions(+), 1 deletions(-)
diff --git a/src/libvlc.h b/src/libvlc.h
index 94e2a69..0c7c295 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 9b53f77..17af95b 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);
More information about the vlc-devel
mailing list