Commit 9ff188c7 authored by Rémi Duraffort's avatar Rémi Duraffort

Revert "No need to create an object to handle the lock is such a simple case."

This reverts commit f001a156.

This is usually a good practice. Moreover compare to locking and unlocking the
potential overhead is really small.
parent 21eb4851
...@@ -9,19 +9,19 @@ ...@@ -9,19 +9,19 @@
* *
* Mentor : Jean-Baptiste Kempf <jb@videolan.org> * Mentor : Jean-Baptiste Kempf <jb@videolan.org>
* *
* This program is free software; you can redistribute it and/or modify it * This program is free software; you can redistribute it and/or modify
* under the terms of the GNU General Public License as published by the Free * it under the terms of the GNU General Public License as published by
* Software Foundation; either version 2 of the License, or (at your option) * the Free Software Foundation; either version 2 of the License, or
* any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT * This program is distributed in the hope that it will be useful,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License along with * You should have received a copy of the GNU General Public License
* this program; if not, write to the Free Software Foundation, Inc., 51 * along with this program; if not, write to the Free Software
* Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/ *****************************************************************************/
/***************************************************************************** /*****************************************************************************
...@@ -49,7 +49,7 @@ static void Close( vlc_object_t * ); ...@@ -49,7 +49,7 @@ static void Close( vlc_object_t * );
#define ROOMSIZE_TEXT N_("Room size") #define ROOMSIZE_TEXT N_("Room size")
#define ROOMSIZE_LONGTEXT N_("Defines the virtual surface of the room" \ #define ROOMSIZE_LONGTEXT N_("Defines the virtual surface of the room" \
"emulated by the filter." ) "emulated by the filter." )
#define WIDTH_TEXT N_("Room width") #define WIDTH_TEXT N_("Room width")
#define WIDTH_LONGTEXT N_("Width of the virtual room") #define WIDTH_LONGTEXT N_("Width of the virtual room")
...@@ -90,6 +90,21 @@ struct aout_filter_sys_t ...@@ -90,6 +90,21 @@ struct aout_filter_sys_t
}; };
class CLocker
{
public:
CLocker( vlc_mutex_t *p_lock_to_manage ) : p_lock(p_lock_to_manage)
{
vlc_mutex_lock( p_lock );
}
virtual ~CLocker()
{
vlc_mutex_unlock( p_lock );
}
private:
vlc_mutex_t *p_lock;
};
static const char *psz_control_names[] = static const char *psz_control_names[] =
{ {
"spatializer-roomsize", "spatializer-width" , "spatializer-roomsize", "spatializer-width" ,
...@@ -158,10 +173,10 @@ static int Open( vlc_object_t *p_this ) ...@@ -158,10 +173,10 @@ static int Open( vlc_object_t *p_this )
/* Init the variables */ /* Init the variables */
p_sys->p_reverbm = new revmodel(); p_sys->p_reverbm = new revmodel();
p_sys->p_reverbm->setroomsize( var_CreateGetFloatCommand( p_aout, psz_control_names[0] ) ); p_sys->p_reverbm->setroomsize( var_CreateGetFloatCommand( p_aout, psz_control_names[0] ) );
p_sys->p_reverbm->setwidth ( var_CreateGetFloatCommand( p_aout, psz_control_names[1] ) ); p_sys->p_reverbm->setwidth( var_CreateGetFloatCommand( p_aout, psz_control_names[1] ) );
p_sys->p_reverbm->setwet ( var_CreateGetFloatCommand( p_aout, psz_control_names[2] ) ); p_sys->p_reverbm->setwet( var_CreateGetFloatCommand( p_aout, psz_control_names[2] ) );
p_sys->p_reverbm->setdry ( var_CreateGetFloatCommand( p_aout, psz_control_names[3] ) ); p_sys->p_reverbm->setdry( var_CreateGetFloatCommand( p_aout, psz_control_names[3] ) );
p_sys->p_reverbm->setdamp ( var_CreateGetFloatCommand( p_aout, psz_control_names[4] )); p_sys->p_reverbm->setdamp( var_CreateGetFloatCommand( p_aout, psz_control_names[4] ));
/* Add the callbacks */ /* Add the callbacks */
var_AddCallback( p_aout, psz_control_names[0], RoomCallback, p_sys ); var_AddCallback( p_aout, psz_control_names[0], RoomCallback, p_sys );
...@@ -210,16 +225,16 @@ static void DoWork( aout_instance_t * p_aout, aout_filter_t * p_filter, ...@@ -210,16 +225,16 @@ static void DoWork( aout_instance_t * p_aout, aout_filter_t * p_filter,
} }
static void SpatFilter( aout_instance_t *p_aout, static void SpatFilter( aout_instance_t *p_aout,
aout_filter_t *p_filter, float *out, float *in, aout_filter_t *p_filter, float *out, float *in,
int i_samples, int i_channels ) int i_samples, int i_channels )
{ {
(void)p_aout;
aout_filter_sys_t *p_sys = p_filter->p_sys; aout_filter_sys_t *p_sys = p_filter->p_sys;
CLocker locker( &p_sys->lock );
vlc_mutex_lock( &p_sys->lock ); int i, ch;
for( int i = 0; i < i_samples; i++ ) for( i = 0; i < i_samples; i++ )
{ {
for( int ch = 0 ; ch < 2; ch++) for( ch = 0 ; ch < 2; ch++)
{ {
in[ch] = in[ch] * SPAT_AMP; in[ch] = in[ch] * SPAT_AMP;
} }
...@@ -227,68 +242,56 @@ static void SpatFilter( aout_instance_t *p_aout, ...@@ -227,68 +242,56 @@ static void SpatFilter( aout_instance_t *p_aout,
in += i_channels; in += i_channels;
out += i_channels; out += i_channels;
} }
vlc_mutex_unlock( &p_sys->lock );
} }
/***************************************************************************** /*****************************************************************************
* Variables callbacks * Variables callbacks
*****************************************************************************/ *****************************************************************************/
static int RoomCallback( vlc_object_t *p_this, char const *psz_cmd, static int RoomCallback( vlc_object_t *p_this, char const *psz_cmd,
vlc_value_t oldval, vlc_value_t newval, void *p_data ) vlc_value_t oldval, vlc_value_t newval, void *p_data )
{ {
(void)psz_cmd; (void)oldval; (void)psz_cmd; (void)oldval;
aout_filter_sys_t *p_sys = (aout_filter_sys_t*)p_data; aout_filter_sys_t *p_sys = (aout_filter_sys_t*)p_data;
CLocker locker( &p_sys->lock );
p_sys->p_reverbm->setroomsize(newval.f_float);
msg_Dbg( p_this, "room size is now %3.1f", newval.f_float ); msg_Dbg( p_this, "room size is now %3.1f", newval.f_float );
vlc_mutex_lock( &p_sys->lock );
p_sys->p_reverbm->setroomsize( newval.f_float );
vlc_mutex_unlock( &p_sys->lock );
return VLC_SUCCESS; return VLC_SUCCESS;
} }
static int WidthCallback( vlc_object_t *p_this, char const *psz_cmd, static int WidthCallback( vlc_object_t *p_this, char const *psz_cmd,
vlc_value_t oldval, vlc_value_t newval, void *p_data ) vlc_value_t oldval, vlc_value_t newval, void *p_data )
{ {
(void)psz_cmd; (void)oldval; (void)psz_cmd; (void)oldval;
aout_filter_sys_t *p_sys = (aout_filter_sys_t*)p_data; aout_filter_sys_t *p_sys = (aout_filter_sys_t*)p_data;
CLocker locker( &p_sys->lock );
p_sys->p_reverbm->setwidth(newval.f_float);
msg_Dbg( p_this, "width is now %3.1f", newval.f_float ); msg_Dbg( p_this, "width is now %3.1f", newval.f_float );
vlc_mutex_lock( &p_sys->lock );
p_sys->p_reverbm->setwidth( newval.f_float );
vlc_mutex_unlock( &p_sys->lock );
return VLC_SUCCESS; return VLC_SUCCESS;
} }
static int WetCallback( vlc_object_t *p_this, char const *psz_cmd, static int WetCallback( vlc_object_t *p_this, char const *psz_cmd,
vlc_value_t oldval, vlc_value_t newval, void *p_data ) vlc_value_t oldval, vlc_value_t newval, void *p_data )
{ {
(void)psz_cmd; (void)oldval; (void)psz_cmd; (void)oldval;
aout_filter_sys_t *p_sys = (aout_filter_sys_t*)p_data; aout_filter_sys_t *p_sys = (aout_filter_sys_t*)p_data;
CLocker locker( &p_sys->lock );
p_sys->p_reverbm->setwet(newval.f_float);
msg_Dbg( p_this, "'wet' value is now %3.1f", newval.f_float ); msg_Dbg( p_this, "'wet' value is now %3.1f", newval.f_float );
vlc_mutex_lock( &p_sys->lock );
p_sys->p_reverbm->setwet( newval.f_float );
vlc_mutex_unlock( &p_sys->lock );
return VLC_SUCCESS; return VLC_SUCCESS;
} }
static int DryCallback( vlc_object_t *p_this, char const *psz_cmd, static int DryCallback( vlc_object_t *p_this, char const *psz_cmd,
vlc_value_t oldval, vlc_value_t newval, void *p_data ) vlc_value_t oldval, vlc_value_t newval, void *p_data )
{ {
(void)psz_cmd; (void)oldval; (void)psz_cmd; (void)oldval;
aout_filter_sys_t *p_sys = (aout_filter_sys_t*)p_data; aout_filter_sys_t *p_sys = (aout_filter_sys_t*)p_data;
CLocker locker( &p_sys->lock );
p_sys->p_reverbm->setdry(newval.f_float);
msg_Dbg( p_this, "'dry' value is now %3.1f", newval.f_float ); msg_Dbg( p_this, "'dry' value is now %3.1f", newval.f_float );
vlc_mutex_lock( &p_sys->lock );
p_sys->p_reverbm->setdry( newval.f_float );
vlc_mutex_unlock( &p_sys->lock );
return VLC_SUCCESS; return VLC_SUCCESS;
} }
static int DampCallback( vlc_object_t *p_this, char const *psz_cmd, static int DampCallback( vlc_object_t *p_this, char const *psz_cmd,
...@@ -296,13 +299,10 @@ static int DampCallback( vlc_object_t *p_this, char const *psz_cmd, ...@@ -296,13 +299,10 @@ static int DampCallback( vlc_object_t *p_this, char const *psz_cmd,
{ {
(void)psz_cmd; (void)oldval; (void)psz_cmd; (void)oldval;
aout_filter_sys_t *p_sys = (aout_filter_sys_t*)p_data; aout_filter_sys_t *p_sys = (aout_filter_sys_t*)p_data;
CLocker locker( &p_sys->lock );
p_sys->p_reverbm->setdamp(newval.f_float);
msg_Dbg( p_this, "'damp' value is now %3.1f", newval.f_float ); msg_Dbg( p_this, "'damp' value is now %3.1f", newval.f_float );
vlc_mutex_lock( &p_sys->lock );
p_sys->p_reverbm->setdamp( newval.f_float );
vlc_mutex_unlock( &p_sys->lock );
return VLC_SUCCESS; return VLC_SUCCESS;
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment