Browse Source

input: add on_attachments_added event to the parser

pull/162/head
Thomas Guillem 3 years ago
parent
commit
f53180cf69
  1. 17
      include/vlc_input_item.h
  2. 4
      modules/gui/qt/dialogs/dialogs_provider.cpp
  3. 1
      modules/misc/medialibrary/fs/directory.cpp
  4. 7
      src/input/item.c

17
include/vlc_input_item.h

@ -444,6 +444,23 @@ typedef struct input_item_parser_cbs_t
* @param userdata user data set by input_item_Parse()
*/
void (*on_subtree_added)(input_item_t *item, input_item_node_t *subtree, void *userdata);
/**
* Event received when new attachments are added
*
* @note This callback is optional. It can be called several times for one
* parse request. The array contains only new elements after a second call.
*
* @param item the parsed item
* @param array valid array containing new elements, should only be used
* within the callback. One and all elements can be held and stored on a
* new variable or new array.
* @param count number of elements in the array
* @param userdata user data set by input_item_Parse()
*/
void (*on_attachments_added)(input_item_t *item,
input_attachment_t *const *array,
size_t count, void *userdata);
} input_item_parser_cbs_t;
/**

4
modules/gui/qt/dialogs/dialogs_provider.cpp

@ -403,7 +403,9 @@ void DialogsProvider::mediaInfoDialog( const MLItemId& itemId )
}, Qt::QueuedConnection );
},
// on_subtree_added
NULL
NULL,
// on_attachments_added
NULL,
};
input_item_parser_id_t * const parser = input_item_Parse( inputItem, VLC_OBJECT( p_intf ), &cbs, this );

1
modules/misc/medialibrary/fs/directory.cpp

@ -167,6 +167,7 @@ static bool request_metadata_sync( libvlc_int_t *libvlc, input_item_t *media,
static const input_item_parser_cbs_t cbs = {
onParserEnded,
onParserSubtreeAdded,
nullptr,
};
auto inputParser = vlc::wrap_cptr( input_item_Parse( media, VLC_OBJECT( libvlc ), &cbs, &req ),

7
src/input/item.c

@ -1414,6 +1414,13 @@ input_item_parser_InputEvent(input_thread_t *input,
parser->cbs->on_subtree_added(input_GetItem(input),
event->subitems, parser->userdata);
break;
case INPUT_EVENT_ATTACHMENTS:
if (parser->cbs->on_attachments_added != NULL)
parser->cbs->on_attachments_added(input_GetItem(input),
event->attachments.array,
event->attachments.count,
parser->userdata);
break;
default:
break;
}

Loading…
Cancel
Save