xserver: Branch 'server-21.1-branch'

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jan 3 19:42:24 UTC 2024


 randr/rrmonitor.c |   22 ----------------------
 1 file changed, 22 deletions(-)

New commits:
commit c338d19f743ca5872ff74d6f2ce5d37d3b7f4a2a
Author: Michael Wyraz <mw at brick4u.de>
Date:   Fri Oct 14 15:07:27 2022 +0200

    Removing the code that deletes an existing monitor in RRMonitorAdd
    
    In commit 7e1f86d4 monitor support was added to randr. At this time it seemed to be reasonable not to have
    more than one (virtual) monitor on a particular physical display. The code was never changed since.
    
    Nowadays, extremely large displays exists (4k displays, ultra-wide displays). In some use cases it makes sense to
    split these large physical displays into multiple virtual monitors. An example are ultra-wide screens that can be
    split into 2 monitors. The change in this commit makes this work.
    
    Besides that, removing a monitor in a function that is called "RRMonitorAdd" is bad practice and causes
    unexpected behaviour.

diff --git a/randr/rrmonitor.c b/randr/rrmonitor.c
index e62bd484d..ec9cc3ef4 100644
--- a/randr/rrmonitor.c
+++ b/randr/rrmonitor.c
@@ -518,7 +518,6 @@ RRMonitorAdd(ClientPtr client, ScreenPtr screen, RRMonitorPtr monitor)
 
     for (m = 0; m < pScrPriv->numMonitors; m++) {
         RRMonitorPtr    existing = pScrPriv->monitors[m];
-        int             o, eo;
 
 	/* If 'name' matches an existing Monitor on the screen, the
          * existing one will be deleted as if RRDeleteMonitor were called.
@@ -528,27 +527,6 @@ RRMonitorAdd(ClientPtr client, ScreenPtr screen, RRMonitorPtr monitor)
             continue;
         }
 
-        /* For each output in 'info.outputs', each one is removed from all
-         * pre-existing Monitors. If removing the output causes the list
-         * of outputs for that Monitor to become empty, then that
-         * Monitor will be deleted as if RRDeleteMonitor were called.
-         */
-
-        for (eo = 0; eo < existing->numOutputs; eo++) {
-            for (o = 0; o < monitor->numOutputs; o++) {
-                if (monitor->outputs[o] == existing->outputs[eo]) {
-                    memmove(existing->outputs + eo, existing->outputs + eo + 1,
-                            (existing->numOutputs - (eo + 1)) * sizeof (RROutput));
-                    --existing->numOutputs;
-                    --eo;
-                    break;
-                }
-            }
-            if (existing->numOutputs == 0) {
-                (void) RRMonitorDelete(client, screen, existing->name);
-                break;
-            }
-        }
         if (monitor->primary)
             existing->primary = FALSE;
     }


More information about the xorg-commit mailing list