diff options
Diffstat (limited to 'src/smi_crtc.c')
-rw-r--r-- | src/smi_crtc.c | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/src/smi_crtc.c b/src/smi_crtc.c index 9c452c9..90728f4 100644 --- a/src/smi_crtc.c +++ b/src/smi_crtc.c @@ -42,9 +42,12 @@ SMI_CrtcDPMS(xf86CrtcPtr crtc, static Bool SMI_CrtcLock (xf86CrtcPtr crtc) { + ScrnInfoPtr pScrn = crtc->scrn; + SMIPtr pSmi = SMIPTR(pScrn); + ENTER(); - /* Nothing */ + WaitIdle(); RETURN(FALSE); } @@ -79,8 +82,8 @@ SMI_CrtcPrepare(xf86CrtcPtr crtc) ENTER(); - if (pSmi->HwCursor) - xf86_hide_cursors(pScrn); + if (!pSmi->Dualhead && pSmi->HwCursor) + crtc->funcs->hide_cursor(crtc); LEAVE(); } @@ -93,7 +96,21 @@ SMI_CrtcCommit(xf86CrtcPtr crtc) ENTER(); - if(pSmi->HwCursor) + /* Problem: + * When starting in Dualhead mode, both hw cursors will be shown, + * and at the same position, as both are at the same address. + * When reconfiguring with something like: + * $ xrandr --output VGA --right-of LVDS + * what will happen is basically: + * hide_cursor(panel) + * hide_cursor(crt) + * <set-crt-mode-and-modify-mapped-address> + * show_cursor(panel) <- besides a sw argb cursor is being used... + * + * It should not be a problem if argb cursors were supported, + * or only one output is available... + */ + if (!pSmi->Dualhead && pSmi->HwCursor) xf86_reload_cursors(pScrn->pScreen); LEAVE(); |