[vlc-devel] [PATCH v5 00/24] Get rid of the control command API
robux4 at ycbcr.xyz
Mon Aug 24 09:41:41 CEST 2020
Changes since v4:
- split the "mouse-moved" variables in 2 versions: one in video area coordinates
one in original video coordinates. Only the libvlc API uses the latter.
- do not handle the missing display when translating coordinates for now (a
proper transition should be possible by keeping non translated coordinates
before the display is removed and a new one is added so we mouse-moved is
still accurate even without a display module). That's a pre-existing problem
that can be solved independently from this patchset
- this patchset sits on top of the "video_output: remove write-only "mouse-clicked""
Changes since v3:
- the mouse coordinates are translated to video coordinates as soon as we get
them, since that's what the user sees when s·he moves/clicks the mouse.
- the "mouse-moved", "mouse-button-down", "mouse-clicked" and "fullscreen"
variables are set in non-filtered coordinates (video area coordinates).
- these variables are set in the UI thread rather than the rendering thread
- the filter.new_filters string is merged into filter.configuration. No need
for an intermediate state.
- simplify the ThreadChangeFilters() signature as the filter string and
deinterlace flags always come from the same variables, whether the values
changed or we recreate the filter chain.
- add some comments in the vout thread about what we do in the loops.
- do not use 0,0 video area coordinates for mouse events occuring while the
display module doesn't have proper dimensions to provide. We keep using the
previous correct video area coordinates.
Steve Lhomme (24):
filters: initialize the output mouse state to the new state
filters: remove the duplicate new mouse state
video_output: only reset the mouse_event if it was set on display
video_output: translate the mouse coordinates to display coordinates
video_output: separate the mouse move coordinates in video or UI
libvlc: read the mouse coordinates according to the original video
video_output: move the mouse variables generation in the UI thread
video_output: don't include control.h in include shared across the
video_output: use filter lock to change filters in the vout thread
video_output: use filter lock to change deinterlacing in the vout
video_output: remove always true boolean from ThreadChangeFilters
video_output: merge the new filters string and the kept filter
video_output: always use interlacing.has_deint when creating filters
video_output: rework the deadline parameter return
video_output: use the rendering delay when we were given a deadline to
video_output: use INT64_MAX for the invalid control pop deadline
vout/control: keep the lock instead of setting a held flag
vout/control: move the lock outside of the control API
vout/control: move the condition on pictures/control outside of the
video_output: use an internal bool to detect when we must exit the
video_output: move the mouse events handling outside of the control
video_output: do not wait for new mouse commands if we have a picture
video_output: remove unused control API
video_output: code cleaning
include/vlc_filter.h | 3 +-
lib/video.c | 2 +-
modules/spu/logo.c | 7 +-
modules/video_chroma/chain.c | 5 +-
modules/video_filter/ci_filters.m | 6 +-
.../video_filter/deinterlace/deinterlace.c | 6 +-
modules/video_filter/freeze.c | 7 +-
modules/video_filter/magnify.c | 9 +-
modules/video_filter/puzzle.c | 8 +-
modules/video_filter/puzzle.h | 3 +-
modules/video_filter/transform.c | 3 +-
src/Makefile.am | 2 -
src/misc/filter_chain.c | 4 +-
src/video_output/control.c | 174 -----------
src/video_output/control.h | 82 -----
src/video_output/video_output.c | 292 +++++++++++-------
src/video_output/vout_internal.h | 1 -
src/video_output/vout_intf.c | 2 +
18 files changed, 205 insertions(+), 411 deletions(-)
delete mode 100644 src/video_output/control.c
delete mode 100644 src/video_output/control.h
More information about the vlc-devel