efa2d86
From 62e8b2ff7471f1a48b8bac9f41cceecea4931c03 Mon Sep 17 00:00:00 2001
3ae2631
From: Hans de Goede <hdegoede@redhat.com>
3ae2631
Date: Mon, 8 Jul 2019 14:00:27 +0200
efa2d86
Subject: [PATCH xserver 09/24] xwayland: Add xwlRRModeToDisplayMode() helper
3ae2631
 function
3ae2631
MIME-Version: 1.0
3ae2631
Content-Type: text/plain; charset=UTF-8
3ae2631
Content-Transfer-Encoding: 8bit
3ae2631
3ae2631
This is a preparation patch for adding emulated mode/resolution change
3ae2631
support to Xwayland's XF86 vidmode extension emulation, using the
3ae2631
Wayland viewport extension.
3ae2631
3ae2631
Reviewed-by: Olivier Fourdan <ofourdan@redhat.com>
3ae2631
Acked-by: Michel Dänzer <mdaenzer@redhat.com>
3ae2631
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
efa2d86
(cherry picked from commit 43c80078126f6f33c6ab7d3cf4668733bde03366)
3ae2631
---
3ae2631
 hw/xwayland/xwayland-vidmode.c | 51 +++++++++++++++++++---------------
3ae2631
 1 file changed, 28 insertions(+), 23 deletions(-)
3ae2631
3ae2631
diff --git a/hw/xwayland/xwayland-vidmode.c b/hw/xwayland/xwayland-vidmode.c
3ae2631
index 0bcd11401..a59c9f6a9 100644
3ae2631
--- a/hw/xwayland/xwayland-vidmode.c
3ae2631
+++ b/hw/xwayland/xwayland-vidmode.c
3ae2631
@@ -78,13 +78,37 @@ mode_refresh(const xRRModeInfo *mode_info)
3ae2631
     return rate;
3ae2631
 }
3ae2631
 
3ae2631
+static void
3ae2631
+xwlRRModeToDisplayMode(RRModePtr rrmode, DisplayModePtr mode)
3ae2631
+{
3ae2631
+    const xRRModeInfo *mode_info = &rrmode->mode;
3ae2631
+
3ae2631
+    mode->next = mode;
3ae2631
+    mode->prev = mode;
3ae2631
+    mode->name = "";
3ae2631
+    mode->VScan = 1;
3ae2631
+    mode->Private = NULL;
3ae2631
+    mode->HDisplay = mode_info->width;
3ae2631
+    mode->HSyncStart = mode_info->hSyncStart;
3ae2631
+    mode->HSyncEnd = mode_info->hSyncEnd;
3ae2631
+    mode->HTotal = mode_info->hTotal;
3ae2631
+    mode->HSkew = mode_info->hSkew;
3ae2631
+    mode->VDisplay = mode_info->height;
3ae2631
+    mode->VSyncStart = mode_info->vSyncStart;
3ae2631
+    mode->VSyncEnd = mode_info->vSyncEnd;
3ae2631
+    mode->VTotal = mode_info->vTotal;
3ae2631
+    mode->Flags = mode_info->modeFlags;
3ae2631
+    mode->Clock = mode_info->dotClock / 1000.0;
3ae2631
+    mode->VRefresh = mode_refresh(mode_info); /* Or RRVerticalRefresh() */
3ae2631
+    mode->HSync = mode_hsync(mode_info);
3ae2631
+}
3ae2631
+
3ae2631
 static Bool
3ae2631
 xwlVidModeGetCurrentModeline(ScreenPtr pScreen, DisplayModePtr *mode, int *dotClock)
3ae2631
 {
3ae2631
     DisplayModePtr pMod;
3ae2631
     RROutputPtr output;
3ae2631
     RRCrtcPtr crtc;
3ae2631
-    xRRModeInfo rrmode;
3ae2631
 
3ae2631
     pMod = dixLookupPrivate(&pScreen->devPrivates, xwlVidModePrivateKey);
3ae2631
     if (pMod == NULL)
3ae2631
@@ -98,30 +122,11 @@ xwlVidModeGetCurrentModeline(ScreenPtr pScreen, DisplayModePtr *mode, int *dotCl
3ae2631
     if (crtc == NULL)
3ae2631
         return FALSE;
3ae2631
 
3ae2631
-    rrmode = crtc->mode->mode;
3ae2631
-
3ae2631
-    pMod->next = pMod;
3ae2631
-    pMod->prev = pMod;
3ae2631
-    pMod->name = "";
3ae2631
-    pMod->VScan = 1;
3ae2631
-    pMod->Private = NULL;
3ae2631
-    pMod->HDisplay = rrmode.width;
3ae2631
-    pMod->HSyncStart = rrmode.hSyncStart;
3ae2631
-    pMod->HSyncEnd = rrmode.hSyncEnd;
3ae2631
-    pMod->HTotal = rrmode.hTotal;
3ae2631
-    pMod->HSkew = rrmode.hSkew;
3ae2631
-    pMod->VDisplay = rrmode.height;
3ae2631
-    pMod->VSyncStart = rrmode.vSyncStart;
3ae2631
-    pMod->VSyncEnd = rrmode.vSyncEnd;
3ae2631
-    pMod->VTotal = rrmode.vTotal;
3ae2631
-    pMod->Flags = rrmode.modeFlags;
3ae2631
-    pMod->Clock = rrmode.dotClock / 1000.0;
3ae2631
-    pMod->VRefresh = mode_refresh(&rrmode); /* Or RRVerticalRefresh() */
3ae2631
-    pMod->HSync = mode_hsync(&rrmode);
3ae2631
-    *mode = pMod;
3ae2631
+    xwlRRModeToDisplayMode(crtc->mode, pMod);
3ae2631
 
3ae2631
+    *mode = pMod;
3ae2631
     if (dotClock != NULL)
3ae2631
-        *dotClock = rrmode.dotClock / 1000.0;
3ae2631
+        *dotClock = pMod->Clock;
3ae2631
 
3ae2631
     return TRUE;
3ae2631
 }
3ae2631
-- 
efa2d86
2.25.2
3ae2631