[vlc-devel] [PATCH] update mutex
Remi Denis-Courmont
rdenis at simphalempin.com
Mon Jun 2 08:34:41 CEST 2008
Thanks. I'll squash both patches this evening.
On Mon, 2 Jun 2008 10:14:39 +0800, Wang Bo <silencewang at msn.com> wrote:
> ---
> modules/codec/realvideo.c | 35 ++++++++++++++++++-----------------
> 1 files changed, 18 insertions(+), 17 deletions(-)
>
> diff --git a/modules/codec/realvideo.c b/modules/codec/realvideo.c
> index a1e0a77..8f08afa 100755
> --- a/modules/codec/realvideo.c
> +++ b/modules/codec/realvideo.c
> @@ -1,7 +1,8 @@
> +
>
>
/*****************************************************************************
> * realvideo.c: a realvideo decoder that uses the real's dll
>
>
*****************************************************************************
> - * Copyright (C) 2008 the VideoLAN team
> + * Copyright (C) 2005 the VideoLAN team
> * $Id$
> *
> * This program is free software; you can redistribute it and/or modify
> @@ -89,9 +90,9 @@ struct rv_init_t
> short h;
> short unk3;
> int unk2;
> - int subformat;
> + unsigned int * subformat;
> int unk5;
> - int format;
> + unsigned int * format;
> } rv_init_t;
>
> struct decoder_sys_t
> @@ -212,7 +213,7 @@ static int InitVideo(decoder_t *p_dec)
> int result;
> struct rv_init_t init_data;
> char fcc[4];
> - vlc_value_t lockval;
> + vlc_mutex_t *lock;
> int i_vide = p_dec->fmt_in.i_extra;
> unsigned int *p_vide = p_dec->fmt_in.p_extra;
> decoder_sys_t *p_sys = malloc( sizeof( decoder_sys_t ) );
> @@ -259,8 +260,9 @@ static int InitVideo(decoder_t *p_dec)
> return VLC_EGENERIC;
> }
>
> - var_Get( p_dec->p_libvlc, "rm_mutex", &lockval );
> - vlc_mutex_lock( lockval.p_address );
> + lock = var_AcquireMutex( "rm_mutex" );
> + if ( lock == NULL )
> + return VLC_EGENERIC;
>
> p_sys->handle=NULL;
> #ifdef WIN32
> @@ -304,7 +306,7 @@ static int InitVideo(decoder_t *p_dec)
> p_dec->fmt_out.video.i_aspect = VOUT_ASPECT_FACTOR *
> p_dec->fmt_in.video.i_width / p_dec->fmt_in.video.i_height;
> p_sys->inited = 0;
>
> - vlc_mutex_unlock( lockval.p_address );
> + vlc_mutex_unlock( lock );
> return VLC_SUCCESS;
> }
>
> @@ -343,11 +345,10 @@ static void Close( vlc_object_t *p_this )
> {
> decoder_t *p_dec = (decoder_t*)p_this;
> decoder_sys_t *p_sys = p_dec->p_sys;
> - vlc_value_t lockval;
> + vlc_mutex_t *lock;
>
> /* get lock, avoid segfault */
> - var_Get( p_dec->p_libvlc, "rm_mutex", &lockval );
> - vlc_mutex_lock( lockval.p_address );
> + lock = var_AcquireMutex( "rm_mutex" );
>
> #ifdef WIN32
> if (dll_type == 1)
> @@ -382,8 +383,8 @@ static void Close( vlc_object_t *p_this )
> #endif
> p_sys->inited = 0;
>
> - vlc_mutex_unlock( lockval.p_address );
> - var_Destroy( p_dec->p_libvlc, "rm_mutex" );
> + if ( lock )
> + vlc_mutex_unlock( lock );
>
> if ( p_sys )
> free( p_sys );
> @@ -395,7 +396,7 @@ static void Close( vlc_object_t *p_this )
> static picture_t *DecodeVideo( decoder_t *p_dec, block_t **pp_block )
> {
> decoder_sys_t *p_sys = p_dec->p_sys;
> - vlc_value_t lockval;
> + vlc_mutex_t *lock;
> block_t *p_block;
> picture_t *p_pic;
> mtime_t i_pts;
> @@ -412,9 +413,9 @@ static picture_t *DecodeVideo( decoder_t *p_dec,
> block_t **pp_block )
>
> i_pts = p_block->i_pts ? p_block->i_pts : p_block->i_dts;
>
> -
> - var_Get( p_dec->p_libvlc, "rm_mutex", &lockval );
> - vlc_mutex_lock( lockval.p_address );
> + lock = var_AcquireMutex( "rm_mutex" );
> + if ( lock == NULL )
> + return NULL;
>
> p_pic = p_dec->pf_vout_buffer_new( p_dec );
>
> @@ -500,7 +501,7 @@ static picture_t *DecodeVideo( decoder_t *p_dec,
> block_t **pp_block )
> p_pic->b_force = 1;
> }
>
> - vlc_mutex_unlock( lockval.p_address );
> + vlc_mutex_unlock( lock );
>
> block_Release( p_block );
> return p_pic;
> --
> 1.5.5.1
>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> http://mailman.videolan.org/listinfo/vlc-devel
--
Rémi Denis-Courmont
http://www.remlab.net
More information about the vlc-devel
mailing list