Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package xorg-x11-server for openSUSE:Factory 
checked in at 2021-07-22 22:43:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xorg-x11-server (Old)
 and      /work/SRC/openSUSE:Factory/.xorg-x11-server.new.1899 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "xorg-x11-server"

Thu Jul 22 22:43:07 2021 rev:395 rq:907753 version:1.20.12

Changes:
--------
--- /work/SRC/openSUSE:Factory/xorg-x11-server/xorg-x11-server.changes  
2021-07-16 22:12:48.410802786 +0200
+++ 
/work/SRC/openSUSE:Factory/.xorg-x11-server.new.1899/xorg-x11-server.changes    
    2021-07-22 22:43:45.867168212 +0200
@@ -1,0 +2,13 @@
+Thu Jul 22 12:33:48 UTC 2021 - Stefan Dirsch <sndir...@suse.com>
+
+- U_modesetting-unflip-not-possible-when-glamor-is-not-s.patch
+  * this should fixes crashes of xfce when running under qemu
+    (boo#1188559) 
+
+-------------------------------------------------------------------
+Thu Jul 22 09:30:11 UTC 2021 - Dirk M??ller <dmuel...@suse.com>
+
+- add U_present-get_crtc-should-not-return-crtc-when-its-scr.patch 
(bsc#1188559)
+  https://gitlab.freedesktop.org/xorg/xserver/-/issues/1195
+
+-------------------------------------------------------------------

New:
----
  U_modesetting-unflip-not-possible-when-glamor-is-not-s.patch
  U_present-get_crtc-should-not-return-crtc-when-its-scr.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ xorg-x11-server.spec ++++++
--- /var/tmp/diff_new_pack.po37Mo/_old  2021-07-22 22:43:46.675167158 +0200
+++ /var/tmp/diff_new_pack.po37Mo/_new  2021-07-22 22:43:46.675167158 +0200
@@ -252,6 +252,8 @@
 Patch1900:      u_no-lto-for-tests.patch
 
 Patch1910:      u_modesetting-Fix-dirty-updates-for-sw-rotation.patch
+Patch1911:      U_present-get_crtc-should-not-return-crtc-when-its-scr.patch
+Patch1912:      U_modesetting-unflip-not-possible-when-glamor-is-not-s.patch
 
 %description
 This package contains the X.Org Server.
@@ -403,6 +405,8 @@
 %patch1801 -p1
 %patch1900 -p1
 %patch1910 -p1
+%patch1911 -p1
+%patch1912 -p1
 
 %build
 %global _lto_cflags %{?_lto_cflags} -ffat-lto-objects

++++++ U_modesetting-unflip-not-possible-when-glamor-is-not-s.patch ++++++
>From 3793e12407b6b1511c8655a2665ec5ce41bc820d Mon Sep 17 00:00:00 2001
From: Stefan Dirsch <sndir...@suse.de>
Date: Thu, 22 Jul 2021 14:31:35 +0200
Subject: [PATCH] modesetting: unflip not possible when glamor is not set

This is fixing crashes of xfce when running under qemu
---
 hw/xfree86/drivers/modesetting/present.c | 3 +++
 1 file changed, 3 insertions(+)

Index: xorg-server-1.20.12/hw/xfree86/drivers/modesetting/present.c
===================================================================
--- xorg-server-1.20.12.orig/hw/xfree86/drivers/modesetting/present.c
+++ xorg-server-1.20.12/hw/xfree86/drivers/modesetting/present.c
@@ -257,6 +257,9 @@ ms_present_check_unflip(RRCrtcPtr crtc,
         pixmap->devKind != drmmode_bo_get_pitch(&ms->drmmode.front_bo))
         return FALSE;
 
+    if (!ms->drmmode.glamor)
+        return FALSE;
+
 #ifdef GBM_BO_WITH_MODIFIERS
     /* Check if buffer format/modifier is supported by all active CRTCs */
     gbm = glamor_gbm_bo_from_pixmap(screen, pixmap);
++++++ U_present-get_crtc-should-not-return-crtc-when-its-scr.patch ++++++
>From 857f4de8a8fc14a0bce566baf07b0eedc1b6b5b5 Mon Sep 17 00:00:00 2001
From: Lukasz Spintzyk <lukasz.spint...@synaptics.com>
Date: Mon, 19 Jul 2021 08:17:09 +0200
Subject: [PATCH xserver] present: get_crtc should not return crtc when its
 screen does not have present extension

Since crtc can belong to secondary output that may not have present
extension enabled we should fallback to first enabled crtc or fake crtc.

Fix for issue xorg/xserver#1195
---
 present/present.c | 11 ++++++++++-
 randr/randr.c     | 27 +++++++++++++++++++++++++++
 randr/randrstr.h  |  2 ++
 3 files changed, 39 insertions(+), 1 deletion(-)

diff --git a/present/present.c b/present/present.c
index 3eddb7434..66411212b 100644
--- a/present/present.c
+++ b/present/present.c
@@ -59,11 +59,20 @@ present_get_crtc(WindowPtr window)
 {
     ScreenPtr                   screen = window->drawable.pScreen;
     present_screen_priv_ptr     screen_priv = present_screen_priv(screen);
+    RRCrtcPtr                   crtc = NULL;
+    RROutputPtr                 firstOutput = NULL;
 
     if (!screen_priv)
         return NULL;
 
-    return screen_priv->get_crtc(screen_priv, window);
+    crtc = screen_priv->get_crtc(screen_priv, window);
+    if (crtc && !present_screen_priv(crtc->pScreen)) {
+        crtc = RRFirstEnabledCrtc(screen);
+    }
+    if (crtc && !present_screen_priv(crtc->pScreen)) {
+        crtc = NULL;
+    }
+    return crtc;
 }
 
 /*
diff --git a/randr/randr.c b/randr/randr.c
index 5db8b5ced..afc867ea9 100644
--- a/randr/randr.c
+++ b/randr/randr.c
@@ -693,6 +693,33 @@ RRFirstOutput(ScreenPtr pScreen)
     return NULL;
 }
 
+RRCrtcPtr
+RRFirstEnabledCrtc(ScreenPtr pScreen)
+{
+    rrScrPriv(pScreen);
+    RROutputPtr output;
+    int i, j;
+
+    if (!pScrPriv)
+        return NULL;
+
+    if (pScrPriv->primaryOutput && pScrPriv->primaryOutput->crtc &&
+        pScrPriv->primaryOutput->pScreen == pScreen)
+        return pScrPriv->primaryOutput->crtc;
+
+    for (i = 0; i < pScrPriv->numCrtcs; i++) {
+        RRCrtcPtr crtc = pScrPriv->crtcs[i];
+
+        for (j = 0; j < pScrPriv->numOutputs; j++) {
+            output = pScrPriv->outputs[j];
+            if (output->crtc == crtc && crtc->mode)
+                return crtc;
+        }
+    }
+    return NULL;
+}
+
+
 CARD16
 RRVerticalRefresh(xRRModeInfo * mode)
 {
diff --git a/randr/randrstr.h b/randr/randrstr.h
index 0b95d6e25..28ba4ea91 100644
--- a/randr/randrstr.h
+++ b/randr/randrstr.h
@@ -593,6 +593,8 @@ extern _X_EXPORT Bool RRScreenInit(ScreenPtr pScreen);
 
 extern _X_EXPORT RROutputPtr RRFirstOutput(ScreenPtr pScreen);
 
+extern _X_EXPORT RRCrtcPtr RRFirstEnabledCrtc(ScreenPtr pScreen);
+
 extern _X_EXPORT Bool RROutputSetNonDesktop(RROutputPtr output, Bool 
non_desktop);
 
 extern _X_EXPORT CARD16
-- 
2.30.2

Reply via email to