Add DGAReInitModes in order to allow the driver to change the list of
supported DGA modes. (Part 1)
This commit is contained in:
parent
c1a2abadfb
commit
d91d18e1d6
|
@ -209,6 +209,7 @@ Bool xf86DPMSInit(ScreenPtr pScreen, DPMSSetProcPtr set, int flags);
|
|||
|
||||
Bool DGAInit(ScreenPtr pScreen, DGAFunctionPtr funcs, DGAModePtr modes,
|
||||
int num);
|
||||
Bool DGAReInitModes(ScreenPtr pScreen, DGAModePtr modes, int num);
|
||||
xf86SetDGAModeProc xf86SetDGAMode;
|
||||
|
||||
/* xf86Events.c */
|
||||
|
|
|
@ -170,6 +170,57 @@ DGAInit(
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
/* DGAReInitModes allows the driver to re-initialize
|
||||
* the DGA mode list.
|
||||
*/
|
||||
|
||||
Bool
|
||||
DGAReInitModes(
|
||||
ScreenPtr pScreen,
|
||||
DGAModePtr modes,
|
||||
int num
|
||||
){
|
||||
DGAScreenPtr pScreenPriv;
|
||||
int i;
|
||||
|
||||
/* No DGA? Ignore call (but don't make it look like it failed) */
|
||||
if(DGAScreenIndex < 0)
|
||||
return TRUE;
|
||||
|
||||
pScreenPriv = DGA_GET_SCREEN_PRIV(pScreen);
|
||||
|
||||
/* Same as above */
|
||||
if(!pScreenPriv)
|
||||
return TRUE;
|
||||
|
||||
/* Can't do this while DGA is active */
|
||||
if(pScreenPriv->current)
|
||||
return FALSE;
|
||||
|
||||
/* Quick sanity check */
|
||||
if(!num)
|
||||
modes = NULL;
|
||||
else if(!modes)
|
||||
num = 0;
|
||||
|
||||
pScreenPriv->numModes = num;
|
||||
pScreenPriv->modes = modes;
|
||||
|
||||
/* This practically disables DGA. So be it. */
|
||||
if(!num)
|
||||
return TRUE;
|
||||
|
||||
for(i = 0; i < num; i++)
|
||||
modes[i].num = i + 1;
|
||||
|
||||
#ifdef PANORAMIX
|
||||
if(!noPanoramiXExtension)
|
||||
for(i = 0; i < num; i++)
|
||||
modes[i].flags &= ~DGA_PIXMAP_AVAILABLE;
|
||||
#endif
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
FreeMarkedVisuals(ScreenPtr pScreen)
|
||||
|
|
Loading…
Reference in New Issue
Block a user