[vlc-devel] [PATCH 00/14] Use input thread events for (pre-)parsing
Romain Vimont
rom1v at videolabs.io
Thu Aug 16 22:00:57 CEST 2018
Of course, I forgot to adapt .m files
(modules/gui/macosx/VLCPlaylistInfo.m).
On Thu, Aug 16, 2018 at 04:01:57PM +0200, Romain Vimont wrote:
> Currently, (pre-)parsing an item generates events on the input item
> (its vlc_event_manager_t) directly.
>
> This is weird, especially for the "subtree added" event, because the
> subtree does not belong to the item at all: it is created only to fire
> an event, then destroyed immediately. Thus, the detection of subitems is
> more related to a specific (pre-)parsing task than to the item itself.
>
> In practice, listening input items to receive preparsing results also
> poses a lock-inversion problem for my media tree stuff (which also
> exists in the current playlist):
> - <https://mailman.videolan.org/pipermail/vlc-devel/2018-July/120151.html>
> - <https://mailman.videolan.org/pipermail/vlc-devel/2018-July/120160.html>
>
> This patchset aims to trigger "subtree added" events on the input thread
> instead. In addition, this event is also exposed in preparser callbacks
> (since the input thread is internal), along with the "preparse ended"
> event.
>
> Summary:
> - patches 1 and 2 (multithreaded preparser) were already posted:
> - <https://mailman.videolan.org/pipermail/vlc-devel/2018-July/120394.html>
> - <https://mailman.videolan.org/pipermail/vlc-devel/2018-July/120397.html>
> - patch 3 refactors vlc_input_event to make it compatible with C++;
> - patch 4 adds the "subtree added" event to the input thread;
> - patch 5 exposes preparser callbacks (the input thread is internal);
> - patches 6 and 7 refactor the fetcher, used by the preparser, to be able
> to trigger the "preparse ended" event correctly;
> - patches 8 to 12 adapt all VLC code to use input thread callbacks instead
> of input item callbacks;
> - patches 13 and 14 remove the events from the input item.
>
> Filip Roséen (1):
> input: preparser: prepare for multithreaded background worker
>
> Romain Vimont (13):
> misc: background_worker: make the background worker multithreaded
> input: name input event structs
> input: notify "subtree added" on the input thread
> preparser: provide events in callbacks
> fetcher: provide events in callbacks
> preparser: use fetcher callbacks
> libvlc: receive events from input thread
> playlist: receive events from input thread
> medialib: receive events from input thread
> input: pass thread event callbacks to input_Read()
> sd: mediadirs: receive events from input thread
> input: remove triggering of legacy events
> input: remove legacy events from input item
>
> include/vlc_events.h | 4 +-
> include/vlc_input.h | 119 +++--
> include/vlc_input_item.h | 18 +-
> lib/media.c | 47 +-
> lib/media_internal.h | 1 +
> lib/media_list.c | 3 +-
> lib/media_player.c | 19 +-
> modules/gui/qt/input_manager.cpp | 3 +-
> .../misc/medialibrary/MetadataExtractor.cpp | 48 +-
> modules/misc/medialibrary/medialibrary.h | 3 +-
> modules/services_discovery/mediadirs.c | 29 +-
> src/input/es_out.c | 5 +-
> src/input/event.c | 11 +
> src/input/event.h | 2 +
> src/input/input.c | 7 +-
> src/input/input_interface.h | 1 -
> src/input/input_internal.h | 3 -
> src/input/item.c | 16 -
> src/libvlc-module.c | 14 +
> src/libvlc.c | 14 +-
> src/libvlc.h | 2 +
> src/misc/background_worker.c | 437 +++++++++++-------
> src/misc/background_worker.h | 20 +
> src/playlist/item.c | 28 +-
> src/playlist/loadsave.c | 2 +-
> src/playlist/playlist_internal.h | 2 +
> src/playlist/thread.c | 20 +-
> src/preparser/fetcher.c | 29 +-
> src/preparser/fetcher.h | 3 +-
> src/preparser/preparser.c | 202 ++++++--
> src/preparser/preparser.h | 8 +-
> test/libvlc/media.c | 15 +-
> 32 files changed, 738 insertions(+), 397 deletions(-)
>
> If we exclude the two first patches, it's only:
> 29 files changed, 390 insertions(+), 201 deletions(-)
>
> --
> 2.18.0
>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
More information about the vlc-devel
mailing list