diff --git a/src/nv_crtc.c b/src/nv_crtc.c index ecd3c83..4bf51ae 100644 --- a/src/nv_crtc.c +++ b/src/nv_crtc.c @@ -42,6 +42,8 @@ #include "windowstr.h" #include #include +#include "cursorstr.h" +#include "dixevents.h" #include "xf86Crtc.h" #include "nv_include.h" @@ -1694,8 +1696,18 @@ 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 && GetSpriteCursor()->bits->argb) + /* 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 + */ + nv_crtc_hide_cursor(crtc); + } NVResetCrtcConfig(crtc, TRUE); }