Commit Graph

28 Commits

Author SHA1 Message Date
Arthur Hung
350896b596 Fix mouse pointer not getting enlarged
When show taps enabled, the presentation would be
PRESENTATION_SPOT for drawing the spots. That would
ignore loadPointerIcon when reload resources.

Always load default icon when reload resources.

Bug: 115395392
Test: Enable show taps and use mouse,
      enabled large mouse pointer manually.

Change-Id: I74f2bf33c9046e8eaba7d284ca16366da6e3d221
2019-02-26 16:43:53 +08:00
Arthur Hung
d25699a122 Support showTouches on multi-display (2/2)
Currently the PointerController would be associated with the top most
freeform or external display if enable desktop mode.
But for presenting spots when enable showTouches from develop options,
they should be shown on the corresponding display where user touched.

Also changed Vector to std::vector.

Test: atest inputflinger_tests
Test: Use device support multi-display and touch screen (like mojave).
      Enable showTaps from develop options and check if show tap spots.
Bug: 120815589

Change-Id: I0854fa97813aabf005dccb8ec6fbda10106126e9
2019-02-13 16:23:22 +08:00
Andrii Kulian
fd8666df52 Load correct resources for pointer icon on external screen
When mouse pointer changes displays, it should also reload the
icon from new resources. Otherwise, if the densities of the
previous and new displays are different, the size of the pointer
sprite will look too small or too large.

- Add getDisplayContext to get the corresponding Context by displayId.
- Cache system pointer icons per display, clear if display removed.
- Fix icon moved to default when not resetting out of task bound.

Bug: 113559891
Test: Enable mouse pointer on default display, move to other screen
Change-Id: Ic42d0ec32d9c979281e13c83b9e8b57134fd4f0d
2019-01-17 10:34:36 +08:00
Chih-hung Hsieh
7dc7d9507e Merge "Fix/suppress libs/* google-explicit-constructor warnings" am: a35900fd8e am: 0aab12591f
am: 3169d6895d

Change-Id: I14010d3e22cfa4a3e1a1e47a19eab3117fda0455
2019-01-11 10:35:47 -08:00
Chih-Hung Hsieh
0c29f39c8e Fix/suppress libs/* google-explicit-constructor warnings
* Add explicit to conversion constructors/operators

Bug: 28341362
Test: make with WITH_TIDY=1 DEFAULT_GLOBAL_TIDY_CHECKS=-*,google-explicit-constructor
Change-Id: I31d45e4c6ff9fa69801a14c341f2da66baf565a0
2019-01-10 19:52:57 +00:00
Arthur Hung
b9b320093c Support mouse pointer on external displays (2/2)
Limit mouse boundary to one display viewport.
Currently if desktop mode is enable, selects the topmost freeform display,
or find first external display if there is no freeform display.
Return the default display if desktop mode is not enable.

- Add getPointerDisplayId to find the preferred display.
- Limit update viewports from InputReader.
- obtainPointerController would also find the associated display id.
- Reload cursor resources if resolution or display changed.

Bug: 113559891
Test: atest inputfliger_tests
Test: ActivityView test app
Change-Id: Iffd01e27f5010ccfb0481a028658b7290ca6316d
2019-01-09 20:52:42 +08:00
Andrii Kulian
d44026fd47 Revert "Support mouse pointer on external displays (2/3)"
This reverts commit 84cdf9cc3b.

Reason for revert: b/120864177

Test: Presubmit
Bug: b/120864177

Change-Id: Ia65e704169527b54cf1d1d470445f96a65fa0294
2018-12-17 13:49:37 -08:00
Andrii Kulian
84cdf9cc3b Support mouse pointer on external displays (2/3)
Limit mouse boundary to one display viewport.
Currently if desktop mode is enable, selects the topmost freeform display,
or find first external display if there is no freeform display.
Return the default display if desktop mode is not enable.

- Add getPointerDisplayId to find the preferred display.
- Limit update viewports from InputReader. Also implements updatePointerDisplay
  to find and associate with the specified display viewport.
- Reload cursor resources if resolution or display changed.

Bug: 113559891
Test: atest inputfliger_tests
Test: ActivityView test app
Change-Id: Ief3410a517be457dfe6f1180342bb1dc88833635
2018-12-10 21:01:05 +08:00
Siarhei Vishniakou
bfd4914b60 Remove obsolete pragma statements
These pragma statements used to guard against compiler warnings in Sk..
code. They are no longer necessary.

Test: make
Change-Id: I9f7f88276edb546ba08c7344c142eb487a04f978
2018-02-23 15:48:10 -08:00
Ivan Lozano
7ee0dba095 Fix doFadingAnimationLocked in sanitized builds.
The loop as constructed causes i to overflow twice when i = 0 on integer
overflow sanitized builds.

 runtime error: unsigned integer overflow: 0 - 1 cannot be represented
 in type 'size_t' (aka 'unsigned long')

 runtime error: unsigned integer overflow: 18446744073709551615 + 1
 cannot be represented in type 'size_t' (aka 'unsigned long')

This refactors the loop to avoid the overflows.

Bug: 30969751
Test: Compiles, device boots, enabled pointer location overlay.
Change-Id: I844bb3b84b1f536c50d06fb489fcc22590d4aa98
2017-12-19 08:17:31 -08:00
Mark Salyzyn
db15537e6e resolve merge conflicts of 082a1721b5 to master
Test: compile
Bug: 26552300
Bug: 31289077
Change-Id: I17f178f425975c1c0dbd48091d25b101956d505e
2017-01-11 08:30:17 -08:00
Mark Salyzyn
52eb4e01a4 Replace cutils/log.h and log/logger.h with log/log.h
Test: compile
Bug: 26552300
Bug: 31289077
Change-Id: I578b15b48f0fc2807a92abbc69a377c3d2191496
2017-01-09 14:31:34 -08:00
Mike Reed
c2f31df8b3 use SkBlendMode
skbug.com/5814

Test: compile only
Change-Id: Ibbaff43df1117b2ca77fd8f917f03d88cc476330
(cherry picked from commit 26edbcba8a2ed4cb300e7f87e679e3b73cec2772)
2016-11-02 11:36:48 -04:00
Vladislav Kaznacheev
bd46d09d84 Hold a weak reference to PointerController when handling vsync am: 33c5903e77 am: 8728a2fe53
am: 23bb30843c

Change-Id: Ifccc705f9b21fb8c24fd7fc83f99d9c58ac85b5c
2016-09-13 23:11:41 +00:00
Vladislav Kaznacheev
33c5903e77 Hold a weak reference to PointerController when handling vsync
Currently PointerController starts listening to display events
immediately (in its constructor) and never explicitly removes
the callback. The reference dangling from the looper
prevents the PointerController instance from being deleted
when all the clients have released their references.

As a result, when USB or BT mouse is disconnected,
the mouse stays frozen on screen and only goes away
after a 15 sec inactivity timeout.

This change introduces an intermediary LooperCallback
which holds only a weak reference to PointerController.
The pointer now disappears immediately upon mouse
disconnect.

Bug: 30824220
Change-Id: I5f7208dbfa381b3e21f248cc0da402f307faa184
2016-09-09 10:03:31 -07:00
Michael Wright
93b5f434a4 Remove Pointer Capture API
The underlying implementation needs to be completely rethought. If a
process crashed while you were in pointer capture mode, you were
pretty much stuck in it. If the mouse happened to move outside of
your bounds right before you called the API, you'd never actually get
an event (whatever it was hovering over would). There's no easy way
for the system to tell you when you enter or exit this mode because
it doesn't actually track who the current request is from.

These are all solvable, but not in the N time frame. Maybe next time.

Bug: 26830970
Change-Id: I899649594c7ca8db5962fcdaa71c5b21d3aa42c3
2016-06-08 20:13:53 +00:00
Michael Wright
e051f6f1fd Rename PointerIcon and Pointer Capture APIs
This is a response to API council feedback.

Bug: 26830970
Change-Id: I1be541a53e3943d06640169671824f7daea15462
2016-06-04 02:20:21 +01:00
Michael Wright
778e3b91ac DO NOT MERGE Remove Pointer Capture API
The underlying implementation needs to be completely rethought. If a
process crashed while you were in pointer capture mode, you were
pretty much stuck in it. If the mouse happened to move outside of
your bounds right before you called the API, you'd never actually get
an event (whatever it was hovering over would). There's no easy way
for the system to tell you when you enter or exit this mode because
it doesn't actually track who the current request is from.

These are all solvable, but not in the N time frame. Maybe next time.

Bug: 26830970
Change-Id: I03efd63c499b86dc278491ca3284566c1965581f
2016-05-17 18:02:37 +01:00
Michael Wright
f9d9ce7705 DO NOT MERGE Rename PointerIcon and Pointer Capture APIs
This is a response to API council feedback.

Bug: 26830970
Change-Id: Ia2d284b5c1ab8365bedfdc37d129be4b8146036b
2016-05-17 18:02:32 +01:00
Jun Mukai
347e5d498f Introduce pointer capture API.
This depends on I4189eb4d93f50c2865b7a325727be5ceebcc71f8 of
frameworks/native.

Bug: 5452473
Change-Id: Ie21e521f3e5c581f976dc0feb5d84bfa48b046cd
2015-12-18 10:22:43 -08:00
Jun Mukai
d4eaef7f4c Make public pointer icon API with custom icons.
BUG: 25778347, 23804184
Change-Id: If138b97c750c912e9848412c27b65004899961eb
2015-12-14 19:45:10 -08:00
Jun Mukai
19a5601979 Introduce accessibility large pointer icons.
This patch does the following things:
- add new graphic assets of large icons for accessibility needs
  (imported from ChromeOS data)
- add the logic to choose the set of normal icons or accessibility icons
- make InputManagerService to observe the settings change, so that
  it can reload the new resources

This patch misses non-1x graphic though, because ChromeOS doesn't
have such data.

Bug: 25778857
Change-Id: Ia5f95d47f50b3f6eea555c3af8069bc6bae0b400
2015-11-30 14:42:53 -08:00
Jun Mukai
808196f139 Introduce animated pointer icon for STYLE_WAIT.
Change-Id: I893f8276e09351db6187c553f349008794b95690
2015-11-17 17:36:08 -08:00
Jun Mukai
c0c0ac37ab Bring DisplayEventReceiver to PointerController.
Now the fading animation of pointers is handled at vsync.

Change-Id: I10fe27d9d7a0d46c4e6504ca487e80bb56e2fd98
2015-10-30 10:24:55 -07:00
Jun Mukai
5ec7420ecd Use invisible icon for POINTER_ICON_STYLE_NULL.
Change-Id: I10d35bdc4da4817d769eb164e6f15e4618670a05
2015-10-21 13:03:01 -07:00
Jun Mukai
1db5397d88 Allow changing mouse pointer icon for the current context.
Right now, it only supports I-beam on EditText, but further
rules will come in the future.

The png files for the icons are from chromium.

Bug: 24180385
Change-Id: I8de4ec8a5412b4830c08aa232c5083841c5c751c
2015-10-15 01:47:29 -07:00
Andreas Gampe
6b83b76dd1 Frameworks/base: Wall Werror in libs/input
Enable -Wall -Werror in libs/input. Mask warnings from Skia.

Change-Id: I0deeffde07fcf3a09eadec2852e9bf5666b55ee8
2014-11-10 15:55:11 -08:00
Amith Yamasani
9158825f9c Move some system services to separate directories
Refactored the directory structure so that services can be optionally
excluded. This is step 1. Will be followed by another change that makes
it possible to remove services from the build.

Change-Id: Ideacedfd34b5e213217ad3ff4ebb21c4a8e73f85
2013-12-19 15:25:37 -08:00