[vlc-commits] lua: Remove dubious LockExtension/UnlockExtension
Hugo Beauzée-Luyssen
git at videolan.org
Thu Mar 30 13:56:34 CEST 2017
vlc | branch: master | Hugo Beauzée-Luyssen <hugo at beauzee.fr> | Thu Mar 30 11:14:27 2017 +0200| [6e17f399bb7e642e5f9f8eaffe0f14be59b708df] | committer: Hugo Beauzée-Luyssen
lua: Remove dubious LockExtension/UnlockExtension
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=6e17f399bb7e642e5f9f8eaffe0f14be59b708df
---
modules/lua/extension.c | 53 +++++-----------
modules/lua/extension.h | 2 -
modules/lua/extension_thread.c | 139 ++++++++++++++++++++---------------------
3 files changed, 84 insertions(+), 110 deletions(-)
diff --git a/modules/lua/extension.c b/modules/lua/extension.c
index a3616ad..36bfcdb 100644
--- a/modules/lua/extension.c
+++ b/modules/lua/extension.c
@@ -565,8 +565,17 @@ static int Control( extensions_manager_t *p_mgr, int i_control, va_list args )
p_ext = ( extension_t* ) va_arg( args, extension_t* );
input_thread_t *p_input = va_arg( args, struct input_thread_t * );
- if( !LockExtension( p_ext ) )
+ if( p_ext == NULL )
+ return VLC_EGENERIC;
+ vlc_mutex_lock( &p_ext->p_sys->command_lock );
+ if ( p_ext->p_sys->b_exiting == true )
+ {
+ vlc_mutex_unlock( &p_ext->p_sys->command_lock );
return VLC_EGENERIC;
+ }
+ vlc_mutex_unlock( &p_ext->p_sys->command_lock );
+
+ vlc_mutex_lock( &p_ext->p_sys->running_lock );
// Change input
input_thread_t *old = p_ext->p_sys->p_input;
@@ -607,7 +616,7 @@ static int Control( extensions_manager_t *p_mgr, int i_control, va_list args )
p_ext );
}
- UnlockExtension( p_ext );
+ vlc_mutex_unlock( &p_ext->p_sys->running_lock );
break;
}
case EXTENSION_PLAYING_CHANGED:
@@ -700,19 +709,15 @@ static int GetMenuEntries( extensions_manager_t *p_mgr, extension_t *p_ext,
assert( *ppi_ids == NULL );
vlc_mutex_lock( &p_ext->p_sys->command_lock );
- if( p_ext->p_sys->b_activated == false )
+ if( p_ext->p_sys->b_activated == false || p_ext->p_sys->b_exiting == true )
{
vlc_mutex_unlock( &p_ext->p_sys->command_lock );
- msg_Dbg( p_mgr, "Can't get menu before activating the extension!" );
+ msg_Dbg( p_mgr, "Can't get menu of an unactivated/dying extension!" );
return VLC_EGENERIC;
}
vlc_mutex_unlock( &p_ext->p_sys->command_lock );
- if( !LockExtension( p_ext ) )
- {
- /* Dying extension, fail. */
- return VLC_EGENERIC;
- }
+ vlc_mutex_lock( &p_ext->p_sys->running_lock );
int i_ret = VLC_EGENERIC;
lua_State *L = GetLuaState( p_mgr, p_ext );
@@ -783,7 +788,7 @@ static int GetMenuEntries( extensions_manager_t *p_mgr, extension_t *p_ext,
i_ret = VLC_SUCCESS;
exit:
- UnlockExtension( p_ext );
+ vlc_mutex_unlock( &p_ext->p_sys->running_lock );
if( i_ret != VLC_SUCCESS )
{
msg_Dbg( p_mgr, "Something went wrong in %s (%s:%d)",
@@ -1141,34 +1146,6 @@ static void inputItemMetaChanged( const vlc_event_t *p_event,
PushCommandUnique( p_ext, CMD_UPDATE_META );
}
-/** Lock this extension. Can fail. */
-bool LockExtension( extension_t *p_ext )
-{
- vlc_mutex_lock( &p_ext->p_sys->command_lock );
- if( p_ext->p_sys->b_exiting )
- {
- vlc_mutex_unlock( &p_ext->p_sys->command_lock );
- return false;
- }
-
- vlc_mutex_lock( &p_ext->p_sys->running_lock );
- if( p_ext->p_sys->b_exiting )
- {
- vlc_mutex_unlock( &p_ext->p_sys->running_lock );
- vlc_mutex_unlock( &p_ext->p_sys->command_lock );
- return false;
- }
-
- vlc_mutex_unlock( &p_ext->p_sys->command_lock );
- return true;
-}
-
-/** Unlock this extension. */
-void UnlockExtension( extension_t *p_ext )
-{
- vlc_mutex_unlock( &p_ext->p_sys->running_lock );
-}
-
/** Watch timer callback
* The timer expired, Lua may be stuck, ask the user what to do now
**/
diff --git a/modules/lua/extension.h b/modules/lua/extension.h
index a6ab6a6..2897991 100644
--- a/modules/lua/extension.h
+++ b/modules/lua/extension.h
@@ -112,8 +112,6 @@ static inline int PushCommandUnique( extension_t *ext, int cmd, ... )
va_end( args );
return i_ret;
}
-bool LockExtension( extension_t *p_ext );
-void UnlockExtension( extension_t *p_ext );
/* Lua specific functions */
void vlclua_extension_set( lua_State *L, extension_t * );
diff --git a/modules/lua/extension_thread.c b/modules/lua/extension_thread.c
index 99b87c3..03c3d64 100644
--- a/modules/lua/extension_thread.c
+++ b/modules/lua/extension_thread.c
@@ -288,97 +288,96 @@ static void* Run( void *data )
vlc_mutex_unlock( &p_ext->p_sys->command_lock );
/* Run command */
- if( LockExtension( p_ext ) )
+ vlc_mutex_lock( &p_ext->p_sys->running_lock );
+ switch( cmd->i_command )
{
- switch( cmd->i_command )
+ case CMD_ACTIVATE:
{
- case CMD_ACTIVATE:
+ if( lua_ExecuteFunction( p_mgr, p_ext, "activate", LUA_END ) < 0 )
{
- if( lua_ExecuteFunction( p_mgr, p_ext, "activate", LUA_END ) < 0 )
- {
- msg_Err( p_mgr, "Could not activate extension!" );
- vlc_mutex_lock( &p_ext->p_sys->command_lock );
- QueueDeactivateCommand( p_ext );
- vlc_mutex_unlock( &p_ext->p_sys->command_lock );
- break;
- }
+ msg_Err( p_mgr, "Could not activate extension!" );
vlc_mutex_lock( &p_ext->p_sys->command_lock );
- p_ext->p_sys->b_activated = true;
+ QueueDeactivateCommand( p_ext );
vlc_mutex_unlock( &p_ext->p_sys->command_lock );
break;
}
+ vlc_mutex_lock( &p_ext->p_sys->command_lock );
+ p_ext->p_sys->b_activated = true;
+ vlc_mutex_unlock( &p_ext->p_sys->command_lock );
+ break;
+ }
- case CMD_DEACTIVATE:
+ case CMD_DEACTIVATE:
+ {
+ msg_Dbg( p_mgr, "Deactivating '%s'", p_ext->psz_title );
+ if( lua_ExtensionDeactivate( p_mgr, p_ext ) < 0 )
{
- msg_Dbg( p_mgr, "Deactivating '%s'", p_ext->psz_title );
- if( lua_ExtensionDeactivate( p_mgr, p_ext ) < 0 )
- {
- msg_Warn( p_mgr, "Extension '%s' did not deactivate properly",
- p_ext->psz_title );
- }
- vlc_mutex_lock( &p_ext->p_sys->command_lock );
- p_ext->p_sys->b_activated = false;
- vlc_mutex_unlock( &p_ext->p_sys->command_lock );
- break;
+ msg_Warn( p_mgr, "Extension '%s' did not deactivate properly",
+ p_ext->psz_title );
}
+ vlc_mutex_lock( &p_ext->p_sys->command_lock );
+ p_ext->p_sys->b_activated = false;
+ vlc_mutex_unlock( &p_ext->p_sys->command_lock );
+ break;
+ }
- case CMD_CLOSE:
- {
- lua_ExecuteFunction( p_mgr, p_ext, "close", LUA_END );
- break;
- }
+ case CMD_CLOSE:
+ {
+ lua_ExecuteFunction( p_mgr, p_ext, "close", LUA_END );
+ break;
+ }
- case CMD_CLICK:
+ case CMD_CLICK:
+ {
+ extension_widget_t *p_widget = cmd->data[0];
+ assert( p_widget );
+ msg_Dbg( p_mgr, "Clicking '%s': '%s'",
+ p_ext->psz_name, p_widget->psz_text );
+ if( lua_ExtensionWidgetClick( p_mgr, p_ext, p_widget ) < 0 )
{
- extension_widget_t *p_widget = cmd->data[0];
- assert( p_widget );
- msg_Dbg( p_mgr, "Clicking '%s': '%s'",
- p_ext->psz_name, p_widget->psz_text );
- if( lua_ExtensionWidgetClick( p_mgr, p_ext, p_widget ) < 0 )
- {
- msg_Warn( p_mgr, "Could not translate click" );
- }
- break;
+ msg_Warn( p_mgr, "Could not translate click" );
}
+ break;
+ }
- case CMD_TRIGGERMENU:
- {
- int *pi_id = cmd->data[0];
- assert( pi_id );
- msg_Dbg( p_mgr, "Trigger menu %d of '%s'",
- *pi_id, p_ext->psz_name );
- lua_ExtensionTriggerMenu( p_mgr, p_ext, *pi_id );
- break;
- }
+ case CMD_TRIGGERMENU:
+ {
+ int *pi_id = cmd->data[0];
+ assert( pi_id );
+ msg_Dbg( p_mgr, "Trigger menu %d of '%s'",
+ *pi_id, p_ext->psz_name );
+ lua_ExtensionTriggerMenu( p_mgr, p_ext, *pi_id );
+ break;
+ }
- case CMD_SET_INPUT:
- {
- lua_ExecuteFunction( p_mgr, p_ext, "input_changed", LUA_END );
- break;
- }
+ case CMD_SET_INPUT:
+ {
+ lua_ExecuteFunction( p_mgr, p_ext, "input_changed", LUA_END );
+ break;
+ }
- case CMD_UPDATE_META:
- {
- lua_ExecuteFunction( p_mgr, p_ext, "meta_changed", LUA_END );
- break;
- }
+ case CMD_UPDATE_META:
+ {
+ lua_ExecuteFunction( p_mgr, p_ext, "meta_changed", LUA_END );
+ break;
+ }
- case CMD_PLAYING_CHANGED:
- {
- lua_ExecuteFunction( p_mgr, p_ext, "playing_changed",
- LUA_NUM, *((int *)cmd->data[0]), LUA_END );
- break;
- }
+ case CMD_PLAYING_CHANGED:
+ {
+ lua_ExecuteFunction( p_mgr, p_ext, "playing_changed",
+ LUA_NUM, *((int *)cmd->data[0]), LUA_END );
+ break;
+ }
- default:
- {
- msg_Dbg( p_mgr, "Unknown command in extension command queue: %d",
- cmd->i_command );
- break;
- }
+ default:
+ {
+ msg_Dbg( p_mgr, "Unknown command in extension command queue: %d",
+ cmd->i_command );
+ break;
}
- UnlockExtension( p_ext );
}
+ vlc_mutex_unlock( &p_ext->p_sys->running_lock );
+
FreeCommands( cmd );
vlc_mutex_lock( &p_ext->p_sys->command_lock );
More information about the vlc-commits
mailing list