forked from pool/xorg-x11-server
Accepting request 177931 from home:michalsrb:branches:X11:XOrg
- u_xserver_xvfb-randr.patch * Add randr support to Xvfb (bnc#823410) OBS-URL: https://build.opensuse.org/request/show/177931 OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/xorg-x11-server?expand=0&rev=446
This commit is contained in:
parent
3a86ff8701
commit
391f1c16b4
192
u_xserver_xvfb-randr.patch
Normal file
192
u_xserver_xvfb-randr.patch
Normal file
@ -0,0 +1,192 @@
|
|||||||
|
Author: Lambros Lambrou <lambroslambrou@google.com>
|
||||||
|
Subject: xvfb: add randr support
|
||||||
|
Patch-Mainline: To be upstreamed
|
||||||
|
References: bnc#823410 fdo#26391
|
||||||
|
Signed-off-by: Michal Srb <msrb@suse.cz>
|
||||||
|
|
||||||
|
--- a/hw/vfb/InitOutput.c
|
||||||
|
+++ b/hw/vfb/InitOutput.c
|
||||||
|
@@ -66,6 +66,7 @@
|
||||||
|
#include "dix.h"
|
||||||
|
#include "miline.h"
|
||||||
|
#include "glx_extinit.h"
|
||||||
|
+#include "randrstr.h"
|
||||||
|
|
||||||
|
#define VFB_DEFAULT_WIDTH 1280
|
||||||
|
#define VFB_DEFAULT_HEIGHT 1024
|
||||||
|
@@ -812,6 +813,165 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
static Bool
|
||||||
|
+vfbRROutputValidateMode(ScreenPtr pScreen,
|
||||||
|
+ RROutputPtr output,
|
||||||
|
+ RRModePtr mode)
|
||||||
|
+{
|
||||||
|
+ rrScrPriv(pScreen);
|
||||||
|
+
|
||||||
|
+ if (pScrPriv->minWidth <= mode->mode.width &&
|
||||||
|
+ pScrPriv->maxWidth >= mode->mode.width &&
|
||||||
|
+ pScrPriv->minHeight <= mode->mode.height &&
|
||||||
|
+ pScrPriv->maxHeight >= mode->mode.height)
|
||||||
|
+ return TRUE;
|
||||||
|
+ else
|
||||||
|
+ return FALSE;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static Bool
|
||||||
|
+vfbRRScreenSetSize(ScreenPtr pScreen,
|
||||||
|
+ CARD16 width,
|
||||||
|
+ CARD16 height,
|
||||||
|
+ CARD32 mmWidth,
|
||||||
|
+ CARD32 mmHeight)
|
||||||
|
+{
|
||||||
|
+ WindowPtr root = pScreen->root;
|
||||||
|
+ WindowPtr layer;
|
||||||
|
+ WindowPtr child;
|
||||||
|
+ BoxRec box;
|
||||||
|
+
|
||||||
|
+ pScreen->width = width;
|
||||||
|
+ pScreen->height = height;
|
||||||
|
+ pScreen->mmWidth = mmWidth;
|
||||||
|
+ pScreen->mmHeight = mmHeight;
|
||||||
|
+
|
||||||
|
+ // Resize the root window & adjust its clipping
|
||||||
|
+ box.x1 = 0;
|
||||||
|
+ box.y1 = 0;
|
||||||
|
+ box.x2 = pScreen->width;
|
||||||
|
+ box.y2 = pScreen->height;
|
||||||
|
+ REGION_INIT(pScreen, &root->winSize, &box, 1);
|
||||||
|
+ REGION_INIT(pScreen, &root->borderSize, &box, 1);
|
||||||
|
+ REGION_RESET(pScreen, &root->borderClip, &box);
|
||||||
|
+ root->drawable.width = pScreen->width;
|
||||||
|
+ root->drawable.height = pScreen->height;
|
||||||
|
+ REGION_BREAK (pScreen, &root->clipList);
|
||||||
|
+
|
||||||
|
+ // Update the clipping regions of all windows
|
||||||
|
+ for (child = root->firstChild; child; child = child->nextSib)
|
||||||
|
+ (*pScreen->MarkOverlappedWindows)(child, child, &layer);
|
||||||
|
+
|
||||||
|
+ if (root->firstChild)
|
||||||
|
+ {
|
||||||
|
+ (*pScreen->MarkOverlappedWindows)(root->firstChild,
|
||||||
|
+ root->firstChild,
|
||||||
|
+ (WindowPtr *)NULL);
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ {
|
||||||
|
+ (*pScreen->MarkWindow) (root);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ (*pScreen->ValidateTree)(root, NullWindow, VTOther);
|
||||||
|
+ (*pScreen->HandleExposures)(root);
|
||||||
|
+
|
||||||
|
+ // Reposition top-level windows to fit new root size
|
||||||
|
+ // XXX I assume this is what it does, but I'm not sure
|
||||||
|
+ ResizeChildrenWinSize (root, 0, 0, 0, 0);
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+ // Check the pointer position
|
||||||
|
+ WindowsRestructured ();
|
||||||
|
+
|
||||||
|
+ RRScreenSizeNotify (pScreen);
|
||||||
|
+ RRTellChanged(pScreen);
|
||||||
|
+
|
||||||
|
+ // Flush resulting events, etc to clients
|
||||||
|
+ FlushAllOutput ();
|
||||||
|
+
|
||||||
|
+ return TRUE;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static Bool
|
||||||
|
+vfbRRCrtcSet(ScreenPtr pScreen,
|
||||||
|
+ RRCrtcPtr crtc,
|
||||||
|
+ RRModePtr mode,
|
||||||
|
+ int x,
|
||||||
|
+ int y,
|
||||||
|
+ Rotation rotation,
|
||||||
|
+ int numOutput,
|
||||||
|
+ RROutputPtr *outputs)
|
||||||
|
+{
|
||||||
|
+ return RRCrtcNotify(crtc, mode, x, y, rotation, NULL, numOutput, outputs);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static Bool
|
||||||
|
+vfbRRGetInfo(ScreenPtr pScreen, Rotation *rotations)
|
||||||
|
+{
|
||||||
|
+ return TRUE;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static Bool
|
||||||
|
+vfbRandRInit(ScreenPtr pScreen)
|
||||||
|
+{
|
||||||
|
+ rrScrPrivPtr pScrPriv;
|
||||||
|
+#if RANDR_12_INTERFACE
|
||||||
|
+ RRModePtr mode;
|
||||||
|
+ RRCrtcPtr crtc;
|
||||||
|
+ RROutputPtr output;
|
||||||
|
+ xRRModeInfo modeInfo;
|
||||||
|
+ char name[64];
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+ if (!RRScreenInit (pScreen))
|
||||||
|
+ return FALSE;
|
||||||
|
+ pScrPriv = rrGetScrPriv(pScreen);
|
||||||
|
+ pScrPriv->rrGetInfo = vfbRRGetInfo;
|
||||||
|
+#if RANDR_12_INTERFACE
|
||||||
|
+ pScrPriv->rrCrtcSet = vfbRRCrtcSet;
|
||||||
|
+ pScrPriv->rrScreenSetSize = vfbRRScreenSetSize;
|
||||||
|
+ pScrPriv->rrOutputSetProperty = NULL;
|
||||||
|
+#if RANDR_13_INTERFACE
|
||||||
|
+ pScrPriv->rrOutputGetProperty = NULL;
|
||||||
|
+#endif
|
||||||
|
+ pScrPriv->rrOutputValidateMode = vfbRROutputValidateMode;
|
||||||
|
+ pScrPriv->rrModeDestroy = NULL;
|
||||||
|
+
|
||||||
|
+ RRScreenSetSizeRange (pScreen,
|
||||||
|
+ 1, 1,
|
||||||
|
+ pScreen->width, pScreen->height);
|
||||||
|
+
|
||||||
|
+ sprintf (name, "%dx%d", pScreen->width, pScreen->height);
|
||||||
|
+ memset (&modeInfo, '\0', sizeof (modeInfo));
|
||||||
|
+ modeInfo.width = pScreen->width;
|
||||||
|
+ modeInfo.height = pScreen->height;
|
||||||
|
+ modeInfo.nameLength = strlen (name);
|
||||||
|
+
|
||||||
|
+ mode = RRModeGet (&modeInfo, name);
|
||||||
|
+ if (!mode)
|
||||||
|
+ return FALSE;
|
||||||
|
+
|
||||||
|
+ crtc = RRCrtcCreate (pScreen, NULL);
|
||||||
|
+ if (!crtc)
|
||||||
|
+ return FALSE;
|
||||||
|
+
|
||||||
|
+ output = RROutputCreate (pScreen, "screen", 6, NULL);
|
||||||
|
+ if (!output)
|
||||||
|
+ return FALSE;
|
||||||
|
+ if (!RROutputSetClones (output, NULL, 0))
|
||||||
|
+ return FALSE;
|
||||||
|
+ if (!RROutputSetModes (output, &mode, 1, 0))
|
||||||
|
+ return FALSE;
|
||||||
|
+ if (!RROutputSetCrtcs (output, &crtc, 1))
|
||||||
|
+ return FALSE;
|
||||||
|
+ if (!RROutputSetConnection (output, RR_Connected))
|
||||||
|
+ return FALSE;
|
||||||
|
+ RRCrtcNotify (crtc, mode, 0, 0, RR_Rotate_0, NULL, 1, &output);
|
||||||
|
+#endif
|
||||||
|
+ return TRUE;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static Bool
|
||||||
|
vfbScreenInit(ScreenPtr pScreen, int argc, char **argv)
|
||||||
|
{
|
||||||
|
vfbScreenInfoPtr pvfb = &vfbScreens[pScreen->myNum];
|
||||||
|
@@ -885,6 +1045,9 @@
|
||||||
|
if (!ret)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
+ if (!vfbRandRInit(pScreen))
|
||||||
|
+ return FALSE;
|
||||||
|
+
|
||||||
|
pScreen->InstallColormap = vfbInstallColormap;
|
||||||
|
pScreen->UninstallColormap = vfbUninstallColormap;
|
||||||
|
pScreen->ListInstalledColormaps = vfbListInstalledColormaps;
|
@ -1,3 +1,9 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Jun 6 15:21:18 UTC 2013 - msrb@suse.com
|
||||||
|
|
||||||
|
- u_xserver_xvfb-randr.patch
|
||||||
|
* Add randr support to Xvfb (bnc#823410)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Sat May 11 09:32:10 UTC 2013 - schwab@suse.de
|
Sat May 11 09:32:10 UTC 2013 - schwab@suse.de
|
||||||
|
|
||||||
|
@ -181,6 +181,7 @@ Patch226: u_vgaHW-no-legacy.patch
|
|||||||
Patch227: u_init_framebuffer_base.patch
|
Patch227: u_init_framebuffer_base.patch
|
||||||
Patch228: u_aarch64-support.patch
|
Patch228: u_aarch64-support.patch
|
||||||
Patch229: u_disable-acpi-code.patch
|
Patch229: u_disable-acpi-code.patch
|
||||||
|
Patch230: u_xserver_xvfb-randr.patch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
This package contains the X.Org Server.
|
This package contains the X.Org Server.
|
||||||
@ -301,6 +302,7 @@ cp %{SOURCE96} .
|
|||||||
%patch227 -p1
|
%patch227 -p1
|
||||||
%patch228 -p1
|
%patch228 -p1
|
||||||
%patch229 -p1
|
%patch229 -p1
|
||||||
|
%patch230 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
autoreconf -fi
|
autoreconf -fi
|
||||||
|
Loading…
Reference in New Issue
Block a user