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

Reply via email to