On Sun, Sep 12, 2010 at 06:48:46PM +0100, Ken Moffat wrote:
> On Sun, Sep 12, 2010 at 11:14:43AM -0500, DJ Lucas wrote:
> >
> > Guys, Thomas Trepl posted a patch to BLFS-Dev on 2010-08-19. I believe
> > this patch will fix the slow resize issue, however, there are some
> > issues. It will not go into the book as is, but I would like to see at
> > least a mention and patch file in the wiki to cover this corner case
> > which is specific to ATI cards. For more info, see this thread:
> >
> > http://archive.linuxfromscratch.org/mail-archives/blfs-dev/2010-August/020578.html
> >
> > If either of you would like to make it a server option, and set it to
> > false by default, please do so and it will get introduced to the book.
> > I looked into it for about an hour and gave up.
> >
> > -- DJ Lucas
> >
> Thanks for the link. I'd overlooked that because I thought it was
> for kde4. For me, it's only an occasional problem - will maybe take
> a look in a week or so.
>
With my essentially-LFS-6.7 desktop I'm noticing that if I have
firefox open on one desktop, and something else in the same area on
another, when I go back to firefox it takes a noticeable time to
repaint itself, even if the processor was idle. This is with
xorg-server-1.9. Compare to the 1.7-series servers where I only
notice delays if I'm compiling something.
So, I looked at the thread that was pointed to. I got quite
confused by all the references to fglrx, but eventually picked the
xserver-xorg-backclear.patch from Felix Kuehling [attached]. Was
that what you were talking about ?
I applied it by hand to 1.9 [ also attached ] but it doesn't help.
I'm not totally surprised, the main discussion in the thread pointed
to by Thomas, apart from being for fglrx, seemed to be about a
slowness in resizing windows (and from people using modern radeons).
ĸen
--
das eine Mal als Tragödie, das andere Mal als Farce
--- xorg-server-1.6.3/composite/compalloc.c 2009-07-07 13:48:57.000000000
-0400
+++ xorg-server-1.6.3-backclear/composite/compalloc.c 2009-09-09
11:55:03.000000000 -0400
@@ -483,65 +483,33 @@
pPixmap->screen_x = x;
pPixmap->screen_y = y;
-
- if (pParent->drawable.depth == pWin->drawable.depth)
- {
- GCPtr pGC = GetScratchGC (pWin->drawable.depth, pScreen);
-
- /*
- * Copy bits from the parent into the new pixmap so that it will
- * have "reasonable" contents in case for background None areas.
- */
- if (pGC)
- {
- XID val = IncludeInferiors;
-
- ValidateGC(&pPixmap->drawable, pGC);
- dixChangeGC (serverClient, pGC, GCSubwindowMode, &val, NULL);
- (*pGC->ops->CopyArea) (&pParent->drawable,
- &pPixmap->drawable,
- pGC,
- x - pParent->drawable.x,
- y - pParent->drawable.y,
- w, h, 0, 0);
- FreeScratchGC (pGC);
- }
- }
- else
+
{
- PictFormatPtr pSrcFormat = compWindowFormat (pParent);
- PictFormatPtr pDstFormat = compWindowFormat (pWin);
+ /*
+ * Initialize new backing pixmap as fully transparent.
+ */
+ PictFormatPtr pDstFormat = compWindowFormat (pWin);
XID inferiors = IncludeInferiors;
int error;
- PicturePtr pSrcPicture = CreatePicture (None,
- &pParent->drawable,
- pSrcFormat,
- CPSubwindowMode,
- &inferiors,
- serverClient, &error);
-
PicturePtr pDstPicture = CreatePicture (None,
&pPixmap->drawable,
pDstFormat,
0, 0,
serverClient, &error);
- if (pSrcPicture && pDstPicture)
+ if (pDstPicture)
{
- CompositePicture (PictOpSrc,
- pSrcPicture,
+ CompositePicture (PictOpClear,
+ pDstPicture,
NULL,
pDstPicture,
- x - pParent->drawable.x,
- y - pParent->drawable.y,
- 0, 0, 0, 0, w, h);
+ 0, 0, 0, 0, 0, 0, w, h);
}
- if (pSrcPicture)
- FreePicture (pSrcPicture, 0);
if (pDstPicture)
FreePicture (pDstPicture, 0);
}
+
return pPixmap;
}
diff -Naur xorg-server-1.9.0/composite/compalloc.c
xorg-server-1.9.0.patched//composite/compalloc.c
--- xorg-server-1.9.0/composite/compalloc.c 2010-06-06 18:53:51.000000000
+0100
+++ xorg-server-1.9.0.patched//composite/compalloc.c 2010-09-23
23:39:45.992486579 +0100
@@ -488,62 +488,25 @@
pPixmap->screen_x = x;
pPixmap->screen_y = y;
- if (pParent->drawable.depth == pWin->drawable.depth)
{
- GCPtr pGC = GetScratchGC (pWin->drawable.depth, pScreen);
-
- /*
- * Copy bits from the parent into the new pixmap so that it will
- * have "reasonable" contents in case for background None areas.
- */
- if (pGC)
- {
- ChangeGCVal val;
- val.val = IncludeInferiors;
-
- ValidateGC(&pPixmap->drawable, pGC);
- ChangeGC (serverClient, pGC, GCSubwindowMode, &val);
- (*pGC->ops->CopyArea) (&pParent->drawable,
- &pPixmap->drawable,
- pGC,
- x - pParent->drawable.x,
- y - pParent->drawable.y,
- w, h, 0, 0);
- FreeScratchGC (pGC);
- }
- }
- else
- {
- PictFormatPtr pSrcFormat = compWindowFormat (pParent);
- PictFormatPtr pDstFormat = compWindowFormat (pWin);
+ PictFormatPtr pDstFormat = compWindowFormat (pWin);
XID inferiors = IncludeInferiors;
int error;
-
- PicturePtr pSrcPicture = CreatePicture (None,
- &pParent->drawable,
- pSrcFormat,
- CPSubwindowMode,
- &inferiors,
- serverClient, &error);
-
+
PicturePtr pDstPicture = CreatePicture (None,
&pPixmap->drawable,
pDstFormat,
0, 0,
serverClient, &error);
- if (pSrcPicture && pDstPicture)
+ if (pDstPicture)
{
- CompositePicture (PictOpSrc,
- pSrcPicture,
+ CompositePicture (PictOpClear,
+ pDstPicture,
NULL,
pDstPicture,
- x - pParent->drawable.x,
- y - pParent->drawable.y,
- 0, 0, 0, 0, w, h);
+ 0, 0, 0, 0, 0, 0, w, h);
}
- if (pSrcPicture)
- FreePicture (pSrcPicture, 0);
if (pDstPicture)
FreePicture (pDstPicture, 0);
}
--
http://linuxfromscratch.org/mailman/listinfo/blfs-support
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page