diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/glamo-display.c | 109 | ||||
-rw-r--r-- | src/glamo-driver.c | 2 |
2 files changed, 90 insertions, 21 deletions
diff --git a/src/glamo-display.c b/src/glamo-display.c index 5ea6259..4562546 100644 --- a/src/glamo-display.c +++ b/src/glamo-display.c @@ -53,20 +53,36 @@ GlamoCrtcGammaSet(xf86CrtcPtr crtc, CARD16 *red, CARD16 *green, CARD16 *blue, static void GlamoCrtcDestroy(xf86CrtcPtr crtc); +#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,5,0,0,0) static Bool GlamoSetModeMajor(xf86CrtcPtr crtc, DisplayModePtr mode, Rotation rotation, int x, int y); +#else + +static void +GlamoModeSet(xf86CrtcPtr crtc, DisplayModePtr mode, + DisplayModePtr adjusted_mode, int x, int y); + +static Bool +GlamoLock(xf86CrtcPtr crtc); + +static Bool +GlamoModeFixup(xf86CrtcPtr crtc, DisplayModePtr mode, + DisplayModePtr adjusted_mode); + +static void +GlamoPrepare(xf86CrtcPtr crtc); + +static void +GlamoCommit(xf86CrtcPtr crtc); + +#endif + static const xf86CrtcFuncsRec glamo_crtc_funcs = { .dpms = GlamoCrtcDPMS, .save = NULL, .restore = NULL, - .lock = NULL, - .unlock = NULL, - .mode_fixup = NULL, - .prepare = NULL, - .mode_set = NULL, - .commit = NULL, .gamma_set = GlamoCrtcGammaSet, .shadow_allocate = NULL, .shadow_create = NULL, @@ -78,7 +94,21 @@ static const xf86CrtcFuncsRec glamo_crtc_funcs = { .load_cursor_image = NULL, .load_cursor_argb = NULL, .destroy = GlamoCrtcDestroy, +#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,5,0,0,0) + .lock = NULL, + .unlock = NULL, + .mode_fixup = NULL, + .prepare = NULL, + .mode_set = NULL, + .commit = NULL, .set_mode_major = GlamoSetModeMajor +#else + .lock = GlamoLock, + .unlock = NULL, + .mode_fixup = GlamoModeFixup, + .prepare = GlamoPrepare, + .mode_set = GlamoModeSet, .commit = GlamoCommit, +#endif }; static void @@ -106,21 +136,19 @@ ConvertModeXfreeToFb(const DisplayModePtr mode, const Rotation *rotation, struct var->sync = 0; var->vmode = 0; - if (rot) { - switch (*rotation) { - case RR_Rotate_0: - var->rotate = FB_ROTATE_UR; - break; - case RR_Rotate_90: - var->rotate = FB_ROTATE_CW; - break; - case RR_Rotate_180: - var->rotate = FB_ROTATE_UD; - break; - case RR_Rotate_270: - var->rotate = FB_ROTATE_CCW; - break; - } + switch (rot) { + case RR_Rotate_0: + var->rotate = FB_ROTATE_UR; + break; + case RR_Rotate_90: + var->rotate = FB_ROTATE_CW; + break; + case RR_Rotate_180: + var->rotate = FB_ROTATE_UD; + break; + case RR_Rotate_270: + var->rotate = FB_ROTATE_CCW; + break; } } @@ -141,6 +169,8 @@ static void GlamoCrtcGammaSet(xf86CrtcPtr crtc, CARD16 *red, CARD16 *green, static void GlamoCrtcDestroy(xf86CrtcPtr crtc) { } +#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,5,0,0,0) + static Bool GlamoSetModeMajor(xf86CrtcPtr crtc, DisplayModePtr mode, Rotation rotation, int x, int y) { @@ -218,3 +248,40 @@ done: return ret; } + +#else + +static void +GlamoModeSet(xf86CrtcPtr crtc, DisplayModePtr mode, + DisplayModePtr adjusted_mode, int x, int y) { + GlamoPtr pGlamo = GlamoPTR(crtc->scrn); + + struct fb_var_screeninfo var = pGlamo->fb_var; + + ConvertModeXfreeToFb(adjusted_mode, NULL, &var); + + ioctl(pGlamo->fb_fd, FBIOPUT_VSCREENINFO, (void*)&var); +} + +static Bool +GlamoLock(xf86CrtcPtr crtc) { + return FALSE; +} + +static Bool +GlamoModeFixup(xf86CrtcPtr crtc, DisplayModePtr mode, + DisplayModePtr adjusted_mode) { + return TRUE; +} + +static void +GlamoPrepare(xf86CrtcPtr crtc) { + (*crtc->funcs->dpms)(crtc, DPMSModeOff); +} + +static void +GlamoCommit(xf86CrtcPtr crtc) { + (*crtc->funcs->dpms)(crtc, DPMSModeOn); +} + +#endif diff --git a/src/glamo-driver.c b/src/glamo-driver.c index ae8d3f4..2c8735f 100644 --- a/src/glamo-driver.c +++ b/src/glamo-driver.c @@ -599,8 +599,10 @@ GlamoScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) GlamoEnterVT(scrnIndex, 0); xf86CrtcScreenInit(pScreen); +#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,5,0,0,0) xf86RandR12SetRotations(pScreen, RR_Rotate_0 | RR_Rotate_90 | RR_Rotate_180 | RR_Rotate_270); +#endif /* colormap */ if (!miCreateDefColormap(pScreen)) { xf86DrvMsg(scrnIndex, X_ERROR, |