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

Reply via email to