Skip to content

Commit

Permalink
Do not leak the IPC helper - might fix #1598
Browse files Browse the repository at this point in the history
  • Loading branch information
Rémi Denis-Courmont committed Aug 2, 2008
1 parent de587c2 commit a46fb0e
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 1 deletion.
4 changes: 4 additions & 0 deletions src/libvlc.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
12 changes: 11 additions & 1 deletion src/misc/win32_specific.c
Original file line number Diff line number Diff line change
Expand Up @@ -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" ) ) )
Expand Down Expand Up @@ -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 */
Expand Down Expand Up @@ -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);
Expand Down

0 comments on commit a46fb0e

Please sign in to comment.