[vlc-devel] commit: x264: use static mutex for win. ( Rémi Duraffort )
git version control
git at videolan.org
Mon Dec 28 14:44:29 CET 2009
vlc | branch: master | Rémi Duraffort <ivoire at videolan.org> | Sun Dec 20 11:11:34 2009 +0100| [eb6d8c3c71d26aae99321abb28feef818d968a33] | committer: Rémi Duraffort
x264: use static mutex for win.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=eb6d8c3c71d26aae99321abb28feef818d968a33
---
modules/codec/x264.c | 39 +++++++++++++++------------------------
1 files changed, 15 insertions(+), 24 deletions(-)
diff --git a/modules/codec/x264.c b/modules/codec/x264.c
index ee5bd6e..2c6f320 100644
--- a/modules/codec/x264.c
+++ b/modules/codec/x264.c
@@ -675,6 +675,11 @@ struct encoder_sys_t
char *psz_stat_name;
};
+#ifdef PTW32_STATIC_LIB
+static vlc_mutex_t pthread_win32_mutex = VLC_STATIC_MUTEX;
+static int pthread_win32_count = 0;
+#endif
+
/*****************************************************************************
* Open: probe the encoder
*****************************************************************************/
@@ -1114,30 +1119,21 @@ static int Open ( vlc_object_t *p_this )
but only once for the whole application. Since pthreadw32
doesn't keep a refcount, do it ourselves. */
#ifdef PTW32_STATIC_LIB
- vlc_value_t lock, count;
-
- var_Create( p_enc->p_libvlc, "pthread_win32_mutex", VLC_VAR_MUTEX );
- var_Get( p_enc->p_libvlc, "pthread_win32_mutex", &lock );
- vlc_mutex_lock( lock.p_address );
-
- var_Create( p_enc->p_libvlc, "pthread_win32_count", VLC_VAR_INTEGER );
- var_Get( p_enc->p_libvlc, "pthread_win32_count", &count );
+ vlc_mutex_lock( &pthread_win32_mutex );
- if( count.i_int == 0 )
+ if( pthread_win32_count == 0 )
{
msg_Dbg( p_enc, "initializing pthread-win32" );
if( !pthread_win32_process_attach_np() || !pthread_win32_thread_attach_np() )
{
msg_Warn( p_enc, "pthread Win32 Initialization failed" );
- vlc_mutex_unlock( lock.p_address );
+ vlc_mutex_unlock( &pthread_win32_mutex );
return VLC_EGENERIC;
}
}
- count.i_int++;
- var_Set( p_enc->p_libvlc, "pthread_win32_count", count );
- vlc_mutex_unlock( lock.p_address );
-
+ pthread_win32_count++;
+ vlc_mutex_unlock( &pthread_win32_mutex );
#endif
/* Set lookahead value to lower than default,
@@ -1279,22 +1275,17 @@ static void Close( vlc_object_t *p_this )
x264_encoder_close( p_sys->h );
#ifdef PTW32_STATIC_LIB
- vlc_value_t lock, count;
-
- var_Get( p_enc->p_libvlc, "pthread_win32_mutex", &lock );
- vlc_mutex_lock( lock.p_address );
+ vlc_mutex_lock( &pthread_win32_mutex );
+ pthread_win32_count--;
- var_Get( p_enc->p_libvlc, "pthread_win32_count", &count );
- count.i_int--;
- var_Set( p_enc->p_libvlc, "pthread_win32_count", count );
-
- if( count.i_int == 0 )
+ if( pthread_win32_count == 0 )
{
pthread_win32_thread_detach_np();
pthread_win32_process_detach_np();
msg_Dbg( p_enc, "pthread-win32 deinitialized" );
}
- vlc_mutex_unlock( lock.p_address );
+
+ vlc_mutex_unlock( &pthread_win32_mutex );
#endif
free( p_sys );
More information about the vlc-devel
mailing list