[PATCH] dix: adds support for none root window background
Tiago Vignatti
tiago.vignatti at nokia.com
Mon Nov 1 12:43:18 PDT 2010
ping?
On Thu, Oct 28, 2010 at 04:57:22PM +0300, Tiago Vignatti wrote:
> This lets the driver notify the server whether it can draw a background when
> -nr option is passed. If the driver can copy the framebuffer cleanly then it
> can set the flag, otherwise the server will fallback to normal behaviour.
>
> The commit is originally based on discussions happened on xorg-devel:
> http://lists.freedesktop.org/archives/xorg-devel/2010-June/009755.html
>
> Signed-off-by: Tiago Vignatti <tiago.vignatti at nokia.com>
> ---
> dix/window.c | 6 ++++++
> include/opaque.h | 1 +
> include/scrnintstr.h | 5 +++++
> os/utils.c | 3 +++
> 4 files changed, 15 insertions(+), 0 deletions(-)
>
> diff --git a/dix/window.c b/dix/window.c
> index cfebb9d..7a47221 100644
> --- a/dix/window.c
> +++ b/dix/window.c
> @@ -137,6 +137,8 @@ Equipment Corporation.
> * ChangeWindowDeviceCursor
> ******/
>
> +Bool bgNoneRoot = FALSE;
> +
> static unsigned char _back_lsb[4] = {0x88, 0x22, 0x44, 0x11};
> static unsigned char _back_msb[4] = {0x11, 0x44, 0x22, 0x88};
>
> @@ -463,6 +465,10 @@ InitRootWindow(WindowPtr pWin)
> if (party_like_its_1989) {
> MakeRootTile(pWin);
> backFlag |= CWBackPixmap;
> + } else if (pScreen->canDoBGNoneRoot && bgNoneRoot) {
> + pWin->backgroundState = XaceBackgroundNoneState(pWin);
> + pWin->background.pixel = pScreen->whitePixel;
> + backFlag |= CWBackPixmap;
> } else {
> if (whiteRoot)
> pWin->background.pixel = pScreen->whitePixel;
> diff --git a/include/opaque.h b/include/opaque.h
> index f8c0000..f1a0046 100644
> --- a/include/opaque.h
> +++ b/include/opaque.h
> @@ -72,6 +72,7 @@ extern _X_EXPORT Bool defeatAccessControl;
> extern _X_EXPORT long maxBigRequestSize;
> extern _X_EXPORT Bool party_like_its_1989;
> extern _X_EXPORT Bool whiteRoot;
> +extern _X_EXPORT Bool bgNoneRoot;
>
> extern _X_EXPORT Bool CoreDump;
>
> diff --git a/include/scrnintstr.h b/include/scrnintstr.h
> index e36b15f..b1d2d8e 100644
> --- a/include/scrnintstr.h
> +++ b/include/scrnintstr.h
> @@ -479,6 +479,11 @@ typedef struct _Screen {
> short numVisuals;
> VisualPtr visuals;
> WindowPtr root;
> +
> + /* set it in driver side if X server can copy the framebuffer content.
> + * Meant be used together with -nr option. */
> + int canDoBGNoneRoot;
> +
> ScreenSaverStuffRec screensaver;
>
> /* Random screen procedures */
> diff --git a/os/utils.c b/os/utils.c
> index f176af4..9eb6084 100644
> --- a/os/utils.c
> +++ b/os/utils.c
> @@ -502,6 +502,7 @@ void UseMsg(void)
> #endif
> ErrorF("-nolisten string don't listen on protocol\n");
> ErrorF("-noreset don't reset after last client exists\n");
> + ErrorF("-nr create root window with no background\n");
> ErrorF("-reset reset after last client exists\n");
> ErrorF("-p # screen-saver pattern duration (minutes)\n");
> ErrorF("-pn accept failure to listen on all ports\n");
> @@ -842,6 +843,8 @@ ProcessCommandLine(int argc, char *argv[])
> defaultBackingStore = WhenMapped;
> else if ( strcmp( argv[i], "-wr") == 0)
> whiteRoot = TRUE;
> + else if ( strcmp( argv[i], "-nr") == 0)
> + bgNoneRoot = TRUE;
> else if ( strcmp( argv[i], "-maxbigreqsize") == 0) {
> if(++i < argc) {
> long reqSizeArg = atol(argv[i]);
> --
> 1.7.0.4
Tiago
More information about the xorg-devel
mailing list