From e84648df7d7eb700b7c2d35fdef0be1f463853fa Mon Sep 17 00:00:00 2001 From: Zack Rusin Date: Fri, 8 Jul 2005 17:07:52 +0000 Subject: [PATCH] mark drawable as dirty on copying/painting windows --- exa/exa.c | 79 +++++++++++++++------------------- exa/exa_accel.c | 79 +++++++++++++++------------------- exa/exa_migration.c | 79 +++++++++++++++------------------- hw/xfree86/exa/exa.c | 79 +++++++++++++++------------------- hw/xfree86/exa/exa_accel.c | 79 +++++++++++++++------------------- hw/xfree86/exa/exa_migration.c | 79 +++++++++++++++------------------- 6 files changed, 210 insertions(+), 264 deletions(-) diff --git a/exa/exa.c b/exa/exa.c index d0d4a6f86..49c884595 100644 --- a/exa/exa.c +++ b/exa/exa.c @@ -1008,6 +1008,7 @@ exaCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc) if (!pScrn->vtSema) { ExaScreenPriv(pWin->drawable.pScreen); pExaScr->SavedCopyWindow (pWin, ptOldOrg, prgnSrc); + exaDrawableDirty (&pWin->drawable); return; } @@ -1071,59 +1072,49 @@ static void exaPaintWindow(WindowPtr pWin, RegionPtr pRegion, int what) { ScrnInfoPtr pScrn = XF86SCRNINFO(pWin->drawable.pScreen); - ExaScreenPriv(pWin->drawable.pScreen); - if (!pScrn->vtSema) { - switch (what) { - case PW_BACKGROUND: - pExaScr->SavedPaintWindowBackground(pWin, pRegion, what); - break; - case PW_BORDER: - pExaScr->SavedPaintWindowBorder(pWin, pRegion, what); - break; - } - return; - } STRACE; if (!REGION_NUM_RECTS(pRegion)) return; - switch (what) { - case PW_BACKGROUND: - switch (pWin->backgroundState) { - case None: - return; - case ParentRelative: - do { - pWin = pWin->parent; - } while (pWin->backgroundState == ParentRelative); - (*pWin->drawable.pScreen->PaintWindowBackground)(pWin, pRegion, - what); - return; - case BackgroundPixel: - exaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->background.pixel); - return; + if (pScrn->vtSema) { + switch (what) { + case PW_BACKGROUND: + switch (pWin->backgroundState) { + case None: + return; + case ParentRelative: + do { + pWin = pWin->parent; + } while (pWin->backgroundState == ParentRelative); + (*pWin->drawable.pScreen->PaintWindowBackground)(pWin, pRegion, + what); + return; + case BackgroundPixel: + exaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->background.pixel); + return; #if 0 - case BackgroundPixmap: - exaFillRegionTiled((DrawablePtr)pWin, pRegion, pWin->background.pixmap); - return; + case BackgroundPixmap: + exaFillRegionTiled((DrawablePtr)pWin, pRegion, pWin->background.pixmap); + return; #endif - } - break; - case PW_BORDER: - if (pWin->borderIsPixel) - { - exaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->border.pixel); - return; - } + } + break; + case PW_BORDER: + if (pWin->borderIsPixel) + { + exaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->border.pixel); + return; + } #if 0 - else - { - exaFillRegionTiled((DrawablePtr)pWin, pRegion, pWin->border.pixmap); - return; - } + else + { + exaFillRegionTiled((DrawablePtr)pWin, pRegion, pWin->border.pixmap); + return; + } #endif - break; + break; + } } ExaCheckPaintWindow (pWin, pRegion, what); } diff --git a/exa/exa_accel.c b/exa/exa_accel.c index d0d4a6f86..49c884595 100644 --- a/exa/exa_accel.c +++ b/exa/exa_accel.c @@ -1008,6 +1008,7 @@ exaCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc) if (!pScrn->vtSema) { ExaScreenPriv(pWin->drawable.pScreen); pExaScr->SavedCopyWindow (pWin, ptOldOrg, prgnSrc); + exaDrawableDirty (&pWin->drawable); return; } @@ -1071,59 +1072,49 @@ static void exaPaintWindow(WindowPtr pWin, RegionPtr pRegion, int what) { ScrnInfoPtr pScrn = XF86SCRNINFO(pWin->drawable.pScreen); - ExaScreenPriv(pWin->drawable.pScreen); - if (!pScrn->vtSema) { - switch (what) { - case PW_BACKGROUND: - pExaScr->SavedPaintWindowBackground(pWin, pRegion, what); - break; - case PW_BORDER: - pExaScr->SavedPaintWindowBorder(pWin, pRegion, what); - break; - } - return; - } STRACE; if (!REGION_NUM_RECTS(pRegion)) return; - switch (what) { - case PW_BACKGROUND: - switch (pWin->backgroundState) { - case None: - return; - case ParentRelative: - do { - pWin = pWin->parent; - } while (pWin->backgroundState == ParentRelative); - (*pWin->drawable.pScreen->PaintWindowBackground)(pWin, pRegion, - what); - return; - case BackgroundPixel: - exaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->background.pixel); - return; + if (pScrn->vtSema) { + switch (what) { + case PW_BACKGROUND: + switch (pWin->backgroundState) { + case None: + return; + case ParentRelative: + do { + pWin = pWin->parent; + } while (pWin->backgroundState == ParentRelative); + (*pWin->drawable.pScreen->PaintWindowBackground)(pWin, pRegion, + what); + return; + case BackgroundPixel: + exaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->background.pixel); + return; #if 0 - case BackgroundPixmap: - exaFillRegionTiled((DrawablePtr)pWin, pRegion, pWin->background.pixmap); - return; + case BackgroundPixmap: + exaFillRegionTiled((DrawablePtr)pWin, pRegion, pWin->background.pixmap); + return; #endif - } - break; - case PW_BORDER: - if (pWin->borderIsPixel) - { - exaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->border.pixel); - return; - } + } + break; + case PW_BORDER: + if (pWin->borderIsPixel) + { + exaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->border.pixel); + return; + } #if 0 - else - { - exaFillRegionTiled((DrawablePtr)pWin, pRegion, pWin->border.pixmap); - return; - } + else + { + exaFillRegionTiled((DrawablePtr)pWin, pRegion, pWin->border.pixmap); + return; + } #endif - break; + break; + } } ExaCheckPaintWindow (pWin, pRegion, what); } diff --git a/exa/exa_migration.c b/exa/exa_migration.c index d0d4a6f86..49c884595 100644 --- a/exa/exa_migration.c +++ b/exa/exa_migration.c @@ -1008,6 +1008,7 @@ exaCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc) if (!pScrn->vtSema) { ExaScreenPriv(pWin->drawable.pScreen); pExaScr->SavedCopyWindow (pWin, ptOldOrg, prgnSrc); + exaDrawableDirty (&pWin->drawable); return; } @@ -1071,59 +1072,49 @@ static void exaPaintWindow(WindowPtr pWin, RegionPtr pRegion, int what) { ScrnInfoPtr pScrn = XF86SCRNINFO(pWin->drawable.pScreen); - ExaScreenPriv(pWin->drawable.pScreen); - if (!pScrn->vtSema) { - switch (what) { - case PW_BACKGROUND: - pExaScr->SavedPaintWindowBackground(pWin, pRegion, what); - break; - case PW_BORDER: - pExaScr->SavedPaintWindowBorder(pWin, pRegion, what); - break; - } - return; - } STRACE; if (!REGION_NUM_RECTS(pRegion)) return; - switch (what) { - case PW_BACKGROUND: - switch (pWin->backgroundState) { - case None: - return; - case ParentRelative: - do { - pWin = pWin->parent; - } while (pWin->backgroundState == ParentRelative); - (*pWin->drawable.pScreen->PaintWindowBackground)(pWin, pRegion, - what); - return; - case BackgroundPixel: - exaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->background.pixel); - return; + if (pScrn->vtSema) { + switch (what) { + case PW_BACKGROUND: + switch (pWin->backgroundState) { + case None: + return; + case ParentRelative: + do { + pWin = pWin->parent; + } while (pWin->backgroundState == ParentRelative); + (*pWin->drawable.pScreen->PaintWindowBackground)(pWin, pRegion, + what); + return; + case BackgroundPixel: + exaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->background.pixel); + return; #if 0 - case BackgroundPixmap: - exaFillRegionTiled((DrawablePtr)pWin, pRegion, pWin->background.pixmap); - return; + case BackgroundPixmap: + exaFillRegionTiled((DrawablePtr)pWin, pRegion, pWin->background.pixmap); + return; #endif - } - break; - case PW_BORDER: - if (pWin->borderIsPixel) - { - exaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->border.pixel); - return; - } + } + break; + case PW_BORDER: + if (pWin->borderIsPixel) + { + exaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->border.pixel); + return; + } #if 0 - else - { - exaFillRegionTiled((DrawablePtr)pWin, pRegion, pWin->border.pixmap); - return; - } + else + { + exaFillRegionTiled((DrawablePtr)pWin, pRegion, pWin->border.pixmap); + return; + } #endif - break; + break; + } } ExaCheckPaintWindow (pWin, pRegion, what); } diff --git a/hw/xfree86/exa/exa.c b/hw/xfree86/exa/exa.c index d0d4a6f86..49c884595 100644 --- a/hw/xfree86/exa/exa.c +++ b/hw/xfree86/exa/exa.c @@ -1008,6 +1008,7 @@ exaCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc) if (!pScrn->vtSema) { ExaScreenPriv(pWin->drawable.pScreen); pExaScr->SavedCopyWindow (pWin, ptOldOrg, prgnSrc); + exaDrawableDirty (&pWin->drawable); return; } @@ -1071,59 +1072,49 @@ static void exaPaintWindow(WindowPtr pWin, RegionPtr pRegion, int what) { ScrnInfoPtr pScrn = XF86SCRNINFO(pWin->drawable.pScreen); - ExaScreenPriv(pWin->drawable.pScreen); - if (!pScrn->vtSema) { - switch (what) { - case PW_BACKGROUND: - pExaScr->SavedPaintWindowBackground(pWin, pRegion, what); - break; - case PW_BORDER: - pExaScr->SavedPaintWindowBorder(pWin, pRegion, what); - break; - } - return; - } STRACE; if (!REGION_NUM_RECTS(pRegion)) return; - switch (what) { - case PW_BACKGROUND: - switch (pWin->backgroundState) { - case None: - return; - case ParentRelative: - do { - pWin = pWin->parent; - } while (pWin->backgroundState == ParentRelative); - (*pWin->drawable.pScreen->PaintWindowBackground)(pWin, pRegion, - what); - return; - case BackgroundPixel: - exaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->background.pixel); - return; + if (pScrn->vtSema) { + switch (what) { + case PW_BACKGROUND: + switch (pWin->backgroundState) { + case None: + return; + case ParentRelative: + do { + pWin = pWin->parent; + } while (pWin->backgroundState == ParentRelative); + (*pWin->drawable.pScreen->PaintWindowBackground)(pWin, pRegion, + what); + return; + case BackgroundPixel: + exaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->background.pixel); + return; #if 0 - case BackgroundPixmap: - exaFillRegionTiled((DrawablePtr)pWin, pRegion, pWin->background.pixmap); - return; + case BackgroundPixmap: + exaFillRegionTiled((DrawablePtr)pWin, pRegion, pWin->background.pixmap); + return; #endif - } - break; - case PW_BORDER: - if (pWin->borderIsPixel) - { - exaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->border.pixel); - return; - } + } + break; + case PW_BORDER: + if (pWin->borderIsPixel) + { + exaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->border.pixel); + return; + } #if 0 - else - { - exaFillRegionTiled((DrawablePtr)pWin, pRegion, pWin->border.pixmap); - return; - } + else + { + exaFillRegionTiled((DrawablePtr)pWin, pRegion, pWin->border.pixmap); + return; + } #endif - break; + break; + } } ExaCheckPaintWindow (pWin, pRegion, what); } diff --git a/hw/xfree86/exa/exa_accel.c b/hw/xfree86/exa/exa_accel.c index d0d4a6f86..49c884595 100644 --- a/hw/xfree86/exa/exa_accel.c +++ b/hw/xfree86/exa/exa_accel.c @@ -1008,6 +1008,7 @@ exaCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc) if (!pScrn->vtSema) { ExaScreenPriv(pWin->drawable.pScreen); pExaScr->SavedCopyWindow (pWin, ptOldOrg, prgnSrc); + exaDrawableDirty (&pWin->drawable); return; } @@ -1071,59 +1072,49 @@ static void exaPaintWindow(WindowPtr pWin, RegionPtr pRegion, int what) { ScrnInfoPtr pScrn = XF86SCRNINFO(pWin->drawable.pScreen); - ExaScreenPriv(pWin->drawable.pScreen); - if (!pScrn->vtSema) { - switch (what) { - case PW_BACKGROUND: - pExaScr->SavedPaintWindowBackground(pWin, pRegion, what); - break; - case PW_BORDER: - pExaScr->SavedPaintWindowBorder(pWin, pRegion, what); - break; - } - return; - } STRACE; if (!REGION_NUM_RECTS(pRegion)) return; - switch (what) { - case PW_BACKGROUND: - switch (pWin->backgroundState) { - case None: - return; - case ParentRelative: - do { - pWin = pWin->parent; - } while (pWin->backgroundState == ParentRelative); - (*pWin->drawable.pScreen->PaintWindowBackground)(pWin, pRegion, - what); - return; - case BackgroundPixel: - exaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->background.pixel); - return; + if (pScrn->vtSema) { + switch (what) { + case PW_BACKGROUND: + switch (pWin->backgroundState) { + case None: + return; + case ParentRelative: + do { + pWin = pWin->parent; + } while (pWin->backgroundState == ParentRelative); + (*pWin->drawable.pScreen->PaintWindowBackground)(pWin, pRegion, + what); + return; + case BackgroundPixel: + exaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->background.pixel); + return; #if 0 - case BackgroundPixmap: - exaFillRegionTiled((DrawablePtr)pWin, pRegion, pWin->background.pixmap); - return; + case BackgroundPixmap: + exaFillRegionTiled((DrawablePtr)pWin, pRegion, pWin->background.pixmap); + return; #endif - } - break; - case PW_BORDER: - if (pWin->borderIsPixel) - { - exaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->border.pixel); - return; - } + } + break; + case PW_BORDER: + if (pWin->borderIsPixel) + { + exaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->border.pixel); + return; + } #if 0 - else - { - exaFillRegionTiled((DrawablePtr)pWin, pRegion, pWin->border.pixmap); - return; - } + else + { + exaFillRegionTiled((DrawablePtr)pWin, pRegion, pWin->border.pixmap); + return; + } #endif - break; + break; + } } ExaCheckPaintWindow (pWin, pRegion, what); } diff --git a/hw/xfree86/exa/exa_migration.c b/hw/xfree86/exa/exa_migration.c index d0d4a6f86..49c884595 100644 --- a/hw/xfree86/exa/exa_migration.c +++ b/hw/xfree86/exa/exa_migration.c @@ -1008,6 +1008,7 @@ exaCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc) if (!pScrn->vtSema) { ExaScreenPriv(pWin->drawable.pScreen); pExaScr->SavedCopyWindow (pWin, ptOldOrg, prgnSrc); + exaDrawableDirty (&pWin->drawable); return; } @@ -1071,59 +1072,49 @@ static void exaPaintWindow(WindowPtr pWin, RegionPtr pRegion, int what) { ScrnInfoPtr pScrn = XF86SCRNINFO(pWin->drawable.pScreen); - ExaScreenPriv(pWin->drawable.pScreen); - if (!pScrn->vtSema) { - switch (what) { - case PW_BACKGROUND: - pExaScr->SavedPaintWindowBackground(pWin, pRegion, what); - break; - case PW_BORDER: - pExaScr->SavedPaintWindowBorder(pWin, pRegion, what); - break; - } - return; - } STRACE; if (!REGION_NUM_RECTS(pRegion)) return; - switch (what) { - case PW_BACKGROUND: - switch (pWin->backgroundState) { - case None: - return; - case ParentRelative: - do { - pWin = pWin->parent; - } while (pWin->backgroundState == ParentRelative); - (*pWin->drawable.pScreen->PaintWindowBackground)(pWin, pRegion, - what); - return; - case BackgroundPixel: - exaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->background.pixel); - return; + if (pScrn->vtSema) { + switch (what) { + case PW_BACKGROUND: + switch (pWin->backgroundState) { + case None: + return; + case ParentRelative: + do { + pWin = pWin->parent; + } while (pWin->backgroundState == ParentRelative); + (*pWin->drawable.pScreen->PaintWindowBackground)(pWin, pRegion, + what); + return; + case BackgroundPixel: + exaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->background.pixel); + return; #if 0 - case BackgroundPixmap: - exaFillRegionTiled((DrawablePtr)pWin, pRegion, pWin->background.pixmap); - return; + case BackgroundPixmap: + exaFillRegionTiled((DrawablePtr)pWin, pRegion, pWin->background.pixmap); + return; #endif - } - break; - case PW_BORDER: - if (pWin->borderIsPixel) - { - exaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->border.pixel); - return; - } + } + break; + case PW_BORDER: + if (pWin->borderIsPixel) + { + exaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->border.pixel); + return; + } #if 0 - else - { - exaFillRegionTiled((DrawablePtr)pWin, pRegion, pWin->border.pixmap); - return; - } + else + { + exaFillRegionTiled((DrawablePtr)pWin, pRegion, pWin->border.pixmap); + return; + } #endif - break; + break; + } } ExaCheckPaintWindow (pWin, pRegion, what); }