Mercurial > mplayer.hg
changeset 7930:a77aff3d7ac0
mode detection && vo_init() moved to preinit()
NOTE: this driver needs some cleanup, and should use mDisplay/mScreen
author | arpi |
---|---|
date | Sun, 27 Oct 2002 03:15:48 +0000 |
parents | 48075855804b |
children | 48c71b6c7389 |
files | libvo/vo_dga.c |
diffstat | 1 files changed, 67 insertions(+), 81 deletions(-) [+] |
line wrap: on
line diff
--- a/libvo/vo_dga.c Sun Oct 27 02:54:46 2002 +0000 +++ b/libvo/vo_dga.c Sun Oct 27 03:15:48 2002 +0000 @@ -470,82 +470,6 @@ static uint32_t query_format( uint32_t format ) { -#ifdef HAVE_DGA2 - XDGAMode *modelines; - int modecount; -#endif - Display *qdisp; - - int i; - static int dga_depths_init = 0; - - if(dga_depths_init == 0){ - - if((qdisp = XOpenDisplay(0))==NULL){ - mp_msg(MSGT_VO, MSGL_ERR, "vo_dga: Can't open display!\n"); - return 0; - } - if( !vo_init() ){ - mp_msg(MSGT_VO, MSGL_ERR, "vo_dga: vo_init() failed!\n"); - return 0; - } - vo_dga_XServer_mode = vd_ValidateMode(vo_depthonscreen); - - if(vo_dga_XServer_mode ==0){ -#ifndef HAVE_DGA2 - mp_msg(MSGT_VO, MSGL_ERR, "vo_dga: Your X-Server is not running in a "); - mp_msg(MSGT_VO, MSGL_ERR, "resolution supported by DGA driver!\n"); -#endif - }//else{ - // mp_msg(MSGT_VO, MSGL_INFO, "vo_dga: X running at: %s\n", - // vd_GetModeString(vo_dga_XServer_mode)); - //} - -#ifdef HAVE_DGA2 - modelines=XDGAQueryModes(qdisp, XDefaultScreen(qdisp),&modecount); - if(modelines){ - for(i=0; i< modecount; i++){ - mp_msg(MSGT_VO, MSGL_V, "vo_dga: (%03d) depth=%d, bpp=%d, r=%08x, g=%08x, b=%08x, %d x %d\n", - i, - modelines[i].depth, - modelines[i].bitsPerPixel, - modelines[i].redMask, - modelines[i].greenMask, - modelines[i].blueMask, - modelines[i].viewportWidth, - modelines[i].viewportHeight); - vd_EnableMode( - modelines[i].depth, - modelines[i].bitsPerPixel, - modelines[i].redMask, - modelines[i].greenMask, - modelines[i].blueMask); - } - XFree(modelines); - - } -#endif - dga_depths_init = 1; - XCloseDisplay(qdisp); - - if( !vo_dga_modes[1].vdm_supported && vo_dga_modes[2].vdm_supported ){ - vo_dga_modes[1].vdm_supported = 1; - } - - if( !vo_dga_modes[3].vdm_supported && vo_dga_modes[4].vdm_supported ){ - vo_dga_modes[3].vdm_supported = 1; - } - - for(i=1; i<vo_dga_mode_num; i++){ - mp_msg(MSGT_VO, MSGL_INFO, "vo_dga: Mode: %s", vd_GetModeString(i)); - if(vo_dbpp && vo_dbpp != vo_dga_modes[i].vdm_mplayer_depth){ - vo_dga_modes[i].vdm_supported = 0; - mp_msg(MSGT_VO, MSGL_INFO, " ...disabled by -bpp %d", vo_dbpp ); - } - mp_msg(MSGT_VO, MSGL_INFO, "\n"); - } - } - if( format==IMGFMT_YV12 ) return VFCAP_CSP_SUPPORTED; if( (format&IMGFMT_BGR_MASK) == IMGFMT_BGR && @@ -745,11 +669,6 @@ if(!wanted_height) wanted_height = height; if(!wanted_width) wanted_width = width; - if( !vo_init() ){ - mp_msg(MSGT_VO, MSGL_ERR, "vo_dga: vo_init() failed!\n"); - return 1; - } - if( !vo_dbpp ){ if (format == IMGFMT_YV12){ @@ -1054,6 +973,8 @@ return 0; } +static int dga_depths_init = 0; + static uint32_t preinit(const char *arg) { if(arg) @@ -1061,6 +982,71 @@ mp_msg(MSGT_VO, MSGL_INFO, "vo_dga: Unknown subdevice: %s\n",arg); return ENOSYS; } + + if( !vo_init() ) return -1; // Can't open X11 + + if(dga_depths_init == 0){ // FIXME!? + int i; +#ifdef HAVE_DGA2 + XDGAMode *modelines; + int modecount; +#endif + + vo_dga_XServer_mode = vd_ValidateMode(vo_depthonscreen); + + if(vo_dga_XServer_mode ==0){ +#ifndef HAVE_DGA2 + mp_msg(MSGT_VO, MSGL_ERR, "vo_dga: Your X-Server is not running in a "); + mp_msg(MSGT_VO, MSGL_ERR, "resolution supported by DGA driver!\n"); +#endif + }//else{ + // mp_msg(MSGT_VO, MSGL_INFO, "vo_dga: X running at: %s\n", + // vd_GetModeString(vo_dga_XServer_mode)); + //} + +#ifdef HAVE_DGA2 + modelines=XDGAQueryModes(mDisplay, mScreen, &modecount); + if(modelines){ + for(i=0; i< modecount; i++){ + mp_msg(MSGT_VO, MSGL_V, "vo_dga: (%03d) depth=%d, bpp=%d, r=%08x, g=%08x, b=%08x, %d x %d\n", + i, + modelines[i].depth, + modelines[i].bitsPerPixel, + modelines[i].redMask, + modelines[i].greenMask, + modelines[i].blueMask, + modelines[i].viewportWidth, + modelines[i].viewportHeight); + vd_EnableMode( + modelines[i].depth, + modelines[i].bitsPerPixel, + modelines[i].redMask, + modelines[i].greenMask, + modelines[i].blueMask); + } + XFree(modelines); + } +#endif + dga_depths_init = 1; + + if( !vo_dga_modes[1].vdm_supported && vo_dga_modes[2].vdm_supported ){ + vo_dga_modes[1].vdm_supported = 1; + } + + if( !vo_dga_modes[3].vdm_supported && vo_dga_modes[4].vdm_supported ){ + vo_dga_modes[3].vdm_supported = 1; + } + + for(i=1; i<vo_dga_mode_num; i++){ + mp_msg(MSGT_VO, MSGL_INFO, "vo_dga: Mode: %s", vd_GetModeString(i)); + if(vo_dbpp && vo_dbpp != vo_dga_modes[i].vdm_mplayer_depth){ + vo_dga_modes[i].vdm_supported = 0; + mp_msg(MSGT_VO, MSGL_INFO, " ...disabled by -bpp %d", vo_dbpp ); + } + mp_msg(MSGT_VO, MSGL_INFO, "\n"); + } + } + return 0; }