Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 619d2254 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 11324029 from e9ae938a to 24Q2-release

Change-Id: If643abd7826cf5391608118737d7ddce3b0c07c0
parents 76ca59fc e9ae938a
Loading
Loading
Loading
Loading
+54 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at:
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package {
    // See: http://go/android-license-faq
    default_applicable_licenses: [
        "frameworks_native_license",
    ],
}

cc_benchmark {
    name: "flatland",
    auto_gen_config: false,
    srcs: [
        "Composers.cpp",
        "GLHelper.cpp",
        "Renderers.cpp",
        "Main.cpp",
    ],
    cflags: [
        "-Wall",
        "-Werror",
    ],
    compile_multilib: "both",
    multilib: {
        lib32: {
            stem: "flatland",
        },
        lib64: {
            stem: "flatland64",
        },
    },
    shared_libs: [
        "libEGL",
        "libGLESv2",
        "libcutils",
        "libgui",
        "libui",
        "libutils",
    ],
}

cmds/flatland/Android.mk

deleted100644 → 0
+0 −32
Original line number Diff line number Diff line
local_target_dir := $(TARGET_OUT_DATA)/local/tmp
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_SRC_FILES:=   \
    Composers.cpp   \
    GLHelper.cpp    \
    Renderers.cpp   \
    Main.cpp        \

LOCAL_CFLAGS := -Wall -Werror

LOCAL_MODULE:= flatland
LOCAL_LICENSE_KINDS:= SPDX-license-identifier-Apache-2.0
LOCAL_LICENSE_CONDITIONS:= notice
LOCAL_NOTICE_FILE:= $(LOCAL_PATH)/../../NOTICE

LOCAL_MODULE_TAGS := tests

LOCAL_MODULE_PATH := $(local_target_dir)
LOCAL_MULTILIB := both
LOCAL_MODULE_STEM_32 := flatland
LOCAL_MODULE_STEM_64 := flatland64
LOCAL_SHARED_LIBRARIES := \
    libEGL      \
    libGLESv2   \
    libcutils   \
    libgui      \
    libui       \
    libutils    \

include $(BUILD_EXECUTABLE)
+49 −0
Original line number Diff line number Diff line
/*
 * Copyright 2024 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#pragma once

#include <cstdint>
#include <vector>

namespace android {

/**
 * Describes a section of an acceleration curve as a function which outputs a scaling factor (gain)
 * for the pointer movement, given the speed of the mouse or finger (in mm/s):
 *
 *     gain(input_speed_mm_per_s) = baseGain + reciprocal / input_speed_mm_per_s
 */
struct AccelerationCurveSegment {
    /**
     * The maximum pointer speed at which this segment should apply, in mm/s. The last segment in a
     * curve should always set this to infinity.
     */
    double maxPointerSpeedMmPerS;
    /** The gain for this segment before the reciprocal is taken into account. */
    double baseGain;
    /** The reciprocal part of the formula, which should be divided by the input speed. */
    double reciprocal;
};

/**
 * Creates an acceleration curve for the given pointer sensitivity value. The sensitivity value
 * should be between -7 (for the lowest sensitivity) and 7, inclusive.
 */
std::vector<AccelerationCurveSegment> createAccelerationCurveForPointerSensitivity(
        int32_t sensitivity);

} // namespace android
+46 −9
Original line number Diff line number Diff line
@@ -16,7 +16,10 @@

#pragma once

#include <vector>

#include <android-base/stringprintf.h>
#include <input/AccelerationCurve.h>
#include <input/Input.h>
#include <input/VelocityTracker.h>
#include <utils/Timers.h>
@@ -86,12 +89,7 @@ struct VelocityControlParameters {
class VelocityControl {
public:
    VelocityControl();

    /* Gets the various parameters. */
    const VelocityControlParameters& getParameters() const;

    /* Sets the various parameters. */
    void setParameters(const VelocityControlParameters& parameters);
    virtual ~VelocityControl() {}

    /* Resets the current movement counters to zero.
     * This has the effect of nullifying any acceleration. */
@@ -101,16 +99,55 @@ public:
     * scaled / accelerated delta based on the current velocity. */
    void move(nsecs_t eventTime, float* deltaX, float* deltaY);

private:
protected:
    virtual void scaleDeltas(float* deltaX, float* deltaY) = 0;

    // If no movements are received within this amount of time,
    // we assume the movement has stopped and reset the movement counters.
    static const nsecs_t STOP_TIME = 500 * 1000000; // 500 ms

    VelocityControlParameters mParameters;

    nsecs_t mLastMovementTime;
    float mRawPositionX, mRawPositionY;
    VelocityTracker mVelocityTracker;
};

/**
 * Velocity control using a simple acceleration curve where the acceleration factor increases
 * linearly with movement speed, subject to minimum and maximum values.
 */
class SimpleVelocityControl : public VelocityControl {
public:
    /** Gets the various parameters. */
    const VelocityControlParameters& getParameters() const;

    /** Sets the various parameters. */
    void setParameters(const VelocityControlParameters& parameters);

protected:
    virtual void scaleDeltas(float* deltaX, float* deltaY) override;

private:
    VelocityControlParameters mParameters;
};

/** Velocity control using a curve made up of multiple reciprocal segments. */
class CurvedVelocityControl : public VelocityControl {
public:
    CurvedVelocityControl();

    /** Sets the curve to be used for acceleration. */
    void setCurve(const std::vector<AccelerationCurveSegment>& curve);

    void setAccelerationEnabled(bool enabled);

protected:
    virtual void scaleDeltas(float* deltaX, float* deltaY) override;

private:
    const AccelerationCurveSegment& segmentForSpeed(float speedMmPerS);

    bool mAccelerationEnabled = true;
    std::vector<AccelerationCurveSegment> mCurveSegments;
};

} // namespace android
+2 −2
Original line number Diff line number Diff line
@@ -136,8 +136,8 @@ pub mod binder_impl {
    pub use crate::native::Binder;
    pub use crate::parcel::{
        BorrowedParcel, Deserialize, DeserializeArray, DeserializeOption, Parcel,
        ParcelableMetadata, Serialize, SerializeArray, SerializeOption, NON_NULL_PARCELABLE_FLAG,
        NULL_PARCELABLE_FLAG,
        ParcelableMetadata, Serialize, SerializeArray, SerializeOption, UnstructuredParcelable,
        NON_NULL_PARCELABLE_FLAG, NULL_PARCELABLE_FLAG,
    };
    pub use crate::proxy::{AssociateClass, Proxy};
}
Loading