Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-1.1
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-1.1
Commits
609a1146
Commit
609a1146
authored
Aug 16, 2007
by
Rémi Denis-Courmont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Hide internal variables state
parent
c5f25910
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
114 additions
and
106 deletions
+114
-106
include/vlc_common.h
include/vlc_common.h
+0
-5
src/libvlc.h
src/libvlc.h
+5
-1
src/misc/objects.c
src/misc/objects.c
+11
-13
src/misc/variables.c
src/misc/variables.c
+98
-87
No files found.
include/vlc_common.h
View file @
609a1146
...
...
@@ -562,11 +562,6 @@ typedef struct vlc_object_internals_t vlc_object_internals_t;
volatile vlc_bool_t b_attached;
/**< set by the object */
\
vlc_bool_t b_force;
/**< set by the outside (eg. module_Need()) */
\
\
/* Object variables */
\
vlc_mutex_t var_lock; \
int i_vars; \
variable_t * p_vars; \
\
/* Stuff related to the libvlc structure */
\
libvlc_int_t *p_libvlc;
/**< (root of all evil) - 1 */
\
\
...
...
src/libvlc.h
View file @
609a1146
...
...
@@ -82,9 +82,13 @@ uint32_t CPUCapabilities( void );
/* Private LibVLC data for each objects */
struct
vlc_object_internals_t
{
/* Object variables */
vlc_mutex_t
var_lock
;
int
i_vars
;
variable_t
*
p_vars
;
};
static
inline
vlc_object_internals_t
*
vlc_internals
(
vlc_object_t
*
obj
)
{
return
obj
->
p_internals
;
...
...
src/misc/objects.c
View file @
609a1146
...
...
@@ -125,7 +125,6 @@ vlc_object_t *vlc_custom_create( vlc_object_t *p_this, size_t i_size,
p_new
->
psz_header
=
NULL
;
p_new
->
i_flags
=
0
;
if
(
p_this
->
i_flags
&
OBJECT_FLAGS_NODBG
)
p_new
->
i_flags
|=
OBJECT_FLAGS_NODBG
;
if
(
p_this
->
i_flags
&
OBJECT_FLAGS_QUIET
)
...
...
@@ -133,10 +132,9 @@ vlc_object_t *vlc_custom_create( vlc_object_t *p_this, size_t i_size,
if
(
p_this
->
i_flags
&
OBJECT_FLAGS_NOINTERACT
)
p_new
->
i_flags
|=
OBJECT_FLAGS_NOINTERACT
;
p_new
->
i_vars
=
0
;
p_new
->
p_vars
=
(
variable_t
*
)
malloc
(
16
*
sizeof
(
variable_t
)
);
p_priv
->
p_vars
=
calloc
(
sizeof
(
variable_t
),
16
);
if
(
!
p_
new
->
p_vars
)
if
(
!
p_
priv
->
p_vars
)
{
if
(
i_type
!=
VLC_OBJECT_GLOBAL
)
free
(
p_priv
);
...
...
@@ -186,7 +184,7 @@ vlc_object_t *vlc_custom_create( vlc_object_t *p_this, size_t i_size,
/* Initialize mutexes and condvars */
vlc_mutex_init
(
p_new
,
&
p_new
->
object_lock
);
vlc_cond_init
(
p_new
,
&
p_new
->
object_wait
);
vlc_mutex_init
(
p_new
,
&
p_
new
->
var_lock
);
vlc_mutex_init
(
p_new
,
&
p_
priv
->
var_lock
);
if
(
i_type
==
VLC_OBJECT_GLOBAL
)
{
...
...
@@ -390,13 +388,13 @@ void __vlc_object_destroy( vlc_object_t *p_this )
/* Destroy the associated variables, starting from the end so that
* no memmove calls have to be done. */
while
(
p_
this
->
i_vars
)
while
(
p_
priv
->
i_vars
)
{
var_Destroy
(
p_this
,
p_
this
->
p_vars
[
p_this
->
i_vars
-
1
].
psz_name
);
var_Destroy
(
p_this
,
p_
priv
->
p_vars
[
p_priv
->
i_vars
-
1
].
psz_name
);
}
free
(
p_
this
->
p_vars
);
vlc_mutex_destroy
(
&
p_
this
->
var_lock
);
free
(
p_
priv
->
p_vars
);
vlc_mutex_destroy
(
&
p_
priv
->
var_lock
);
if
(
p_this
->
psz_header
)
free
(
p_this
->
psz_header
);
...
...
@@ -877,11 +875,11 @@ static int DumpCommand( vlc_object_t *p_this, char const *psz_cmd,
PrintObject
(
p_object
,
""
);
if
(
!
p_object
->
i_vars
)
if
(
!
p_object
->
p_internals
->
i_vars
)
printf
(
" `-o No variables
\n
"
);
for
(
i
=
0
;
i
<
p_object
->
i_vars
;
i
++
)
for
(
i
=
0
;
i
<
p_object
->
p_internals
->
i_vars
;
i
++
)
{
variable_t
*
p_var
=
p_object
->
p_vars
+
i
;
variable_t
*
p_var
=
p_object
->
p_
internals
->
p_
vars
+
i
;
const
char
*
psz_type
=
"unknown"
;
switch
(
p_var
->
i_type
&
VLC_VAR_TYPE
)
...
...
@@ -907,7 +905,7 @@ static int DumpCommand( vlc_object_t *p_this, char const *psz_cmd,
#undef MYCASE
}
printf
(
" %c-o
\"
%s
\"
(%s"
,
i
+
1
==
p_object
->
i_vars
?
'`'
:
'|'
,
i
+
1
==
p_object
->
p_internals
->
i_vars
?
'`'
:
'|'
,
p_var
->
psz_name
,
psz_type
);
if
(
p_var
->
psz_text
)
printf
(
", %s"
,
p_var
->
psz_text
);
...
...
src/misc/variables.c
View file @
609a1146
...
...
@@ -157,46 +157,47 @@ int __var_Create( vlc_object_t *p_this, const char *psz_name, int i_type )
int
i_new
;
variable_t
*
p_var
;
static
vlc_list_t
dummy_null_list
=
{
0
,
NULL
,
NULL
};
vlc_object_internals_t
*
p_priv
=
p_this
->
p_internals
;
vlc_mutex_lock
(
&
p_
this
->
var_lock
);
vlc_mutex_lock
(
&
p_
priv
->
var_lock
);
/* FIXME: if the variable already exists, we don't duplicate it. But we
* duplicate the lookups. It's not that serious, but if anyone finds some
* time to rework Insert() so that only one lookup has to be done, feel
* free to do so. */
i_new
=
Lookup
(
p_
this
->
p_vars
,
p_this
->
i_vars
,
psz_name
);
i_new
=
Lookup
(
p_
priv
->
p_vars
,
p_priv
->
i_vars
,
psz_name
);
if
(
i_new
>=
0
)
{
/* If the types differ, variable creation failed. */
if
(
(
i_type
&
~
(
VLC_VAR_DOINHERIT
|
VLC_VAR_ISCOMMAND
))
!=
p_
this
->
p_vars
[
i_new
].
i_type
)
if
(
(
i_type
&
~
(
VLC_VAR_DOINHERIT
|
VLC_VAR_ISCOMMAND
))
!=
p_
priv
->
p_vars
[
i_new
].
i_type
)
{
vlc_mutex_unlock
(
&
p_
this
->
var_lock
);
vlc_mutex_unlock
(
&
p_
priv
->
var_lock
);
return
VLC_EBADVAR
;
}
p_
this
->
p_vars
[
i_new
].
i_usage
++
;
p_
priv
->
p_vars
[
i_new
].
i_usage
++
;
if
(
i_type
&
VLC_VAR_ISCOMMAND
)
p_
this
->
p_vars
[
i_new
].
i_type
|=
VLC_VAR_ISCOMMAND
;
vlc_mutex_unlock
(
&
p_
this
->
var_lock
);
p_
priv
->
p_vars
[
i_new
].
i_type
|=
VLC_VAR_ISCOMMAND
;
vlc_mutex_unlock
(
&
p_
priv
->
var_lock
);
return
VLC_SUCCESS
;
}
i_new
=
Insert
(
p_
this
->
p_vars
,
p_this
->
i_vars
,
psz_name
);
i_new
=
Insert
(
p_
priv
->
p_vars
,
p_priv
->
i_vars
,
psz_name
);
if
(
(
p_
this
->
i_vars
&
15
)
==
15
)
if
(
(
p_
priv
->
i_vars
&
15
)
==
15
)
{
p_
this
->
p_vars
=
realloc
(
p_this
->
p_vars
,
(
p_
this
->
i_vars
+
17
)
*
sizeof
(
variable_t
)
);
p_
priv
->
p_vars
=
realloc
(
p_priv
->
p_vars
,
(
p_
priv
->
i_vars
+
17
)
*
sizeof
(
variable_t
)
);
}
memmove
(
p_
this
->
p_vars
+
i_new
+
1
,
p_
this
->
p_vars
+
i_new
,
(
p_
this
->
i_vars
-
i_new
)
*
sizeof
(
variable_t
)
);
memmove
(
p_
priv
->
p_vars
+
i_new
+
1
,
p_
priv
->
p_vars
+
i_new
,
(
p_
priv
->
i_vars
-
i_new
)
*
sizeof
(
variable_t
)
);
p_
this
->
i_vars
++
;
p_
priv
->
i_vars
++
;
p_var
=
&
p_
this
->
p_vars
[
i_new
];
p_var
=
&
p_
priv
->
p_vars
[
i_new
];
memset
(
p_var
,
0
,
sizeof
(
*
p_var
)
);
p_var
->
i_hash
=
HashString
(
psz_name
);
...
...
@@ -301,7 +302,7 @@ int __var_Create( vlc_object_t *p_this, const char *psz_name, int i_type )
}
}
vlc_mutex_unlock
(
&
p_
this
->
var_lock
);
vlc_mutex_unlock
(
&
p_
priv
->
var_lock
);
return
VLC_SUCCESS
;
}
...
...
@@ -319,22 +320,23 @@ int __var_Destroy( vlc_object_t *p_this, const char *psz_name )
{
int
i_var
,
i
;
variable_t
*
p_var
;
vlc_object_internals_t
*
p_priv
=
p_this
->
p_internals
;
vlc_mutex_lock
(
&
p_
this
->
var_lock
);
vlc_mutex_lock
(
&
p_
priv
->
var_lock
);
i_var
=
GetUnused
(
p_this
,
psz_name
);
if
(
i_var
<
0
)
{
vlc_mutex_unlock
(
&
p_
this
->
var_lock
);
vlc_mutex_unlock
(
&
p_
priv
->
var_lock
);
return
i_var
;
}
p_var
=
&
p_
this
->
p_vars
[
i_var
];
p_var
=
&
p_
priv
->
p_vars
[
i_var
];
if
(
p_var
->
i_usage
>
1
)
{
p_var
->
i_usage
--
;
vlc_mutex_unlock
(
&
p_
this
->
var_lock
);
vlc_mutex_unlock
(
&
p_
priv
->
var_lock
);
return
VLC_SUCCESS
;
}
...
...
@@ -363,19 +365,19 @@ int __var_Destroy( vlc_object_t *p_this, const char *psz_name )
free
(
p_var
->
psz_name
);
if
(
p_var
->
psz_text
)
free
(
p_var
->
psz_text
);
memmove
(
p_
this
->
p_vars
+
i_var
,
p_
this
->
p_vars
+
i_var
+
1
,
(
p_
this
->
i_vars
-
i_var
-
1
)
*
sizeof
(
variable_t
)
);
memmove
(
p_
priv
->
p_vars
+
i_var
,
p_
priv
->
p_vars
+
i_var
+
1
,
(
p_
priv
->
i_vars
-
i_var
-
1
)
*
sizeof
(
variable_t
)
);
if
(
(
p_
this
->
i_vars
&
15
)
==
0
)
if
(
(
p_
priv
->
i_vars
&
15
)
==
0
)
{
p_
this
->
p_vars
=
realloc
(
p_this
->
p_vars
,
(
p_
this
->
i_vars
)
*
sizeof
(
variable_t
)
);
p_
priv
->
p_vars
=
realloc
(
p_priv
->
p_vars
,
(
p_
priv
->
i_vars
)
*
sizeof
(
variable_t
)
);
}
p_
this
->
i_vars
--
;
p_
priv
->
i_vars
--
;
vlc_mutex_unlock
(
&
p_
this
->
var_lock
);
vlc_mutex_unlock
(
&
p_
priv
->
var_lock
);
return
VLC_SUCCESS
;
}
...
...
@@ -395,18 +397,19 @@ int __var_Change( vlc_object_t *p_this, const char *psz_name,
int
i_var
,
i
;
variable_t
*
p_var
;
vlc_value_t
oldval
;
vlc_object_internals_t
*
p_priv
=
p_this
->
p_internals
;
vlc_mutex_lock
(
&
p_
this
->
var_lock
);
vlc_mutex_lock
(
&
p_
priv
->
var_lock
);
i_var
=
Lookup
(
p_
this
->
p_vars
,
p_this
->
i_vars
,
psz_name
);
i_var
=
Lookup
(
p_
priv
->
p_vars
,
p_priv
->
i_vars
,
psz_name
);
if
(
i_var
<
0
)
{
vlc_mutex_unlock
(
&
p_
this
->
var_lock
);
vlc_mutex_unlock
(
&
p_
priv
->
var_lock
);
return
VLC_ENOVAR
;
}
p_var
=
&
p_
this
->
p_vars
[
i_var
];
p_var
=
&
p_
priv
->
p_vars
[
i_var
];
switch
(
i_action
)
{
...
...
@@ -482,7 +485,7 @@ int __var_Change( vlc_object_t *p_this, const char *psz_name,
if
(
i
==
p_var
->
choices
.
i_count
)
{
/* Not found */
vlc_mutex_unlock
(
&
p_
this
->
var_lock
);
vlc_mutex_unlock
(
&
p_
priv
->
var_lock
);
return
VLC_EGENERIC
;
}
...
...
@@ -655,7 +658,7 @@ int __var_Change( vlc_object_t *p_this, const char *psz_name,
callback_entry_t
*
p_entries
=
p_var
->
p_entries
;
p_var
->
b_incallback
=
VLC_TRUE
;
vlc_mutex_unlock
(
&
p_
this
->
var_lock
);
vlc_mutex_unlock
(
&
p_
priv
->
var_lock
);
/* The real calls */
for
(
;
i_entries
--
;
)
...
...
@@ -664,17 +667,17 @@ int __var_Change( vlc_object_t *p_this, const char *psz_name,
p_entries
[
i_entries
].
p_data
);
}
vlc_mutex_lock
(
&
p_
this
->
var_lock
);
vlc_mutex_lock
(
&
p_
priv
->
var_lock
);
i_var
=
Lookup
(
p_
this
->
p_vars
,
p_this
->
i_vars
,
psz_name
);
i_var
=
Lookup
(
p_
priv
->
p_vars
,
p_priv
->
i_vars
,
psz_name
);
if
(
i_var
<
0
)
{
msg_Err
(
p_this
,
"variable %s has disappeared"
,
psz_name
);
vlc_mutex_unlock
(
&
p_
this
->
var_lock
);
vlc_mutex_unlock
(
&
p_
priv
->
var_lock
);
return
VLC_ENOVAR
;
}
p_var
=
&
p_
this
->
p_vars
[
i_var
];
p_var
=
&
p_
priv
->
p_vars
[
i_var
];
p_var
->
b_incallback
=
VLC_FALSE
;
}
}
...
...
@@ -684,7 +687,7 @@ int __var_Change( vlc_object_t *p_this, const char *psz_name,
break
;
}
vlc_mutex_unlock
(
&
p_
this
->
var_lock
);
vlc_mutex_unlock
(
&
p_
priv
->
var_lock
);
return
VLC_SUCCESS
;
}
...
...
@@ -699,20 +702,21 @@ int __var_Change( vlc_object_t *p_this, const char *psz_name,
int
__var_Type
(
vlc_object_t
*
p_this
,
const
char
*
psz_name
)
{
int
i_var
,
i_type
;
vlc_object_internals_t
*
p_priv
=
p_this
->
p_internals
;
vlc_mutex_lock
(
&
p_
this
->
var_lock
);
vlc_mutex_lock
(
&
p_
priv
->
var_lock
);
i_var
=
Lookup
(
p_
this
->
p_vars
,
p_this
->
i_vars
,
psz_name
);
i_var
=
Lookup
(
p_
priv
->
p_vars
,
p_priv
->
i_vars
,
psz_name
);
if
(
i_var
<
0
)
{
vlc_mutex_unlock
(
&
p_
this
->
var_lock
);
vlc_mutex_unlock
(
&
p_
priv
->
var_lock
);
return
0
;
}
i_type
=
p_
this
->
p_vars
[
i_var
].
i_type
;
i_type
=
p_
priv
->
p_vars
[
i_var
].
i_type
;
vlc_mutex_unlock
(
&
p_
this
->
var_lock
);
vlc_mutex_unlock
(
&
p_
priv
->
var_lock
);
return
i_type
;
}
...
...
@@ -729,17 +733,18 @@ int __var_Set( vlc_object_t *p_this, const char *psz_name, vlc_value_t val )
int
i_var
;
variable_t
*
p_var
;
vlc_value_t
oldval
;
vlc_object_internals_t
*
p_priv
=
p_this
->
p_internals
;
vlc_mutex_lock
(
&
p_
this
->
var_lock
);
vlc_mutex_lock
(
&
p_
priv
->
var_lock
);
i_var
=
GetUnused
(
p_this
,
psz_name
);
if
(
i_var
<
0
)
{
vlc_mutex_unlock
(
&
p_
this
->
var_lock
);
vlc_mutex_unlock
(
&
p_
priv
->
var_lock
);
return
i_var
;
}
p_var
=
&
p_
this
->
p_vars
[
i_var
];
p_var
=
&
p_
priv
->
p_vars
[
i_var
];
/* Duplicate data if needed */
p_var
->
pf_dup
(
&
val
);
...
...
@@ -762,7 +767,7 @@ int __var_Set( vlc_object_t *p_this, const char *psz_name, vlc_value_t val )
callback_entry_t
*
p_entries
=
p_var
->
p_entries
;
p_var
->
b_incallback
=
VLC_TRUE
;
vlc_mutex_unlock
(
&
p_
this
->
var_lock
);
vlc_mutex_unlock
(
&
p_
priv
->
var_lock
);
/* The real calls */
for
(
;
i_entries
--
;
)
...
...
@@ -771,24 +776,24 @@ int __var_Set( vlc_object_t *p_this, const char *psz_name, vlc_value_t val )
p_entries
[
i_entries
].
p_data
);
}
vlc_mutex_lock
(
&
p_
this
->
var_lock
);
vlc_mutex_lock
(
&
p_
priv
->
var_lock
);
i_var
=
Lookup
(
p_
this
->
p_vars
,
p_this
->
i_vars
,
psz_name
);
i_var
=
Lookup
(
p_
priv
->
p_vars
,
p_priv
->
i_vars
,
psz_name
);
if
(
i_var
<
0
)
{
msg_Err
(
p_this
,
"variable %s has disappeared"
,
psz_name
);
vlc_mutex_unlock
(
&
p_
this
->
var_lock
);
vlc_mutex_unlock
(
&
p_
priv
->
var_lock
);
return
VLC_ENOVAR
;
}
p_var
=
&
p_
this
->
p_vars
[
i_var
];
p_var
=
&
p_
priv
->
p_vars
[
i_var
];
p_var
->
b_incallback
=
VLC_FALSE
;
}
/* Free data if needed */
p_var
->
pf_free
(
&
oldval
);
vlc_mutex_unlock
(
&
p_
this
->
var_lock
);
vlc_mutex_unlock
(
&
p_
priv
->
var_lock
);
return
VLC_SUCCESS
;
}
...
...
@@ -805,18 +810,19 @@ int __var_Get( vlc_object_t *p_this, const char *psz_name, vlc_value_t *p_val )
{
int
i_var
;
variable_t
*
p_var
;
vlc_object_internals_t
*
p_priv
=
p_this
->
p_internals
;
vlc_mutex_lock
(
&
p_
this
->
var_lock
);
vlc_mutex_lock
(
&
p_
priv
->
var_lock
);
i_var
=
Lookup
(
p_
this
->
p_vars
,
p_this
->
i_vars
,
psz_name
);
i_var
=
Lookup
(
p_
priv
->
p_vars
,
p_priv
->
i_vars
,
psz_name
);
if
(
i_var
<
0
)
{
vlc_mutex_unlock
(
&
p_
this
->
var_lock
);
vlc_mutex_unlock
(
&
p_
priv
->
var_lock
);
return
VLC_ENOVAR
;
}
p_var
=
&
p_
this
->
p_vars
[
i_var
];
p_var
=
&
p_
priv
->
p_vars
[
i_var
];
/* Really get the variable */
*
p_val
=
p_var
->
val
;
...
...
@@ -824,7 +830,7 @@ int __var_Get( vlc_object_t *p_this, const char *psz_name, vlc_value_t *p_val )
/* Duplicate value if needed */
p_var
->
pf_dup
(
p_val
);
vlc_mutex_unlock
(
&
p_
this
->
var_lock
);
vlc_mutex_unlock
(
&
p_
priv
->
var_lock
);
return
VLC_SUCCESS
;
}
...
...
@@ -868,27 +874,28 @@ int __var_AddCallback( vlc_object_t *p_this, const char *psz_name,
int
i_var
;
variable_t
*
p_var
;
callback_entry_t
entry
;
vlc_object_internals_t
*
p_priv
=
p_this
->
p_internals
;
entry
.
pf_callback
=
pf_callback
;
entry
.
p_data
=
p_data
;
vlc_mutex_lock
(
&
p_
this
->
var_lock
);
vlc_mutex_lock
(
&
p_
priv
->
var_lock
);
i_var
=
GetUnused
(
p_this
,
psz_name
);
if
(
i_var
<
0
)
{
vlc_mutex_unlock
(
&
p_
this
->
var_lock
);
vlc_mutex_unlock
(
&
p_
priv
->
var_lock
);
return
i_var
;
}
p_var
=
&
p_
this
->
p_vars
[
i_var
];
p_var
=
&
p_
priv
->
p_vars
[
i_var
];
INSERT_ELEM
(
p_var
->
p_entries
,
p_var
->
i_entries
,
p_var
->
i_entries
,
entry
);
vlc_mutex_unlock
(
&
p_
this
->
var_lock
);
vlc_mutex_unlock
(
&
p_
priv
->
var_lock
);
return
VLC_SUCCESS
;
}
...
...
@@ -904,17 +911,18 @@ int __var_DelCallback( vlc_object_t *p_this, const char *psz_name,
{
int
i_entry
,
i_var
;
variable_t
*
p_var
;
vlc_object_internals_t
*
p_priv
=
p_this
->
p_internals
;
vlc_mutex_lock
(
&
p_
this
->
var_lock
);
vlc_mutex_lock
(
&
p_
priv
->
var_lock
);
i_var
=
GetUnused
(
p_this
,
psz_name
);
if
(
i_var
<
0
)
{
vlc_mutex_unlock
(
&
p_
this
->
var_lock
);
vlc_mutex_unlock
(
&
p_
priv
->
var_lock
);
return
i_var
;
}
p_var
=
&
p_
this
->
p_vars
[
i_var
];
p_var
=
&
p_
priv
->
p_vars
[
i_var
];
for
(
i_entry
=
p_var
->
i_entries
;
i_entry
--
;
)
{
...
...
@@ -927,13 +935,13 @@ int __var_DelCallback( vlc_object_t *p_this, const char *psz_name,
if
(
i_entry
<
0
)
{
vlc_mutex_unlock
(
&
p_
this
->
var_lock
);
vlc_mutex_unlock
(
&
p_
priv
->
var_lock
);
return
VLC_EGENERIC
;
}
REMOVE_ELEM
(
p_var
->
p_entries
,
p_var
->
i_entries
,
i_entry
);
vlc_mutex_unlock
(
&
p_
this
->
var_lock
);
vlc_mutex_unlock
(
&
p_
priv
->
var_lock
);
return
VLC_SUCCESS
;
}
...
...
@@ -949,17 +957,18 @@ int __var_TriggerCallback( vlc_object_t *p_this, const char *psz_name )
int
i_var
;
variable_t
*
p_var
;
vlc_value_t
oldval
;
vlc_object_internals_t
*
p_priv
=
p_this
->
p_internals
;
vlc_mutex_lock
(
&
p_
this
->
var_lock
);
vlc_mutex_lock
(
&
p_
priv
->
var_lock
);
i_var
=
GetUnused
(
p_this
,
psz_name
);
if
(
i_var
<
0
)
{
vlc_mutex_unlock
(
&
p_
this
->
var_lock
);
vlc_mutex_unlock
(
&
p_
priv
->
var_lock
);
return
i_var
;
}
p_var
=
&
p_
this
->
p_vars
[
i_var
];
p_var
=
&
p_
priv
->
p_vars
[
i_var
];
/* Backup needed stuff */
oldval
=
p_var
->
val
;
...
...
@@ -973,7 +982,7 @@ int __var_TriggerCallback( vlc_object_t *p_this, const char *psz_name )
callback_entry_t
*
p_entries
=
p_var
->
p_entries
;
p_var
->
b_incallback
=
VLC_TRUE
;
vlc_mutex_unlock
(
&
p_
this
->
var_lock
);
vlc_mutex_unlock
(
&
p_
priv
->
var_lock
);
/* The real calls */
for
(
;
i_entries
--
;
)
...
...
@@ -982,21 +991,21 @@ int __var_TriggerCallback( vlc_object_t *p_this, const char *psz_name )
p_entries
[
i_entries
].
p_data
);
}
vlc_mutex_lock
(
&
p_
this
->
var_lock
);
vlc_mutex_lock
(
&
p_
priv
->
var_lock
);
i_var
=
Lookup
(
p_
this
->
p_vars
,
p_this
->
i_vars
,
psz_name
);
i_var
=
Lookup
(
p_
priv
->
p_vars
,
p_priv
->
i_vars
,
psz_name
);
if
(
i_var
<
0
)
{
msg_Err
(
p_this
,
"variable %s has disappeared"
,
psz_name
);
vlc_mutex_unlock
(
&
p_
this
->
var_lock
);
vlc_mutex_unlock
(
&
p_
priv
->
var_lock
);
return
VLC_ENOVAR
;
}
p_var
=
&
p_
this
->
p_vars
[
i_var
];
p_var
=
&
p_
priv
->
p_vars
[
i_var
];
p_var
->
b_incallback
=
VLC_FALSE
;
}
vlc_mutex_unlock
(
&
p_
this
->
var_lock
);
vlc_mutex_unlock
(
&
p_
priv
->
var_lock
);
return
VLC_SUCCESS
;
}
...
...
@@ -1141,16 +1150,17 @@ void __var_OptionParse( vlc_object_t *p_obj, const char *psz_option )
static
int
GetUnused
(
vlc_object_t
*
p_this
,
const
char
*
psz_name
)
{
int
i_var
,
i_tries
=
0
;
vlc_object_internals_t
*
p_priv
=
p_this
->
p_internals
;
while
(
VLC_TRUE
)
{
i_var
=
Lookup
(
p_
this
->
p_vars
,
p_this
->
i_vars
,
psz_name
);
i_var
=
Lookup
(
p_
priv
->
p_vars
,
p_priv
->
i_vars
,
psz_name
);
if
(
i_var
<
0
)
{
return
VLC_ENOVAR
;
}
if
(
!
p_
this
->
p_vars
[
i_var
].
b_incallback
)
if
(
!
p_
priv
->
p_vars
[
i_var
].
b_incallback
)
{
return
i_var
;
}
...
...
@@ -1161,9 +1171,9 @@ static int GetUnused( vlc_object_t *p_this, const char *psz_name )
return
VLC_ETIMEOUT
;
}
vlc_mutex_unlock
(
&
p_
this
->
var_lock
);
vlc_mutex_unlock
(
&
p_
priv
->
var_lock
);
msleep
(
THREAD_SLEEP
);
vlc_mutex_lock
(
&
p_
this
->
var_lock
);
vlc_mutex_lock
(
&
p_
priv
->
var_lock
);
}
}
...
...
@@ -1481,16 +1491,17 @@ static int InheritValue( vlc_object_t *p_this, const char *psz_name,
return
VLC_SUCCESS
;
}
vlc_object_internals_t
*
p_priv
=
p_this
->
p_parent
->
p_internals
;
/* Look for the variable */
vlc_mutex_lock
(
&
p_
this
->
p_parent
->
var_lock
);
vlc_mutex_lock
(
&
p_
priv
->
var_lock
);
i_var
=
Lookup
(
p_this
->
p_parent
->
p_vars
,
p_this
->
p_parent
->
i_vars
,
psz_name
);
i_var
=
Lookup
(
p_priv
->
p_vars
,
p_priv
->
i_vars
,
psz_name
);
if
(
i_var
>=
0
)
{
/* We found it! */
p_var
=
&
p_
this
->
p_parent
->
p_vars
[
i_var
];
p_var
=
&
p_
priv
->
p_vars
[
i_var
];
/* Really get the variable */
*
p_val
=
p_var
->
val
;
...
...
@@ -1498,11 +1509,11 @@ static int InheritValue( vlc_object_t *p_this, const char *psz_name,
/* Duplicate value if needed */
p_var
->
pf_dup
(
p_val
);
vlc_mutex_unlock
(
&
p_
this
->
p_parent
->
var_lock
);
vlc_mutex_unlock
(
&
p_
priv
->
var_lock
);
return
VLC_SUCCESS
;
}
vlc_mutex_unlock
(
&
p_
this
->
p_parent
->
var_lock
);
vlc_mutex_unlock
(
&
p_
priv
->
var_lock
);
/* We're still not there */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a 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