summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Airlie <airlied@asimov.stargames.com.au>2007-01-23 15:20:11 +1100
committerDave Airlie <airlied@linux.ie>2007-01-23 15:04:54 +1100
commit9149e763865598c307cbefc753ff6ebdeeaf32ae (patch)
tree3e6493e86dc269b0b687cef6fe0493fb1b2d8d68
parent2a13a3b641d9acf4f50472e1c8ba07633c3b78d6 (diff)
radeon: fixup problem with cursor not going off
Also fixup secondary dac detect to return unknown for now
-rw-r--r--src/radeon_cursor.c9
-rw-r--r--src/radeon_display.c17
2 files changed, 20 insertions, 6 deletions
diff --git a/src/radeon_cursor.c b/src/radeon_cursor.c
index 79d4a23e..ac6f358c 100644
--- a/src/radeon_cursor.c
+++ b/src/radeon_cursor.c
@@ -114,11 +114,12 @@ RADEONCrtcCursor(xf86CrtcPtr crtc, Bool force)
Bool show;
unsigned char *RADEONMMIO = info->MMIO;
CARD32 save1 = 0, save2 = 0;
- if (!crtc->enabled)
- return;
+
+ if (!crtc->enabled && !crtc->cursorShown)
+ return;
- show = crtc->cursorInRange;
+ show = crtc->cursorInRange && crtc->enabled;
if (show && (force || !crtc->cursorShown))
{
if (crtc_id == 0)
@@ -205,7 +206,7 @@ RADEONRandrSetCursorPosition(ScrnInfoPtr pScrn, int x, int y)
int thisx = x - crtc->x;
int thisy = y - crtc->y;
- if (!crtc->enabled)
+ if (!crtc->enabled && !crtc->cursorShown)
continue;
/*
diff --git a/src/radeon_display.c b/src/radeon_display.c
index 1c8d4732..ad9ca3f9 100644
--- a/src/radeon_display.c
+++ b/src/radeon_display.c
@@ -542,6 +542,7 @@ RADEONCrtIsPhysicallyConnected(ScrnInfoPtr pScrn, int IsCrtDac)
OUTREG(RADEON_TV_PRE_DAC_MUX_CNTL, ulOrigTV_PRE_DAC_MUX_CNTL);
}
#endif
+ return MT_UNKNOWN;
}
return(bConnected ? MT_CRT : MT_NONE);
@@ -2297,6 +2298,7 @@ radeon_crtc_gamma_set(xf86CrtcPtr crtc, CARD16 *red, CARD16 *green,
radeon_crtc->lut_b[i] = blue[i] >> 8;
}
+ ErrorF("Loading lut %d\n", radeon_crtc->crtc_id);
radeon_crtc_load_lut(crtc);
}
@@ -2761,14 +2763,25 @@ RADEONDisableUnusedFunctions(ScrnInfoPtr pScrn)
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
int o, c;
+ for (o = 0; o < xf86_config->num_output; o++)
+ {
+ xf86OutputPtr output = xf86_config->output[o];
+
+ if (output->crtc == NULL) {
+ radeon_dpms(output, DPMSModeOff);
+ }
+ }
+
for (c = 0; c < xf86_config->num_crtc; c++)
{
xf86CrtcPtr crtc = xf86_config->crtc[c];
- if (!crtc->enabled)
+ if (!crtc->enabled) {
memset(&crtc->curMode, 0, sizeof(crtc->curMode));
-
+ radeon_crtc_dpms(crtc, DPMSModeOff);
+ }
}
+
}
void