Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
GSoC
GSoC2018
macOS
vlc
Commits
6e17f399
Commit
6e17f399
authored
Mar 30, 2017
by
Hugo Beauzée-Luyssen
Browse files
lua: Remove dubious LockExtension/UnlockExtension
parent
e382e0d7
Changes
3
Hide whitespace changes
Inline
Side-by-side
modules/lua/extension.c
View file @
6e17f399
...
...
@@ -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
**/
...
...
modules/lua/extension.h
View file @
6e17f399
...
...
@@ -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
*
);
...
...
modules/lua/extension_thread.c
View file @
6e17f399
...
...
@@ -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
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment