Visibility/occlusion culling can hide surfaces prematurely if only their decorations are visible
Bug #1299977 reported by
Daniel van Vugt
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mir |
Fix Released
|
Medium
|
Daniel van Vugt |
Bug Description
Visibility/
For example, Alt+drag a surface offscreen in demo_shell. You will see the shadow/titlebars pop in an out of existence depending on whether the client surface is visible.
This bug was kind of expected because we don't yet have explicit interfaces describing frame extents of a surface. But I already planned on it. Such logic is necessary for basic window management/
Related branches
lp:~vanvugt/mir/unocclude
- PS Jenkins bot (community): Approve (continuous-integration)
- Kevin DuBois (community): Abstain
- Robert Carr (community): Disapprove
- Andreas Pokorny (community): Needs Fixing
- Alberto Aguirre (community): Disapprove
- Mir development team: Pending requested
-
Diff: 512 lines (+6/-391)8 files modifiedsrc/server/compositor/CMakeLists.txt (+0/-1)
src/server/compositor/default_display_buffer_compositor.cpp (+0/-2)
src/server/compositor/occlusion.cpp (+0/-78)
src/server/compositor/occlusion.h (+0/-37)
tests/integration-tests/test_surface_first_frame_sync.cpp (+2/-2)
tests/unit-tests/compositor/CMakeLists.txt (+0/-1)
tests/unit-tests/compositor/test_default_display_buffer_compositor.cpp (+4/-68)
tests/unit-tests/compositor/test_occlusion.cpp (+0/-202)
lp:~vanvugt/mir/clarify-surface-size-pos
- Robert Carr (community): Approve
- Alexandros Frantzis (community): Approve
- Alberto Aguirre (community): Approve
- PS Jenkins bot (community): Approve (continuous-integration)
- Alan Griffiths: Approve
-
Diff: 343 lines (+85/-43)14 files modifiedinclude/server/mir/frontend/surface.h (+2/-1)
include/server/mir/input/surface.h (+3/-5)
include/server/mir/scene/surface.h (+9/-2)
include/test/mir_test_doubles/mock_frontend_surface.h (+1/-1)
include/test/mir_test_doubles/mock_input_surface.h (+4/-9)
src/server/frontend/session_mediator.cpp (+3/-2)
src/server/frontend/surface.cpp (+1/-1)
src/server/input/android/android_input_window_handle.cpp (+6/-7)
src/server/scene/basic_surface.cpp (+16/-1)
src/server/scene/basic_surface.h (+3/-1)
tests/unit-tests/frontend/test_session_mediator.cpp (+2/-2)
tests/unit-tests/input/android/test_android_input_target_enumerator.cpp (+2/-3)
tests/unit-tests/input/android/test_android_input_window_handle.cpp (+4/-6)
tests/unit-tests/scene/test_basic_surface.cpp (+29/-2)
lp:~kdub/mir/fix-1299977-take3
- Daniel van Vugt: Needs Fixing
- PS Jenkins bot (community): Approve (continuous-integration)
- Alexandros Frantzis (community): Approve
- Alan Griffiths: Approve
- Cemil Azizoglu (community): Approve
-
Diff: 818 lines (+461/-72)10 files modifiedexamples/CMakeLists.txt (+1/-1)
examples/demo-shell/CMakeLists.txt (+2/-0)
examples/demo-shell/demo_compositor.cpp (+96/-0)
examples/demo-shell/demo_compositor.h (+65/-0)
examples/demo-shell/demo_renderer.cpp (+10/-6)
examples/demo-shell/demo_renderer.h (+8/-2)
examples/demo-shell/demo_shell.cpp (+38/-19)
examples/demo-shell/occlusion.cpp (+110/-0)
examples/demo-shell/occlusion.h (+39/-0)
tests/unit-tests/compositor/test_occlusion.cpp (+92/-44)
Changed in mir: | |
milestone: | none → 0.1.9 |
status: | Triaged → In Progress |
Changed in mir: | |
milestone: | 0.1.9 → none |
milestone: | none → 0.1.10 |
Changed in mir: | |
status: | In Progress → Triaged |
milestone: | 0.2.0 → none |
assignee: | Daniel van Vugt (vanvugt) → nobody |
Changed in mir: | |
assignee: | nobody → Kevin DuBois (kdub) |
status: | Triaged → In Progress |
Changed in mir: | |
assignee: | nobody → Daniel van Vugt (vanvugt) |
status: | Confirmed → Triaged |
To post a comment you must log in.
my approach in lp:~kdub/mir/share-occlusion-with-examples and lp:~kdub/mir/fix-1299977 was disapproved, so switching from in-progress.