Skip to content
Snippets Groups Projects
  1. Jun 10, 2024
    • Prabir Pradhan's avatar
      MotionEvent: Differentiate directional support for AXIS_ORIENTATION · 9a53b55a
      Prabir Pradhan authored
      We have three cases for handling AXIS_ORIENTATION:
      1. Orientation is not supported by the input device, so the value for
         AXIS_ORIENTATION should always be 0, regardless of display rotation.
      2. Orientation is supported, but a "direction" is not specified, like
         for touchscreens and touchpads. The orientation must be in the range
         [-pi/2, pi/2] for all display rotations.
      3. Orientation is fully supported, and the value is in the range [-pi,
         pi] for all display rotations.
      
      It is insufficient to rely on whether or not the PointerCoords has the
      bit for AXIS_ORIENTATION set to determine whether the event has a valid
      orientation. This is because we always skip setting values of 0 for any
      axis in PointerCoords to save space during serialization.
      
      To support these three cases, we introduce two new MotionEvent private
      flags. These are flags that are not exposed to Java and to the public
      APIs.
      
      Bug: 263310669
      Test: atest TouchScreenTest libinput_tests inputflinger_tests
      Change-Id: Iaa38afe35b00de74fbc5eefce25191bea52c2ea6
      9a53b55a
  2. May 23, 2024
    • Frederick Mayle's avatar
      libbinder: support exporting fewer symbols · f7b65d1f
      Frederick Mayle authored
      This commit explicitly marks symbols in the code with default visibility
      if they should be part of the libbinder ABI. Later, we'll set the
      default symbol visibility to hidden and so any symbols not explicitly
      marked as exported will be hidden.
      
      We are still overexporting symbols a bit. When `LIBBINDER_EXPORTED` is
      applied to a class, it exports all of that class's symbols. I've tried
      to only export class members, but in a few cases it didn't seem worth
      the trouble, e.g. where all the members need to be exported.
      
      Additionally, we are exporting some symbols only needed by binder test
      binaries. Since those tests run against the standard libbinder.so, we
      need to include the symbols as part of the ABI.
      
      On aarch64, this reduces the size of libbinder_on_trusty_mock.so by
      10.7% and libbinder.so by 7.5%, primarily in the .text, .dynstr, and
      .dynsym sections (but none of this takes effect until we actually
      enabled it in a later commit).
      
      Bug: 338458975
      Test: TH
      Change-Id: Idc348c2b12124a8bbcebeea49920267a995367b6
      f7b65d1f
  3. May 14, 2024
    • Dominik Laskowski's avatar
      FTL: Add Optional<T>::ok_or and FTL_TRY · 189d1825
      Dominik Laskowski authored
      Optional<T>::ok_or maps to Expected<T, E> where nullopt becomes E.
      
      FTL_TRY unwraps T for Expected<T, E> or does an early out on error.
      
      Bug: 185536303
      Test: ftl_test
      Change-Id: Ia03f7e3d8773878db1c493b62772ab2c2b7a4fed
      189d1825
    • Dominik Laskowski's avatar
      FTL: Touch up Concat · a7873cc6
      Dominik Laskowski authored
      - Silence warning about signedness change.
      - Disable copying to prevent stray end_ pointer.
      
      Bug: 185536303
      Test: Build
      Change-Id: Ief31910bd51e9582a576ace554a5f7bafe46bf02
      a7873cc6
    • Siarhei Vishniakou's avatar
      Move ADISPLAY_ID_ definitions into LogicalDisplayId · cfbee530
      Siarhei Vishniakou authored
      These will eventually replace the existing definitions as follows:
           ADISPLAY_ID_NONE -->> LogicalDisplayId::INVALID
           ADISPLAY_ID_DEFAULT -->> LogicalDisplayId::DEFAULT
      
      We are keeping the old definitions for now, to reduce the merge
      conflicts. These will be removed in subsequent CLs, after the
      frameworks/base and other repository patches go in.
      
      The constant "NONE" was renamed to "INVALID" to make it consistent with
      the Java definitions.
      
      Bug: 339106983
      Test: m checkinput
      Change-Id: I0274be345159c85cb51fcea743d8acd3d298cd07
      cfbee530
  4. May 11, 2024
  5. May 09, 2024
    • Linnan Li's avatar
      Use a strongly typed LogicalDisplayId for displayId(2/n) · 13bf76a8
      Linnan Li authored
      
      Currently, we use int32_t for displayId, which is not a safe type, and
      it may also lead to misdefinition of types. Here, we introduce
      LogicalDisplayId as a strong type for displayId and move all contents
      of constants.h into LogicalDisplayId.h.
      
      Bug: 339106983
      Test: atest inputflinger_tests
      Test: atest InputTests
      Test: m checkinput
      Test: m libsurfaceflinger_unittest
      Test: presubmit
      
      Change-Id: If44e56f69553d095af5adb59b595e4a852ab32ce
      Signed-off-by: default avatarLinnan Li <lilinnan@xiaomi.corp-partner.google.com>
      13bf76a8
  6. May 08, 2024
    • Yi Kong's avatar
      Turn off integer overflow UBSAN checks for hash functions · 77527b97
      Yi Kong authored
      These functions intentionally overflows integers. The upcoming compiler
      update, clang-r522817, will start complaining about these overflows.
      
      Test: boot with new compiler
      Bug: 325934863
      Change-Id: Idb3730c652ae739b73c09517665b518a79b60345
      77527b97
  7. May 06, 2024
  8. May 03, 2024
    • Dan Albert's avatar
      Allow a message argument for __DEPRECATED_IN. · 22242fb8
      Dan Albert authored
      The messages come from a different CL in AOSP, but that CL breaks
      internally because this code doesn't exist in AOSP. Merging the
      compatibility thing first so I can land the rest in AOSP.
      
      Bug: None
      Test: None
      Change-Id: I906c6ea7bd6d891aba9e185756131ac5b34f3c3d
      22242fb8
  9. May 02, 2024
    • Dan Albert's avatar
      Define the error conditions for ALooper_pollOnce. · 26620a62
      Dan Albert authored
      "Unrecoverable internal errors" here means that ALOOPER_POLL_ERROR
      will be returned if the internal epoll_wait call fails with something
      other than EINTR. I could say that explicitly, but I think the
      important info for the caller is "you're doomed, just abort".
      
      Bug: None
      Test: None
      Change-Id: I869f29122500ee8c71390cae1c28108a63088a77
      26620a62
    • Dan Albert's avatar
      Expand Choreographer docs. · dc9c4118
      Dan Albert authored
      This (hopefully) explains all the bits that confused me when I tried
      to use these APIs for the first time. The existing docs leaned a lot
      on developers already understanding the Java API, and even the Java
      API docs didn't explain how to use this portion of the API well.
      
      Bug: None
      Test: I am the test
      Change-Id: I48490112f92ef754b38daef7a4ebf6c031cc20f8
      dc9c4118
    • Dan Albert's avatar
      Restore docs for deprecated Choreographer APIs. · 9ca6b3d5
      Dan Albert authored
      They're deprecated, but still needed by most users, as the replacement
      is not available until API 29. Restore the docs and explain the bugs.
      
      Bug: None
      Test: treehugger
      Change-Id: I4227ce3f0ee57a73a13e394cd48373accf4a58a3
      9ca6b3d5
    • Dan Albert's avatar
      Improve ALooper_pollAll/ALooper_pollOnce docs. · b06c7fba
      Dan Albert authored
      Add the soon-to-be-required removal message for ALooper_pollAll, and
      expand the docs for both ALooper_pollAll and ALooper_pollOnce to make
      the reason for removal clear, and to explain the fix callers should
      apply.
      
      Bug: https://github.com/android/ndk/issues/2014
      Test: treehugger
      Change-Id: I020a280346d1ff9f5fcbec4c153dee8319cdf539
      b06c7fba
    • Dan Albert's avatar
      Add deprecation message. · c47ac844
      Dan Albert authored
      Bug: None
      Test: treehugger
      Change-Id: I3a52883fba0e31f05e50cd51193bbb306418b18a
      c47ac844
    • Lloyd Pique's avatar
      ftl: non_null improvements · 2e85e1b3
      Lloyd Pique authored
      * Disallow NonNull<bool> by checking for nullptr, instead of false.
      * Add an "operator bool()" to work like other smart pointers.
      * Add [[nodiscard]] where it makes sense.
      * Implement the full set of comparison operations, and allow
        comparisons between NonNull<P> and another type Q. This allows the
        use of NonNull<P> in sorted containers like std::set, and allows
        easier lookup via unwrapped pointers.
      * Specialize std::hash for NonNull. This allows the use of NonNull<P> in
        hashed containers like std::unordered_set.
      
      Test: atest ftl_test
      Bug: 185536303
      Change-Id: Ib1090e393ea5f5641be2cd9c61011049039ea615
      2e85e1b3
    • Lloyd Pique's avatar
      ftl: contains · 23550ef3
      Lloyd Pique authored
      ftl::contains(container, value) returns true if the container contains
      the value. It's implemented in terms of std::find(), so has the same
      runtime complexity.
      
      It is otherwise a simplified version of the C++23 std::ranges::contains,
      which has some additional options, and can be deprecated once C++23 is
      the minimal supported version.
      
      Test: atest ftl_test
      Bug: 185536303
      Change-Id: I98aefe7cf6645ac3a20fddfe0657fa6822d669de
      23550ef3
  10. May 01, 2024
  11. Apr 29, 2024
  12. Apr 24, 2024
    • Harry Cutts's avatar
      input: fix -Wformat warnings · c57cd3c5
      Harry Cutts authored
      These occur when an enum value is formatted as an integer without a
      cast. In all these cases the debug logs are nicer if we use the actual
      name of the enum value, so wrap them all in ftl::enum_string calls.
      
      Bug: 245989146
      Test: Check there are no -Wformat warnings in the output of
            $ m checkinput
      Change-Id: I26333123e9fb445f1640c5e73757ddf4ad2d6e98
      c57cd3c5
  13. Apr 23, 2024
  14. Apr 19, 2024
  15. Apr 16, 2024
  16. Apr 12, 2024
  17. Apr 02, 2024
  18. Mar 30, 2024
    • Derek Wu's avatar
      Add jerk thresholded pruning. · aaa47312
      Derek Wu authored
      This will change MotionPredictor::predict() outputs once
      enable_prediction_pruning_via_jerk_thresholding is enabled.
      
      Test: atest libinput_tests --host with local flag override to enable
      enable_prediction_pruning_via_jerk_thresholding.
      Test: atest CtsInputTestCases
      Test: atest MotionPredictorBenchmark MotionPredictorTest
      Bug: 266747654
      
      Change-Id: I11eb1972246468a1f3824656f5ac57e01e0359cd
      aaa47312
  19. Mar 29, 2024
    • Siarhei Vishniakou's avatar
      Add tracing for InputConsumer lifetime · c0bf3899
      Siarhei Vishniakou authored
      This will help understand when it's created and destroyed. This also helps disambiguate between multiple InputConsumers in the same process.
      
      Test procedure:
      1. Add "system tracing" to quick settings from developer options (enable
         the quick settings tile for system tracing)
      2. Start system tracing via UI of quick settings
      3. Open all apps and do some swipes
      4. Click "stop tracing"
      5. Pull the logs to the device `adb pull /data/local/traces/ ~/trace`
      6. Go to https://ui.perfetto.dev/
      7. Click "open trace file" and navigate to the local file
      8. In the trace, open the process of interest. In this case, it's the
         launcher process
      9. Scroll down to "InputConsumer processing"
      10. The "cookie" field of each entry is the sequence number of this
          event (but not the event id).
      
      Bug: 311142655
      Test: perfetto test procedure described above
      
      Change-Id: If8cdadd3604e8e3ab24c45a5ccf4ea9ffa9fee4a
      c0bf3899
  20. Mar 27, 2024
  21. Mar 26, 2024
    • Yuichiro Hanada's avatar
      Move PointerIconType to AIDL · 56afd1e2
      Yuichiro Hanada authored
      to be shared between Java and C++.
      The values of PointerIconStyle in Input.h and the constants in
      PointerIcon.java are manually synced now.
      This change introduces an AIDL file which can be used by both.
      
      Bug: 235023317, 330827347
      Test: presubmit
      Change-Id: I01f31868e7c13270047673d97035783deaf0a7f6
      56afd1e2
  22. Mar 21, 2024
    • Linnan Li's avatar
      Add owner for include/android/keycodes.h · 04cb6b2e
      Linnan Li authored
      Because of the existence of extra spaces, the owner of keycodes.h is
      not configured as expected. We should delete this extra spaces.
      
      Bug: none
      Test: After merging, check whether the owner of keycodes.h includes
      all users under INPUT_OWNER
      
      Change-Id: I634c49f53a4633bdee3cdefbf0debae4dff90a47
      04cb6b2e
  23. Mar 20, 2024
  24. Mar 15, 2024
    • Chavi Weingarten's avatar
      Add surface_control_input_receiver native API · 99280991
      Chavi Weingarten authored
      Bug: 324271765
      Test: ASurfaceControlInputReceiverTest
      Change-Id: I19a1c796c1d22e8b247368df07c34c1b4b195e64
      99280991
    • Siarhei Vishniakou's avatar
      Send events wrapped in unique_ptr to InputConsumerCallbacks · 3891ec97
      Siarhei Vishniakou authored
      This will allow the upper layers to release the ownership and hand the
      object over to the ndk client. The client will then assume the
      ownership. This is not possible with the current implementation of
      rvalue, because the ndk interface is only using pointers.
      
      Unfortunately, this makes things more clunky for tests (unless we modify
      BlockingQueue).
      
      Bug: 324271765
      Test: TEST=libinput_tests; m $TEST && $ANDROID_HOST_OUT/nativetest64/$TEST/$TEST --gtest_repeat=100 --gtest_break_on_failure
      Change-Id: I0cf326a22f840be6f8aa00d1e69f818815788487
      3891ec97
    • Siarhei Vishniakou's avatar
      Add InputConsumerNoResampling, which is a rewrite of InputConsumer · 2b920275
      Siarhei Vishniakou authored
      In this CL, an InputConsumer with built-in looper handling is being
      added. This will be useful for native code that needs batching, and that
      provides choreographer callbacks directly into native code.
      
      Before this CL (and with this CL, temporarily) the InputConsumer logic
      was split between native and jni layers. In general, we shouldn't have
      logic inside jni. But in this case, the situation was also making the
      code difficult to reason and debug.
      
      In this new InputConsumerNoResampling class, all of the features of
      InputConsumer and NativeInputReceiver are combined, except for
      resampling. That will be done separately, at a later time.
      
      As a result, we will not be switching to the new
      InputConsumerNoResampling class right away.
      
      Once resampling is added, we can switch to the new
      InputConsumerNoResampling (and rename it to InputConsumer), and delete
      the old InputConsumer.
      
      In the meantime, the new InputConsumerNoResampling will be useful in the
      new NDK APIs. There, having resampling is not critical.
      
      Bug: 311142655
      Test: TEST=libinput_tests; m $TEST && $ANDROID_HOST_OUT/nativetest64/$TEST/$TEST --gtest_repeat=100 --gtest_break_on_failure
      Change-Id: I468ddbd8406c4bf9f5e022f79fd1a582ba680633
      2b920275
  25. Mar 14, 2024
  26. Mar 13, 2024
    • Siarhei Vishniakou's avatar
      Move InputConsumer into separate files · 0438ca8a
      Siarhei Vishniakou authored
      This helps to keep track of things, and it also allows easier deletion
      in the future.
      
      Bug: 311142655
      Test: none
      Change-Id: Iece2bf6857ab05f86072031a4cf3a36f843b1634
      0438ca8a
    • Chavi Weingarten's avatar
      Add native InputTransferToken · a6f572f9
      Chavi Weingarten authored
      Added a native class that corresponds to the Java InputTransferToken.
      
      Test: SurfaceControlInputReceiverTests
      Test: AInputTransferTokenTest
      Bug: 324271765
      Change-Id: Ida2a7b34338560dfed9af7f510d64372e41384af
      a6f572f9
Loading