EXA bug: Calling FinishAccess on pixmap 0xaf06d008 with index 1 while it should have been (nil).
Michel Dänzer
michel at daenzer.net
Sat Jul 18 08:12:27 PDT 2009
On Sat, 2009-07-18 at 15:25 +0200, Maarten Maathuis wrote:
> I'm trying to get my system in order again, but i'll certainly have a
> look once i go trough the tons of updates and everything else that
> needs doing.
>
> So someone is using scratch GC and not finishing or preparing access
> properly?
No, the problem is precisely that the scratch GC usage involves
Prepare/FinishAccess, with the same indices already used by
ExaCheckComposite() (which can potentially use all available indices).
Another possible solution might be to unwrap pScreen->CreateGC before
calling the lower level ps->Composite(), see below.
diff --git a/exa/exa_unaccel.c b/exa/exa_unaccel.c
index 0d53b67..d7ec2f0 100644
--- a/exa/exa_unaccel.c
+++ b/exa/exa_unaccel.c
@@ -432,6 +432,7 @@ ExaCheckComposite (CARD8 op,
exaPrepareAccess (pSrc->pDrawable, EXA_PREPARE_SRC);
if (pMask && pMask->pDrawable != NULL)
exaPrepareAccess (pMask->pDrawable, EXA_PREPARE_MASK);
+ swap(pExaScr, pScreen, CreateGC);
#ifdef RENDER
swap(pExaScr, ps, Composite);
ps->Composite (op,
@@ -448,6 +449,7 @@ ExaCheckComposite (CARD8 op,
height);
swap(pExaScr, ps, Composite);
#endif /* RENDER */
+ swap(pExaScr, pScreen, CreateGC);
if (pMask && pMask->pDrawable != NULL)
exaFinishAccess (pMask->pDrawable, EXA_PREPARE_MASK);
if (pSrc->pDrawable != NULL)
--
Earthling Michel Dänzer | http://www.vmware.com
Libre software enthusiast | Debian, X and DRI developer
More information about the xorg
mailing list