[multimonitor] nested server surface positioning incorrect
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mir |
Fix Released
|
High
|
Alan Griffiths | ||
Unity System Compositor |
Confirmed
|
Undecided
|
Unassigned | ||
mir (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
Flo and Mir 0.17.
For multimonitor, it appears USC often positions the 2 nested server surfaces on the same screen, as if noth surfaces are positioned at (0,0) in the virtual desktop space - and not side-by-side. This screenshot may not be the clearest:
https:/
but I got it through moving the egltriangle surface to the right, and it appeared on the left!
Steps to repro:
1. SSH into device and do: sudo stop lightdm
2. You'll want your backllight back, mirbacklight didn't work for me, so I called this as root:
echo 255 > /sys/devices/
3. Run
sudo unity-system-
sudo chmod 777 /tmp/mir_socket
4. Start nested server
mir_demo_server --host /tmp/mir_socket --display-config sidebyside --launch-client /usr/bin/
You should see the spinny triangle.
5. Now plug in the slimport cable. The display will flicker while the external display is being incorporated.
6. Use 3 fingers, move the triangle surface to the right.
Expected result:
It should appear on the external display
Actual result:
It pops in on the left of the internal display. See screenshot above.
Related branches
- PS Jenkins bot (community): Needs Fixing (continuous-integration)
- Alexandros Frantzis (community): Approve
-
Diff: 211 lines (+65/-14)7 files modifiedinclude/server/mir/shell/display_layout.h (+4/-2)
include/server/mir/shell/system_compositor_window_manager.h (+9/-0)
src/server/shell/CMakeLists.txt (+2/-0)
src/server/shell/graphics_display_layout.cpp (+2/-6)
src/server/shell/graphics_display_layout.h (+4/-4)
src/server/shell/system_compositor_window_manager.cpp (+43/-1)
tests/acceptance-tests/test_system_compositor_window_manager.cpp (+1/-1)
- PS Jenkins bot (community): Needs Fixing (continuous-integration)
- Kevin DuBois (community): Approve
- Alexandros Frantzis (community): Approve
- Alberto Aguirre (community): Approve
-
Diff: 199 lines (+28/-18)7 files modifiedsrc/platforms/android/server/display.cpp (+1/-1)
src/platforms/android/server/display_configuration.cpp (+1/-1)
src/platforms/android/server/display_name.h (+11/-1)
src/platforms/android/server/fb_device.cpp (+1/-1)
src/platforms/android/server/hwc_blanking_control.cpp (+1/-1)
src/platforms/android/server/real_hwc_wrapper.cpp (+12/-12)
tests/include/mir/test/doubles/stub_display_builder.h (+1/-1)
tags: | added: multimonitor |
Changed in mir: | |
milestone: | none → 0.18.0 |
tags: | added: nested |
Changed in mir: | |
status: | In Progress → Fix Committed |
Changed in mir: | |
status: | Fix Committed → Fix Released |
Changed in unity-system-compositor: | |
status: | New → Confirmed |
Replugging screen positioning doesn't reflect the chosen display-config. (USC defaults to --display-config sidebyside)
Can reproduce in Mir:
$ sudo bin/mir_demo_server --display-config sidebyside --vt 1 --arw-file
And after a replug the nested mir reports:
[1445009243.254725] mirserver: New display configuration:
[1445009243.254824] mirserver: 0.30: LVDS 13.9" 310x170mm
[1445009243.254874] mirserver: Current mode 1600x900 59.97Hz
[1445009243.254900] mirserver: Preferred mode 1600x900 59.97Hz
[1445009243.254924] mirserver: Logical position +0+0
[1445009243.254951] mirserver: 0.36: unused VGA
[1445009243.254979] mirserver: 0.39: unused HDMI-A
[1445009243.255014] mirserver: 0.44: DisplayPort 19.1" 410x260mm
[1445009243.255040] mirserver: Current mode 1440x900 59.88Hz
[1445009243.255065] mirserver: Preferred mode 1440x900 59.88Hz
[1445009243.255087] mirserver: Logical position +0+0
Surface occluded