summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Deucher <alex@botch2.(none)>2007-08-28 00:42:30 -0400
committerAlex Deucher <alex@botch2.(none)>2007-08-28 00:42:30 -0400
commit673f799729824f4439dd5f681f75dd5aab50947f (patch)
treeed9123c2d6006020e725dc71fc429889e0c008ae
parentad6f7ad1b2ccae0bc0a416b9b0ca22709c9d5199 (diff)
RADEON: Update tv attributes immediately
-rw-r--r--src/radeon_display.c2
-rw-r--r--src/radeon_output.c12
-rw-r--r--src/radeon_probe.h1
3 files changed, 11 insertions, 4 deletions
diff --git a/src/radeon_display.c b/src/radeon_display.c
index ed45d79..fa80e10 100644
--- a/src/radeon_display.c
+++ b/src/radeon_display.c
@@ -373,6 +373,7 @@ void RADEONEnableDisplay(xf86OutputPtr output, BOOL bEnable)
tmp |= RADEON_TV_ON;
OUTREG(RADEON_TV_MASTER_CNTL, tmp);
tv_dac_change = 2;
+ radeon_output->tv_on = TRUE;
}
} else {
ErrorF("disable montype: %d\n", radeon_output->MonType);
@@ -431,6 +432,7 @@ void RADEONEnableDisplay(xf86OutputPtr output, BOOL bEnable)
tmp &= ~RADEON_TV_ON;
OUTREG(RADEON_TV_MASTER_CNTL, tmp);
tv_dac_change = 2;
+ radeon_output->tv_on = FALSE;
}
}
diff --git a/src/radeon_output.c b/src/radeon_output.c
index 3003ead..4df2597 100644
--- a/src/radeon_output.c
+++ b/src/radeon_output.c
@@ -1695,7 +1695,7 @@ radeon_create_resources(xf86OutputPtr output)
"RRConfigureOutputProperty error, %d\n", err);
}
/* Set the current value of the property */
- s = "fill";
+ s = "full";
err = RRChangeOutputProperty(output->randr_output, rmx_atom,
XA_STRING, 8, PropModeReplace, strlen(s), (pointer)s,
FALSE, FALSE);
@@ -1935,7 +1935,8 @@ radeon_set_property(xf86OutputPtr output, Atom property,
return FALSE;
radeon_output->hSize = val;
- /*RADEONUpdateHVPosition(output, NULL);*/
+ if (radeon_output->tv_on)
+ RADEONUpdateHVPosition(output, &output->crtc->mode);
return TRUE;
} else if (property == tv_hpos_atom) {
if (value->type != XA_INTEGER ||
@@ -1949,7 +1950,8 @@ radeon_set_property(xf86OutputPtr output, Atom property,
return FALSE;
radeon_output->hPos = val;
- /*RADEONUpdateHVPosition(output, NULL);*/
+ if (radeon_output->tv_on)
+ RADEONUpdateHVPosition(output, &output->crtc->mode);
return TRUE;
} else if (property == tv_vpos_atom) {
if (value->type != XA_INTEGER ||
@@ -1963,7 +1965,8 @@ radeon_set_property(xf86OutputPtr output, Atom property,
return FALSE;
radeon_output->vPos = val;
- /*RADEONUpdateHVPosition(output, NULL);*/
+ if (radeon_output->tv_on)
+ RADEONUpdateHVPosition(output, &output->crtc->mode);
return TRUE;
} else if (property == tv_std_atom) {
const char *s;
@@ -2471,6 +2474,7 @@ void RADEONInitConnector(xf86OutputPtr output)
}
if (radeon_output->DACType == DAC_TVDAC) {
+ radeon_output->tv_on = FALSE;
RADEONGetTVDacAdjInfo(output);
}
diff --git a/src/radeon_probe.h b/src/radeon_probe.h
index 947bf88..b6ef59d 100644
--- a/src/radeon_probe.h
+++ b/src/radeon_probe.h
@@ -211,6 +211,7 @@ typedef struct _RADEONOutputPrivateRec {
int hSize;
float TVRefClk;
int SupportedTVStds;
+ Bool tv_on;
int load_detection;
} RADEONOutputPrivateRec, *RADEONOutputPrivatePtr;