Hi, I guess it's for a bug fixing. If so, please do specify BMC# in changelog
Peter > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of Li Peng > Sent: Thursday, March 24, 2011 1:35 PM > To: [email protected] > Subject: [meego-commits] 15139: Changes to Trunk:Testing/xorg-x11-server > > Hi, > I have made the following changes to xorg-x11-server in project Trunk:Testing. > Please review and accept ASAP. > > Thank You, > Li Peng > > [This message was auto-generated] > > --- > > Request #15139: > > submit: devel:x11:Trunk/xorg-x11-server(r82) -> > Trunk:Testing/xorg-x11-server > > > Message: > Fix the flickering issue when mcompositor flips the compsiting on and off > > State: new 2011-03-23T22:34:44 pli1 > Comment: None > > > > changes files: > -------------- > --- xorg-x11-server.changes > +++ xorg-x11-server.changes > @@ -0,0 +1,3 @@ > +* Thu Mar 24 2011 Li Peng <[email protected]> - 1.9.0 > +- Fix the flickering issue when mcompositor flips the compsiting on and off > + > > new: > ---- > Suppress-exposures-and-implicit-painting-for-some-re.patch > > spec files: > ----------- > --- xorg-x11-server.spec > +++ xorg-x11-server.spec > @@ -33,6 +33,7 @@ > Patch13: bg-none-root-2.patch > Patch14: Replace-malloc-with-calloc-to-initialize-the-buffers.patch > Patch15: GetTimeInMillis-Use-CLOCK_MONOTONIC_COARSE.patch > +Patch16: Suppress-exposures-and-implicit-painting-for-some-re.patch > Requires: libdrm >= 2.4.0 > BuildRequires: pkgconfig(xorg-macros) > BuildRequires: pkgconfig(scrnsaverproto) > @@ -201,6 +202,8 @@ > %patch14 -p1 > # GetTimeInMillis-Use-CLOCK_MONOTONIC_COARSE.patch > %patch15 -p1 > +# Suppress-exposures-and-implicit-painting-for-some-re.patch > +%patch16 -p1 > # >> setup > # << setup > > > other changes: > -------------- > > ++++++ Suppress-exposures-and-implicit-painting-for-some-re.patch (new) > --- Suppress-exposures-and-implicit-painting-for-some-re.patch > +++ Suppress-exposures-and-implicit-painting-for-some-re.patch > +From 2a4b745d318a86ef34b17a9d3fe828512efdecc8 Mon Sep 17 00:00:00 > 2001 > +From: Li Peng <[email protected]> > +Date: Thu, 24 Mar 2011 11:15:15 +0800 > +Subject: [PATCH] Suppress exposures and implicit painting for some requests > + > +This is hand-crafted to avoid flickering when mcompositor flips the > +compsiting on and off. > + > +From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= <[email protected]> > +Port to xserver 1.9.0 by Li Peng <[email protected]> > +--- > + Xext/shape.c | 12 +++++++++--- > + composite/compext.c | 7 ++++++- > + dix/window.c | 20 ++++++++++++++++++++ > + include/window.h | 4 ++++ > + mi/miexpose.c | 20 ++++++++++++-------- > + 5 files changed, 51 insertions(+), 12 deletions(-) > + > +diff --git a/Xext/shape.c b/Xext/shape.c > +index ac95328..a86f201 100644 > +--- a/Xext/shape.c > ++++ b/Xext/shape.c > +@@ -337,9 +337,15 @@ ProcShapeRectangles (ClientPtr client) > + return BadValue; > + } > + > +- return RegionOperate (client, pWin, (int)stuff->destKind, > +- destRgn, srcRgn, (int)stuff->op, > +- stuff->xOff, stuff->yOff, createDefault); > ++ PushSuppressExposure(); > ++ > ++ rc = RegionOperate (client, pWin, (int)stuff->destKind, > ++ destRgn, srcRgn, (int)stuff->op, > ++ stuff->xOff, stuff->yOff, createDefault); > ++ > ++ PopSuppressExposure(); > ++ > ++ return rc; > + } > + > + #ifdef PANORAMIX > +diff --git a/composite/compext.c b/composite/compext.c > +index 30d9dc2..3819844 100644 > +--- a/composite/compext.c > ++++ b/composite/compext.c > +@@ -151,12 +151,17 @@ ProcCompositeRedirectWindow (ClientPtr client) > + { > + WindowPtr pWin; > + REQUEST(xCompositeRedirectWindowReq); > ++ int rc; > + > + REQUEST_SIZE_MATCH(xCompositeRedirectWindowReq); > + VERIFY_WINDOW(pWin, stuff->window, client, > + DixSetAttrAccess|DixManageAccess|DixBlendAccess); > + > +- return compRedirectWindow (client, pWin, stuff->update); > ++ PushSuppressExposure(); > ++ rc = compRedirectWindow (client, pWin, stuff->update); > ++ PopSuppressExposure(); > ++ > ++ return rc; > + } > + > + static int > +diff --git a/dix/window.c b/dix/window.c > +index 1913030..403c149 100644 > +--- a/dix/window.c > ++++ b/dix/window.c > +@@ -3674,6 +3674,26 @@ WindowParentHasDeviceCursor(WindowPtr > pWin, > + return FALSE; > + } > + > ++static int suppress_count; > ++ > ++Bool > ++SuppressExposures(void) > ++{ > ++ return suppress_count > 0; > ++} > ++ > ++void > ++PushSuppressExposure(void) > ++{ > ++ suppress_count++; > ++} > ++ > ++void > ++PopSuppressExposure(void) > ++{ > ++ suppress_count--; > ++} > ++ > + #ifndef NOLOGOHACK > + static void > + DrawLogo(WindowPtr pWin) > +diff --git a/include/window.h b/include/window.h > +index 6fb2f8c..04ca025 100644 > +--- a/include/window.h > ++++ b/include/window.h > +@@ -266,4 +266,8 @@ extern _X_EXPORT void DisableMapUnmapEvents( > + extern _X_EXPORT void EnableMapUnmapEvents( > + WindowPtr /* pWin */ ); > + > ++extern _X_EXPORT Bool SuppressExposures(void); > ++extern _X_EXPORT void PushSuppressExposure(void); > ++extern _X_EXPORT void PopSuppressExposure(void); > ++ > + #endif /* WINDOW_H */ > +diff --git a/mi/miexpose.c b/mi/miexpose.c > +index 94258b8..8e29c7d 100644 > +--- a/mi/miexpose.c > ++++ b/mi/miexpose.c > +@@ -497,15 +497,19 @@ miWindowExposures( WindowPtr pWin, RegionPtr > prgn, RegionPtr other_exposed) > + /* miPaintWindow doesn't clip, so we have to */ > + RegionIntersect(prgn, prgn, &pWin->clipList); > + } > +- if (prgn && !RegionNil(prgn)) > +- miPaintWindow(pWin, prgn, PW_BACKGROUND); > +- if (clientInterested && exposures && !RegionNil(exposures)) > +- miSendExposures(pWin, exposures, > +- pWin->drawable.x, pWin->drawable.y); > +- if (exposures == &expRec) > +- { > +- RegionUninit(exposures); > ++ > ++ if (!SuppressExposures()) { > ++ if (prgn && !RegionNil(prgn)) > ++ miPaintWindow(pWin, prgn, PW_BACKGROUND); > ++ if (clientInterested && exposures && !RegionNil(exposures)) > ++ miSendExposures(pWin, exposures, > ++ pWin->drawable.x, pWin->drawable.y); > ++ if (exposures == &expRec) > ++ { > ++ RegionUninit(exposures); > ++ } > + } > ++ > + else if (exposures && exposures != prgn && exposures != other_exposed) > + RegionDestroy(exposures); > + if (prgn) > +-- > +1.7.2.2 > + > > ++++++ xorg-x11-server.yaml > --- xorg-x11-server.yaml > +++ xorg-x11-server.yaml > @@ -24,6 +24,7 @@ > - bg-none-root-2.patch > - Replace-malloc-with-calloc-to-initialize-the-buffers.patch > - GetTimeInMillis-Use-CLOCK_MONOTONIC_COARSE.patch > + - Suppress-exposures-and-implicit-painting-for-some-re.patch > > Requires: > - libdrm >= 2.4.0 > > _______________________________________________ > MeeGo-commits mailing list > [email protected] > http://lists.meego.com/listinfo/meego-commits _______________________________________________ MeeGo-packaging mailing list [email protected] http://lists.meego.com/listinfo/meego-packaging
