|
|
[M55] Generalize layer mirroring for phantom windows
Previously, the layers of a phantom window were recreated when the
surface changed in the corresponding layers of the original window.
The code also assumed that layers with surfaces are leaves in the
layer tree, but Exosphere surfaces are nested. Recursive layer
cloning would be inefficient for surfaces changing in each frame,
so this CL adds an alternative way to mirror layers. In addition,
the bounds of Exosphere surfaces relative to their parent window
are updated whenever the window moves, so this CL provides a way
to synchronize relative positions of layers in phantom windows.
In addition to implementing phantom windows for ARC apps, this CL
fixes three bugs related to mirroring:
1) Memory corruption due to the non-recursive layer cloning.
2) Dangling pointers due to observers sticking around.
3) Black Alt+Tab previews for ARC windows.
R=lhchavez@chromium.org
TBR=danakj@chromium.org, oshima@chromium.org, reveman@chromium.org, sadrul@chromium.org, sky@chromium.org
BUG= 642894
BUG= 649452
BUG= 653113
TEST=ARC apps that render continuously (e.g. games, video players)
can be dragged to external displays, and their content is
mirrored in phantom windows.
TEST=ARC apps are mirrored in Alt+Tab previews.
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel
Review-Url: https://codereview.chromium.org/2383263002
Cr-Commit-Position: refs/heads/master@{#427891}
(cherry picked from commit 4b33bfeda856f7ae20ffa43176e5bd529d5a100a)
Committed: https://chromium.googlesource.com/chromium/src/+/497b50fc19904a059de566474ff099519a4c881a
|
Unified diffs |
Side-by-side diffs |
Delta from patch set |
Stats (+417 lines, -413 lines) |
Patch |
 |
M |
ash/BUILD.gn
|
View
|
|
1 chunk |
+0 lines, -2 lines |
0 comments
|
Download
|
 |
M |
ash/aura/wm_window_aura.cc
|
View
|
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
 |
M |
ash/common/wm/window_cycle_list.cc
|
View
|
|
1 chunk |
+0 lines, -1 line |
0 comments
|
Download
|
 |
M |
ash/rotator/screen_rotation_animator.cc
|
View
|
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
 |
M |
ash/utility/screenshot_controller.cc
|
View
|
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
 |
M |
ash/wm/drag_window_controller.cc
|
View
|
|
5 chunks |
+2 lines, -19 lines |
0 comments
|
Download
|
 |
M |
ash/wm/window_mirror_view.h
|
View
|
|
4 chunks |
+6 lines, -14 lines |
0 comments
|
Download
|
 |
M |
ash/wm/window_mirror_view.cc
|
View
|
|
3 chunks |
+3 lines, -12 lines |
0 comments
|
Download
|
 |
M |
cc/layers/surface_layer.h
|
View
|
|
1 chunk |
+7 lines, -0 lines |
0 comments
|
Download
|
 |
M |
chrome/browser/ui/ash/multi_user/user_switch_animator_chromeos.cc
|
View
|
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
 |
M |
chrome/browser/ui/views/frame/contents_web_view.cc
|
View
|
|
1 chunk |
+1 line, -2 lines |
0 comments
|
Download
|
 |
M |
components/exo/surface.h
|
View
|
|
3 chunks |
+1 line, -6 lines |
0 comments
|
Download
|
 |
M |
components/exo/surface.cc
|
View
|
|
4 chunks |
+5 lines, -28 lines |
0 comments
|
Download
|
 |
M |
components/exo/surface_unittest.cc
|
View
|
|
2 chunks |
+2 lines, -2 lines |
0 comments
|
Download
|
 |
M |
content/browser/renderer_host/delegated_frame_host.h
|
View
|
|
3 chunks |
+0 lines, -5 lines |
0 comments
|
Download
|
 |
M |
content/browser/renderer_host/delegated_frame_host.cc
|
View
|
|
1 chunk |
+0 lines, -20 lines |
0 comments
|
Download
|
 |
M |
content/browser/renderer_host/render_widget_host_view_aura.h
|
View
|
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
 |
M |
content/browser/renderer_host/render_widget_host_view_aura.cc
|
View
|
|
1 chunk |
+0 lines, -1 line |
0 comments
|
Download
|
 |
M |
content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
|
View
|
|
2 chunks |
+13 lines, -7 lines |
0 comments
|
Download
|
 |
M |
ui/arc/notification/arc_custom_notification_view.cc
|
View
|
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
 |
M |
ui/aura/window.cc
|
View
|
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
 |
M |
ui/compositor/layer.h
|
View
|
|
5 chunks |
+19 lines, -1 line |
0 comments
|
Download
|
 |
M |
ui/compositor/layer.cc
|
View
|
|
16 chunks |
+118 lines, -15 lines |
0 comments
|
Download
|
 |
M |
ui/compositor/layer_observer.h
|
View
|
|
1 chunk |
+2 lines, -2 lines |
0 comments
|
Download
|
 |
M |
ui/compositor/layer_owner.h
|
View
|
|
2 chunks |
+3 lines, -3 lines |
0 comments
|
Download
|
 |
M |
ui/compositor/layer_owner.cc
|
View
|
|
3 chunks |
+10 lines, -27 lines |
0 comments
|
Download
|
 |
M |
ui/compositor/layer_owner_delegate.h
|
View
|
|
1 chunk |
+1 line, -2 lines |
0 comments
|
Download
|
 |
M |
ui/compositor/layer_owner_unittest.cc
|
View
|
|
5 chunks |
+10 lines, -108 lines |
0 comments
|
Download
|
 |
M |
ui/compositor/layer_tree_owner.h
|
View
|
|
2 chunks |
+3 lines, -1 line |
0 comments
|
Download
|
 |
M |
ui/compositor/layer_tree_owner.cc
|
View
|
|
1 chunk |
+2 lines, -1 line |
0 comments
|
Download
|
 |
M |
ui/compositor/layer_unittest.cc
|
View
|
|
2 chunks |
+160 lines, -0 lines |
0 comments
|
Download
|
 |
M |
ui/views/cocoa/bridged_native_widget.mm
|
View
|
|
2 chunks |
+2 lines, -1 line |
0 comments
|
Download
|
 |
M |
ui/views/view.cc
|
View
|
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
 |
M |
ui/views/view_unittest_aura.cc
|
View
|
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
 |
M |
ui/wm/core/window_animations.cc
|
View
|
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
 |
M |
ui/wm/core/window_util.h
|
View
|
|
2 chunks |
+7 lines, -18 lines |
0 comments
|
Download
|
 |
M |
ui/wm/core/window_util.cc
|
View
|
|
4 chunks |
+29 lines, -19 lines |
0 comments
|
Download
|
 |
M |
ui/wm/core/window_util_unittest.cc
|
View
|
|
3 chunks |
+1 line, -86 lines |
0 comments
|
Download
|
Total messages: 6 (2 generated)
|