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
be50cf5b
Commit
be50cf5b
authored
Aug 16, 2007
by
Rémi Denis-Courmont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Hide thread ID out of VLC_COMMON_MEMBERS
parent
2ff0745f
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
44 additions
and
41 deletions
+44
-41
include/vlc_common.h
include/vlc_common.h
+0
-4
src/libvlc-common.c
src/libvlc-common.c
+0
-1
src/libvlc.h
src/libvlc.h
+5
-1
src/misc/objects.c
src/misc/objects.c
+3
-2
src/misc/threads.c
src/misc/threads.c
+34
-31
src/misc/update.c
src/misc/update.c
+1
-1
src/video_output/video_output.c
src/video_output/video_output.c
+1
-1
No files found.
include/vlc_common.h
View file @
be50cf5b
...
...
@@ -547,10 +547,6 @@ typedef struct vlc_object_internals_t vlc_object_internals_t;
char *psz_header; \
int i_flags; \
\
/* Thread properties, if any */
\
vlc_bool_t b_thread; \
vlc_thread_t thread_id; \
\
/* Object access lock */
\
vlc_mutex_t object_lock; \
vlc_cond_t object_wait; \
...
...
src/libvlc-common.c
View file @
be50cf5b
...
...
@@ -193,7 +193,6 @@ libvlc_int_t * libvlc_InternalCreate( void )
i_instances
--
;
return
NULL
;
}
p_libvlc
->
thread_id
=
0
;
p_libvlc
->
p_playlist
=
NULL
;
p_libvlc
->
psz_object_name
=
"libvlc"
;
...
...
src/libvlc.h
View file @
be50cf5b
...
...
@@ -83,9 +83,13 @@ uint32_t CPUCapabilities( void );
struct
vlc_object_internals_t
{
/* Object variables */
variable_t
*
p_vars
;
vlc_mutex_t
var_lock
;
int
i_vars
;
variable_t
*
p_vars
;
/* Thread properties, if any */
vlc_thread_t
thread_id
;
vlc_bool_t
b_thread
;
};
...
...
src/misc/objects.c
View file @
be50cf5b
...
...
@@ -1207,8 +1207,9 @@ static void PrintObject( vlc_object_t *p_this, const char *psz_prefix )
snprintf
(
psz_refcount
,
19
,
", refcount %i"
,
p_this
->
i_refcount
);
psz_thread
[
0
]
=
'\0'
;
if
(
p_this
->
b_thread
)
snprintf
(
psz_thread
,
29
,
" (thread %d)"
,
(
int
)
p_this
->
thread_id
);
if
(
p_this
->
p_internals
->
b_thread
)
snprintf
(
psz_thread
,
29
,
" (thread %u)"
,
(
unsigned
)
p_this
->
p_internals
->
thread_id
);
psz_parent
[
0
]
=
'\0'
;
if
(
p_this
->
p_parent
)
...
...
src/misc/threads.c
View file @
be50cf5b
...
...
@@ -564,15 +564,16 @@ int __vlc_thread_create( vlc_object_t *p_this, const char * psz_file, int i_line
{
int
i_ret
;
void
*
p_data
=
(
void
*
)
p_this
;
vlc_object_internals_t
*
p_priv
=
p_this
->
p_internals
;
vlc_mutex_lock
(
&
p_this
->
object_lock
);
#if defined( PTH_INIT_IN_PTH_H )
p_
this
->
thread_id
=
pth_spawn
(
PTH_ATTR_DEFAULT
,
func
,
p_data
);
i_ret
=
p_
this
->
thread_id
==
NULL
;
p_
priv
->
thread_id
=
pth_spawn
(
PTH_ATTR_DEFAULT
,
func
,
p_data
);
i_ret
=
p_
priv
->
thread_id
==
NULL
;
#elif defined( ST_INIT_IN_ST_H )
p_
this
->
thread_id
=
st_thread_create
(
func
,
p_data
,
1
,
0
);
p_
priv
->
thread_id
=
st_thread_create
(
func
,
p_data
,
1
,
0
);
i_ret
=
0
;
#elif defined( WIN32 ) || defined( UNDER_CE )
...
...
@@ -582,7 +583,7 @@ int __vlc_thread_create( vlc_object_t *p_this, const char * psz_file, int i_line
* function instead of CreateThread, otherwise you'll end up with
* memory leaks and the signal functions not working (see Microsoft
* Knowledge Base, article 104641) */
p_
this
->
thread_id
=
p_
priv
->
thread_id
=
#if defined( UNDER_CE )
(
HANDLE
)
CreateThread
(
NULL
,
0
,
(
PTHREAD_START
)
func
,
p_data
,
0
,
&
threadID
);
...
...
@@ -592,24 +593,24 @@ int __vlc_thread_create( vlc_object_t *p_this, const char * psz_file, int i_line
#endif
}
if
(
p_
this
->
thread_id
&&
i_priority
)
if
(
p_
priv
->
thread_id
&&
i_priority
)
{
if
(
!
SetThreadPriority
(
p_
this
->
thread_id
,
i_priority
)
)
if
(
!
SetThreadPriority
(
p_
priv
->
thread_id
,
i_priority
)
)
{
msg_Warn
(
p_this
,
"couldn't set a faster priority"
);
i_priority
=
0
;
}
}
i_ret
=
(
p_
this
->
thread_id
?
0
:
1
);
i_ret
=
(
p_
priv
->
thread_id
?
0
:
1
);
#elif defined( HAVE_KERNEL_SCHEDULER_H )
p_
this
->
thread_id
=
spawn_thread
(
(
thread_func
)
func
,
psz_name
,
p_
priv
->
thread_id
=
spawn_thread
(
(
thread_func
)
func
,
psz_name
,
i_priority
,
p_data
);
i_ret
=
resume_thread
(
p_
this
->
thread_id
);
i_ret
=
resume_thread
(
p_
priv
->
thread_id
);
#elif defined( PTHREAD_COND_T_IN_PTHREAD_H )
i_ret
=
pthread_create
(
&
p_
this
->
thread_id
,
NULL
,
func
,
p_data
);
i_ret
=
pthread_create
(
&
p_
priv
->
thread_id
,
NULL
,
func
,
p_data
);
#ifndef __APPLE__
if
(
config_GetInt
(
p_this
,
"rt-priority"
)
)
...
...
@@ -633,7 +634,7 @@ int __vlc_thread_create( vlc_object_t *p_this, const char * psz_file, int i_line
param
.
sched_priority
=
i_priority
;
i_policy
=
SCHED_RR
;
}
if
(
(
i_error
=
pthread_setschedparam
(
p_
this
->
thread_id
,
if
(
(
i_error
=
pthread_setschedparam
(
p_
priv
->
thread_id
,
i_policy
,
&
param
))
)
{
msg_Warn
(
p_this
,
"couldn't set thread priority (%s:%d): %s"
,
...
...
@@ -649,7 +650,7 @@ int __vlc_thread_create( vlc_object_t *p_this, const char * psz_file, int i_line
#endif
#elif defined( HAVE_CTHREADS_H )
p_
this
->
thread_id
=
cthread_fork
(
(
cthread_fn_t
)
func
,
(
any_t
)
p_data
);
p_
priv
->
thread_id
=
cthread_fork
(
(
cthread_fn_t
)
func
,
(
any_t
)
p_data
);
i_ret
=
0
;
#endif
...
...
@@ -662,10 +663,10 @@ int __vlc_thread_create( vlc_object_t *p_this, const char * psz_file, int i_line
vlc_cond_wait
(
&
p_this
->
object_wait
,
&
p_this
->
object_lock
);
}
p_
this
->
b_thread
=
VLC_TRUE
;
p_
priv
->
b_thread
=
VLC_TRUE
;
msg_Dbg
(
p_this
,
"thread %u (%s) created at priority %d (%s:%d)"
,
(
unsigned
int
)
p_
this
->
thread_id
,
psz_name
,
i_priority
,
(
unsigned
int
)
p_
priv
->
thread_id
,
psz_name
,
i_priority
,
psz_file
,
i_line
);
vlc_mutex_unlock
(
&
p_this
->
object_lock
);
...
...
@@ -696,9 +697,10 @@ int __vlc_thread_set_priority( vlc_object_t *p_this, const char * psz_file,
}
#elif defined( PTHREAD_COND_T_IN_PTHREAD_H )
#ifndef __APPLE__
if
(
config_GetInt
(
p_this
,
"rt-priority"
)
)
#endif
vlc_object_internals_t
*
p_priv
=
p_this
->
p_internals
;
# ifndef __APPLE__
if
(
config_GetInt
(
p_this
,
"rt-priority"
)
>
0
)
# endif
{
int
i_error
,
i_policy
;
struct
sched_param
param
;
...
...
@@ -718,9 +720,9 @@ int __vlc_thread_set_priority( vlc_object_t *p_this, const char * psz_file,
param
.
sched_priority
=
i_priority
;
i_policy
=
SCHED_RR
;
}
if
(
!
p_
this
->
thread_id
)
p_
this
->
thread_id
=
pthread_self
();
if
(
(
i_error
=
pthread_setschedparam
(
p_
this
->
thread_id
,
if
(
!
p_
priv
->
thread_id
)
p_
priv
->
thread_id
=
pthread_self
();
if
(
(
i_error
=
pthread_setschedparam
(
p_
priv
->
thread_id
,
i_policy
,
&
param
))
)
{
msg_Warn
(
p_this
,
"couldn't set thread priority (%s:%d): %s"
,
...
...
@@ -748,13 +750,14 @@ void __vlc_thread_ready( vlc_object_t *p_this )
*****************************************************************************/
void
__vlc_thread_join
(
vlc_object_t
*
p_this
,
const
char
*
psz_file
,
int
i_line
)
{
vlc_object_internals_t
*
p_priv
=
p_this
->
p_internals
;
int
i_ret
=
0
;
#if defined( PTH_INIT_IN_PTH_H )
i_ret
=
(
pth_join
(
p_
this
->
thread_id
,
NULL
)
==
FALSE
);
i_ret
=
(
pth_join
(
p_
priv
->
thread_id
,
NULL
)
==
FALSE
);
#elif defined( ST_INIT_IN_ST_H )
i_ret
=
st_thread_join
(
p_
this
->
thread_id
,
NULL
);
i_ret
=
st_thread_join
(
p_
priv
->
thread_id
,
NULL
);
#elif defined( UNDER_CE ) || defined( WIN32 )
HMODULE
hmodule
;
...
...
@@ -763,7 +766,7 @@ void __vlc_thread_join( vlc_object_t *p_this, const char * psz_file, int i_line
FILETIME
create_ft
,
exit_ft
,
kernel_ft
,
user_ft
;
int64_t
real_time
,
kernel_time
,
user_time
;
WaitForSingleObject
(
p_
this
->
thread_id
,
INFINITE
);
WaitForSingleObject
(
p_
priv
->
thread_id
,
INFINITE
);
#if defined( UNDER_CE )
hmodule
=
GetModuleHandle
(
_T
(
"COREDLL"
)
);
...
...
@@ -775,7 +778,7 @@ void __vlc_thread_join( vlc_object_t *p_this, const char * psz_file, int i_line
GetProcAddress
(
hmodule
,
_T
(
"GetThreadTimes"
)
);
if
(
OurGetThreadTimes
&&
OurGetThreadTimes
(
p_
this
->
thread_id
,
OurGetThreadTimes
(
p_
priv
->
thread_id
,
&
create_ft
,
&
exit_ft
,
&
kernel_ft
,
&
user_ft
)
)
{
real_time
=
...
...
@@ -800,17 +803,17 @@ void __vlc_thread_join( vlc_object_t *p_this, const char * psz_file, int i_line
user_time
/
60
/
1000000
,
(
double
)((
user_time
%
(
60
*
1000000
))
/
1000000
.
0
)
);
}
CloseHandle
(
p_
this
->
thread_id
);
CloseHandle
(
p_
priv
->
thread_id
);
#elif defined( HAVE_KERNEL_SCHEDULER_H )
int32_t
exit_value
;
wait_for_thread
(
p_
this
->
thread_id
,
&
exit_value
);
wait_for_thread
(
p_
priv
->
thread_id
,
&
exit_value
);
#elif defined( PTHREAD_COND_T_IN_PTHREAD_H )
i_ret
=
pthread_join
(
p_
this
->
thread_id
,
NULL
);
i_ret
=
pthread_join
(
p_
priv
->
thread_id
,
NULL
);
#elif defined( HAVE_CTHREADS_H )
cthread_join
(
p_
this
->
thread_id
);
cthread_join
(
p_
priv
->
thread_id
);
i_ret
=
1
;
#endif
...
...
@@ -818,15 +821,15 @@ void __vlc_thread_join( vlc_object_t *p_this, const char * psz_file, int i_line
if
(
i_ret
)
{
msg_Err
(
p_this
,
"thread_join(%u) failed at %s:%d (%s)"
,
(
unsigned
int
)
p_
this
->
thread_id
,
psz_file
,
i_line
,
(
unsigned
int
)
p_
priv
->
thread_id
,
psz_file
,
i_line
,
strerror
(
i_ret
)
);
}
else
{
msg_Dbg
(
p_this
,
"thread %u joined (%s:%d)"
,
(
unsigned
int
)
p_
this
->
thread_id
,
psz_file
,
i_line
);
(
unsigned
int
)
p_
priv
->
thread_id
,
psz_file
,
i_line
);
}
p_
this
->
b_thread
=
VLC_FALSE
;
p_
priv
->
b_thread
=
VLC_FALSE
;
}
src/misc/update.c
View file @
be50cf5b
...
...
@@ -1338,7 +1338,7 @@ void update_download_for_real( download_thread_t *p_this )
free
(
p_this
->
psz_status
);
#ifdef WIN32
CloseHandle
(
p_this
->
thread_id
);
CloseHandle
(
p_this
->
p_internals
->
thread_id
);
#endif
vlc_object_destroy
(
p_this
);
...
...
src/video_output/video_output.c
View file @
be50cf5b
...
...
@@ -1449,7 +1449,7 @@ static void SuxorRestartVideoES( suxor_thread_t *p_this )
vlc_object_release
(
p_this
->
p_input
);
#ifdef WIN32
CloseHandle
(
p_this
->
thread_id
);
CloseHandle
(
p_this
->
p_internals
->
thread_id
);
#endif
vlc_object_destroy
(
p_this
);
...
...
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