diff --git a/hw/kdrive/fbdev/fbdev.c b/hw/kdrive/fbdev/fbdev.c index 66b0c58d56..2329d8b15b 100644 --- a/hw/kdrive/fbdev/fbdev.c +++ b/hw/kdrive/fbdev/fbdev.c @@ -35,6 +35,7 @@ #endif const char *fbdevDevicePath = NULL; +Bool fbDisableShadow = FALSE; static Bool fbdevInitialize(KdCardInfo * card, FbdevPriv * priv) @@ -345,11 +346,14 @@ fbdevMapFramebuffer(KdScreenInfo * screen) KdPointerMatrix m; FbdevPriv *priv = screen->card->driver; - if (scrpriv->randr != RR_Rotate_0 || - priv->fix.type != FB_TYPE_PACKED_PIXELS) + if (!fbDisableShadow) { scrpriv->shadow = TRUE; - else + } else if (scrpriv->randr != RR_Rotate_0 || + priv->fix.type != FB_TYPE_PACKED_PIXELS) { + scrpriv->shadow = TRUE; + } else { scrpriv->shadow = FALSE; + } KdComputePointerMatrix(&m, scrpriv->randr, screen->width, screen->height); diff --git a/hw/kdrive/fbdev/fbdev.h b/hw/kdrive/fbdev/fbdev.h index ffa5487741..4ee2a89d47 100644 --- a/hw/kdrive/fbdev/fbdev.h +++ b/hw/kdrive/fbdev/fbdev.h @@ -50,6 +50,7 @@ typedef struct _fbdevScrPriv { extern KdCardFuncs fbdevFuncs; extern const char *fbdevDevicePath; +extern Bool fbDisableShadow; Bool fbdevCardInit(KdCardInfo * card); diff --git a/hw/kdrive/fbdev/fbinit.c b/hw/kdrive/fbdev/fbinit.c index 5ff666a378..7bcefd2440 100644 --- a/hw/kdrive/fbdev/fbinit.c +++ b/hw/kdrive/fbdev/fbinit.c @@ -68,6 +68,8 @@ ddxUseMsg(void) ErrorF("\nXfbdev Device Usage:\n"); ErrorF ("-fb path Framebuffer device to use. Defaults to /dev/fb0\n"); + ErrorF + ("-noshadow Disable the ShadowFB layer if possible\n"); ErrorF("\n"); } @@ -83,6 +85,11 @@ ddxProcessArgument(int argc, char **argv, int i) exit(1); } + if (!strcmp(argv[i], "-noshadow")) { + fbDisableShadow = TRUE; + return 1; + } + return KdProcessArgument(argc, argv, i); }