vlc | branch: master | Thomas Guillem <[email protected]> | Wed Feb 3 17:47:16 2016 +0100| [fb7313e0ca7af2e56cfb993f32beeb9002fb87e5] | committer: Thomas Guillem
input: add a META_REQUEST flag to force user interaction It this flag is set, user interaction will be forced when preparsing the item given by libvlc_MetaRequest (there won't be user interactions for sub items). > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=fb7313e0ca7af2e56cfb993f32beeb9002fb87e5 --- include/vlc_input_item.h | 6 +++++- src/input/input.c | 23 +++++++++++++++-------- src/libvlc.c | 2 ++ 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/include/vlc_input_item.h b/include/vlc_input_item.h index 1587e53..4391c72 100644 --- a/include/vlc_input_item.h +++ b/include/vlc_input_item.h @@ -94,6 +94,9 @@ struct input_item_t int i_preparse_depth; /**< How many level of sub items can be preparsed: -1: recursive, 0: none, >0: n levels */ + + bool b_preparse_interact; /**< Force interaction with the user when + preparsing.*/ }; TYPEDEF_ARRAY(input_item_t*, input_item_array_t) @@ -320,7 +323,8 @@ typedef enum input_item_meta_request_option_t META_REQUEST_OPTION_NONE = 0x00, META_REQUEST_OPTION_SCOPE_LOCAL = 0x01, META_REQUEST_OPTION_SCOPE_NETWORK = 0x02, - META_REQUEST_OPTION_SCOPE_ANY = 0x03 + META_REQUEST_OPTION_SCOPE_ANY = 0x03, + META_REQUEST_OPTION_DO_INTERACT = 0x04 } input_item_meta_request_option_t; VLC_API int libvlc_MetaRequest(libvlc_int_t *, input_item_t *, diff --git a/src/input/input.c b/src/input/input.c index 72f1b3c..9836b78 100644 --- a/src/input/input.c +++ b/src/input/input.c @@ -355,6 +355,21 @@ static input_thread_t *Create( vlc_object_t *p_parent, input_item_t *p_item, p_item->i_preparse_depth = -1; } + /* */ + if( p_input->b_preparsing ) + p_input->i_flags |= OBJECT_FLAGS_QUIET | OBJECT_FLAGS_NOINTERACT; + + /* Make sure the interaction option is honored */ + if( !var_InheritBool( p_input, "interact" ) ) + p_input->i_flags |= OBJECT_FLAGS_NOINTERACT; + else if( p_item->b_preparse_interact ) + { + /* If true, this item was asked explicitly to interact with the user + * (via libvlc_MetaRequest). Sub items created from this input won't + * have this flag and won't interact with the user */ + p_input->i_flags &= ~OBJECT_FLAGS_NOINTERACT; + } + vlc_mutex_unlock( &p_item->lock ); /* No slave */ @@ -439,14 +454,6 @@ static input_thread_t *Create( vlc_object_t *p_parent, input_item_t *p_item, input_SendEventMeta( p_input ); /* */ - if( p_input->b_preparsing ) - p_input->i_flags |= OBJECT_FLAGS_QUIET | OBJECT_FLAGS_NOINTERACT; - - /* Make sure the interaction option is honored */ - if( !var_InheritBool( p_input, "interact" ) ) - p_input->i_flags |= OBJECT_FLAGS_NOINTERACT; - - /* */ memset( &p_input->p->counters, 0, sizeof( p_input->p->counters ) ); vlc_mutex_init( &p_input->p->counters.counters_lock ); diff --git a/src/libvlc.c b/src/libvlc.c index 404d315..ff0b618 100644 --- a/src/libvlc.c +++ b/src/libvlc.c @@ -621,6 +621,8 @@ int libvlc_MetaRequest(libvlc_int_t *libvlc, input_item_t *item, vlc_mutex_lock( &item->lock ); if( item->i_preparse_depth == 0 ) item->i_preparse_depth = 1; + if( i_options & META_REQUEST_OPTION_DO_INTERACT ) + item->b_preparse_interact = true; vlc_mutex_unlock( &item->lock ); playlist_preparser_Push(priv->parser, item, i_options); return VLC_SUCCESS; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
