[vlc-commits] xcb/glx: remove GLX video output display plugin
Rémi Denis-Courmont
git at videolan.org
Mon Nov 28 18:49:26 CET 2016
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Mon Nov 28 19:45:45 2016 +0200| [1f6082d0e6e7a52f524d89de3f0aa0345e206933] | committer: Rémi Denis-Courmont
xcb/glx: remove GLX video output display plugin
This is replaced by the GLX OpenGL provider plugin.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=1f6082d0e6e7a52f524d89de3f0aa0345e206933
---
modules/MODULES_LIST | 1 -
modules/video_output/Makefile.am | 10 +-
modules/video_output/xcb/glx.c | 269 ---------------------------------------
po/POTFILES.in | 1 -
4 files changed, 1 insertion(+), 280 deletions(-)
diff --git a/modules/MODULES_LIST b/modules/MODULES_LIST
index a73da55..d207339 100644
--- a/modules/MODULES_LIST
+++ b/modules/MODULES_LIST
@@ -467,7 +467,6 @@ $Id$
* x265: H265 video encoder using x265
* xa: XA demuxer
* xcb_apps: List the application windows using XCB
- * xcb_glx: a opengl provider using XCB OpenGL
* xcb_hotkeys: module to catch hotkeys when application doesn't have the focus
* xcb_screen: input module that takes screenshots of the primary monitor
* xcb_window: XCB window provider
diff --git a/modules/video_output/Makefile.am b/modules/video_output/Makefile.am
index d11412e..786f8c7 100644
--- a/modules/video_output/Makefile.am
+++ b/modules/video_output/Makefile.am
@@ -84,14 +84,6 @@ libxcb_xv_plugin_la_CFLAGS = $(AM_CFLAGS) \
libxcb_xv_plugin_la_LIBADD = libvlc_xcb_events.la \
$(XCB_LIBS) $(XCB_SHM_LIBS) $(XCB_XV_LIBS)
-libxcb_glx_plugin_la_SOURCES = \
- video_output/opengl.c video_output/opengl.h \
- video_output/xcb/glx.c
-libxcb_glx_plugin_la_CFLAGS = $(AM_CFLAGS) \
- $(XCB_CFLAGS) $(GL_CFLAGS)
-libxcb_glx_plugin_la_LIBADD = libvlc_xcb_events.la \
- $(XCB_LIBS) $(GL_LIBS) $(LIBM)
-
libxcb_window_plugin_la_SOURCES = \
video_output/xcb/keys.c \
video_output/xcb/keysym.h video_output/xcb/xcb_keysym.h \
@@ -123,7 +115,7 @@ if HAVE_EGL
vout_LTLIBRARIES += libegl_x11_plugin.la
endif
if HAVE_GL
-vout_LTLIBRARIES += libxcb_glx_plugin.la libglx_plugin.la
+vout_LTLIBRARIES += libglx_plugin.la
endif
endif
diff --git a/modules/video_output/xcb/glx.c b/modules/video_output/xcb/glx.c
deleted file mode 100644
index 9d7546b..0000000
--- a/modules/video_output/xcb/glx.c
+++ /dev/null
@@ -1,269 +0,0 @@
-/**
- * @file glx.c
- * @brief GLX video output module for VLC media player
- */
-/*****************************************************************************
- * Copyright © 2004 VLC authors and VideoLAN
- * Copyright © 2009 Rémi Denis-Courmont
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; either version 2.1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
- *****************************************************************************/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stdlib.h>
-#include <assert.h>
-
-#include <xcb/xcb.h>
-
-#include <vlc_common.h>
-#include <vlc_plugin.h>
-#include <vlc_vout_display.h>
-#include <vlc_opengl.h>
-#include "../opengl.h"
-
-#include "events.h"
-
-static int Open (vlc_object_t *);
-static void Close (vlc_object_t *);
-
-/*
- * Module descriptor
- */
-vlc_module_begin ()
- set_shortname (N_("GLX"))
- set_description (N_("OpenGL GLX video output (XCB)"))
- set_category (CAT_VIDEO)
- set_subcategory (SUBCAT_VIDEO_VOUT)
- set_capability ("vout display", 250)
- set_callbacks (Open, Close)
-
- add_shortcut ("xcb-glx", "glx", "opengl", "xid")
-vlc_module_end ()
-
-struct vout_display_sys_t
-{
- xcb_connection_t *conn; /**< XCB connection */
- vlc_gl_t *gl;
-
- xcb_cursor_t cursor; /* blank cursor */
- bool visible; /* whether to draw */
-
- vout_display_opengl_t *vgl;
- picture_pool_t *pool; /* picture pool */
-};
-
-static picture_pool_t *Pool (vout_display_t *, unsigned);
-static void PictureRender (vout_display_t *, picture_t *, subpicture_t *);
-static void PictureDisplay (vout_display_t *, picture_t *, subpicture_t *);
-static int Control (vout_display_t *, int, va_list);
-static void Manage (vout_display_t *);
-
-/**
- * Probe the X server.
- */
-static int Open (vlc_object_t *obj)
-{
- vout_display_t *vd = (vout_display_t *)obj;
- vout_display_sys_t *sys = malloc (sizeof (*sys));
-
- if (sys == NULL)
- return VLC_ENOMEM;
-
- sys->vgl = NULL;
- sys->pool = NULL;
-
- /* Get window, connect to X server (via XCB) */
- xcb_connection_t *conn;
- const xcb_screen_t *scr;
- vout_window_t *surface;
-
- surface = vlc_xcb_parent_Create(vd, &conn, &scr);
- if (surface == NULL)
- {
- free (sys);
- return VLC_EGENERIC;
- }
-
- sys->conn = conn;
- sys->gl = vlc_gl_Create (surface, VLC_OPENGL, "glx");
- if (sys->gl == NULL)
- goto error;
-
- const vlc_fourcc_t *spu_chromas;
-
- if (vlc_gl_MakeCurrent (sys->gl))
- goto error;
-
- sys->vgl = vout_display_opengl_New (&vd->fmt, &spu_chromas, sys->gl,
- &vd->cfg->viewpoint);
- vlc_gl_ReleaseCurrent (sys->gl);
- if (sys->vgl == NULL)
- goto error;
-
- sys->cursor = vlc_xcb_cursor_Create(conn, scr);
- sys->visible = false;
-
- /* Setup vout_display_t once everything is fine */
- vd->sys = sys;
- vd->info.has_pictures_invalid = false;
- vd->info.has_event_thread = true;
- vd->info.subpicture_chromas = spu_chromas;
- vd->pool = Pool;
- vd->prepare = PictureRender;
- vd->display = PictureDisplay;
- vd->control = Control;
- vd->manage = Manage;
-
- return VLC_SUCCESS;
-
-error:
- if (sys->gl != NULL)
- vlc_gl_Destroy (sys->gl);
- xcb_disconnect (sys->conn);
- vout_display_DeleteWindow (vd, surface);
- free (sys);
- return VLC_EGENERIC;
-}
-
-
-/**
- * Disconnect from the X server.
- */
-static void Close (vlc_object_t *obj)
-{
- vout_display_t *vd = (vout_display_t *)obj;
- vout_display_sys_t *sys = vd->sys;
- vlc_gl_t *gl = sys->gl;
- vout_window_t *surface = gl->surface;
-
- vlc_gl_MakeCurrent (gl);
- vout_display_opengl_Delete (sys->vgl);
- vlc_gl_ReleaseCurrent (gl);
- vlc_gl_Destroy (gl);
-
- /* show the default cursor */
- xcb_change_window_attributes (sys->conn, surface->handle.xid,
- XCB_CW_CURSOR, &(uint32_t) { XCB_CURSOR_NONE });
- xcb_flush (sys->conn);
- xcb_disconnect (sys->conn);
-
- vout_display_DeleteWindow (vd, surface);
- free (sys);
-}
-
-/**
- * Return a direct buffer
- */
-static picture_pool_t *Pool (vout_display_t *vd, unsigned requested_count)
-{
- vout_display_sys_t *sys = vd->sys;
-
- if (!sys->pool)
- {
- vlc_gl_MakeCurrent (sys->gl);
- sys->pool = vout_display_opengl_GetPool (sys->vgl, requested_count);
- vlc_gl_ReleaseCurrent (sys->gl);
- }
- return sys->pool;
-}
-
-static void PictureRender (vout_display_t *vd, picture_t *pic, subpicture_t *subpicture)
-{
- vout_display_sys_t *sys = vd->sys;
-
- vlc_gl_MakeCurrent (sys->gl);
- vout_display_opengl_Prepare (sys->vgl, pic, subpicture);
- vlc_gl_ReleaseCurrent (sys->gl);
-}
-
-static void PictureDisplay (vout_display_t *vd, picture_t *pic, subpicture_t *subpicture)
-{
- vout_display_sys_t *sys = vd->sys;
-
- vlc_gl_MakeCurrent (sys->gl);
- vout_display_opengl_Display (sys->vgl, &vd->source);
- vlc_gl_ReleaseCurrent (sys->gl);
-
- picture_Release (pic);
- if (subpicture)
- subpicture_Delete(subpicture);
-}
-
-static int Control (vout_display_t *vd, int query, va_list ap)
-{
- vout_display_sys_t *sys = vd->sys;
-
- switch (query)
- {
- case VOUT_DISPLAY_CHANGE_DISPLAY_SIZE:
- case VOUT_DISPLAY_CHANGE_DISPLAY_FILLED:
- case VOUT_DISPLAY_CHANGE_ZOOM:
- case VOUT_DISPLAY_CHANGE_SOURCE_ASPECT:
- case VOUT_DISPLAY_CHANGE_SOURCE_CROP:
- {
- const vout_display_cfg_t *cfg;
- const video_format_t *source;
-
- if (query == VOUT_DISPLAY_CHANGE_SOURCE_ASPECT
- || query == VOUT_DISPLAY_CHANGE_SOURCE_CROP)
- {
- source = (const video_format_t *)va_arg (ap, const video_format_t *);
- cfg = vd->cfg;
- }
- else
- {
- source = &vd->source;
- cfg = (const vout_display_cfg_t*)va_arg (ap, const vout_display_cfg_t *);
- }
-
- vout_display_place_t place;
- vout_display_PlacePicture (&place, source, cfg, false);
-
- vlc_gl_MakeCurrent (sys->gl);
- vout_display_opengl_SetWindowAspectRatio(sys->vgl, (float)place.width / place.height);
- glViewport (place.x, place.y, place.width, place.height);
- vlc_gl_ReleaseCurrent (sys->gl);
- return VLC_SUCCESS;
- }
-
- /* Hide the mouse. It will be send when
- * vout_display_t::info.b_hide_mouse is false */
- case VOUT_DISPLAY_HIDE_MOUSE:
- xcb_change_window_attributes (sys->conn, sys->gl->surface->handle.xid,
- XCB_CW_CURSOR, &(uint32_t){ sys->cursor });
- xcb_flush (sys->conn);
- return VLC_SUCCESS;
-
- case VOUT_DISPLAY_CHANGE_VIEWPOINT:
- return vout_display_opengl_SetViewpoint (sys->vgl,
- &va_arg (ap, const vout_display_cfg_t* )->viewpoint);
-
- case VOUT_DISPLAY_RESET_PICTURES:
- vlc_assert_unreachable ();
- default:
- msg_Err (vd, "Unknown request in XCB vout display");
- return VLC_EGENERIC;
- }
-}
-
-static void Manage (vout_display_t *vd)
-{
- vout_display_sys_t *sys = vd->sys;
-
- vlc_xcb_Manage(vd, sys->conn, &sys->visible);
-}
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 2be9157..ae1fccd 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -1166,7 +1166,6 @@ modules/video_output/vdummy.c
modules/video_output/vmem.c
modules/video_output/wayland/shell_surface.c
modules/video_output/wayland/shm.c
-modules/video_output/xcb/glx.c
modules/video_output/xcb/window.c
modules/video_output/xcb/x11.c
modules/video_output/xcb/xvideo.c
More information about the vlc-commits
mailing list