[vlc-devel] [PATCH 6/9] preparser: add playlist_preparser_Cancel
Thomas Guillem
thomas at gllm.fr
Wed Jun 1 13:24:50 CEST 2016
---
src/playlist/preparser.c | 23 +++++++++++++++++++++++
src/playlist/preparser.h | 8 ++++++++
2 files changed, 31 insertions(+)
diff --git a/src/playlist/preparser.c b/src/playlist/preparser.c
index a5751c5..13d5d3c 100644
--- a/src/playlist/preparser.c
+++ b/src/playlist/preparser.c
@@ -116,6 +116,29 @@ void playlist_preparser_fetcher_Push( playlist_preparser_t *p_preparser,
playlist_fetcher_Push( p_preparser->p_fetcher, p_item, i_options );
}
+void playlist_preparser_Cancel( playlist_preparser_t *p_preparser,
+ input_item_t *p_item )
+{
+ vlc_mutex_lock( &p_preparser->lock );
+ /* Remove the item from the queue (if present) */
+ for( unsigned int i = 0; i < p_preparser->i_waiting; ++i )
+ {
+ preparser_entry_t *p_entry = p_preparser->pp_waiting[0];
+ if( p_entry->p_item == p_item )
+ {
+ vlc_gc_decref( p_entry->p_item );
+ free( p_entry );
+ REMOVE_ELEM( p_preparser->pp_waiting, p_preparser->i_waiting, i );
+ break;
+ }
+ }
+ /* Stop the input_thread reading the item (if any) */
+ if( p_preparser->input != NULL
+ && input_GetItem( p_preparser->input ) == p_item )
+ input_Stop( p_preparser->input );
+ vlc_mutex_unlock( &p_preparser->lock );
+}
+
void playlist_preparser_Delete( playlist_preparser_t *p_preparser )
{
vlc_mutex_lock( &p_preparser->lock );
diff --git a/src/playlist/preparser.h b/src/playlist/preparser.h
index fabb57b..996756b 100644
--- a/src/playlist/preparser.h
+++ b/src/playlist/preparser.h
@@ -55,6 +55,14 @@ void playlist_preparser_fetcher_Push( playlist_preparser_t *, input_item_t *,
input_item_meta_request_option_t );
/**
+ * This function cancel the preparsing for a given input item.
+ *
+ * This does nothing if the input item is already processed or if it was not
+ * added with playlist_preparser_Push()
+ */
+void playlist_preparser_Cancel( playlist_preparser_t *, input_item_t * );
+
+/**
* This function destroys the preparser object and thread.
*
* All pending input items will be released.
--
2.8.1
More information about the vlc-devel
mailing list