[vlc-devel] [PATCH 2/2] vout: simplify the viewpoint moved handling

Rémi Denis-Courmont remi at remlab.net
Wed Jul 17 11:38:33 CEST 2019


Probably OK

Le 17 juillet 2019 11:57:10 GMT+03:00, Steve Lhomme <robux4 at ycbcr.xyz> a écrit :
>We don't need a generic event callback anymore since we only handle one
>type of
>event.
>
>Setting a vout_display_owner_t is now optional.
>---
> include/vlc_vout_display.h      | 13 +++----------
> modules/video_output/splitter.c |  5 +----
> src/video_output/display.c      |  3 ++-
> src/video_output/vout_wrapper.c | 18 ++++--------------
> 4 files changed, 10 insertions(+), 29 deletions(-)
>
>diff --git a/include/vlc_vout_display.h b/include/vlc_vout_display.h
>index 6d5103cb51..77f401726d 100644
>--- a/include/vlc_vout_display.h
>+++ b/include/vlc_vout_display.h
>@@ -189,7 +189,7 @@ struct vout_display_owner_t {
>   * Be careful, it does not ensure correct serialization if it is used
>      * from multiple threads.
>      */
>-    void            (*event)(vout_display_t *, int, va_list);
>+    void (*viewpoint_moved)(void *sys, const vlc_viewpoint_t *vp);
> };
> 
> /**
>@@ -385,14 +385,6 @@ static inline int
>vout_display_Control(vout_display_t *vd, int query, ...)
>     return ret;
> }
> 
>-static inline void vout_display_SendEvent(vout_display_t *vd, int
>query, ...)
>-{
>-    va_list args;
>-    va_start(args, query);
>-    vd->owner.event(vd, query, args);
>-    va_end(args);
>-}
>-
>VLC_API void vout_display_SendEventPicturesInvalid(vout_display_t *vd);
> 
>static inline void vout_display_SendEventMousePressed(vout_display_t
>*vd, int button)
>@@ -410,7 +402,8 @@ static inline void
>vout_display_SendEventMouseDoubleClick(vout_display_t *vd)
>static inline void vout_display_SendEventViewpointMoved(vout_display_t
>*vd,
>                                             const vlc_viewpoint_t *vp)
> {
>-    vout_display_SendEvent(vd, VOUT_DISPLAY_EVENT_VIEWPOINT_MOVED,
>vp);
>+    if (vd->owner.viewpoint_moved)
>+        vd->owner.viewpoint_moved(vd->owner.sys, vp);
> }
> 
> /**
>diff --git a/modules/video_output/splitter.c
>b/modules/video_output/splitter.c
>index 5a30407395..8a39ccb961 100644
>--- a/modules/video_output/splitter.c
>+++ b/modules/video_output/splitter.c
>@@ -232,10 +232,7 @@ static vout_display_t
>*vlc_vidsplit_CreateDisplay(vlc_object_t *obj,
>     vlc_decoder_device *dec_device,
>     const char *name)
> {
>-    vout_display_owner_t owner = {
>-        .event = vlc_vidsplit_display_Event,
>-    };
>-    return vout_display_New(obj, source, cfg, vctx, dec_device, name,
>&owner);
>+    return vout_display_New(obj, source, cfg, vctx, dec_device, name,
>NULL);
> }
> 
> static int vlc_vidsplit_Open(vout_display_t *vd,
>diff --git a/src/video_output/display.c b/src/video_output/display.c
>index 90af4a071f..5537b19996 100644
>--- a/src/video_output/display.c
>+++ b/src/video_output/display.c
>@@ -779,7 +779,8 @@ vout_display_t *vout_display_New(vlc_object_t
>*parent,
>     vd->display = NULL;
>     vd->control = NULL;
>     vd->sys = NULL;
>-    vd->owner = *owner;
>+    if (owner)
>+        vd->owner = *owner;
> 
>     vd->module = vlc_module_load(vd, "vout display", module,
>                                  module && *module != '\0',
>diff --git a/src/video_output/vout_wrapper.c
>b/src/video_output/vout_wrapper.c
>index 0870cabafa..22c0a22f50 100644
>--- a/src/video_output/vout_wrapper.c
>+++ b/src/video_output/vout_wrapper.c
>@@ -42,20 +42,10 @@ static int  Forward(vlc_object_t *, char const *,
>                     vlc_value_t, vlc_value_t, void *);
> #endif
> 
>-static void VoutDisplayEvent(vout_display_t *vd, int event, va_list
>args)
>+static void VoutViewpointMoved(void *sys, const vlc_viewpoint_t *vp)
> {
>-    vout_thread_t *vout = vd->owner.sys;
>-
>-    switch (event) {
>-    case VOUT_DISPLAY_EVENT_VIEWPOINT_MOVED:
>-        var_SetAddress(vout, "viewpoint-moved",
>-                       (void *)va_arg(args, const vlc_viewpoint_t *));
>-        break;
>-    default:
>-        msg_Err(vd, "VoutDisplayEvent received event %d", event);
>-        /* TODO add an assert when all event are handled */
>-        break;
>-    }
>+    vout_thread_t *vout = sys;
>+    var_SetAddress(vout, "viewpoint-moved", (void*)vp);
> }
> 
> /* Minimum number of display picture */
>@@ -72,7 +62,7 @@ vout_display_t *vout_OpenWrapper(vout_thread_t *vout,
>     vout_thread_sys_t *sys = vout->p;
>     vout_display_t *vd;
>     vout_display_owner_t owner = {
>-        .event = VoutDisplayEvent, .sys = vout,
>+        .viewpoint_moved = VoutViewpointMoved, .sys = vout,
>     };
>     const char *modlist;
>     char *modlistbuf = NULL;
>-- 
>2.17.1
>
>_______________________________________________
>vlc-devel mailing list
>To unsubscribe or modify your subscription options:
>https://mailman.videolan.org/listinfo/vlc-devel

-- 
Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20190717/81b3c052/attachment.html>


More information about the vlc-devel mailing list