Skip to content

Commit 0decde5

Browse files
Fix crash and display arrangement when pluging new monitor (#420)
* Fix crash and display arrangement when pluging new monitor * Revert changes made commited by mistake
1 parent aec7f0f commit 0decde5

1 file changed

Lines changed: 6 additions & 2 deletions

File tree

src/Objects/MonitorManager.vala

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,10 @@ public class Display.MonitorManager : GLib.Object {
8383
critical (e.message);
8484
}
8585

86+
// Clear all monitors and virtual monitors before re-adding them if needed
87+
monitors.clear ();
88+
virtual_monitors.clear ();
89+
8690
//TODO: make use of the "global-scale-required" property to differenciate between X and Wayland
8791
var supports_mirroring_variant = properties.lookup ("supports-mirroring");
8892
if (supports_mirroring_variant != null) {
@@ -188,7 +192,6 @@ public class Display.MonitorManager : GLib.Object {
188192
var virtual_monitor = get_virtual_monitor_by_id (monitors_id);
189193
if (virtual_monitor == null) {
190194
virtual_monitor = new VirtualMonitor ();
191-
add_virtual_monitor (virtual_monitor);
192195
}
193196

194197
foreach (var mutter_info in mutter_logical_monitor.monitors) {
@@ -214,6 +217,7 @@ public class Display.MonitorManager : GLib.Object {
214217
virtual_monitor.scale = mutter_logical_monitor.scale;
215218
virtual_monitor.transform = mutter_logical_monitor.transform;
216219
virtual_monitor.primary = mutter_logical_monitor.primary;
220+
add_virtual_monitor (virtual_monitor);
217221
}
218222

219223
// Look for any monitors that aren't part of a virtual monitor (hence disabled)
@@ -229,11 +233,11 @@ public class Display.MonitorManager : GLib.Object {
229233

230234
if (!found) {
231235
var virtual_monitor = new VirtualMonitor ();
232-
add_virtual_monitor (virtual_monitor);
233236
virtual_monitor.is_active = false;
234237
virtual_monitor.primary = false;
235238
virtual_monitor.monitors.add (monitor);
236239
virtual_monitor.scale = virtual_monitors[0].scale;
240+
add_virtual_monitor (virtual_monitor);
237241
}
238242
}
239243
}

0 commit comments

Comments
 (0)