| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
| |
As AInputEvent_toJava makes JNI calls, the caller must ensure there are
no pending JNI exceptions as it may result in undefined behaviour. This
needs to be explicitly documented.
Refer: https://developer.android.com/training/articles/perf-jni#exceptions
Bug: 324375527
Test: atest MotionEventTest KeyEventTest
Change-Id: If9f40ba1ee2cb091514fb3baae28f2ca7520727e
|
| |\ |
|
| | |
| |
| |
| |
| |
| |
| |
| | |
This is needed to create a host implementation of RenderThread.
Bug: 322360037
Test: build libandroid_runtime on host
Change-Id: I23f78155e0d2c511451e3e249537b83ca06f411a
|
| |/
|
|
|
|
| |
Bug: 210460522
Test: atest inputflinger_tests
Change-Id: I2ab660ed0a6888c23bc711fb8494385c22b3c404
|
| |\ |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This is needed for allowing apps to vote for HDR headroom restrictions
for SurfaceView and SurfaceControl
Bug: 323964760
Test: manually poking at test app
Test: SurfaceViewTests
Test: SurfaceControlTest
Test: ASurfaceControlTest
Change-Id: Ie886e67879525462d49fdedc535aea659d69321a
|
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
This CL adds an NDK API to obtain a copy of native AInputEvent as Java
InputEvent.
Test: atest MotionEventTest KeyEventTest
Bug: 298948992
Change-Id: If7b14867813f7b07bd628ebd6da7e3be4c3bb89e
|
| |\ \ |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This gets us closer to the goal of storing unique_ptr of InputChannel
inside the InputPublisher.
In this CL, we are still allowing the "copy" and "dup" functions to
exist. Removing those requires significant refactoring on the Java side,
including the jni layer and object ownership models.
Test: TEST=inputflinger_tests; m $TEST && $ANDROID_HOST_OUT/nativetest64/$TEST/$TEST
Bug: 161009324
Change-Id: If6f44d78c7fc9f3e12729068de1753847abf0ebb
|
| |\ \ \ |
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This patch updates the checks, tests, and documentation to ensure ADPF
CPU == 0 is allowed, and instead checks to make sure that both CPU
and GPU cannot be 0 at the same time.
Bug: 323226967
Test: atest PerformanceHintManagerTest
Change-Id: I6927899793c7d9801541465280af32627e200dc9
|
| |\ \ \ \
| |_|/ /
|/| | |
| | | |
| | | |
| | | | |
* changes:
FTL: Silence __VA_ARGS__ warning with empty arg
FTL: Fix SmallMap<K, V, 0>::try_emplace
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Bug: 185536303
Test: ftl_test
Change-Id: I3fc52c3dc3904ace7822200ca6c0f9ac39df8fe2
|
| | |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
SmallVector<T, N>::emplace_back returns a reference, whereas
SmallVector<T, 0>::emplace_back returns an iterator (because
its API must be compatible with StaticVector).
Bug: 185536303
Test: ftl_test
Change-Id: I6bdcd983c0bb2d2a326f79906997f85e89d7df44
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This change creates a struct within InputDeviceInfo to hold View related
behaviors of an input device. Currently, a single behavior is supported:
device.viewBehavior_smoothScroll. This can be specified in an IDC file
to hint clients of the InputDevice that they should animate scrolls for
motion events generated by the InputDevice.
Bug: 246946631
Test: add property in IDC, check API returns expected value
Test: atest frameworks/native/services/inputflinger/tests/InputReader_test.cpp
Change-Id: Ibe373cadc40d2a08116e787b744dd30812638edb
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This will replace the InputChannel. They don't both need to be shared
pointers. A lot of times, we are using InputChannel to look up the
connection. In this CL, this is simplified by using the connection
directly.
Bug: 161009324
Test: atest inputflinger_tests
Change-Id: I3fc2bbdd8c5076b5dbff5067e4fec6e45f5c3da6
|
| |\ \ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
* changes:
SF: Fix error handling for getDisplayVsyncPeriod
SF: Handle BAD_CONFIG for getActiveConfig
FTL: Add Expected<T, E>
|
| | |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Extend `base::expected` with `has_error()` and `value_opt()`.
Bug: 185536303
Test: ftl_test
Change-Id: I07d70dc8fe7ebfe2f08626dff51aef0b98430f61
|
| |\ \ \ |
|
| | | |/
| |/|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Currently, InputChannel is a manually-written parcelable. In this CL, we
introduce an aidl-defined InputChannel, which eventually could also be
used in Java as well.
Now, whenever an InputChannel needs to be written to parcel, we first
create the new android.os.InputChannel and then write that object to
parcel.
Eventually, we can convert the Java side of InputChannel to use this
mechanism, as well.
Bug: 161009324
Test: adb shell monkey 1000
Test: atest libgui_test
Change-Id: Ib44c5ff02b3c77e0425b59a76195ed100e187317
|
| |\ \ \
| |/ /
|/| | |
|
| | |/
| |
| |
| |
| |
| | |
Bug: 315307777
Test: manual
Change-Id: I737a7418f43afac4735bb1a5523713890f4df553
|
| |/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In some instances, a screenshot may be captured before a layer has a
release callback registered. This can happen when a new buffer has
not yet been transacted before a screenshot is captured. This causes the
screenshot fence to be dropped and the possibility of tearing when
capturing a screenshot while continuously rendering.
To resolve this, buffer screenshot fences into a list of future fences
when there is no callback registered, and merge those fences when
dispatching the release callback.
Bug: 302703346
Test: SurfaceViewTests#testMovingWhiteSurfaceView 100 times
Change-Id: I91aec3cdb0973092d48cd77e59dd3999e9d9e847
|
| |\ |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This patch adds FMQ support, createHintSessionWithConfig support,
and refactors the class structure slightly to allow wrapper subclasses
to share unsupported method logic with EmptyHalWrapper
Bug: 317387260
Test: atest libpowermanager_test libsurfaceflinger_unittest libcompositionengine_test
Change-Id: I53b67055b3ada4dc8576533a9b961ff5ec3367a5
|
| |\ \ |
|
| | |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Currently there is very little error handling for null pointers
in the NDK, so this CL aims to remedy that by changing the WorkDuration
API to pass status messages, updating the relevant documentation,
and making sure that all existing methods check all pointers
that are passed.
Bug: 321065424
Test: atest PerformanceHintNativeTestCases
Test: atest PerformanceHintManagerTest
Test: atest HintManagerServiceTest
Change-Id: I4439328cc2f551b8325c1a82019a35478a5dd372
|
| |/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In ag/25343121 the include statements were sorted for
'androidfw/ResourceTypes.h'. This reordering unfortunately caused a
build break for aapt2 on host MacOS.
The issue was that 'android/configuration.h' includes
'android/asset_manager.h', which references off64_t, a type that is not
available on MacOS.
Previously, the 'android/configuration.h' include occurred after
'androidfw/Asset.h', which transitively included
'android-base/off64_t.h', leading to the definition of off64_t.
Add a typedef for off64_t for Darwin in asset_manager.h. An alternative
approach would be include 'android-base/off64_t.h' in asset_manager.h,
but adding a dependency to libbase seems excessive for this change.
Test: m libnativehelper aapt2 on Mac
Bug: 321309980
Change-Id: Ie67f4256c4ca309bf6eb4a2a2fc28de2155041f5
|
| |\
| |
| |
| | |
EndToEndNativeInputTest" into main
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The EndToEndNativeInputTest::waitForEventAvailable(timeoutMs) is similar
in implementation to InputChannel::probablyHasInput(), but can stop
after a timeout.
Add InputChannel::waitForMessage(std::chrono::milliseconds timeout) for
use in tests and use it to replace the waitForEventAvailable().
The difference of the new method from probablyHasInput() is that the
latter does not get repeated (because it is not necessary to implement
the hint). Repeating happens only on EINTR to allow tests to return
before timeout expiration when there are problems with the channel
setup. In the end the implementations are rather different.
Bug: b/314973388
Test: atest frameworks/native/libs/gui/tests/EndToEndNativeInputTest.cpp
Test: atest InputPublisherAndConsumerTest
Change-Id: I806aad14e4fba223a5cbbe49cea862f9b8279f24
|
| |\ \
| |/
|/| |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The new touchpad mapper implemented in Android 14 replaced our simple
cursor movement acceleration curves (where the acceleration factor
increased linearly with speed between minimum and maximum values) with
more sophisticated multi-segment curves. However, cursor movement using
mice remained on the old curves. For consistency and to improve pointing
accuracy, use the same curves for mice, too.
This is also a good opportunity to improve the documentation comments
and naming now that I've wrapped my head around the maths a bit better.
Bug: 315313622
Test: atest inputflinger_tests
Test: check pointer movement with a mouse, including changing the
pointer speed setting and checking that the movement speed changes
Change-Id: Ifcf43f4de6017f06b66f37d5e03a13cc257d92d5
|
| |\ \ |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Test: atest VirtualStylusTest, VirtualStylusMotionEventTest,
VirtualStylusButtonEventTest, VirtualInputDeviceConfigTest
Bug: 304829446
Change-Id: I876e538104b674862e8509414790124b2a28d379
|
| |\ \ \
| | | |
| | | |
| | | | |
into main
|
| | |/ /
| | |
| | |
| | |
| | |
| | | |
Bug: 319284963
Test: m
Change-Id: I636a07f5cb939a1ac739628a1eff7c882245acd5
|
| |\ \ \
| |_|/
|/| | |
|
| | |/
| |
| |
| |
| |
| | |
Bug: 319285135
Test: m
Change-Id: I5bf5b92b2844e7b9a5702b3ed48111d42e4ecce8
|
| |\ \ |
|
| | |/
| |
| |
| |
| |
| | |
Bug: 284324521
Test: n/a
Change-Id: Ied2a6fd43ecf23482f52cbb60e2e982ef5b833d7
|
| |\ \
| |/
|/| |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Introduce InputConsumer::probablyHasInput() to check for availability of
input events that have not been consumed yet. It performs a poll on the
underlying file descriptor.
The return value is precise (modulo rare syscall interruptions), but
clients should handle it as a performance hint. This hint would allow to
prioritize input-related work, but only when input events are *likely*
pending.
Usage constraints for a future/possible API in the Android Framework:
0. This is experimental. The usefulness of the hint has not been
broadly proven, and the functionality can be removed soon if there is
no robust data to support the usefulness.
1. The high-level API visible to apps would be effectively opt-in: does
not create any state if not used.
2. An app could use this hint to yield from longer tasks on the UI
thread (which it is not supposed to create in the first place). This
is a very niche workaround for Chrome's complexity.
3. Using the Input Hint in WebView should probably be disabled: WebView
has less control over the embedding app than Chrome, and less
knowledge when to prioritize for input handling.
4. There is a good question whether probablyHasInput() should guarantee
to return true only when input is queued. While it is good to return
precise results, clients should only use this API as an optimization
hint without sacrificing correctness. Due to the growing complexity
of input handling on Android, it is not too hard to imagine that in
some not-too-distant future input would get filtered by the Framework
on the application side, potentially skipping the contents from the
ready-to-read file descriptor or an accumulated InputConsumer batch.
Bug: b/314973388
Test: atest 'InputChannelTest#ProbablyHasInput'
Test: atest InputPublisherAndConsumerTest
Change-Id: I9681a9ddd0249e3bfd5285c6570dee7a9f5de951
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Before this CL, we only stored the touching pointer id's inside
TouchWindow. However, it is also necessary to know which of the touching
pointers are touch vs stylus. This would allow us in a later CL to
determine whether the stylus is currently down anywhere on screen.
In this CL, instead of storing just the pointer ids, store
PointerProperties in a vector. This includes the pointer id and the
tooltype.
There should be no behaviour change in this CL.
Bug: 316225294
Test: TEST=inputflinger_tests; m $TEST && $ANDROID_HOST_OUT/nativetest64/$TEST/$TEST
Change-Id: I7fb2bbd46e7da7e085679ee16da3a53773931875
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
before this CL, an empty vector passed to 'dumpVector' would cause a
crash (in the good case) and undefined behaviour otherwise.
In this CL, fix this function.
Bug: 211379801
Test: TEST=inputflinger_tests; m $TEST && $ANDROID_HOST_OUT/nativetest64/$TEST/$TEST
Change-Id: I93f4defb947f41d68f0ec22bd35b6c069fbc15e4
|
| |\ \ |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
ftl::Function<F, N> is a container for function object, and can mostly
be used in place of std::function<F>.
Unlike std::function<F>, a ftl::Function<F, N>:
* Uses a static amount of memory (controlled by N), and never any
dynamic allocation.
* Satisfies the std::is_trivially_copyable<> trait.
* Satisfies the std::is_trivially_destructible<> trait.
However to satisfy those constraints, the contained function object must
also satisfy those constraints, meaning certain types (like
std::unique_ptr's) cannot be part of the contained function object type.
The size of a ftl::Function<F, N> is guaranteed to be:
sizeof(std::intptr_t) * (N + 2)
If not specified, N defaults to zero, which is big enough to store a lambda
that captures a single pointer (such as "this" for forwarding to a
member function.
By comparison, sizeof(std::function) == sizeof(std::intptr_t) * 4, at
least with on x86-64 with clang 15.
Compile time checks are performed that the constraints are all satisfied,
and that the value of N is large enough to contain the desired function
object type.
ftl::make_function is a helper function to construct a ftl::Function,
and will deduce the template type arguments. In addition to constructing
a ftl::Function for a function object, ftl::make_function has overloads
for creating a ftl::Function which will invoke a member function or a free
(non-member) function.
ftl::no_op is a helper value to construct a ftl::Function<F, N> that
does nothing, except default construct a return value, if one is needed.
A unit test is also included to demonstrate and verify the
implementation, including asserting that function objects which don't
meet the requirements cannot be used. The test also asserts some
non-obvious corner cases for handling argument and return value
conversions to match how std::function behaves.
Bug: 279581095
Test: atest ftl_test
Change-Id: I268facb106a248d0766e931595291036bc606fb7
|
| |\ \ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
e79ffe8b7b am: e65945e179
Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/2868014
Change-Id: I91ca3365edf91b41c907abde0a0d9e468b9e6f52
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
DisplayViewport.h:133:29: warning: format specifies type 'int' but the argument has type 'ui::Rotation' [-Wformat]
Test: presubmit
Change-Id: Ie656a3da47f2155b106014dff967d5b2d05998d9
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This makes it more convenient to dump windows from other places during
debugging. For example, this could also be called from setInputWindows
to inspect all of the window flags that might be changing.
Bug: 312714754
Test: adb shell dumpsys input
Change-Id: I2ace23bec1231f3a318e1b6a19f146b588e077b6
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The MetricsManager needs to receive UP/CANCEL events to trigger
atom reporting. I must have moved these lines around during the
refactor and overlooked this mistake.
This change also modifies MotionPredictor and MetricsManager to
hold a "ReportAtomFunction" to facilitate testing.
Test: `statsd_testdrive 718` shows atoms reported with `adb shell setenforce 0`.
Test: `atest frameworks/native/libs/input/tests/MotionPredictor_test.cpp -c` passes.
Test: `atest frameworks/native/libs/input/tests/MotionPredictorMetricsManager_test.cpp -c` passes.
Bug: 311066949
Change-Id: Icbb709bbb7cf548512e0d9aa062783d554b857e3
|