diff options
author | Michael Wyraz <mw@brick4u.de> | 2022-10-14 15:07:27 +0200 |
---|---|---|
committer | Michael Wyraz <mw@brick4u.de> | 2024-01-03 08:42:34 +0100 |
commit | c338d19f743ca5872ff74d6f2ce5d37d3b7f4a2a (patch) | |
tree | 740a01f35abaa9764be42b3bf19949f5dddbdeb6 | |
parent | 15e2409776014b41c77f7da7aeb9520613994d27 (diff) |
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.
-rw-r--r-- | randr/rrmonitor.c | 22 |
1 files changed, 0 insertions, 22 deletions
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; } |