Hello community, here is the log from the commit of package xorg-x11-server for openSUSE:Factory checked in at 2013-06-09 17:06:49 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/xorg-x11-server (Old) and /work/SRC/openSUSE:Factory/.xorg-x11-server.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xorg-x11-server" Changes: -------- --- /work/SRC/openSUSE:Factory/xorg-x11-server/xorg-x11-server.changes 2013-05-27 10:13:12.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.xorg-x11-server.new/xorg-x11-server.changes 2013-06-09 17:06:50.000000000 +0200 @@ -1,0 +2,6 @@ +Thu Jun 6 15:21:18 UTC 2013 - m...@suse.com + +- u_xserver_xvfb-randr.patch + * Add randr support to Xvfb (bnc#823410) + +------------------------------------------------------------------- New: ---- u_xserver_xvfb-randr.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xorg-x11-server.spec ++++++ --- /var/tmp/diff_new_pack.xmEVTS/_old 2013-06-09 17:06:51.000000000 +0200 +++ /var/tmp/diff_new_pack.xmEVTS/_new 2013-06-09 17:06:51.000000000 +0200 @@ -181,6 +181,7 @@ Patch227: u_init_framebuffer_base.patch Patch228: u_aarch64-support.patch Patch229: u_disable-acpi-code.patch +Patch230: u_xserver_xvfb-randr.patch %description This package contains the X.Org Server. @@ -301,6 +302,7 @@ %patch227 -p1 %patch228 -p1 %patch229 -p1 +%patch230 -p1 %build autoreconf -fi ++++++ u_xserver_xvfb-randr.patch ++++++ Author: Lambros Lambrou <lambroslamb...@google.com> Subject: xvfb: add randr support Patch-Mainline: To be upstreamed References: bnc#823410 fdo#26391 Signed-off-by: Michal Srb <m...@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; -- To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org For additional commands, e-mail: opensuse-commit+h...@opensuse.org