Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
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
Commits
974a5e40
Commit
974a5e40
authored
Aug 05, 2008
by
Rémi Denis-Courmont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
libvlccore: push threads cancellation down vlc_thread_create
parent
1cc00146
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
61 additions
and
8 deletions
+61
-8
src/input/decoder.c
src/input/decoder.c
+2
-2
src/input/demux.c
src/input/demux.c
+2
-0
src/input/input.c
src/input/input.c
+7
-1
src/input/vlm.c
src/input/vlm.c
+2
-0
src/interface/interaction.c
src/interface/interaction.c
+3
-2
src/interface/interface.c
src/interface/interface.c
+6
-0
src/misc/beos_specific.cpp
src/misc/beos_specific.cpp
+2
-0
src/misc/update.c
src/misc/update.c
+11
-0
src/network/httpd.c
src/network/httpd.c
+2
-0
src/playlist/services_discovery.c
src/playlist/services_discovery.c
+5
-2
src/playlist/thread.c
src/playlist/thread.c
+8
-0
src/stream_output/sap.c
src/stream_output/sap.c
+6
-0
src/video_output/video_output.c
src/video_output/video_output.c
+5
-1
No files found.
src/input/decoder.c
View file @
974a5e40
...
...
@@ -573,12 +573,12 @@ static decoder_t * CreateDecoder( input_thread_t *p_input,
* The decoding main loop
*
* \param p_dec the decoder
* \return 0
*/
static
void
*
DecoderThread
(
vlc_object_t
*
p_this
)
{
decoder_t
*
p_dec
=
(
decoder_t
*
)
p_this
;
block_t
*
p_block
;
int
canc
=
vlc_savecancel
();
/* The decoder's main loop */
while
(
!
p_dec
->
b_die
&&
!
p_dec
->
b_error
)
...
...
@@ -604,7 +604,7 @@ static void* DecoderThread( vlc_object_t *p_this )
/* We do it here because of the dll loader that wants close() in the
* same thread than open()/decode() */
module_Unneed
(
p_dec
,
p_dec
->
p_module
);
vlc_restorecancel
(
canc
);
return
NULL
;
}
...
...
src/input/demux.c
View file @
974a5e40
...
...
@@ -542,6 +542,7 @@ static void* DStreamThread( vlc_object_t* p_this )
stream_t
*
s
=
(
stream_t
*
)
p_this
;
d_stream_sys_t
*
p_sys
=
(
d_stream_sys_t
*
)
s
->
p_sys
;
demux_t
*
p_demux
;
int
canc
=
vlc_savecancel
();
/* Create the demuxer */
if
(
!
(
p_demux
=
demux_New
(
s
,
""
,
p_sys
->
psz_name
,
""
,
s
,
p_sys
->
out
,
...
...
@@ -558,6 +559,7 @@ static void* DStreamThread( vlc_object_t* p_this )
if
(
p_demux
->
pf_demux
(
p_demux
)
<=
0
)
break
;
}
vlc_restorecancel
(
canc
);
vlc_object_kill
(
p_demux
);
return
NULL
;
}
...
...
src/input/input.c
View file @
974a5e40
...
...
@@ -492,6 +492,8 @@ sout_instance_t * input_DetachSout( input_thread_t *p_input )
static
void
*
Run
(
vlc_object_t
*
p_this
)
{
input_thread_t
*
p_input
=
(
input_thread_t
*
)
p_this
;
int
canc
=
vlc_savecancel
();
/* Signal that the thread is launched */
vlc_thread_ready
(
p_input
);
...
...
@@ -536,7 +538,7 @@ static void* Run( vlc_object_t *p_this )
/* Clean up */
End
(
p_input
);
vlc_restorecancel
(
canc
);
return
NULL
;
}
...
...
@@ -548,8 +550,11 @@ static void* Run( vlc_object_t *p_this )
static
void
*
RunAndDestroy
(
vlc_object_t
*
p_this
)
{
input_thread_t
*
p_input
=
(
input_thread_t
*
)
p_this
;
int
canc
;
/* Signal that the thread is launched */
vlc_thread_ready
(
p_input
);
canc
=
vlc_savecancel
();
if
(
Init
(
p_input
)
)
goto
exit
;
...
...
@@ -579,6 +584,7 @@ static void* RunAndDestroy( vlc_object_t *p_this )
exit:
/* Release memory */
vlc_object_release
(
p_input
);
vlc_restorecancel
(
canc
);
return
0
;
}
...
...
src/input/vlm.c
View file @
974a5e40
...
...
@@ -309,6 +309,7 @@ static void* Manage( void* p_object )
mtime_t
i_lastcheck
;
mtime_t
i_time
;
int
canc
=
vlc_savecancel
();
i_lastcheck
=
vlm_Date
();
while
(
!
vlm
->
b_die
)
...
...
@@ -412,6 +413,7 @@ static void* Manage( void* p_object )
msleep
(
100000
);
}
vlc_restorecancel
(
canc
);
return
NULL
;
}
...
...
src/interface/interaction.c
View file @
974a5e40
...
...
@@ -558,8 +558,8 @@ static int DialogSend( vlc_object_t *p_this, interaction_dialog_t *p_dialog )
static
void
*
InteractionLoop
(
vlc_object_t
*
p_this
)
{
int
i
;
interaction_t
*
p_interaction
=
(
interaction_t
*
)
p_this
;
int
canc
=
vlc_savecancel
();
vlc_object_lock
(
p_this
);
while
(
vlc_object_alive
(
p_this
)
)
...
...
@@ -570,12 +570,13 @@ static void* InteractionLoop( vlc_object_t *p_this )
vlc_object_unlock
(
p_this
);
/* Remove all dialogs - Interfaces must be able to clean up their data */
for
(
i
=
p_interaction
->
i_dialogs
-
1
;
i
>=
0
;
i
--
)
for
(
i
nt
i
=
p_interaction
->
i_dialogs
-
1
;
i
>=
0
;
i
--
)
{
interaction_dialog_t
*
p_dialog
=
p_interaction
->
pp_dialogs
[
i
];
DialogDestroy
(
p_dialog
);
REMOVE_ELEM
(
p_interaction
->
pp_dialogs
,
p_interaction
->
i_dialogs
,
i
);
}
vlc_restorecancel
(
canc
);
return
NULL
;
}
...
...
src/interface/interface.c
View file @
974a5e40
...
...
@@ -198,6 +198,7 @@ static void* RunInterface( vlc_object_t *p_this )
intf_thread_t
*
p_intf
=
(
intf_thread_t
*
)
p_this
;
vlc_value_t
val
,
text
;
char
*
psz_intf
;
int
canc
=
vlc_savecancel
();
/* Variable used for interface spawning */
var_Create
(
p_intf
,
"intf-add"
,
VLC_VAR_STRING
|
...
...
@@ -258,6 +259,8 @@ static void* RunInterface( vlc_object_t *p_this )
p_intf
->
p_module
=
module_Need
(
p_intf
,
"interface"
,
psz_intf
,
0
);
}
while
(
p_intf
->
p_module
);
vlc_restorecancel
(
canc
);
return
NULL
;
}
...
...
@@ -269,6 +272,8 @@ static void * MonitorLibVLCDeath( vlc_object_t * p_this )
{
intf_thread_t
*
p_intf
=
(
intf_thread_t
*
)
p_this
;
libvlc_int_t
*
p_libvlc
=
p_intf
->
p_libvlc
;
int
canc
=
vlc_savecancel
();
vlc_object_lock
(
p_libvlc
);
while
(
vlc_object_alive
(
p_libvlc
)
)
{
...
...
@@ -292,6 +297,7 @@ static void * MonitorLibVLCDeath( vlc_object_t * p_this )
vlc_object_kill
(
p_intf
);
}
vlc_list_release
(
p_list
);
vlc_restorecancel
(
canc
);
return
NULL
;
}
#endif
...
...
src/misc/beos_specific.cpp
View file @
974a5e40
...
...
@@ -122,6 +122,7 @@ void system_End( libvlc_int_t *p_this )
*****************************************************************************/
static
void
*
AppThread
(
vlc_object_t
*
p_this
)
{
int
canc
=
vlc_savecancel
();
VlcApplication
*
BeApp
=
new
VlcApplication
(
"application/x-vnd.videolan-vlc"
);
vlc_object_attach
(
p_this
,
p_this
->
p_libvlc
);
...
...
@@ -129,6 +130,7 @@ static void* AppThread( vlc_object_t * p_this )
BeApp
->
Run
();
vlc_object_detach
(
p_this
);
delete
BeApp
;
vlc_restorecancel
(
canc
);
return
NULL
;
}
...
...
src/misc/update.c
View file @
974a5e40
...
...
@@ -1385,6 +1385,9 @@ void* update_CheckReal( vlc_object_t* p_this )
{
update_check_thread_t
*
p_uct
=
(
update_check_thread_t
*
)
p_this
;
bool
b_ret
;
int
canc
;
vlc_savecancel
(
&
canc
);
vlc_mutex_lock
(
&
p_uct
->
p_update
->
lock
);
EmptyRelease
(
p_uct
->
p_update
);
...
...
@@ -1393,6 +1396,8 @@ void* update_CheckReal( vlc_object_t* p_this )
if
(
p_uct
->
pf_callback
)
(
p_uct
->
pf_callback
)(
p_uct
->
p_data
,
b_ret
);
vlc_restorecancel
(
canc
);
return
NULL
;
}
...
...
@@ -1504,11 +1509,13 @@ static void* update_DownloadReal( vlc_object_t *p_this )
stream_t
*
p_stream
=
NULL
;
void
*
p_buffer
=
NULL
;
int
i_read
;
int
canc
;
update_t
*
p_update
=
p_udt
->
p_update
;
char
*
psz_destdir
=
p_udt
->
psz_destdir
;
msg_Dbg
(
p_udt
,
"Opening Stream '%s'"
,
p_update
->
release
.
psz_url
);
canc
=
vlc_savecancel
();
/* Open the stream */
p_stream
=
stream_UrlNew
(
p_udt
,
p_update
->
release
.
psz_url
);
...
...
@@ -1699,6 +1706,10 @@ end:
free
(
p_buffer
);
free
(
psz_size
);
p_udt
->
p_update
->
p_download
=
NULL
;
vlc_object_release
(
p_udt
);
vlc_restorecancel
(
canc
);
return
NULL
;
}
...
...
src/network/httpd.c
View file @
974a5e40
...
...
@@ -2027,6 +2027,7 @@ static void* httpd_HostThread( vlc_object_t *p_this )
counter_t
*
p_active_counter
=
stats_CounterCreate
(
host
,
VLC_VAR_INTEGER
,
STATS_COUNTER
);
int
evfd
;
bool
b_die
;
int
canc
=
vlc_savecancel
();
retry:
vlc_object_lock
(
host
);
...
...
@@ -2568,6 +2569,7 @@ retry:
stats_CounterClean
(
p_total_counter
);
if
(
p_active_counter
)
stats_CounterClean
(
p_active_counter
);
vlc_restorecancel
(
canc
);
return
NULL
;
}
...
...
src/playlist/services_discovery.c
View file @
974a5e40
...
...
@@ -205,15 +205,18 @@ services_discovery_RemoveItem ( services_discovery_t * p_sd, input_item_t * p_it
static
void
*
RunSD
(
vlc_object_t
*
p_this
)
{
services_discovery_t
*
p_sd
=
(
services_discovery_t
*
)
p_this
;
vlc_event_t
event
;
vlc_event_t
event
=
{
.
type
=
vlc_ServicesDiscoveryStarted
};
int
canc
=
vlc_savecancel
();
event
.
type
=
vlc_ServicesDiscoveryStarted
;
vlc_event_send
(
&
p_sd
->
event_manager
,
&
event
);
p_sd
->
pf_run
(
p_sd
);
event
.
type
=
vlc_ServicesDiscoveryEnded
;
vlc_event_send
(
&
p_sd
->
event_manager
,
&
event
);
vlc_restorecancel
(
canc
);
return
NULL
;
}
...
...
src/playlist/thread.c
View file @
974a5e40
...
...
@@ -138,6 +138,7 @@ static void* RunControlThread ( vlc_object_t *p_this )
/* Tell above that we're ready */
vlc_thread_ready
(
p_playlist
);
int
canc
=
vlc_savecancel
();
vlc_object_lock
(
p_playlist
);
while
(
vlc_object_alive
(
p_playlist
)
)
{
...
...
@@ -165,6 +166,7 @@ static void* RunControlThread ( vlc_object_t *p_this )
vlc_object_unlock
(
p_playlist
);
playlist_LastLoop
(
p_playlist
);
vlc_restorecancel
(
canc
);
return
NULL
;
}
...
...
@@ -174,9 +176,13 @@ static void* RunControlThread ( vlc_object_t *p_this )
static
void
*
RunPreparse
(
vlc_object_t
*
p_this
)
{
playlist_preparse_t
*
p_obj
=
(
playlist_preparse_t
*
)
p_this
;
int
canc
;
/* Tell above that we're ready */
vlc_thread_ready
(
p_obj
);
canc
=
vlc_savecancel
();
playlist_PreparseLoop
(
p_obj
);
vlc_restorecancel
(
canc
);
return
NULL
;
}
...
...
@@ -185,7 +191,9 @@ static void* RunFetcher( vlc_object_t *p_this )
playlist_fetcher_t
*
p_obj
=
(
playlist_fetcher_t
*
)
p_this
;
/* Tell above that we're ready */
vlc_thread_ready
(
p_obj
);
int
canc
=
vlc_savecancel
();
playlist_FetcherLoop
(
p_obj
);
vlc_restorecancel
(
canc
);
return
NULL
;
}
...
...
src/stream_output/sap.c
View file @
974a5e40
...
...
@@ -192,6 +192,11 @@ static void * RunThread( vlc_object_t *p_this)
{
sap_handler_t
*
p_sap
=
(
sap_handler_t
*
)
p_this
;
sap_session_t
*
p_session
;
int
canc
=
vlc_savecancel
();
/* TODO: Once net_Write() is cancel-safe, so will this whole thread.
* However, there is a more serious issues here: msleep(SAP_IDLE).
* This thread should really use poll().
*/
while
(
!
p_sap
->
b_die
)
{
...
...
@@ -236,6 +241,7 @@ static void * RunThread( vlc_object_t *p_this)
}
vlc_object_unlock
(
p_sap
);
}
vlc_restorecancel
(
canc
);
return
NULL
;
}
...
...
src/video_output/video_output.c
View file @
974a5e40
...
...
@@ -717,6 +717,7 @@ static void* RunThread( vlc_object_t *p_this )
bool
b_drop_late
;
int
i_displayed
=
0
,
i_lost
=
0
,
i_loops
=
0
;
int
canc
=
vlc_savecancel
();
/*
* Initialize thread
...
...
@@ -735,6 +736,7 @@ static void* RunThread( vlc_object_t *p_this )
{
EndThread
(
p_vout
);
vlc_mutex_unlock
(
&
p_vout
->
change_lock
);
vlc_restorecancel
(
canc
);
return
NULL
;
}
...
...
@@ -1121,6 +1123,7 @@ static void* RunThread( vlc_object_t *p_this )
vlc_mutex_unlock
(
&
p_vout
->
change_lock
);
vlc_object_unlock
(
p_vout
);
vlc_restorecancel
(
canc
);
return
NULL
;
}
...
...
@@ -1381,6 +1384,7 @@ typedef struct suxor_thread_t
static
void
*
SuxorRestartVideoES
(
vlc_object_t
*
p_vlc_t
)
{
suxor_thread_t
*
p_this
=
(
suxor_thread_t
*
)
p_vlc_t
;
int
canc
=
vlc_savecancel
();
/* Now restart current video stream */
int
val
=
var_GetInteger
(
p_this
->
p_input
,
"video-es"
);
if
(
val
>=
0
)
...
...
@@ -1390,8 +1394,8 @@ static void* SuxorRestartVideoES( vlc_object_t * p_vlc_t )
}
vlc_object_release
(
p_this
->
p_input
);
vlc_object_release
(
p_this
);
vlc_restorecancel
(
canc
);
return
NULL
;
}
...
...
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