[vlc-devel] [PATCH 1/4] vout_window: also store the X11 Display pointer

Rémi Denis-Courmont remi at remlab.net
Wed Jun 21 10:32:32 CEST 2017


Le 21 juin 2017 11:21:01 GMT+03:00, Thomas Guillem <thomas at gllm.fr> a écrit :
>---
> include/vlc_vout_window.h                       | 5 ++++-
> modules/gui/qt/components/interface_widgets.cpp | 3 ++-
> modules/gui/skins2/src/skin_main.cpp            | 3 ++-
> modules/gui/skins2/src/vout_window.cpp          | 3 ++-
> modules/hw/vdpau/display.c                      | 2 +-
> modules/video_output/glx.c                      | 2 +-
> modules/video_output/opengl/egl.c               | 2 +-
> modules/video_output/xcb/events.c               | 2 +-
> modules/video_output/xcb/window.c               | 7 ++++---
> 9 files changed, 18 insertions(+), 11 deletions(-)
>
>diff --git a/include/vlc_vout_window.h b/include/vlc_vout_window.h
>index 69a719bd2a..698df970d1 100644
>--- a/include/vlc_vout_window.h
>+++ b/include/vlc_vout_window.h
>@@ -137,7 +137,10 @@ struct vout_window_t {
> 
>     /* display server (mandatory) */
>     union {
>-        char     *x11; /* X11 display (NULL = use default) */
>+        struct {
>+            char *name; /* X11 display name (NULL = use default) */
>+            void *dpy;  /* (Display created by XOpenDisplay() or NULL)
>*/
>+        } x11;
>       struct wl_display *wl;   /* Wayland struct wl_display pointer */
>     } display;
> 
>diff --git a/modules/gui/qt/components/interface_widgets.cpp
>b/modules/gui/qt/components/interface_widgets.cpp
>index d483461cb5..e362ab6eda 100644
>--- a/modules/gui/qt/components/interface_widgets.cpp
>+++ b/modules/gui/qt/components/interface_widgets.cpp
>@@ -152,7 +152,8 @@ bool VideoWidget::request( struct vout_window_t
>*p_wnd )
>     {
>         case VOUT_WINDOW_TYPE_XID:
>             p_wnd->handle.xid = stable->winId();
>-            p_wnd->display.x11 = NULL;
>+            p_wnd->display.x11.name = NULL;
>+            p_wnd->display.x11.dpy = NULL;
>             break;
>         case VOUT_WINDOW_TYPE_HWND:
>             p_wnd->handle.hwnd = (void *)stable->winId();
>diff --git a/modules/gui/skins2/src/skin_main.cpp
>b/modules/gui/skins2/src/skin_main.cpp
>index cc93d603ce..2bd1fb3ef9 100644
>--- a/modules/gui/skins2/src/skin_main.cpp
>+++ b/modules/gui/skins2/src/skin_main.cpp
>@@ -395,7 +395,8 @@ static int WindowOpen( vout_window_t *pWnd, const
>vout_window_cfg_t *cfg )
>     CmdExecuteBlock::executeWait( CmdGenericPtr( cmd ) );
> 
> #ifdef X11_SKINS
>-    pWnd->display.x11 = NULL;
>+    pWnd->display.x11.name = NULL;
>+    pWnd->display.x11.dpy = NULL;
> 
>     if( !pWnd->handle.xid )
> #else
>diff --git a/modules/gui/skins2/src/vout_window.cpp
>b/modules/gui/skins2/src/vout_window.cpp
>index 9c2bd2d971..64a452c9ca 100644
>--- a/modules/gui/skins2/src/vout_window.cpp
>+++ b/modules/gui/skins2/src/vout_window.cpp
>@@ -46,7 +46,8 @@ VoutWindow::VoutWindow( intf_thread_t *pIntf,
>vout_window_t* pWnd,
> 
> #ifdef X11_SKINS
>         m_pWnd->handle.xid = getOSHandle();
>-        m_pWnd->display.x11 = NULL;
>+        m_pWnd->display.x11.name = NULL;
>+        m_pWnd->display.x11.dpy = NULL;
> #else
>         m_pWnd->handle.hwnd = getOSHandle();
> #endif
>diff --git a/modules/hw/vdpau/display.c b/modules/hw/vdpau/display.c
>index a92ac742e5..c9f5208e13 100644
>--- a/modules/hw/vdpau/display.c
>+++ b/modules/hw/vdpau/display.c
>@@ -434,7 +434,7 @@ static int Open(vlc_object_t *obj)
>     }
> 
>     /* Load the VDPAU back-end and create a device instance */
>-    VdpStatus err = vdp_get_x11(sys->embed->display.x11,
>+    VdpStatus err = vdp_get_x11(sys->embed->display.x11.name,
>                                 xcb_screen_num(sys->conn, screen),
>                                 &sys->vdp, &sys->device);
>     if (err != VDP_STATUS_OK)
>diff --git a/modules/video_output/glx.c b/modules/video_output/glx.c
>index dc692e9a59..0f76cd405d 100644
>--- a/modules/video_output/glx.c
>+++ b/modules/video_output/glx.c
>@@ -121,7 +121,7 @@ static int Open (vlc_object_t *obj)
>         return VLC_EGENERIC;
> 
>     /* Initialize GLX display */
>-    Display *dpy = XOpenDisplay (gl->surface->display.x11);
>+    Display *dpy = XOpenDisplay (gl->surface->display.x11.name);
>     if (dpy == NULL)
>         return VLC_EGENERIC;
> 
>diff --git a/modules/video_output/opengl/egl.c
>b/modules/video_output/opengl/egl.c
>index 22cf3545c9..ffa363cb68 100644
>--- a/modules/video_output/opengl/egl.c
>+++ b/modules/video_output/opengl/egl.c
>@@ -224,7 +224,7 @@ static int Open (vlc_object_t *obj, const struct
>gl_api *api)
>         goto error;
> 
>     window = &wnd->handle.xid;
>-    sys->x11 = XOpenDisplay(wnd->display.x11);
>+    sys->x11 = XOpenDisplay(wnd->display.x11.name);
>     if (sys->x11 == NULL)
>         goto error;
> 
>diff --git a/modules/video_output/xcb/events.c
>b/modules/video_output/xcb/events.c
>index 1b53f2b66a..a68ba4cd25 100644
>--- a/modules/video_output/xcb/events.c
>+++ b/modules/video_output/xcb/events.c
>@@ -110,7 +110,7 @@ vout_window_t *vlc_xcb_parent_Create(vout_display_t
>*vd,
>         return NULL;
>     }
> 
>-    xcb_connection_t *conn = Connect (VLC_OBJECT(vd),
>wnd->display.x11);
>+    xcb_connection_t *conn = Connect (VLC_OBJECT(vd),
>wnd->display.x11.name);
>     if (conn == NULL)
>         goto error;
>     *pconn = conn;
>diff --git a/modules/video_output/xcb/window.c
>b/modules/video_output/xcb/window.c
>index bf291aa1e5..68d8a238a1 100644
>--- a/modules/video_output/xcb/window.c
>+++ b/modules/video_output/xcb/window.c
>@@ -411,7 +411,7 @@ static int Open (vout_window_t *wnd, const
>vout_window_cfg_t *cfg)
> 
>     wnd->type = VOUT_WINDOW_TYPE_XID;
>     wnd->handle.xid = window;
>-    wnd->display.x11 = display;
>+    wnd->display.x11.name = display;
>     wnd->control = Control;
>     wnd->sys = p_sys;
> 
>@@ -524,7 +524,7 @@ static void Close (vout_window_t *wnd)
>         XCB_keyHandler_Destroy (p_sys->keys);
> 
>     xcb_disconnect (conn);
>-    free (wnd->display.x11);
>+    free (wnd->display.x11.name);
>     free (p_sys);
> }
> 
>@@ -627,7 +627,8 @@ static int EmOpen (vout_window_t *wnd, const
>vout_window_cfg_t *cfg)
> 
>     p_sys->embedded = true;
>     wnd->type = VOUT_WINDOW_TYPE_XID;
>-    wnd->display.x11 = NULL;
>+    wnd->display.x11.name = NULL;
>+    wnd->display.x11.dpy = NULL;
>     wnd->handle.xid = window;
>     wnd->control = Control;
>     wnd->sys = p_sys;
>-- 
>2.11.0
>
>_______________________________________________
>vlc-devel mailing list
>To unsubscribe or modify your subscription options:
>https://mailman.videolan.org/listinfo/vlc-devel

Nack. This makes no sense since the display maybe an XCB connection
-- 
Rémi Denis-Courmont
Typed on an inconvenient virtual keyboard
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20170621/93edcfdd/attachment.html>


More information about the vlc-devel mailing list