Commit a2906b3
committed
Survive monitors being replaced, and report a primary one on Wayland
Display kept a bare GdkMonitor pointer. A GdkMonitor belongs to its GdkDisplay
and is dropped and recreated on hotplug and whenever the compositor powers the
outputs off and on, which left cached Display objects pointing at freed memory:
GDK_IS_MONITOR assertions then fired on every getter (hundreds in a single run
after the screen had blanked).
Clear the pointer through a weak pointer so the getters fall back to their
defaults, and make IsPrimary() use the first monitor when the display has no
primary one, as it never does on Wayland.1 parent 3f24428 commit a2906b3
1 file changed
Lines changed: 25 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
13 | 31 | | |
14 | 32 | | |
15 | 33 | | |
16 | 34 | | |
17 | 35 | | |
18 | 36 | | |
19 | | - | |
20 | | - | |
21 | | - | |
| 37 | + | |
22 | 38 | | |
23 | 39 | | |
24 | 40 | | |
| |||
75 | 91 | | |
76 | 92 | | |
77 | 93 | | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
78 | 99 | | |
79 | 100 | | |
80 | 101 | | |
| |||
0 commit comments