This eliminates some ugly flashing, as well as clearing the borders when the
shadow will not be completely painted.
---
 hw/xfree86/modes/xf86Rotate.c |   30 ++++++++++++++++++++++++++++++
 1 files changed, 30 insertions(+), 0 deletions(-)

diff --git a/hw/xfree86/modes/xf86Rotate.c b/hw/xfree86/modes/xf86Rotate.c
index dc9ad11..7b49afa 100644
--- a/hw/xfree86/modes/xf86Rotate.c
+++ b/hw/xfree86/modes/xf86Rotate.c
@@ -154,6 +154,35 @@ xf86CrtcDamageShadow (xf86CrtcPtr crtc)
 }
 
 static void
+xf86CrtcShadowClear (xf86CrtcPtr crtc)
+{
+    PixmapPtr          dst_pixmap = crtc->rotatedPixmap;
+    ScrnInfoPtr                scrn = crtc->scrn;
+    ScreenPtr          screen = scrn->pScreen;
+    PicturePtr         dst;
+    PictFormatPtr      format = compWindowFormat (WindowTable[screen->myNum]);
+    static xRenderColor black = { 0, 0, 0, 0 };
+    xRectangle         rect;
+    int                        error;
+
+    dst = CreatePicture (None,
+                        &dst_pixmap->drawable,
+                        format,
+                        0L,
+                        NULL,
+                        serverClient,
+                        &error);
+    if (!dst)
+       return;
+    rect.x = 0;
+    rect.y = 0;
+    rect.width = dst_pixmap->drawable.width;
+    rect.height = dst_pixmap->drawable.height;
+    CompositeRects (PictOpSrc, dst, &black, 1, &rect);
+    FreePicture (dst, None);
+}
+
+static void
 xf86RotatePrepare (ScreenPtr pScreen)
 {
     ScrnInfoPtr                pScrn = xf86Screens[pScreen->myNum];
@@ -170,6 +199,7 @@ xf86RotatePrepare (ScreenPtr pScreen)
                                                             crtc->rotatedData,
                                                             
crtc->mode.HDisplay,
                                                             
crtc->mode.VDisplay);
+           xf86CrtcShadowClear (crtc);
            if (!xf86_config->rotation_damage_registered)
            {
                /* Hook damage to screen pixmap */
-- 
1.5.6.5

_______________________________________________
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg

Reply via email to