* Preamble
*****************************************************************************/
#include <errno.h> /* ENOMEM */
-#include <stdlib.h> /* malloc(), free() */
-#include <string.h>
#include <vlc/vlc.h>
-#include <vlc/intf.h>
-#include <vlc/vout.h>
+#include <vlc_interface.h>
+#include <vlc_vout.h>
#ifdef HAVE_SYS_SHM_H
# include <sys/shm.h> /* shmget(), shmctl() */
/*****************************************************************************
* Local prototypes
*****************************************************************************/
-static int CheckGLX ( vlc_object_t *, vlc_bool_t * );
static int InitGLX12 ( vout_thread_t * );
static int InitGLX13 ( vout_thread_t * );
static void SwitchContext( vout_thread_t * );
*****************************************************************************/
#define ADAPTOR_TEXT N_("XVideo adaptor number")
#define ADAPTOR_LONGTEXT N_( \
- "If you graphics card provides several adaptors, this option allows you " \
+ "If your graphics card provides several adaptors, you have " \
"to choose which one will be used (you shouldn't have to change this).")
#define ALT_FS_TEXT N_("Alternate fullscreen method")
"2) Completely bypass the window manager, but then nothing will be able " \
"to show on top of the video.")
-#define DISPLAY_TEXT N_("X11 display name")
+#define DISPLAY_TEXT N_("X11 display")
#define DISPLAY_LONGTEXT N_( \
- "Specify the X11 hardware display you want to use. By default VLC will " \
+ "X11 hardware display to use. By default VLC will " \
"use the value of the DISPLAY environment variable.")
-#define SCREEN_TEXT N_("Screen to be used for fullscreen mode.")
+#define SCREEN_TEXT N_("Screen for fullscreen mode.")
#define SCREEN_LONGTEXT N_( \
- "Choose the screen you want to use in fullscreen mode. For instance " \
+ "Screen to use in fullscreen mode. For instance " \
"set it to 0 for first screen, 1 for the second.")
vlc_module_begin();
- set_shortname( "OpenGL" );
+ set_shortname( "OpenGL(GLX)" );
set_category( CAT_VIDEO );
set_subcategory( SUBCAT_VIDEO_VOUT );
- set_description( _("OpenGL video output") );
+ set_description( _("OpenGL(GLX) provider") );
set_capability( "opengl provider", 50 );
set_callbacks( CreateOpenGL, DestroyOpenGL );
static int CreateOpenGL( vlc_object_t *p_this )
{
vout_thread_t *p_vout = (vout_thread_t *)p_this;
- vlc_bool_t b_glx13;
-
- if( CheckGLX( p_this, &b_glx13 ) != VLC_SUCCESS )
- {
- msg_Err( p_vout, "no GLX support" );
- return VLC_EGENERIC;
- }
if( E_(Activate)( p_this ) != VLC_SUCCESS )
{
/* Set the function pointer */
p_vout->pf_init = InitOpenGL;
p_vout->pf_swap = SwapBuffers;
- p_vout->p_sys->b_glx13 = b_glx13;
return VLC_SUCCESS;
}
E_(Deactivate)( p_this );
}
-/*****************************************************************************
- * OpenDisplay: open and initialize OpenGL device
- *****************************************************************************/
-static int CheckGLX( vlc_object_t *p_this, vlc_bool_t *b_glx13 )
-{
- Display *p_display = NULL;
- int i_opcode, i_evt, i_err = 0;
- int i_maj, i_min = 0;
-
- /* Open the display */
- p_display = XOpenDisplay( NULL );
- if( p_display == NULL )
- {
- msg_Err( p_this, "Cannot open display" );
- return VLC_EGENERIC;
- }
-
- /* Check for GLX extension */
- if( !XQueryExtension( p_display, "GLX", &i_opcode, &i_evt, &i_err ) )
- {
- msg_Err( p_this, "GLX extension not supported" );
- XCloseDisplay( p_display );
- return VLC_EGENERIC;
- }
- if( !glXQueryExtension( p_display, &i_err, &i_evt ) )
- {
- msg_Err( p_this, "glXQueryExtension failed" );
- XCloseDisplay( p_display );
- return VLC_EGENERIC;
- }
-
- /* Check GLX version */
- if (!glXQueryVersion( p_display, &i_maj, &i_min ) )
- {
- msg_Err( p_this, "glXQueryVersion failed" );
- XCloseDisplay( p_display );
- return VLC_EGENERIC;
- }
- if( i_maj <= 0 || ((i_maj == 1) && (i_min < 3)) )
- {
- *b_glx13 = VLC_FALSE;
- msg_Dbg( p_this, "Using GLX 1.2 API" );
- }
- else
- {
- *b_glx13 = VLC_TRUE;
- msg_Dbg( p_this, "Using GLX 1.3 API" );
- }
-
- XCloseDisplay( p_display );
- return VLC_SUCCESS;
-}
-
/*****************************************************************************
* InitOpenGL: initializes OpenGL provider
*****************************************************************************/
static void SwapBuffers( vout_thread_t *p_vout )
{
vout_sys_t *p_sys = p_vout->p_sys;
- int i_width, i_height, i_x, i_y;
+ unsigned int i_width, i_height, i_x, i_y;
vout_PlacePicture( p_vout, p_vout->p_sys->p_win->i_width,
p_vout->p_sys->p_win->i_height,