diff --git a/src/i830_crt.c b/src/i830_crt.c index 82a774a..bdae0ec 100644 --- a/src/i830_crt.c +++ b/src/i830_crt.c @@ -391,6 +391,20 @@ i830_crt_destroy (xf86OutputPtr output) xfree (output->driver_private); } +static void i830_crt_commit(xf86OutputPtr output) +{ + ScrnInfoPtr pScrn = output->scrn; + I830Ptr pI830 = I830PTR(pScrn); + + output->funcs->dpms (output, DPMSModeOn); + + /* fix the random blank screen problem on 965 when starting X. + * we don't know why reading this register fixed the problem, + * but it works. */ + INREG8(0x3cc); + +} + static const xf86OutputFuncsRec i830_crt_output_funcs = { .dpms = i830_crt_dpms, .save = i830_crt_save, @@ -399,7 +413,7 @@ static const xf86OutputFuncsRec i830_crt_output_funcs = { .mode_fixup = i830_crt_mode_fixup, .prepare = i830_output_prepare, .mode_set = i830_crt_mode_set, - .commit = i830_output_commit, + .commit = i830_crt_commit, .detect = i830_crt_detect, .get_modes = i830_ddc_get_modes, .destroy = i830_crt_destroy