diff --git a/src/nv_crtc.c b/src/nv_crtc.c index ecd3c83..592d762 100644 --- a/src/nv_crtc.c +++ b/src/nv_crtc.c @@ -1694,8 +1694,20 @@ void nv_crtc_commit(xf86CrtcPtr crtc) crtc->funcs->dpms (crtc, DPMSModeOn); - if (crtc->scrn->pScreen != NULL) + if (crtc->scrn->pScreen != NULL) { + NVPtr pNv = NVPTR(crtc->scrn); + xf86_reload_cursors (crtc->scrn->pScreen); + if (!pNv->alphaCursor) { + /* this works round the fact that xf86_reload_cursors + * will quite happily show the hw cursor when it knows + * the hardware can't do alpha, and the current cursor + * has an alpha channel + */ + xf86ForceHWCursor(crtc->scrn->pScreen, 1); + xf86ForceHWCursor(crtc->scrn->pScreen, 0); + } + } NVResetCrtcConfig(crtc, TRUE); }