[vlc-devel] [3.0 PATCH] input: display OSD from NAV controls
Rémi Denis-Courmont
remi at remlab.net
Thu Apr 5 10:32:18 CEST 2018
Le 5 avril 2018 09:19:05 GMT+03:00, Thomas Guillem <thomas at gllm.fr> a écrit :
>Sorry in advance for this ugly hack. I didn't had the time to merge the
>code of
>the hotkeys module as planned for 3.0. This will be done in 4.0 into
>the new
>input manager.
>
>In the meantime, it's quite important to have UI feedback when
>seeking/jumping
>from the arrow keys. Indeed, users won't understand why the OSD is
>showing when
>pressing Ctrl + arrow keys and not when pressing arrow keys alone.
>
>This hacks use the vlc_object_find_name() (that should be removed for
>4.0) to
>detect if the "hotkeys" module is running and forward the commands to
>this
>module that will show the OSD.
>
>Why not calling OSD functions directly from input.c ? Because we need
>to use
>the same SPU chan for sliders (otherwise, you can end up showing 2
>overlapping
>sliders).
>---
> src/input/input.c | 18 ++++++++++++++++++
> src/misc/objects.c | 4 ++--
> 2 files changed, 20 insertions(+), 2 deletions(-)
>
>diff --git a/src/input/input.c b/src/input/input.c
>index f4d49b809f..ddf62746ff 100644
>--- a/src/input/input.c
>+++ b/src/input/input.c
>@@ -45,6 +45,7 @@
> #include "stream.h"
>
> #include <vlc_aout.h>
>+#include <vlc_actions.h>
> #include <vlc_sout.h>
> #include <vlc_dialog.h>
> #include <vlc_url.h>
>@@ -1774,6 +1775,23 @@ static void ControlNav( input_thread_t *p_input,
>int i_type )
> return;
> }
>
>+ /* HACK: use hotkeys module directly since it can handle OSD.
>+ * TODO: merge hotkeys module in future input manager. */
>+ vlc_object_t *p_obj = vlc_object_find_name( p_input->obj.libvlc,
>"hotkeys" );
>+ if( p_obj )
>+ {
>+ if( seek_direction != 0 )
>+ var_SetInteger( p_input->obj.libvlc, "key-action",
>+ seek_direction == 1 ?
>ACTIONID_JUMP_FORWARD_SHORT
>+ :
>ACTIONID_JUMP_BACKWARD_SHORT );
>+ else
>+ var_SetInteger( p_input->obj.libvlc, "key-action",
>+ vol_direction == 1 ? ACTIONID_VOL_UP
>+ : ACTIONID_VOL_DOWN );
>+ vlc_object_release( p_obj );
>+ return;
>+ } /* else, no hotkeys module: send command directly */
>+
>/* Seek or change volume if the input doesn't have navigation or
>viewpoint */
> if( seek_direction != 0 )
> {
>diff --git a/src/misc/objects.c b/src/misc/objects.c
>index d1ea869410..aee3356454 100644
>--- a/src/misc/objects.c
>+++ b/src/misc/objects.c
>@@ -388,8 +388,8 @@ vlc_object_t *vlc_object_find_name( vlc_object_t
>*p_this, const char *psz_name )
>/* This was officially deprecated on August 19 2009. For the
>convenience of
> * wannabe code janitors, this is the list of names that remain used
> * and unfixed since then. */
>- static const char bad[][5] = { "v4l2", "zvbi" };
>- if( bsearch( psz_name, bad, 2, 5, (void *)strcmp ) == NULL )
>+ static const char bad[][8] = { "hotkeys", "v4l2", "zvbi" };
>+ if( bsearch( psz_name, bad, 3, 8, (void *)strcmp ) == NULL )
> return NULL;
> msg_Err( p_this, "looking for object \"%s\"... FIXME XXX", psz_name );
> #endif
>--
>2.11.0
>
>_______________________________________________
>vlc-devel mailing list
>To unsubscribe or modify your subscription options:
>https://mailman.videolan.org/listinfo/vlc-devel
This would route the navigation controls to the wrong input if there are more than one. Which seems far worse than a cosmetic lack of OSD.
There are reasons why find-name has been deprecated for over 8 years.
--
Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.
More information about the vlc-devel
mailing list