Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(23)

Issue 2780623002: exo: Fix multi-display hardware cursor (Closed)

Created:
3 years, 9 months ago by Dominik Laskowski
Modified:
3 years, 6 months ago
Reviewers:
David Tseng, oshima, sky, reveman
CC:
chromium-reviews, kalyank, sadrul, yoshiki
Target Ref:
refs/heads/master
Project:
chromium
Visibility:
Public.

Description

exo: Fix multi-display hardware cursor This CL fixes crashes in extended desktop mode caused by incorrect parenting of the cursor surface, as well as cases where the cursor was captured with an incorrect transform or hotspot: 1) The mouse enters a display with a different DSF or UI scale. 2) The internal display is not the primary display. 3) The display is rotated. It also adds a TODO for an accessibility regression. BUG=631136 BUG=642894 TEST=caroline: Cursor parenting and scaling is correct for each display. TEST=caroline: Cursor on rotated displays has correct orientation. Review-Url: https://codereview.chromium.org/2780623002 Cr-Commit-Position: refs/heads/master@{#476353} Committed: https://chromium.googlesource.com/chromium/src/+/ba20af04ad131e2fc7b8fd4142cffd7461057d5b

Patch Set 1 #

Patch Set 2 : Rebase #

Patch Set 3 : Split #

Patch Set 4 : Rebase and address nit #

Patch Set 5 : Rebase properly #

Total comments: 24

Patch Set 6 : Rebase #

Patch Set 7 : Address nits #

Patch Set 8 : Remove unrelated change #

Patch Set 9 : Split #

Patch Set 10 : Rebase #

Patch Set 11 : Remove capture on mouse enter #

Total comments: 9

Patch Set 12 : Simplify GetContainer #

Patch Set 13 : Rebase #

Patch Set 14 : Rebase #

Patch Set 15 : Rebase #

Patch Set 16 : Transform cursor using Skia #

Patch Set 17 : Rebase #

Patch Set 18 : Fix accessibility test #

Total comments: 20

Patch Set 19 : Rebase #

Patch Set 20 : Address comments #

Total comments: 24

Patch Set 21 : Rebase #

Patch Set 22 : Refactor #

Patch Set 23 : Fix accessibility test #

Total comments: 8

Patch Set 24 : Refactor some more #

Patch Set 25 : Fix style error #

Unified diffs Side-by-side diffs Delta from patch set Stats (+158 lines, -95 lines) Patch
M chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge_unittest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 2 chunks +11 lines, -3 lines 0 comments Download
M components/exo/pointer.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 4 chunks +7 lines, -8 lines 0 comments Download
M components/exo/pointer.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 10 chunks +65 lines, -70 lines 0 comments Download
M components/exo/shell_surface.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 chunk +2 lines, -1 line 0 comments Download
M components/exo/wm_helper.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 4 chunks +6 lines, -2 lines 0 comments Download
M components/exo/wm_helper.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 chunk +5 lines, -0 lines 0 comments Download
M components/exo/wm_helper_ash.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 2 chunks +4 lines, -2 lines 0 comments Download
M components/exo/wm_helper_ash.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 3 chunks +15 lines, -4 lines 0 comments Download
M components/exo/wm_helper_mus.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 chunk +3 lines, -2 lines 0 comments Download
M components/exo/wm_helper_mus.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 3 chunks +12 lines, -3 lines 0 comments Download
M ui/aura/client/cursor_client.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 chunk +3 lines, -0 lines 0 comments Download
M ui/aura/client/cursor_client_observer.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 2 chunks +5 lines, -0 lines 0 comments Download
M ui/aura/test/test_cursor_client.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 chunk +1 line, -0 lines 0 comments Download
M ui/aura/test/test_cursor_client.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 2 chunks +6 lines, -0 lines 0 comments Download
M ui/wm/core/cursor_manager.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 3 chunks +5 lines, -0 lines 0 comments Download
M ui/wm/core/cursor_manager.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 1 chunk +8 lines, -0 lines 0 comments Download

Dependent Patchsets:

Messages

Total messages: 101 (66 generated)
Dominik Laskowski
PTAL. yoshiki: just an FYI about accessibility regression.
3 years, 9 months ago (2017-03-27 18:31:31 UTC) #8
reveman
Can the this be split into multiple smaller patches? The size of exo changes make ...
3 years, 9 months ago (2017-03-27 20:14:57 UTC) #11
Dominik Laskowski
On 2017/03/27 20:14:57, reveman wrote: > Can the this be split into multiple smaller patches? ...
3 years, 9 months ago (2017-03-27 21:54:06 UTC) #13
reveman
On 2017/03/27 at 21:54:06, domlaskowski wrote: > On 2017/03/27 20:14:57, reveman wrote: > > Can ...
3 years, 8 months ago (2017-03-28 07:50:46 UTC) #14
Dominik Laskowski
On 2017/03/28 07:50:46, reveman wrote: > On 2017/03/27 at 21:54:06, domlaskowski wrote: > > On ...
3 years, 8 months ago (2017-03-30 01:13:46 UTC) #15
reveman
There's still too much going on in this single CL. I posted some comments but ...
3 years, 8 months ago (2017-03-30 07:47:54 UTC) #16
Dominik Laskowski
UpdateCursorScale is insufficient when dragging across displays, because the display change is only detected once ...
3 years, 8 months ago (2017-04-05 17:59:25 UTC) #17
Dominik Laskowski
PTAL. Split out code related to cursor locking: https://codereview.chromium.org/2812663002/
3 years, 8 months ago (2017-04-10 18:19:23 UTC) #25
reveman
Just looking at the description of the CL, this seems wrong. The cursor should be ...
3 years, 8 months ago (2017-04-10 20:47:13 UTC) #28
Dominik Laskowski
On 2017/04/10 20:47:13, reveman wrote: > Just looking at the description of the CL, this ...
3 years, 8 months ago (2017-04-10 21:33:25 UTC) #32
reveman
why can't we keep the old structure of pointer code and just call UpdateCursorScale() if ...
3 years, 8 months ago (2017-04-10 21:47:13 UTC) #33
Dominik Laskowski
On 2017/04/10 21:47:13, reveman wrote: > why can't we keep the old structure of pointer ...
3 years, 8 months ago (2017-04-11 04:42:55 UTC) #36
reveman
https://codereview.chromium.org/2780623002/diff/200001/components/exo/pointer.cc File components/exo/pointer.cc (right): https://codereview.chromium.org/2780623002/diff/200001/components/exo/pointer.cc#newcode258 components/exo/pointer.cc:258: // Reparent the cursor to the root window where ...
3 years, 8 months ago (2017-04-11 19:25:13 UTC) #37
Dominik Laskowski
https://codereview.chromium.org/2780623002/diff/200001/components/exo/pointer.cc File components/exo/pointer.cc (right): https://codereview.chromium.org/2780623002/diff/200001/components/exo/pointer.cc#newcode258 components/exo/pointer.cc:258: // Reparent the cursor to the root window where ...
3 years, 8 months ago (2017-04-11 20:40:37 UTC) #38
reveman
https://codereview.chromium.org/2780623002/diff/200001/components/exo/pointer.cc File components/exo/pointer.cc (right): https://codereview.chromium.org/2780623002/diff/200001/components/exo/pointer.cc#newcode258 components/exo/pointer.cc:258: // Reparent the cursor to the root window where ...
3 years, 8 months ago (2017-04-11 22:25:34 UTC) #39
Dominik Laskowski
On 2017/04/11 22:25:34, reveman wrote: > Why would it break client side dragging? The compositors ...
3 years, 8 months ago (2017-04-11 22:51:56 UTC) #40
Dominik Laskowski
On 2017/04/11 22:51:56, Dominik Laskowski wrote: > On 2017/04/11 22:25:34, reveman wrote: > > Why ...
3 years, 8 months ago (2017-04-12 00:12:20 UTC) #41
reveman
On 2017/04/12 at 00:12:20, domlaskowski wrote: > On 2017/04/11 22:51:56, Dominik Laskowski wrote: > > ...
3 years, 8 months ago (2017-04-13 19:49:44 UTC) #42
Dominik Laskowski
On 2017/04/13 19:49:44, reveman wrote: > Shouldn't the client instead be using the configure event ...
3 years, 8 months ago (2017-04-26 14:11:14 UTC) #43
Dominik Laskowski
Ping? Updated CL description. Forgot to mention the crashes fixed with a workaround in M58: ...
3 years, 7 months ago (2017-04-28 21:08:54 UTC) #51
Dominik Laskowski
Ping? This is a dependency for the other cursor CLs, and the reparenting is unavoidable ...
3 years, 7 months ago (2017-05-10 20:03:31 UTC) #55
reveman
I'd like us to handle this in a way that makes it perfectly clear what ...
3 years, 7 months ago (2017-05-10 20:23:04 UTC) #56
Dominik Laskowski
PTAL. As discussed offline, the cursor is now captured on the highest-DPI display, and scaled ...
3 years, 7 months ago (2017-05-22 21:40:58 UTC) #60
reveman
https://codereview.chromium.org/2780623002/diff/340001/components/exo/pointer.cc File components/exo/pointer.cc (right): https://codereview.chromium.org/2780623002/diff/340001/components/exo/pointer.cc#newcode38 components/exo/pointer.cc:38: // TODO(oshima): Some accessibility features, including large cursors, disable ...
3 years, 7 months ago (2017-05-23 17:06:58 UTC) #67
Dominik Laskowski
https://codereview.chromium.org/2780623002/diff/340001/components/exo/pointer.cc File components/exo/pointer.cc (right): https://codereview.chromium.org/2780623002/diff/340001/components/exo/pointer.cc#newcode38 components/exo/pointer.cc:38: // TODO(oshima): Some accessibility features, including large cursors, disable ...
3 years, 7 months ago (2017-05-24 00:43:04 UTC) #70
reveman
https://codereview.chromium.org/2780623002/diff/340001/components/exo/pointer.cc File components/exo/pointer.cc (right): https://codereview.chromium.org/2780623002/diff/340001/components/exo/pointer.cc#newcode38 components/exo/pointer.cc:38: // TODO(oshima): Some accessibility features, including large cursors, disable ...
3 years, 7 months ago (2017-05-25 10:52:55 UTC) #73
Dominik Laskowski
reveman: PTAL. Refactored as discussed offline. oshima: PTAL at ash/. Should I add public members ...
3 years, 6 months ago (2017-05-31 02:06:27 UTC) #79
reveman
exo changes look great! a few comments and maybe still remove the wm_helper change unless ...
3 years, 6 months ago (2017-05-31 03:33:10 UTC) #82
Dominik Laskowski
oshima: Never mind. Reverted AshNativeCursorManager changes. https://codereview.chromium.org/2780623002/diff/380001/components/exo/wm_helper.h File components/exo/wm_helper.h (right): https://codereview.chromium.org/2780623002/diff/380001/components/exo/wm_helper.h#newcode105 components/exo/wm_helper.h:105: virtual aura::Window* GetContainer(int64_t ...
3 years, 6 months ago (2017-05-31 20:35:55 UTC) #89
reveman
Nice! LGTM
3 years, 6 months ago (2017-05-31 20:53:38 UTC) #90
Dominik Laskowski
Thanks! +sky for ui/ +dtseng for arc/accessibility/
3 years, 6 months ago (2017-05-31 21:29:09 UTC) #92
sky
LGTM
3 years, 6 months ago (2017-05-31 22:23:08 UTC) #93
David Tseng
lgtm
3 years, 6 months ago (2017-06-01 17:54:08 UTC) #96
commit-bot: I haz the power
CQ is trying da patch. Follow status at: https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2780623002/480001
3 years, 6 months ago (2017-06-01 18:06:11 UTC) #98
commit-bot: I haz the power
3 years, 6 months ago (2017-06-01 18:12:32 UTC) #101
Message was sent while issue was closed.
Committed patchset #25 (id:480001) as
https://chromium.googlesource.com/chromium/src/+/ba20af04ad131e2fc7b8fd4142cf...

Powered by Google App Engine
This is Rietveld 408576698