Compare commits
14 commits
Author | SHA1 | Date | |
---|---|---|---|
b8da147297 | |||
ed17cafea2 | |||
f58c42c036 | |||
a2da963dff | |||
45b54b77dc | |||
4b06d79e5d | |||
1934436bb0 | |||
e5eeee0098 | |||
6d1a3c97d2 | |||
b3004573ec | |||
ab192cd91f | |||
483f3398c4 | |||
84d61b047e | |||
3e5414feeb |
52 changed files with 828 additions and 966 deletions
|
@ -1,4 +1,4 @@
|
|||
From 9f770e862954f07e8a7cce36aedd4879b10641c6 Mon Sep 17 00:00:00 2001
|
||||
From bbbab7648b18d274e5751e81e947ce77dd8d80c8 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sat, 19 Feb 2022 08:20:25 -0500
|
||||
Subject: [PATCH] Add new mechanism to fake vendor props on a per-process basis
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 875011b65d3839871b488b18d483fd56f2306a7b Mon Sep 17 00:00:00 2001
|
||||
From 5aedcf873df4aad8d0acdeb0e89be8833a2a7c1c Mon Sep 17 00:00:00 2001
|
||||
From: Peter Cai <peter@typeblog.net>
|
||||
Date: Wed, 24 Aug 2022 15:42:39 -0400
|
||||
Subject: [PATCH 1/6] APM: Optionally force-load audio policy for system-side
|
||||
Subject: [PATCH 1/8] APM: Optionally force-load audio policy for system-side
|
||||
bt audio HAL
|
||||
|
||||
Required to support our system-side bt audio implementation, i.e.
|
||||
|
@ -14,7 +14,7 @@ Change-Id: I279fff541a531f922f3fa55b8f14d00237db59ff
|
|||
1 file changed, 25 insertions(+)
|
||||
|
||||
diff --git a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||
index 6f19a7a145..08836377b7 100644
|
||||
index 6f19a7a..0883637 100644
|
||||
--- a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||
+++ b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||
@@ -25,6 +25,7 @@
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From d24b962cb20fb0a3e807d05c534f43f8bd0ce350 Mon Sep 17 00:00:00 2001
|
||||
From a9bdfa4670444e013cb6237fa646fcb2a2153a17 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Cai <peter@typeblog.net>
|
||||
Date: Thu, 25 Aug 2022 13:30:29 -0400
|
||||
Subject: [PATCH 2/6] APM: Remove A2DP audio ports from the primary HAL
|
||||
Subject: [PATCH 2/8] APM: Remove A2DP audio ports from the primary HAL
|
||||
|
||||
These ports defined in the primary HAL are intended for A2DP offloading,
|
||||
however they do not work in general on GSIs, and will interfere with
|
||||
|
@ -16,7 +16,7 @@ Change-Id: I3305594a17285da113167b419543543f0ef71122
|
|||
1 file changed, 22 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||
index 08836377b7..0f7c903909 100644
|
||||
index 0883637..0f7c903 100644
|
||||
--- a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||
+++ b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||
@@ -26,6 +26,7 @@
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From b3bc05d8e2bb94c4992a12a943d16c27554fa54d Mon Sep 17 00:00:00 2001
|
||||
From e886147a98af0e71dfbab1de9ebf214755ef746d Mon Sep 17 00:00:00 2001
|
||||
From: ponces <ponces26@gmail.com>
|
||||
Date: Mon, 24 Oct 2022 09:38:34 +0100
|
||||
Subject: [PATCH 3/6] voip: Fix high pitched voice on Qualcomm devices
|
||||
Subject: [PATCH 3/8] voip: Fix high pitched voice on Qualcomm devices
|
||||
|
||||
Change-Id: I6d314912169776b76d07d8c0301ec5249c1870a2
|
||||
---
|
||||
|
@ -9,7 +9,7 @@ Change-Id: I6d314912169776b76d07d8c0301ec5249c1870a2
|
|||
1 file changed, 11 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||
index 0f7c903909..c4474cf1c2 100644
|
||||
index 0f7c903..c4474cf 100644
|
||||
--- a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||
+++ b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||
@@ -252,6 +252,7 @@ private:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 88eee2c55fa4e85aeef0df59c9b788b2b7868c6b Mon Sep 17 00:00:00 2001
|
||||
From 51870deb78ed9546df6a332594af2e83307ff5f3 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 5 Aug 2019 18:09:50 +0200
|
||||
Subject: [PATCH 4/6] Fix BT in-call on CAF devices
|
||||
Subject: [PATCH 4/8] Fix BT in-call on CAF devices
|
||||
|
||||
See https://github.com/phhusson/treble_experimentations/issues/374
|
||||
|
||||
|
@ -16,7 +16,7 @@ Change-Id: Ifea0f88276ec9a0811f3cb1973c4b06f2c82077b
|
|||
1 file changed, 93 insertions(+)
|
||||
|
||||
diff --git a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||
index c4474cf1c2..c1df8f278b 100644
|
||||
index c4474cf..c1df8f2 100644
|
||||
--- a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||
+++ b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||
@@ -676,6 +676,98 @@ std::variant<status_t, RouteTraits::Element> PolicySerializer::deserialize<Route
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 79a670c8e20a8eb68849be7e3f9b4c0421d92073 Mon Sep 17 00:00:00 2001
|
||||
From aaf84148267b166a878db401942235c54f62d3fe Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 21 Dec 2020 20:19:11 +0100
|
||||
Subject: [PATCH 5/6] Make camera IDs filter-out optional
|
||||
Subject: [PATCH 5/8] Make camera IDs filter-out optional
|
||||
|
||||
Nowadays most people have Camera 2 apps, and would like to have all
|
||||
cameras, rather than limit which cameras are available.
|
||||
|
@ -11,10 +11,10 @@ Add a property for that.
|
|||
1 file changed, 9 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/services/camera/libcameraservice/common/CameraProviderManager.cpp b/services/camera/libcameraservice/common/CameraProviderManager.cpp
|
||||
index a8d748028b..203a166a36 100644
|
||||
index 536f56a..348116a 100644
|
||||
--- a/services/camera/libcameraservice/common/CameraProviderManager.cpp
|
||||
+++ b/services/camera/libcameraservice/common/CameraProviderManager.cpp
|
||||
@@ -324,7 +324,9 @@ std::vector<std::string> CameraProviderManager::getAPI1CompatibleCameraDeviceIds
|
||||
@@ -325,7 +325,9 @@ std::vector<std::string> CameraProviderManager::getAPI1CompatibleCameraDeviceIds
|
||||
// API1 app doesn't handle logical and physical camera devices well. So
|
||||
// for each camera facing, only take the first id advertised by HAL in
|
||||
// all [logical, physical1, physical2, ...] id combos, and filter out the rest.
|
||||
|
@ -25,7 +25,7 @@ index a8d748028b..203a166a36 100644
|
|||
collectDeviceIdsLocked(providerDeviceIds, publicDeviceIds, systemDeviceIds);
|
||||
}
|
||||
auto sortFunc =
|
||||
@@ -1108,10 +1110,12 @@ SystemCameraKind CameraProviderManager::ProviderInfo::DeviceInfo3::getSystemCame
|
||||
@@ -1133,10 +1135,12 @@ SystemCameraKind CameraProviderManager::ProviderInfo::DeviceInfo3::getSystemCame
|
||||
|
||||
// Go through the capabilities and check if it has
|
||||
// ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SYSTEM_CAMERA
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From d483a03149f587b3078d81256ac356382aafdd6b Mon Sep 17 00:00:00 2001
|
||||
From d810036326afc526b8092fc2c5e0b1f18dcc258b Mon Sep 17 00:00:00 2001
|
||||
From: Peter Cai <peter@typeblog.net>
|
||||
Date: Thu, 18 Aug 2022 15:44:46 -0400
|
||||
Subject: [PATCH 6/6] APM: Restore S, R and Q behavior respectively for
|
||||
Subject: [PATCH 6/8] APM: Restore S, R and Q behavior respectively for
|
||||
telephony audio
|
||||
|
||||
This conditionally reverts part of b2e5cb (T), 51c9cc (S) and afd4ce (R)
|
||||
|
@ -36,10 +36,10 @@ Change-Id: I56d36d2aef4319935cb88a3e4771b23c6d5b2145
|
|||
2 files changed, 148 insertions(+), 61 deletions(-)
|
||||
|
||||
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
|
||||
index 73b574ccfa..4c44acb966 100644
|
||||
index ac8062e..28f703f 100644
|
||||
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
|
||||
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
|
||||
@@ -746,6 +746,17 @@ status_t AudioPolicyManager::updateCallRoutingInternal(
|
||||
@@ -754,6 +754,17 @@ status_t AudioPolicyManager::updateCallRoutingInternal(
|
||||
ALOGV("%s device rxDevice %s txDevice %s", __func__,
|
||||
rxDevices.itemAt(0)->toString().c_str(), txSourceDevice->toString().c_str());
|
||||
|
||||
|
@ -57,7 +57,7 @@ index 73b574ccfa..4c44acb966 100644
|
|||
auto telephonyRxModule =
|
||||
mHwModules.getModuleForDeviceType(AUDIO_DEVICE_IN_TELEPHONY_RX, AUDIO_FORMAT_DEFAULT);
|
||||
auto telephonyTxModule =
|
||||
@@ -768,9 +779,20 @@ status_t AudioPolicyManager::updateCallRoutingInternal(
|
||||
@@ -776,9 +787,20 @@ status_t AudioPolicyManager::updateCallRoutingInternal(
|
||||
ALOGE("%s() no telephony Tx and/or RX device", __func__);
|
||||
return INVALID_OPERATION;
|
||||
}
|
||||
|
@ -81,7 +81,7 @@ index 73b574ccfa..4c44acb966 100644
|
|||
} else {
|
||||
// If the RX device is on the primary HW module, then use legacy routing method for
|
||||
// voice calls via setOutputDevice() on primary output.
|
||||
@@ -794,7 +816,14 @@ status_t AudioPolicyManager::updateCallRoutingInternal(
|
||||
@@ -802,7 +824,14 @@ status_t AudioPolicyManager::updateCallRoutingInternal(
|
||||
}
|
||||
muteWaitMs = setOutputDevices(__func__, mPrimaryOutput, rxDevices, true, delayMs);
|
||||
} else { // create RX path audio patch
|
||||
|
@ -97,7 +97,7 @@ index 73b574ccfa..4c44acb966 100644
|
|||
// If the TX device is on the primary HW module but RX device is
|
||||
// on other HW module, SinkMetaData of telephony input should handle it
|
||||
// assuming the device uses audio HAL V5.0 and above
|
||||
@@ -810,6 +839,13 @@ status_t AudioPolicyManager::updateCallRoutingInternal(
|
||||
@@ -818,6 +847,13 @@ status_t AudioPolicyManager::updateCallRoutingInternal(
|
||||
}
|
||||
}
|
||||
connectTelephonyTxAudioSource(txSourceDevice, txSinkDevice, delayMs);
|
||||
|
@ -111,7 +111,7 @@ index 73b574ccfa..4c44acb966 100644
|
|||
} else if (fix_call_audio_patch()) {
|
||||
disconnectTelephonyAudioSource(mCallTxSourceClient);
|
||||
}
|
||||
@@ -819,6 +855,36 @@ status_t AudioPolicyManager::updateCallRoutingInternal(
|
||||
@@ -827,6 +863,36 @@ status_t AudioPolicyManager::updateCallRoutingInternal(
|
||||
return NO_ERROR;
|
||||
}
|
||||
|
||||
|
@ -148,7 +148,7 @@ index 73b574ccfa..4c44acb966 100644
|
|||
bool AudioPolicyManager::isDeviceOfModule(
|
||||
const sp<DeviceDescriptor>& devDesc, const char *moduleId) const {
|
||||
sp<HwModule> module = mHwModules.getModuleFromName(moduleId);
|
||||
@@ -5636,83 +5702,101 @@ status_t AudioPolicyManager::createAudioPatchInternal(const struct audio_patch *
|
||||
@@ -5689,83 +5755,101 @@ status_t AudioPolicyManager::createAudioPatchInternal(const struct audio_patch *
|
||||
// in config XML to reach the sink so that is can be declared as available.
|
||||
audio_io_handle_t output = AUDIO_IO_HANDLE_NONE;
|
||||
sp<SwAudioOutputDescriptor> outputDesc;
|
||||
|
@ -308,10 +308,10 @@ index 73b574ccfa..4c44acb966 100644
|
|||
AUDIO_STREAM_PATCH;
|
||||
patchBuilder.addSource(srcMixPortConfig);
|
||||
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.h b/services/audiopolicy/managerdefault/AudioPolicyManager.h
|
||||
index 44863eedc2..e8024942fd 100644
|
||||
index da60c06..6b0f1c8 100644
|
||||
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.h
|
||||
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.h
|
||||
@@ -1017,6 +1017,9 @@ protected:
|
||||
@@ -1018,6 +1018,9 @@ protected:
|
||||
|
||||
SoundTriggerSessionCollection mSoundTriggerSessions;
|
||||
|
||||
|
|
|
@ -0,0 +1,82 @@
|
|||
From 3892674371ea7263af2dc60006483ad82e666dc0 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Fri, 13 Jun 2025 18:32:08 -0400
|
||||
Subject: [PATCH 7/8] Revert "Remove framework support for audio HIDL HAL V5"
|
||||
|
||||
This reverts commit 559e9765c5352686c9b3954a3c930f614c338196.
|
||||
---
|
||||
media/libaudiohal/Android.bp | 1 +
|
||||
media/libaudiohal/FactoryHal.cpp | 3 ++-
|
||||
media/libaudiohal/impl/Android.bp | 26 ++++++++++++++++++++++++++
|
||||
3 files changed, 29 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/media/libaudiohal/Android.bp b/media/libaudiohal/Android.bp
|
||||
index 609db07..7d7befa 100644
|
||||
--- a/media/libaudiohal/Android.bp
|
||||
+++ b/media/libaudiohal/Android.bp
|
||||
@@ -23,6 +23,7 @@ cc_library_shared {
|
||||
],
|
||||
|
||||
required: [
|
||||
+ "libaudiohal@5.0",
|
||||
"libaudiohal@6.0",
|
||||
"libaudiohal@7.0",
|
||||
"libaudiohal@7.1",
|
||||
diff --git a/media/libaudiohal/FactoryHal.cpp b/media/libaudiohal/FactoryHal.cpp
|
||||
index 2c30693..15cb297 100644
|
||||
--- a/media/libaudiohal/FactoryHal.cpp
|
||||
+++ b/media/libaudiohal/FactoryHal.cpp
|
||||
@@ -50,11 +50,12 @@ using InterfaceName = std::pair<std::string, std::string>;
|
||||
* This list need to keep sync with AudioHalVersionInfo.VERSIONS in
|
||||
* media/java/android/media/AudioHalVersionInfo.java.
|
||||
*/
|
||||
-static const std::array<AudioHalVersionInfo, 4> sAudioHALVersions = {
|
||||
+static const std::array<AudioHalVersionInfo, 5> sAudioHALVersions = {
|
||||
AudioHalVersionInfo(AudioHalVersionInfo::Type::AIDL, 1, 0),
|
||||
AudioHalVersionInfo(AudioHalVersionInfo::Type::HIDL, 7, 1),
|
||||
AudioHalVersionInfo(AudioHalVersionInfo::Type::HIDL, 7, 0),
|
||||
AudioHalVersionInfo(AudioHalVersionInfo::Type::HIDL, 6, 0),
|
||||
+ AudioHalVersionInfo(AudioHalVersionInfo::Type::HIDL, 5, 0),
|
||||
};
|
||||
|
||||
static const std::map<AudioHalVersionInfo::Type, InterfaceName> sDevicesHALInterfaces = {
|
||||
diff --git a/media/libaudiohal/impl/Android.bp b/media/libaudiohal/impl/Android.bp
|
||||
index 00f3929..3585402 100644
|
||||
--- a/media/libaudiohal/impl/Android.bp
|
||||
+++ b/media/libaudiohal/impl/Android.bp
|
||||
@@ -82,6 +82,32 @@ cc_defaults {
|
||||
],
|
||||
}
|
||||
|
||||
+cc_library_shared {
|
||||
+ name: "libaudiohal@5.0",
|
||||
+ defaults: [
|
||||
+ "libaudiohal_default",
|
||||
+ "libaudiohal_hidl_default",
|
||||
+ ],
|
||||
+ srcs: [
|
||||
+ ":audio_core_hal_client_sources",
|
||||
+ ":audio_effect_hidl_hal_client_sources",
|
||||
+ "EffectsFactoryHalEntry.cpp",
|
||||
+ ],
|
||||
+ shared_libs: [
|
||||
+ "android.hardware.audio.common@5.0",
|
||||
+ "android.hardware.audio.common@5.0-util",
|
||||
+ "android.hardware.audio.effect@5.0",
|
||||
+ "android.hardware.audio.effect@5.0-util",
|
||||
+ "android.hardware.audio@5.0",
|
||||
+ "android.hardware.audio@5.0-util",
|
||||
+ ],
|
||||
+ cflags: [
|
||||
+ "-DMAJOR_VERSION=5",
|
||||
+ "-DMINOR_VERSION=0",
|
||||
+ "-include common/all-versions/VersionMacro.h",
|
||||
+ ],
|
||||
+}
|
||||
+
|
||||
cc_library_shared {
|
||||
name: "libaudiohal@6.0",
|
||||
defaults: [
|
||||
--
|
||||
2.48.1
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
From cf2151431fc074fc8579707f4ca796fe4083585a Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sat, 21 Jun 2025 16:48:04 -0400
|
||||
Subject: [PATCH 8/8] Tell Unihertz/Agold we are not a GSI. Fixes aux cam on
|
||||
Jelly Max
|
||||
|
||||
Change-Id: I0feb30f978d4fd0b71c731dc3de70fda744099df
|
||||
---
|
||||
services/camera/libcameraservice/Android.bp | 1 +
|
||||
.../common/aidl/AidlProviderInfo.cpp | 13 +++++++++++++
|
||||
2 files changed, 14 insertions(+)
|
||||
|
||||
diff --git a/services/camera/libcameraservice/Android.bp b/services/camera/libcameraservice/Android.bp
|
||||
index 0606d74..7b91ad6 100644
|
||||
--- a/services/camera/libcameraservice/Android.bp
|
||||
+++ b/services/camera/libcameraservice/Android.bp
|
||||
@@ -113,6 +113,7 @@ cc_defaults {
|
||||
"android.hardware.camera.provider@2.6",
|
||||
"android.hardware.camera.provider@2.7",
|
||||
"android.hardware.camera.provider-V3-ndk",
|
||||
+ "vendor.mediatek.hardware.agolddaemon-V1-ndk",
|
||||
"libaidlcommonsupport",
|
||||
"libbinderthreadstateutils",
|
||||
"libcameraservice_device_independent",
|
||||
diff --git a/services/camera/libcameraservice/common/aidl/AidlProviderInfo.cpp b/services/camera/libcameraservice/common/aidl/AidlProviderInfo.cpp
|
||||
index b9e8cdd..34059e1 100644
|
||||
--- a/services/camera/libcameraservice/common/aidl/AidlProviderInfo.cpp
|
||||
+++ b/services/camera/libcameraservice/common/aidl/AidlProviderInfo.cpp
|
||||
@@ -34,6 +34,8 @@
|
||||
#include <utils/SessionConfigurationUtils.h>
|
||||
#include <utils/Trace.h>
|
||||
|
||||
+#include <aidl/vendor/mediatek/hardware/agolddaemon/IAgoldDaemon.h>
|
||||
+
|
||||
namespace {
|
||||
const bool kEnableLazyHal(property_get_bool("ro.camera.enableLazyHal", false));
|
||||
} // anonymous namespace
|
||||
@@ -159,6 +161,17 @@ status_t AidlProviderInfo::initializeAidlProvider(
|
||||
__FUNCTION__, mProviderName.c_str(), mDeviceState);
|
||||
notifyDeviceStateChange(currentDeviceState);
|
||||
|
||||
+
|
||||
+ if (true) {
|
||||
+ auto svc = aidl::vendor::mediatek::hardware::agolddaemon::IAgoldDaemon::fromBinder(
|
||||
+ ndk::SpAIBinder(AServiceManager_checkService("vendor.mediatek.hardware.agolddaemon.IAgoldDaemon/default")));
|
||||
+
|
||||
+ if (svc != nullptr) {
|
||||
+ ALOGE("Got agold aidl hal");
|
||||
+ svc->setNotGsi("NotGsi");
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
res = setUpVendorTags();
|
||||
if (res != OK) {
|
||||
ALOGE("%s: Unable to set up vendor tags from provider '%s'",
|
||||
--
|
||||
2.48.1
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
From 3c6a1bbffa88d93be209b41b911f192618a3b8e6 Mon Sep 17 00:00:00 2001
|
||||
From 6f7346b355fdf0994e6d930cf0e6b254d82475fe Mon Sep 17 00:00:00 2001
|
||||
From: Peter Cai <peter@typeblog.net>
|
||||
Date: Tue, 12 Oct 2021 21:37:22 -0400
|
||||
Subject: [PATCH 01/11] PackageParser: support glob matching for properties
|
||||
|
@ -9,7 +9,7 @@ Needed to make phh's vendor overlays work
|
|||
1 file changed, 10 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
|
||||
index 4b579e7db..8176cf8e8 100644
|
||||
index 0507fb8b00b8..4d0a2e440720 100644
|
||||
--- a/core/java/android/content/pm/PackageParser.java
|
||||
+++ b/core/java/android/content/pm/PackageParser.java
|
||||
@@ -2545,8 +2545,16 @@ public class PackageParser {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 6d3e460a5e0df0f6ac2f653d0577560a2c8f32d3 Mon Sep 17 00:00:00 2001
|
||||
From bfa9602d23331fff304f90f2505facdbece2208a Mon Sep 17 00:00:00 2001
|
||||
From: Peter Cai <peter@typeblog.net>
|
||||
Date: Fri, 2 Sep 2022 21:36:06 -0400
|
||||
Subject: [PATCH 02/11] FrameworkParsingPackageUtils: Add glob matching support
|
||||
|
@ -13,7 +13,7 @@ Change-Id: Ie8679c0ffe03cead4a68bd2d0eb429f05af2d417
|
|||
1 file changed, 10 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java b/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java
|
||||
index e30f871b6..a2979f695 100644
|
||||
index 153dd9a93490..900151440ca9 100644
|
||||
--- a/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java
|
||||
+++ b/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java
|
||||
@@ -215,8 +215,16 @@ public class FrameworkParsingPackageUtils {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 176fce488f4206d10e3d4873bce3a43a97540890 Mon Sep 17 00:00:00 2001
|
||||
From 9924588f49088c1b4eeba9a113c19de2874ec832 Mon Sep 17 00:00:00 2001
|
||||
From: Oliver Scott <olivercscott@gmail.com>
|
||||
Date: Thu, 8 Jul 2021 10:41:43 -0400
|
||||
Subject: [PATCH 03/11] Global VPN feature [1/2]
|
||||
|
@ -22,16 +22,16 @@ Date: 2021-08-27 16:30:22 -0400
|
|||
Change-Id: I42616cc1f4e39e1dad739d81f6d5c55e218be995
|
||||
Signed-off-by: Mohammad Hasan Keramat J <ikeramat@protonmail.com>
|
||||
---
|
||||
core/java/android/provider/Settings.java | 6 +++
|
||||
.../policy/SecurityControllerImpl.java | 8 +++-
|
||||
.../com/android/server/connectivity/Vpn.java | 37 +++++++++++++++++--
|
||||
3 files changed, 46 insertions(+), 5 deletions(-)
|
||||
core/java/android/provider/Settings.java | 6 ++++
|
||||
.../policy/SecurityControllerImpl.java | 8 ++++-
|
||||
.../com/android/server/connectivity/Vpn.java | 35 ++++++++++++++++---
|
||||
3 files changed, 44 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
|
||||
index 4acb6312f..dbc9845a8 100644
|
||||
index e7bca1419418..2d05e3e3e17f 100644
|
||||
--- a/core/java/android/provider/Settings.java
|
||||
+++ b/core/java/android/provider/Settings.java
|
||||
@@ -18232,6 +18232,12 @@ public final class Settings {
|
||||
@@ -18572,6 +18572,12 @@ public final class Settings {
|
||||
CLOCKWORK_HOME_READY,
|
||||
};
|
||||
|
||||
|
@ -45,10 +45,10 @@ index 4acb6312f..dbc9845a8 100644
|
|||
* Keys we no longer back up under the current schema, but want to continue to
|
||||
* process when restoring historical backup datasets.
|
||||
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityControllerImpl.java
|
||||
index f39762766..c7dc809c9 100644
|
||||
index ab5b3499d9c2..38eff0039fb6 100644
|
||||
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityControllerImpl.java
|
||||
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityControllerImpl.java
|
||||
@@ -44,6 +44,7 @@ import android.os.Handler;
|
||||
@@ -45,6 +45,7 @@ import android.os.Handler;
|
||||
import android.os.RemoteException;
|
||||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
|
@ -56,7 +56,7 @@ index f39762766..c7dc809c9 100644
|
|||
import android.security.KeyChain;
|
||||
import android.util.ArrayMap;
|
||||
import android.util.Log;
|
||||
@@ -383,8 +384,13 @@ public class SecurityControllerImpl implements SecurityController {
|
||||
@@ -393,8 +394,13 @@ public class SecurityControllerImpl implements SecurityController {
|
||||
@Override
|
||||
public void onUserSwitched(int newUserId) {
|
||||
mCurrentUserId = newUserId;
|
||||
|
@ -72,7 +72,7 @@ index f39762766..c7dc809c9 100644
|
|||
mVpnUserId = newUserInfo.restrictedProfileParentId;
|
||||
} else {
|
||||
diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java
|
||||
index 4c5f65285..1c546be6f 100644
|
||||
index aa985907071f..9207bfea3b01 100644
|
||||
--- a/services/core/java/com/android/server/connectivity/Vpn.java
|
||||
+++ b/services/core/java/com/android/server/connectivity/Vpn.java
|
||||
@@ -778,6 +778,15 @@ public class Vpn {
|
||||
|
@ -91,7 +91,7 @@ index 4c5f65285..1c546be6f 100644
|
|||
/**
|
||||
* Checks if a VPN app supports always-on mode.
|
||||
*
|
||||
@@ -1720,6 +1729,7 @@ public class Vpn {
|
||||
@@ -1724,6 +1733,7 @@ public class Vpn {
|
||||
try {
|
||||
// Restricted users are not allowed to create VPNs, they are tied to Owner
|
||||
enforceNotRestrictedUser();
|
||||
|
@ -99,7 +99,7 @@ index 4c5f65285..1c546be6f 100644
|
|||
|
||||
final PackageManager packageManager = mUserIdContext.getPackageManager();
|
||||
if (packageManager == null) {
|
||||
@@ -1870,7 +1880,7 @@ public class Vpn {
|
||||
@@ -1874,7 +1884,7 @@ public class Vpn {
|
||||
addUserToRanges(ranges, userId, allowedApplications, disallowedApplications);
|
||||
|
||||
// If the user can have restricted profiles, assign all its restricted profiles too
|
||||
|
@ -108,7 +108,7 @@ index 4c5f65285..1c546be6f 100644
|
|||
final long token = Binder.clearCallingIdentity();
|
||||
List<UserInfo> users;
|
||||
try {
|
||||
@@ -1879,7 +1889,8 @@ public class Vpn {
|
||||
@@ -1883,7 +1893,8 @@ public class Vpn {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
for (UserInfo user : users) {
|
||||
|
@ -118,27 +118,25 @@ index 4c5f65285..1c546be6f 100644
|
|||
addUserToRanges(ranges, user.id, allowedApplications, disallowedApplications);
|
||||
}
|
||||
}
|
||||
@@ -1960,7 +1971,8 @@ public class Vpn {
|
||||
public void onUserAdded(int userId) {
|
||||
// If the user is restricted tie them to the parent user's VPN
|
||||
UserInfo user = mUserManager.getUserInfo(userId);
|
||||
@@ -1968,7 +1979,7 @@ public class Vpn {
|
||||
Log.e(TAG, "Can not retrieve UserInfo for userId=" + userId);
|
||||
return;
|
||||
}
|
||||
- if (user.isRestricted() && user.restrictedProfileParentId == mUserId) {
|
||||
+ if ((user.isRestricted() && user.restrictedProfileParentId == mUserId) ||
|
||||
+ isGlobalVpn()) {
|
||||
+ if ((user.isRestricted() && user.restrictedProfileParentId == mUserId) || isGlobalVpn()) {
|
||||
synchronized(Vpn.this) {
|
||||
final Set<Range<Integer>> existingRanges = mNetworkCapabilities.getUids();
|
||||
if (existingRanges != null) {
|
||||
@@ -1989,7 +2001,8 @@ public class Vpn {
|
||||
public void onUserRemoved(int userId) {
|
||||
// clean up if restricted
|
||||
UserInfo user = mUserManager.getUserInfo(userId);
|
||||
@@ -2005,7 +2016,7 @@ public class Vpn {
|
||||
Log.e(TAG, "Can not retrieve UserInfo for userId=" + userId);
|
||||
return;
|
||||
}
|
||||
- if (user.isRestricted() && user.restrictedProfileParentId == mUserId) {
|
||||
+ if ((user.isRestricted() && user.restrictedProfileParentId == mUserId) ||
|
||||
+ isGlobalVpn()) {
|
||||
+ if ((user.isRestricted() && user.restrictedProfileParentId == mUserId) || isGlobalVpn()) {
|
||||
synchronized(Vpn.this) {
|
||||
final Set<Range<Integer>> existingRanges = mNetworkCapabilities.getUids();
|
||||
if (existingRanges != null) {
|
||||
@@ -2414,6 +2427,17 @@ public class Vpn {
|
||||
@@ -2430,6 +2441,17 @@ public class Vpn {
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -156,7 +154,7 @@ index 4c5f65285..1c546be6f 100644
|
|||
/**
|
||||
* Start legacy VPN, controlling native daemons as needed. Creates a
|
||||
* secondary thread to perform connection work, returning quickly.
|
||||
@@ -2497,6 +2521,7 @@ public class Vpn {
|
||||
@@ -2513,6 +2535,7 @@ public class Vpn {
|
||||
new UserHandle(mUserId))) {
|
||||
throw new SecurityException("Restricted users cannot establish VPNs");
|
||||
}
|
||||
|
@ -164,7 +162,7 @@ index 4c5f65285..1c546be6f 100644
|
|||
|
||||
// Load certificates.
|
||||
String privateKey = "";
|
||||
@@ -4039,6 +4064,7 @@ public class Vpn {
|
||||
@@ -4055,6 +4078,7 @@ public class Vpn {
|
||||
|
||||
verifyCallingUidAndPackage(packageName);
|
||||
enforceNotRestrictedUser();
|
||||
|
@ -172,7 +170,7 @@ index 4c5f65285..1c546be6f 100644
|
|||
validateRequiredFeatures(profile);
|
||||
|
||||
if (profile.isRestrictedToTestNetworks) {
|
||||
@@ -4081,6 +4107,7 @@ public class Vpn {
|
||||
@@ -4097,6 +4121,7 @@ public class Vpn {
|
||||
|
||||
verifyCallingUidAndPackage(packageName);
|
||||
enforceNotRestrictedUser();
|
||||
|
@ -180,7 +178,7 @@ index 4c5f65285..1c546be6f 100644
|
|||
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
@@ -4150,6 +4177,7 @@ public class Vpn {
|
||||
@@ -4166,6 +4191,7 @@ public class Vpn {
|
||||
requireNonNull(packageName, "No package name provided");
|
||||
|
||||
enforceNotRestrictedUser();
|
||||
|
@ -188,7 +186,7 @@ index 4c5f65285..1c546be6f 100644
|
|||
|
||||
// Prepare VPN for startup
|
||||
if (!prepare(packageName, null /* newPackage */, VpnManager.TYPE_VPN_PLATFORM)) {
|
||||
@@ -4272,6 +4300,7 @@ public class Vpn {
|
||||
@@ -4288,6 +4314,7 @@ public class Vpn {
|
||||
requireNonNull(packageName, "No package name provided");
|
||||
|
||||
enforceNotRestrictedUser();
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From cca38c720efc73912913a59be2a3d261017c2863 Mon Sep 17 00:00:00 2001
|
||||
From 47ebd60dcd07f04fb3e1cc33f590e5e8ba22b640 Mon Sep 17 00:00:00 2001
|
||||
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||
Date: Wed, 2 Aug 2023 20:59:53 +0800
|
||||
Subject: [PATCH 04/11] Restore getSimStateForSlotIndex in SubscriptionManager
|
||||
|
@ -11,10 +11,10 @@ Change-Id: I41bac57c68055f369232359a464642daab94403b
|
|||
1 file changed, 14 insertions(+)
|
||||
|
||||
diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java
|
||||
index e0af22369..2175b3d96 100644
|
||||
index e04d285d6632..36826e8ff43d 100644
|
||||
--- a/telephony/java/android/telephony/SubscriptionManager.java
|
||||
+++ b/telephony/java/android/telephony/SubscriptionManager.java
|
||||
@@ -2913,6 +2913,20 @@ public class SubscriptionManager {
|
||||
@@ -2968,6 +2968,20 @@ public class SubscriptionManager {
|
||||
return TelephonyManager.getDefault().isNetworkRoaming(subId);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From f9a12ae1920588f2d75849462abf7d2ba9d0373b Mon Sep 17 00:00:00 2001
|
||||
From 3f785dd182115fcb0a4197294e2bda4d0bd0247c Mon Sep 17 00:00:00 2001
|
||||
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||
Date: Sat, 12 Aug 2023 20:11:17 +0800
|
||||
Subject: [PATCH 05/11] Add runWithCleanCallingIdentity variant with both
|
||||
|
@ -12,7 +12,7 @@ Change-Id: If444290787025e130dce4bdeaf92372ae32793fe
|
|||
1 file changed, 30 insertions(+)
|
||||
|
||||
diff --git a/telephony/common/com/android/internal/telephony/util/TelephonyUtils.java b/telephony/common/com/android/internal/telephony/util/TelephonyUtils.java
|
||||
index 422433891..3bbecf0f2 100644
|
||||
index 4224338918f4..3bbecf0f2065 100644
|
||||
--- a/telephony/common/com/android/internal/telephony/util/TelephonyUtils.java
|
||||
+++ b/telephony/common/com/android/internal/telephony/util/TelephonyUtils.java
|
||||
@@ -47,7 +47,9 @@ import com.android.internal.telephony.ITelephony;
|
||||
|
|
|
@ -1,42 +0,0 @@
|
|||
From 45736b5d760fdac0ec405f1620942ff9a7c023d9 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Cai <peter@typeblog.net>
|
||||
Date: Sun, 22 Sep 2024 22:53:01 -0400
|
||||
Subject: [PATCH 06/11] AuthService: HIDL and AIDL fingerprint services are
|
||||
mutually exclusive
|
||||
|
||||
...and make sure that we prioritize AIDL over HIDL. This is essential
|
||||
for GSIs to boot on newer devices while having the HIDL property set for
|
||||
compatibility with older ones.
|
||||
|
||||
Change-Id: I834297a44674820d813d8f6d376dfd294f084f3b
|
||||
---
|
||||
.../com/android/server/biometrics/AuthService.java | 10 ++++------
|
||||
1 file changed, 4 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/biometrics/AuthService.java b/services/core/java/com/android/server/biometrics/AuthService.java
|
||||
index 2d802b21c..0730d634f 100644
|
||||
--- a/services/core/java/com/android/server/biometrics/AuthService.java
|
||||
+++ b/services/core/java/com/android/server/biometrics/AuthService.java
|
||||
@@ -908,15 +908,13 @@ public class AuthService extends SystemService {
|
||||
|
||||
handlerProvider.getFingerprintHandler().post(() -> {
|
||||
final FingerprintSensorConfigurations mFingerprintSensorConfigurations =
|
||||
- new FingerprintSensorConfigurations(!(hidlConfigStrings != null
|
||||
- && hidlConfigStrings.length > 0));
|
||||
-
|
||||
- if (hidlConfigStrings != null && hidlConfigStrings.length > 0) {
|
||||
- mFingerprintSensorConfigurations.addHidlSensors(hidlConfigStrings, context);
|
||||
- }
|
||||
+ new FingerprintSensorConfigurations(fingerprintAidlInstances != null
|
||||
+ && fingerprintAidlInstances.length > 0);
|
||||
|
||||
if (fingerprintAidlInstances != null && fingerprintAidlInstances.length > 0) {
|
||||
mFingerprintSensorConfigurations.addAidlSensors(fingerprintAidlInstances);
|
||||
+ } else if (hidlConfigStrings != null && hidlConfigStrings.length > 0) {
|
||||
+ mFingerprintSensorConfigurations.addHidlSensors(hidlConfigStrings, context);
|
||||
}
|
||||
|
||||
if (fingerprintService != null) {
|
||||
--
|
||||
2.48.1
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
From 6cd16322e3d44ea9d96c74af96a967e48fa88d44 Mon Sep 17 00:00:00 2001
|
||||
From 412a850139e75eada66aed3f50847051835bf8c9 Mon Sep 17 00:00:00 2001
|
||||
From: dhacker29 <dhackerdvm@gmail.com>
|
||||
Date: Tue, 24 Nov 2015 01:53:47 -0500
|
||||
Subject: [PATCH 07/11] fw/b: Use ro.build.version.incremental to signal OTA
|
||||
Subject: [PATCH 06/11] fw/b: Use ro.build.version.incremental to signal OTA
|
||||
upgrades
|
||||
|
||||
Co-authored-by: maxwen <max.weninger@gmail.com>
|
||||
|
@ -19,7 +19,7 @@ Change-Id: If0eb969ba509981f9209ffa37a949d9042ef4c2a
|
|||
7 files changed, 11 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/core/java/android/app/admin/SystemUpdateInfo.java b/core/java/android/app/admin/SystemUpdateInfo.java
|
||||
index 9e6c91f4e..7459b0e05 100644
|
||||
index 9e6c91f4ec31..7459b0e05e3a 100644
|
||||
--- a/core/java/android/app/admin/SystemUpdateInfo.java
|
||||
+++ b/core/java/android/app/admin/SystemUpdateInfo.java
|
||||
@@ -133,7 +133,7 @@ public final class SystemUpdateInfo implements Parcelable {
|
||||
|
@ -41,7 +41,7 @@ index 9e6c91f4e..7459b0e05 100644
|
|||
}
|
||||
try {
|
||||
diff --git a/core/java/android/content/pm/PackagePartitions.java b/core/java/android/content/pm/PackagePartitions.java
|
||||
index ff80e614b..da3b68ecf 100644
|
||||
index ff80e614be58..da3b68ecf789 100644
|
||||
--- a/core/java/android/content/pm/PackagePartitions.java
|
||||
+++ b/core/java/android/content/pm/PackagePartitions.java
|
||||
@@ -131,7 +131,7 @@ public class PackagePartitions {
|
||||
|
@ -54,7 +54,7 @@ index ff80e614b..da3b68ecf 100644
|
|||
}
|
||||
|
||||
diff --git a/services/appwidget/java/com/android/server/appwidget/AppWidgetXmlUtil.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetXmlUtil.java
|
||||
index ce9130ad5..737ecae1c 100644
|
||||
index ce9130ad5cbf..737ecae1cc94 100644
|
||||
--- a/services/appwidget/java/com/android/server/appwidget/AppWidgetXmlUtil.java
|
||||
+++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetXmlUtil.java
|
||||
@@ -117,7 +117,7 @@ public class AppWidgetXmlUtil {
|
||||
|
@ -76,10 +76,10 @@ index ce9130ad5..737ecae1c 100644
|
|||
}
|
||||
final AppWidgetProviderInfo info = new AppWidgetProviderInfo();
|
||||
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
|
||||
index aadf11227..8b0c4f42b 100644
|
||||
index b60812c1bb53..9e1843f3a91e 100644
|
||||
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
|
||||
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
|
||||
@@ -2239,7 +2239,8 @@ public class PackageManagerService implements PackageSender, TestUtilityService
|
||||
@@ -2244,7 +2244,8 @@ public class PackageManagerService implements PackageSender, TestUtilityService
|
||||
if (mIsUpgrade) {
|
||||
PackageManagerServiceUtils.logCriticalInfo(Log.INFO,
|
||||
"Upgrading from " + ver.fingerprint + " (" + ver.buildFingerprint + ") to "
|
||||
|
@ -89,7 +89,7 @@ index aadf11227..8b0c4f42b 100644
|
|||
}
|
||||
mPriorSdkVersion = mIsUpgrade ? ver.sdkVersion : -1;
|
||||
mInitAppsHelper = new InitAppsHelper(this, mApexManager, mInstallPackageHelper,
|
||||
@@ -2397,7 +2398,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
|
||||
@@ -2402,7 +2403,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
|
||||
| Installer.FLAG_CLEAR_APP_DATA_KEEP_ART_PROFILES);
|
||||
}
|
||||
}
|
||||
|
@ -99,10 +99,10 @@ index aadf11227..8b0c4f42b 100644
|
|||
}
|
||||
|
||||
diff --git a/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java b/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java
|
||||
index 7af39f74d..4bd83e739 100644
|
||||
index 2ecdb0b1a02a..d9d935a20058 100644
|
||||
--- a/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java
|
||||
+++ b/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java
|
||||
@@ -1400,8 +1400,6 @@ public class PackageManagerServiceUtils {
|
||||
@@ -1383,8 +1383,6 @@ public class PackageManagerServiceUtils {
|
||||
// that starts with "eng." to signify that this is an engineering build and not
|
||||
// destined for release.
|
||||
if (isUserDebugBuild && incrementalVersion.startsWith("eng.")) {
|
||||
|
@ -111,7 +111,7 @@ index 7af39f74d..4bd83e739 100644
|
|||
// Heuristic: If the /system directory has been modified recently due to an "adb sync"
|
||||
// or a regular make, then blow away the cache. Note that mtimes are *NOT* reliable
|
||||
// in general and should not be used for production changes. In this specific case,
|
||||
@@ -1409,6 +1407,7 @@ public class PackageManagerServiceUtils {
|
||||
@@ -1392,6 +1390,7 @@ public class PackageManagerServiceUtils {
|
||||
File frameworkDir =
|
||||
new File(Environment.getRootDirectory(), "framework");
|
||||
if (cacheDir.lastModified() < frameworkDir.lastModified()) {
|
||||
|
@ -120,10 +120,10 @@ index 7af39f74d..4bd83e739 100644
|
|||
cacheDir = FileUtils.createDir(cacheBaseDir, cacheName);
|
||||
}
|
||||
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
|
||||
index 485a28070..78086791a 100644
|
||||
index 92257f1ee2dd..bf226ca39054 100644
|
||||
--- a/services/core/java/com/android/server/pm/Settings.java
|
||||
+++ b/services/core/java/com/android/server/pm/Settings.java
|
||||
@@ -485,7 +485,7 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile
|
||||
@@ -486,7 +486,7 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile
|
||||
public void forceCurrent() {
|
||||
sdkVersion = Build.VERSION.SDK_INT;
|
||||
databaseVersion = CURRENT_DATABASE_VERSION;
|
||||
|
@ -133,10 +133,10 @@ index 485a28070..78086791a 100644
|
|||
}
|
||||
}
|
||||
diff --git a/services/core/java/com/android/server/pm/ShortcutService.java b/services/core/java/com/android/server/pm/ShortcutService.java
|
||||
index 1052c94d7..21481d216 100644
|
||||
index 66e9e772e063..f539cc14845a 100644
|
||||
--- a/services/core/java/com/android/server/pm/ShortcutService.java
|
||||
+++ b/services/core/java/com/android/server/pm/ShortcutService.java
|
||||
@@ -5259,7 +5259,7 @@ public class ShortcutService extends IShortcutService.Stub {
|
||||
@@ -5089,7 +5089,7 @@ public class ShortcutService extends IShortcutService.Stub {
|
||||
|
||||
// Injection point.
|
||||
String injectBuildFingerprint() {
|
||||
|
@ -144,7 +144,7 @@ index 1052c94d7..21481d216 100644
|
|||
+ return Build.VERSION.INCREMENTAL;
|
||||
}
|
||||
|
||||
final void wtf(String message) {
|
||||
// Injection point.
|
||||
--
|
||||
2.48.1
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
From 8b3f59482cf7f27406d9a8c9ef717e6bc70cfb88 Mon Sep 17 00:00:00 2001
|
||||
From 51dd8381b58447069c27238be42df73a0310dac8 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Cai <peter@typeblog.net>
|
||||
Date: Sat, 21 Dec 2024 11:04:35 -0500
|
||||
Subject: [PATCH 08/11] Add support for treating virtual biometric sensors as
|
||||
Subject: [PATCH 07/11] Add support for treating virtual biometric sensors as
|
||||
real ones
|
||||
|
||||
This happens on Unihertz Jelly Max. They forgot to change their sensor
|
||||
|
@ -13,7 +13,7 @@ Change-Id: I106d41cd078e6b1e354c72ec35fa240a44397c5e
|
|||
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/core/java/android/hardware/fingerprint/FingerprintSensorConfigurations.java b/core/java/android/hardware/fingerprint/FingerprintSensorConfigurations.java
|
||||
index 48c5887d8..bec56d9a6 100644
|
||||
index 586830c8d189..d7fcfdb6df2b 100644
|
||||
--- a/core/java/android/hardware/fingerprint/FingerprintSensorConfigurations.java
|
||||
+++ b/core/java/android/hardware/fingerprint/FingerprintSensorConfigurations.java
|
||||
@@ -29,6 +29,7 @@ import android.os.Parcel;
|
|
@ -1,7 +1,7 @@
|
|||
From 2f4c395069d1dfd7cce9a896f17868aa4aaf91c4 Mon Sep 17 00:00:00 2001
|
||||
From 6ffe64fa1e8a012357eb65dcf5ada3e060264a22 Mon Sep 17 00:00:00 2001
|
||||
From: Pranav Vashi <neobuddy89@gmail.com>
|
||||
Date: Sat, 21 Sep 2024 13:44:09 +0530
|
||||
Subject: [PATCH 09/11] WebView: Add check before setting default or fallback
|
||||
Subject: [PATCH 08/11] WebView: Add check before setting default or fallback
|
||||
provider
|
||||
|
||||
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
|
||||
|
@ -10,7 +10,7 @@ Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
|
|||
1 file changed, 26 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/webkit/WebViewUpdateServiceImpl2.java b/services/core/java/com/android/server/webkit/WebViewUpdateServiceImpl2.java
|
||||
index 9e8dc2690..9e415bf63 100644
|
||||
index 9e8dc2690a9d..9e415bf63583 100644
|
||||
--- a/services/core/java/com/android/server/webkit/WebViewUpdateServiceImpl2.java
|
||||
+++ b/services/core/java/com/android/server/webkit/WebViewUpdateServiceImpl2.java
|
||||
@@ -15,6 +15,7 @@
|
|
@ -1,7 +1,7 @@
|
|||
From 30058cdf576d1496ca63560f878eacf940e36ea2 Mon Sep 17 00:00:00 2001
|
||||
From 2d73a8d2aaee7e5f2d7fbb1b691a2e4b4b0c73d3 Mon Sep 17 00:00:00 2001
|
||||
From: LuK1337 <priv.luk@gmail.com>
|
||||
Date: Mon, 19 Feb 2024 16:20:04 +0100
|
||||
Subject: [PATCH 10/11] Allow signature spoofing for microG Companion/Services
|
||||
Subject: [PATCH 09/11] Allow signature spoofing for microG Companion/Services
|
||||
|
||||
This patch enables signature spoofing when the following conditions are
|
||||
met:
|
||||
|
@ -23,7 +23,7 @@ Change-Id: I8fc82ed266a2cc59636b662c7ea7e29c94f509b5
|
|||
create mode 100644 services/core/jni/com_android_server_pm_ComputerEngine.cpp
|
||||
|
||||
diff --git a/services/core/java/com/android/server/pm/AppsFilterImpl.java b/services/core/java/com/android/server/pm/AppsFilterImpl.java
|
||||
index cc4c2b5bf..57263da93 100644
|
||||
index 068d68d25017..befbf15e7793 100644
|
||||
--- a/services/core/java/com/android/server/pm/AppsFilterImpl.java
|
||||
+++ b/services/core/java/com/android/server/pm/AppsFilterImpl.java
|
||||
@@ -36,6 +36,7 @@ import static com.android.server.pm.AppsFilterUtils.canQueryAsUpdateOwner;
|
||||
|
@ -34,7 +34,7 @@ index cc4c2b5bf..57263da93 100644
|
|||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
@@ -599,6 +600,7 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable,
|
||||
@@ -604,6 +605,7 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable,
|
||||
newIsForceQueryable = mForceQueryable.contains(newPkgSetting.getAppId())
|
||||
/* shared user that is already force queryable */
|
||||
|| newPkgSetting.isForceQueryableOverride() /* adb override */
|
||||
|
@ -43,7 +43,7 @@ index cc4c2b5bf..57263da93 100644
|
|||
|| newPkg.isForceQueryable()
|
||||
|| ArrayUtils.contains(mForceQueryableByDevicePackageNames,
|
||||
diff --git a/services/core/java/com/android/server/pm/ComputerEngine.java b/services/core/java/com/android/server/pm/ComputerEngine.java
|
||||
index be2f58dc2..3eb3df412 100644
|
||||
index 38ac0473d1a3..f9950d438b0e 100644
|
||||
--- a/services/core/java/com/android/server/pm/ComputerEngine.java
|
||||
+++ b/services/core/java/com/android/server/pm/ComputerEngine.java
|
||||
@@ -103,6 +103,7 @@ import android.content.pm.UserPackage;
|
||||
|
@ -136,7 +136,7 @@ index be2f58dc2..3eb3df412 100644
|
|||
} else if ((flags & (MATCH_UNINSTALLED_PACKAGES | MATCH_ARCHIVED_PACKAGES)) != 0
|
||||
&& PackageUserStateUtils.isAvailable(state, flags)) {
|
||||
diff --git a/services/core/jni/Android.bp b/services/core/jni/Android.bp
|
||||
index 4c0cee404..a4d192c8e 100644
|
||||
index 2606a5aca277..9057f4fe107f 100644
|
||||
--- a/services/core/jni/Android.bp
|
||||
+++ b/services/core/jni/Android.bp
|
||||
@@ -71,6 +71,7 @@ cc_library_static {
|
||||
|
@ -147,7 +147,7 @@ index 4c0cee404..a4d192c8e 100644
|
|||
"com_android_server_pm_PackageManagerShellCommandDataLoader.cpp",
|
||||
"com_android_server_sensor_SensorService.cpp",
|
||||
"com_android_server_wm_TaskFpsCallbackController.cpp",
|
||||
@@ -94,6 +95,12 @@ cc_library_static {
|
||||
@@ -95,6 +96,12 @@ cc_library_static {
|
||||
header_libs: [
|
||||
"bionic_libc_platform_headers",
|
||||
],
|
||||
|
@ -162,7 +162,7 @@ index 4c0cee404..a4d192c8e 100644
|
|||
cc_defaults {
|
||||
diff --git a/services/core/jni/com_android_server_pm_ComputerEngine.cpp b/services/core/jni/com_android_server_pm_ComputerEngine.cpp
|
||||
new file mode 100644
|
||||
index 000000000..bbe298097
|
||||
index 000000000000..bbe298097a2a
|
||||
--- /dev/null
|
||||
+++ b/services/core/jni/com_android_server_pm_ComputerEngine.cpp
|
||||
@@ -0,0 +1,38 @@
|
||||
|
@ -205,10 +205,10 @@ index 000000000..bbe298097
|
|||
+
|
||||
+} // namespace android
|
||||
diff --git a/services/core/jni/onload.cpp b/services/core/jni/onload.cpp
|
||||
index 09fd8d4ac..0d61a13d2 100644
|
||||
index 569383e71a06..d9b9542d86fe 100644
|
||||
--- a/services/core/jni/onload.cpp
|
||||
+++ b/services/core/jni/onload.cpp
|
||||
@@ -58,6 +58,7 @@ int register_android_server_utils_AnrTimer(JNIEnv *env);
|
||||
@@ -59,6 +59,7 @@ int register_android_server_utils_AnrTimer(JNIEnv *env);
|
||||
int register_android_server_utils_LazyJniRegistrar(JNIEnv* env);
|
||||
int register_com_android_server_soundtrigger_middleware_AudioSessionProviderImpl(JNIEnv* env);
|
||||
int register_com_android_server_soundtrigger_middleware_ExternalCaptureStateTracker(JNIEnv* env);
|
||||
|
@ -216,7 +216,7 @@ index 09fd8d4ac..0d61a13d2 100644
|
|||
int register_android_server_com_android_server_pm_PackageManagerShellCommandDataLoader(JNIEnv* env);
|
||||
int register_android_server_AdbDebuggingManager(JNIEnv* env);
|
||||
int register_android_server_FaceService(JNIEnv* env);
|
||||
@@ -124,6 +125,7 @@ extern "C" jint JNI_OnLoad(JavaVM* vm, void* /* reserved */)
|
||||
@@ -127,6 +128,7 @@ extern "C" jint JNI_OnLoad(JavaVM* vm, void* /* reserved */)
|
||||
register_android_server_utils_LazyJniRegistrar(env);
|
||||
register_com_android_server_soundtrigger_middleware_AudioSessionProviderImpl(env);
|
||||
register_com_android_server_soundtrigger_middleware_ExternalCaptureStateTracker(env);
|
|
@ -1,7 +1,7 @@
|
|||
From 31cfef8a4245e49b99fc36cc8eaf7b0452ae9985 Mon Sep 17 00:00:00 2001
|
||||
From 0c8b6d82028fe1a2bd172053a1387a5708bb66b2 Mon Sep 17 00:00:00 2001
|
||||
From: Jonathan Klee <jonathan.klee@e.email>
|
||||
Date: Thu, 12 Dec 2024 15:27:57 +0100
|
||||
Subject: [PATCH 11/11] Allow spoofing signingInfo for microG
|
||||
Subject: [PATCH 10/11] Allow spoofing signingInfo for microG
|
||||
Companion/Services
|
||||
|
||||
- Spoof PackageInfo signingInfo + signatures so that
|
||||
|
@ -14,7 +14,7 @@ Signed-off-by: althafvly <althafvly@gmail.com>
|
|||
1 file changed, 13 insertions(+)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/pm/ComputerEngine.java b/services/core/java/com/android/server/pm/ComputerEngine.java
|
||||
index 3eb3df412..6f5813065 100644
|
||||
index f9950d438b0e..7117beecff1c 100644
|
||||
--- a/services/core/java/com/android/server/pm/ComputerEngine.java
|
||||
+++ b/services/core/java/com/android/server/pm/ComputerEngine.java
|
||||
@@ -170,6 +170,7 @@ import java.io.FileOutputStream;
|
|
@ -0,0 +1,37 @@
|
|||
From edb6d1c2d1fc4a8f890ec253844db569c846523e Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sat, 3 Dec 2022 17:13:24 -0500
|
||||
Subject: [PATCH 11/11] Set old fingerprint sensors to security "strong"
|
||||
|
||||
This allows removing config_biometric_sensors from overlays, which led
|
||||
to Pixels not booting, because they are using AIDL biometric sensor, and
|
||||
despite its name, config_biometric_sensors is HIDL-specific
|
||||
---
|
||||
.../core/java/com/android/server/biometrics/AuthService.java | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/biometrics/AuthService.java b/services/core/java/com/android/server/biometrics/AuthService.java
|
||||
index b6768c9c087a..bc9684974fca 100644
|
||||
--- a/services/core/java/com/android/server/biometrics/AuthService.java
|
||||
+++ b/services/core/java/com/android/server/biometrics/AuthService.java
|
||||
@@ -753,7 +753,7 @@ public class AuthService extends SystemService {
|
||||
final int firstApiLevel = SystemProperties.getInt(SYSPROP_FIRST_API_LEVEL, 0);
|
||||
final int apiLevel = SystemProperties.getInt(SYSPROP_API_LEVEL, firstApiLevel);
|
||||
String[] configStrings = mInjector.getConfiguration(getContext());
|
||||
- if (configStrings.length == 0 && apiLevel == Build.VERSION_CODES.R) {
|
||||
+ if (configStrings.length == 0 && apiLevel <= Build.VERSION_CODES.R) {
|
||||
// For backwards compatibility with R where biometrics could work without being
|
||||
// configured in config_biometric_sensors. In the absence of a vendor provided
|
||||
// configuration, we assume the weakest biometric strength (i.e. convenience).
|
||||
@@ -938,7 +938,7 @@ public class AuthService extends SystemService {
|
||||
if (pm.hasSystemFeature(PackageManager.FEATURE_FACE)) {
|
||||
modalities.add(String.valueOf(BiometricAuthenticator.TYPE_FACE));
|
||||
}
|
||||
- final String strength = String.valueOf(Authenticators.BIOMETRIC_CONVENIENCE);
|
||||
+ final String strength = String.valueOf(Authenticators.BIOMETRIC_STRONG);
|
||||
final String[] configStrings = new String[modalities.size()];
|
||||
for (int i = 0; i < modalities.size(); ++i) {
|
||||
final String id = String.valueOf(i);
|
||||
--
|
||||
2.48.1
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
From b02d33fe80bed126c8caeebb51ced31e9b0c710e Mon Sep 17 00:00:00 2001
|
||||
From b20bb707e2c065698157ae23ac057993aadbd93e Mon Sep 17 00:00:00 2001
|
||||
From: Peter Cai <peter@typeblog.net>
|
||||
Date: Sun, 6 Oct 2024 09:06:48 -0400
|
||||
Subject: [PATCH 1/7] sensorservice: Add support for ignoring broken sensors
|
||||
Subject: [PATCH 1/6] sensorservice: Add support for ignoring broken sensors
|
||||
|
||||
This allows those sensors to be replaced by SensorFusion when possible.
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 050301ed102cd6b41756adf114243a3cfa8b70a6 Mon Sep 17 00:00:00 2001
|
||||
From c81bdbe144dcf4300471510712b8fb03af8b0278 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sat, 25 Nov 2023 08:15:28 -0500
|
||||
Subject: [PATCH 2/7] Add MTK GED KPI support to fix broken Mediatek gpufreq
|
||||
Subject: [PATCH 2/6] Add MTK GED KPI support to fix broken Mediatek gpufreq
|
||||
|
||||
Mediatek GPU scheduler likes to have the timestamps of the frames to be
|
||||
able to adjust DVFS.
|
||||
|
@ -24,7 +24,7 @@ Change-Id: Ic29a231ea8651efd598083611197aaa9e3c1fbbe
|
|||
2 files changed, 205 insertions(+)
|
||||
|
||||
diff --git a/libs/gui/Surface.cpp b/libs/gui/Surface.cpp
|
||||
index e41f9bbf43..d6863467a3 100644
|
||||
index 83c6b57289..8847843ea8 100644
|
||||
--- a/libs/gui/Surface.cpp
|
||||
+++ b/libs/gui/Surface.cpp
|
||||
@@ -26,6 +26,9 @@
|
||||
|
@ -37,7 +37,7 @@ index e41f9bbf43..d6863467a3 100644
|
|||
|
||||
#include <inttypes.h>
|
||||
|
||||
@@ -50,6 +53,9 @@
|
||||
@@ -51,6 +54,9 @@
|
||||
#include <gui/LayerState.h>
|
||||
#include <private/gui/ComposerService.h>
|
||||
#include <private/gui/ComposerServiceAIDL.h>
|
||||
|
@ -47,7 +47,7 @@ index e41f9bbf43..d6863467a3 100644
|
|||
|
||||
#include <com_android_graphics_libgui_flags.h>
|
||||
|
||||
@@ -76,6 +82,37 @@ bool isInterceptorRegistrationOp(int op) {
|
||||
@@ -77,6 +83,37 @@ bool isInterceptorRegistrationOp(int op) {
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
@ -85,7 +85,7 @@ index e41f9bbf43..d6863467a3 100644
|
|||
|
||||
#if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_PLATFORM_API_IMPROVEMENTS)
|
||||
Surface::ProducerDeathListenerProxy::ProducerDeathListenerProxy(wp<SurfaceListener> surfaceListener)
|
||||
@@ -147,6 +184,47 @@ Surface::Surface(const sp<IGraphicBufferProducer>& bufferProducer, bool controll
|
||||
@@ -151,6 +188,47 @@ Surface::Surface(const sp<IGraphicBufferProducer>& bufferProducer, bool controll
|
||||
mSwapIntervalZero = false;
|
||||
mMaxBufferCount = NUM_BUFFER_SLOTS;
|
||||
mSurfaceControlHandle = surfaceControlHandle;
|
||||
|
@ -133,7 +133,7 @@ index e41f9bbf43..d6863467a3 100644
|
|||
}
|
||||
|
||||
Surface::~Surface() {
|
||||
@@ -699,6 +777,36 @@ int Surface::dequeueBuffer(android_native_buffer_t** buffer, int* fenceFd) {
|
||||
@@ -707,6 +785,36 @@ int Surface::dequeueBuffer(android_native_buffer_t** buffer, int* fenceFd) {
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -170,7 +170,7 @@ index e41f9bbf43..d6863467a3 100644
|
|||
if (fence->isValid()) {
|
||||
*fenceFd = fence->dup();
|
||||
if (*fenceFd == -1) {
|
||||
@@ -1187,6 +1295,60 @@ void Surface::onBufferQueuedLocked(int slot, sp<Fence> fence,
|
||||
@@ -1207,6 +1315,60 @@ void Surface::onBufferQueuedLocked(int slot, sp<Fence> fence,
|
||||
}
|
||||
|
||||
mQueueBufferCondition.broadcast();
|
||||
|
@ -231,7 +231,7 @@ index e41f9bbf43..d6863467a3 100644
|
|||
|
||||
if (CC_UNLIKELY(atrace_is_tag_enabled(ATRACE_TAG_GRAPHICS))) {
|
||||
static gui::FenceMonitor gpuCompletionThread("GPU completion");
|
||||
@@ -2111,6 +2273,46 @@ int Surface::connect(int api, const sp<SurfaceListener>& listener, bool reportBu
|
||||
@@ -2134,6 +2296,46 @@ int Surface::connect(int api, const sp<SurfaceListener>& listener, bool reportBu
|
||||
}
|
||||
#endif // COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_PLATFORM_API_IMPROVEMENTS)
|
||||
}
|
||||
|
@ -279,10 +279,10 @@ index e41f9bbf43..d6863467a3 100644
|
|||
mConnectedToCpu = true;
|
||||
// Clear the dirty region in case we're switching from a non-CPU API
|
||||
diff --git a/libs/gui/include/gui/Surface.h b/libs/gui/include/gui/Surface.h
|
||||
index 14a351316d..e0843a8016 100644
|
||||
index 3cfbed11bf..862376c6ec 100644
|
||||
--- a/libs/gui/include/gui/Surface.h
|
||||
+++ b/libs/gui/include/gui/Surface.h
|
||||
@@ -742,6 +742,9 @@ protected:
|
||||
@@ -753,6 +753,9 @@ protected:
|
||||
|
||||
// Buffers that are successfully dequeued/attached and handed to clients
|
||||
std::unordered_set<int> mDequeuedSlots;
|
||||
|
|
|
@ -1,64 +1,91 @@
|
|||
From b12faaf3064de58caf0f6bfaf7fcac5a47f5024d Mon Sep 17 00:00:00 2001
|
||||
From 2ac47153cf897bfe24eab0dd5aae3ed9fdf88df4 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Cai <peter@typeblog.net>
|
||||
Date: Sun, 16 Mar 2025 12:54:56 -0400
|
||||
Subject: [PATCH 4/7] Revert "Remove flag single_hop_screenshots"
|
||||
Date: Sun, 15 Jun 2025 17:36:10 -0400
|
||||
Subject: [PATCH 3/6] Revert "Remove flag single_hop_screenshots"
|
||||
|
||||
This reverts commit 16c4c32c55231dc241c386a0423710baa452b7de.
|
||||
|
||||
Change-Id: Ib1618cd4e1f83ba1f211a04429538b32e8de79da
|
||||
Further changes have been made to SurfaceFlinger since that commit, for
|
||||
example, removal of displayState and attachGainmap. This revert has been
|
||||
adjusted accordingly, though not 100% sure everything is correct.
|
||||
|
||||
Change-Id: Ibdea8e3dec6ad4b85c43ad059847c63f934c3d24
|
||||
|
||||
Conflicts:
|
||||
services/surfaceflinger/RegionSamplingThread.cpp
|
||||
services/surfaceflinger/SurfaceFlinger.cpp
|
||||
services/surfaceflinger/SurfaceFlinger.h
|
||||
services/surfaceflinger/common/FlagManager.cpp
|
||||
services/surfaceflinger/common/include/common/FlagManager.h
|
||||
services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h
|
||||
---
|
||||
.../surfaceflinger/RegionSamplingThread.cpp | 22 ++-
|
||||
services/surfaceflinger/SurfaceFlinger.cpp | 184 ++++++++++++++----
|
||||
.../surfaceflinger/RegionSamplingThread.cpp | 19 +-
|
||||
services/surfaceflinger/SurfaceFlinger.cpp | 251 ++++++++++++------
|
||||
services/surfaceflinger/SurfaceFlinger.h | 10 +-
|
||||
.../surfaceflinger/common/FlagManager.cpp | 2 +
|
||||
.../common/include/common/FlagManager.h | 1 +
|
||||
.../tests/unittests/TestableSurfaceFlinger.h | 3 +-
|
||||
6 files changed, 171 insertions(+), 51 deletions(-)
|
||||
.../tests/unittests/TestableSurfaceFlinger.h | 2 +-
|
||||
6 files changed, 195 insertions(+), 90 deletions(-)
|
||||
|
||||
diff --git a/services/surfaceflinger/RegionSamplingThread.cpp b/services/surfaceflinger/RegionSamplingThread.cpp
|
||||
index 21d3396ebe..08f831c8e5 100644
|
||||
index 615492a872..e266656b5d 100644
|
||||
--- a/services/surfaceflinger/RegionSamplingThread.cpp
|
||||
+++ b/services/surfaceflinger/RegionSamplingThread.cpp
|
||||
@@ -353,13 +353,21 @@ void RegionSamplingThread::captureSample() {
|
||||
sampledBounds.getSize(), ui::Dataspace::V0_SRGB, displayWeak,
|
||||
RenderArea::Options::CAPTURE_SECURE_LAYERS);
|
||||
@@ -355,11 +355,20 @@ void RegionSamplingThread::captureSample() {
|
||||
screenshotArgs.isSecure = true;
|
||||
screenshotArgs.seamlessTransition = false;
|
||||
|
||||
- std::vector<std::pair<Layer*, sp<LayerFE>>> layers;
|
||||
- auto displayState =
|
||||
- mFlinger.getSnapshotsFromMainThread(renderAreaBuilder, getLayerSnapshotsFn, layers);
|
||||
- FenceResult fenceResult =
|
||||
- mFlinger.captureScreenshot(renderAreaBuilder, buffer, kRegionSampling, kGrayscale,
|
||||
- kIsProtected, kAttachGainmap, nullptr, displayState, layers)
|
||||
- mFlinger.getSnapshotsFromMainThread(screenshotArgs, getLayerSnapshotsFn, layers);
|
||||
- FenceResult fenceResult = mFlinger.captureScreenshot(screenshotArgs, buffer, kRegionSampling,
|
||||
- kGrayscale, kIsProtected, nullptr, layers)
|
||||
- .get();
|
||||
+ FenceResult fenceResult;
|
||||
+ if (FlagManager::getInstance().single_hop_screenshot()) {
|
||||
+ std::vector<std::pair<Layer*, sp<LayerFE>>> layers;
|
||||
+ auto displayState =
|
||||
+ mFlinger.getSnapshotsFromMainThread(renderAreaBuilder, getLayerSnapshotsFn, layers);
|
||||
+ fenceResult = mFlinger.captureScreenshot(renderAreaBuilder, buffer, kRegionSampling,
|
||||
+ kGrayscale, kIsProtected, kAttachGainmap, nullptr,
|
||||
+ displayState, layers)
|
||||
+ mFlinger.getSnapshotsFromMainThread(screenshotArgs, getLayerSnapshotsFn, layers);
|
||||
+ fenceResult = mFlinger.captureScreenshot(screenshotArgs, buffer, kRegionSampling,
|
||||
+ kGrayscale, kIsProtected, nullptr, layers)
|
||||
+ .get();
|
||||
+ } else {
|
||||
+ fenceResult = mFlinger.captureScreenshotLegacy(renderAreaBuilder, getLayerSnapshotsFn,
|
||||
+ buffer, kRegionSampling, kGrayscale,
|
||||
+ kIsProtected, kAttachGainmap, nullptr)
|
||||
+ fenceResult = mFlinger.captureScreenshotLegacy(screenshotArgs, getLayerSnapshotsFn, buffer,
|
||||
+ kRegionSampling, kGrayscale,
|
||||
+ kIsProtected, false /* attachGainmap */, nullptr)
|
||||
+ .get();
|
||||
+ }
|
||||
if (fenceResult.ok()) {
|
||||
fenceResult.value()->waitForever(LOG_TAG);
|
||||
}
|
||||
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
|
||||
index 896d13d31d..852a8b81e1 100644
|
||||
index 42a77fd844..d601b24cbd 100644
|
||||
--- a/services/surfaceflinger/SurfaceFlinger.cpp
|
||||
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
|
||||
@@ -7389,41 +7389,79 @@ void SurfaceFlinger::captureScreenCommon(RenderAreaBuilderVariant renderAreaBuil
|
||||
@@ -7706,87 +7706,124 @@ void SurfaceFlinger::captureScreenCommon(ScreenshotArgs& args,
|
||||
return;
|
||||
}
|
||||
|
||||
- std::vector<std::pair<Layer*, sp<LayerFE>>> layers;
|
||||
- auto displayState = getSnapshotsFromMainThread(renderAreaBuilder, getLayerSnapshotsFn, layers);
|
||||
-
|
||||
- bool hasDisplayState = getSnapshotsFromMainThread(args, getLayerSnapshotsFn, layers);
|
||||
- if (!hasDisplayState) {
|
||||
- ALOGD("Display state not found");
|
||||
- invokeScreenCaptureError(NO_MEMORY, captureListener);
|
||||
- }
|
||||
+ if (FlagManager::getInstance().single_hop_screenshot()) {
|
||||
+ std::vector<std::pair<Layer*, sp<LayerFE>>> layers;
|
||||
+ bool hasDisplayState = getSnapshotsFromMainThread(args, getLayerSnapshotsFn, layers);
|
||||
+ if (!hasDisplayState) {
|
||||
+ ALOGD("Display state not found");
|
||||
+ invokeScreenCaptureError(NO_MEMORY, captureListener);
|
||||
+ }
|
||||
|
||||
- const bool hasHdrLayer = std::any_of(layers.cbegin(), layers.cend(), [this](const auto& layer) {
|
||||
- return isHdrLayer(*(layer.second->mSnapshot.get()));
|
||||
- });
|
||||
+ const bool hasHdrLayer = std::any_of(layers.cbegin(), layers.cend(), [this](const auto& layer) {
|
||||
+ return isHdrLayer(*(layer.second->mSnapshot.get()));
|
||||
+ });
|
||||
|
||||
- const bool supportsProtected = getRenderEngine().supportsProtectedContent();
|
||||
- bool hasProtectedLayer = false;
|
||||
- if (allowProtected && supportsProtected) {
|
||||
|
@ -82,11 +109,33 @@ index 896d13d31d..852a8b81e1 100644
|
|||
- ALOGE("%s: Buffer failed to allocate: %d", __func__, bufferStatus);
|
||||
- invokeScreenCaptureError(bufferStatus, captureListener);
|
||||
- return;
|
||||
+ if (FlagManager::getInstance().single_hop_screenshot()) {
|
||||
+ std::vector<std::pair<Layer*, sp<LayerFE>>> layers;
|
||||
+ auto displayState =
|
||||
+ getSnapshotsFromMainThread(renderAreaBuilder, getLayerSnapshotsFn, layers);
|
||||
+
|
||||
- }
|
||||
- const std::shared_ptr<renderengine::ExternalTexture> texture = std::make_shared<
|
||||
- renderengine::impl::ExternalTexture>(buffer, getRenderEngine(),
|
||||
- renderengine::impl::ExternalTexture::Usage::
|
||||
- WRITEABLE);
|
||||
-
|
||||
- std::shared_ptr<renderengine::impl::ExternalTexture> hdrTexture;
|
||||
- std::shared_ptr<renderengine::impl::ExternalTexture> gainmapTexture;
|
||||
-
|
||||
- if (hasHdrLayer && !args.seamlessTransition &&
|
||||
- FlagManager::getInstance().true_hdr_screenshots()) {
|
||||
- const auto hdrBuffer =
|
||||
- getFactory().createGraphicBuffer(buffer->getWidth(), buffer->getHeight(),
|
||||
- HAL_PIXEL_FORMAT_RGBA_FP16, 1 /* layerCount */,
|
||||
- buffer->getUsage(), "screenshot-hdr");
|
||||
- const auto gainmapBuffer =
|
||||
- getFactory().createGraphicBuffer(buffer->getWidth(), buffer->getHeight(),
|
||||
- buffer->getPixelFormat(), 1 /* layerCount */,
|
||||
- buffer->getUsage(), "screenshot-gainmap");
|
||||
-
|
||||
- const status_t hdrBufferStatus = hdrBuffer->initCheck();
|
||||
- const status_t gainmapBufferStatus = gainmapBuffer->initCheck();
|
||||
-
|
||||
- if (hdrBufferStatus != OK || gainmapBufferStatus != -OK) {
|
||||
- if (hdrBufferStatus != OK) {
|
||||
- ALOGW("%s: Buffer failed to allocate for hdr: %d. Screenshoting SDR instead.",
|
||||
- __func__, hdrBufferStatus);
|
||||
+ const bool supportsProtected = getRenderEngine().supportsProtectedContent();
|
||||
+ bool hasProtectedLayer = false;
|
||||
+ if (allowProtected && supportsProtected) {
|
||||
|
@ -111,15 +160,69 @@ index 896d13d31d..852a8b81e1 100644
|
|||
+ invokeScreenCaptureError(bufferStatus, captureListener);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ const std::shared_ptr<renderengine::ExternalTexture> texture = std::make_shared<
|
||||
+ renderengine::impl::ExternalTexture>(buffer, getRenderEngine(),
|
||||
+ renderengine::impl::ExternalTexture::Usage::
|
||||
+ WRITEABLE);
|
||||
+ auto futureFence = captureScreenshot(renderAreaBuilder, texture, false /* regionSampling */,
|
||||
+ grayscale, isProtected, attachGainmap, captureListener,
|
||||
+ displayState, layers);
|
||||
+ futureFence.get();
|
||||
+
|
||||
+ std::shared_ptr<renderengine::impl::ExternalTexture> hdrTexture;
|
||||
+ std::shared_ptr<renderengine::impl::ExternalTexture> gainmapTexture;
|
||||
+
|
||||
+ if (hasHdrLayer && !args.seamlessTransition &&
|
||||
+ FlagManager::getInstance().true_hdr_screenshots()) {
|
||||
+ const auto hdrBuffer =
|
||||
+ getFactory().createGraphicBuffer(buffer->getWidth(), buffer->getHeight(),
|
||||
+ HAL_PIXEL_FORMAT_RGBA_FP16, 1 /* layerCount */,
|
||||
+ buffer->getUsage(), "screenshot-hdr");
|
||||
+ const auto gainmapBuffer =
|
||||
+ getFactory().createGraphicBuffer(buffer->getWidth(), buffer->getHeight(),
|
||||
+ buffer->getPixelFormat(), 1 /* layerCount */,
|
||||
+ buffer->getUsage(), "screenshot-gainmap");
|
||||
+
|
||||
+ const status_t hdrBufferStatus = hdrBuffer->initCheck();
|
||||
+ const status_t gainmapBufferStatus = gainmapBuffer->initCheck();
|
||||
+
|
||||
+ if (hdrBufferStatus != OK || gainmapBufferStatus != -OK) {
|
||||
+ if (hdrBufferStatus != OK) {
|
||||
+ ALOGW("%s: Buffer failed to allocate for hdr: %d. Screenshoting SDR instead.",
|
||||
+ __func__, hdrBufferStatus);
|
||||
+ } else {
|
||||
+ ALOGW("%s: Buffer failed to allocate for gainmap: %d. Screenshoting SDR instead.",
|
||||
+ __func__, gainmapBufferStatus);
|
||||
+ }
|
||||
} else {
|
||||
- ALOGW("%s: Buffer failed to allocate for gainmap: %d. Screenshoting SDR instead.",
|
||||
- __func__, gainmapBufferStatus);
|
||||
+ hdrTexture = std::make_shared<
|
||||
+ renderengine::impl::ExternalTexture>(hdrBuffer, getRenderEngine(),
|
||||
+ renderengine::impl::ExternalTexture::
|
||||
+ Usage::WRITEABLE);
|
||||
+ gainmapTexture = std::make_shared<
|
||||
+ renderengine::impl::ExternalTexture>(gainmapBuffer, getRenderEngine(),
|
||||
+ renderengine::impl::ExternalTexture::
|
||||
+ Usage::WRITEABLE);
|
||||
}
|
||||
- } else {
|
||||
- hdrTexture = std::make_shared<
|
||||
- renderengine::impl::ExternalTexture>(hdrBuffer, getRenderEngine(),
|
||||
- renderengine::impl::ExternalTexture::
|
||||
- Usage::WRITEABLE);
|
||||
- gainmapTexture = std::make_shared<
|
||||
- renderengine::impl::ExternalTexture>(gainmapBuffer, getRenderEngine(),
|
||||
- renderengine::impl::ExternalTexture::
|
||||
- Usage::WRITEABLE);
|
||||
}
|
||||
- }
|
||||
|
||||
- auto futureFence =
|
||||
- captureScreenshot(args, texture, false /* regionSampling */, grayscale, isProtected,
|
||||
- captureListener, layers, hdrTexture, gainmapTexture);
|
||||
- futureFence.get();
|
||||
+ auto futureFence =
|
||||
+ captureScreenshot(args, texture, false /* regionSampling */, grayscale, isProtected,
|
||||
+ captureListener, layers, hdrTexture, gainmapTexture);
|
||||
+ futureFence.get();
|
||||
+ } else {
|
||||
+ const bool supportsProtected = getRenderEngine().supportsProtectedContent();
|
||||
+ bool hasProtectedLayer = false;
|
||||
|
@ -150,74 +253,52 @@ index 896d13d31d..852a8b81e1 100644
|
|||
+ renderengine::impl::ExternalTexture>(buffer, getRenderEngine(),
|
||||
+ renderengine::impl::ExternalTexture::Usage::
|
||||
+ WRITEABLE);
|
||||
+ auto futureFence = captureScreenshotLegacy(renderAreaBuilder, getLayerSnapshotsFn, texture,
|
||||
+ auto futureFence = captureScreenshotLegacy(args, getLayerSnapshotsFn, texture,
|
||||
+ false /* regionSampling */, grayscale,
|
||||
+ isProtected, attachGainmap, captureListener);
|
||||
+ isProtected, false, captureListener);
|
||||
+ futureFence.get();
|
||||
}
|
||||
- const std::shared_ptr<renderengine::ExternalTexture> texture = std::make_shared<
|
||||
- renderengine::impl::ExternalTexture>(buffer, getRenderEngine(),
|
||||
- renderengine::impl::ExternalTexture::Usage::
|
||||
- WRITEABLE);
|
||||
- auto futureFence =
|
||||
- captureScreenshot(renderAreaBuilder, texture, false /* regionSampling */, grayscale,
|
||||
- isProtected, attachGainmap, captureListener, displayState, layers);
|
||||
- futureFence.get();
|
||||
+ }
|
||||
}
|
||||
|
||||
std::optional<SurfaceFlinger::OutputCompositionState>
|
||||
@@ -7489,7 +7527,7 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::captureScreenshot(
|
||||
|
||||
ftl::SharedFuture<FenceResult> renderFuture =
|
||||
renderScreenImpl(renderArea.get(), buffer, regionSampling, grayscale, isProtected,
|
||||
- captureResults, displayState, layers);
|
||||
+ attachGainmap, captureResults, displayState, layers);
|
||||
|
||||
if (captureResults.capturedHdrLayers && attachGainmap &&
|
||||
FlagManager::getInstance().true_hdr_screenshots()) {
|
||||
@@ -7524,7 +7562,8 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::captureScreenshot(
|
||||
ScreenCaptureResults unusedResults;
|
||||
// Returns true if display is found and args was populated with display state
|
||||
@@ -7854,7 +7891,7 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::captureScreenshot(
|
||||
if (hdrBuffer && gainmapBuffer) {
|
||||
ftl::SharedFuture<FenceResult> hdrRenderFuture =
|
||||
renderScreenImpl(renderArea.get(), hdrTexture, regionSampling, grayscale,
|
||||
- isProtected, unusedResults, displayState, layers);
|
||||
+ isProtected, attachGainmap, unusedResults, displayState,
|
||||
+ layers);
|
||||
renderScreenImpl(args, hdrBuffer, regionSampling, grayscale, isProtected,
|
||||
- captureResults, layers);
|
||||
+ true, captureResults, layers);
|
||||
captureResults.buffer = buffer->getBuffer();
|
||||
captureResults.optionalGainMap = gainmapBuffer->getBuffer();
|
||||
|
||||
renderFuture =
|
||||
ftl::Future(std::move(renderFuture))
|
||||
@@ -7570,10 +7609,67 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::captureScreenshot(
|
||||
@@ -7876,7 +7913,7 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::captureScreenshot(
|
||||
.share();
|
||||
} else {
|
||||
renderFuture = renderScreenImpl(args, buffer, regionSampling, grayscale, isProtected,
|
||||
- captureResults, layers);
|
||||
+ false, captureResults, layers);
|
||||
}
|
||||
|
||||
if (captureListener) {
|
||||
@@ -7894,10 +7931,54 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::captureScreenshot(
|
||||
return renderFuture;
|
||||
}
|
||||
|
||||
+ftl::SharedFuture<FenceResult> SurfaceFlinger::captureScreenshotLegacy(
|
||||
+ RenderAreaBuilderVariant renderAreaBuilder, GetLayerSnapshotsFunction getLayerSnapshotsFn,
|
||||
+ ScreenshotArgs& args, GetLayerSnapshotsFunction getLayerSnapshotsFn,
|
||||
+ const std::shared_ptr<renderengine::ExternalTexture>& buffer, bool regionSampling,
|
||||
+ bool grayscale, bool isProtected, bool attachGainmap,
|
||||
+ const sp<IScreenCaptureListener>& captureListener) {
|
||||
+ SFTRACE_CALL();
|
||||
+
|
||||
+ auto takeScreenshotFn = [=, this, renderAreaBuilder = std::move(renderAreaBuilder)]() REQUIRES(
|
||||
+ auto takeScreenshotFn = [=, this, args = std::move(args)]() REQUIRES(
|
||||
+ kMainThreadContext) mutable -> ftl::SharedFuture<FenceResult> {
|
||||
+ auto layers = getLayerSnapshotsFn();
|
||||
+ auto displayState = getDisplayStateFromRenderAreaBuilder(renderAreaBuilder);
|
||||
+
|
||||
+ ScreenCaptureResults captureResults;
|
||||
+ std::unique_ptr<const RenderArea> renderArea =
|
||||
+ std::visit([](auto&& arg) -> std::unique_ptr<RenderArea> { return arg.build(); },
|
||||
+ renderAreaBuilder);
|
||||
+
|
||||
+ if (!renderArea) {
|
||||
+ ALOGW("Skipping screen capture because of invalid render area.");
|
||||
+ if (captureListener) {
|
||||
+ captureResults.fenceResult = base::unexpected(NO_MEMORY);
|
||||
+ captureListener->onScreenCaptureCompleted(captureResults);
|
||||
+ }
|
||||
+ return ftl::yield<FenceResult>(base::unexpected(NO_ERROR)).share();
|
||||
+ }
|
||||
+
|
||||
+ ftl::SharedFuture<FenceResult> renderFuture =
|
||||
+ renderScreenImpl(renderArea.get(), buffer, regionSampling, grayscale, isProtected,
|
||||
+ attachGainmap, captureResults, displayState, layers);
|
||||
+ renderScreenImpl(args, buffer, regionSampling, grayscale, isProtected,
|
||||
+ attachGainmap, captureResults, layers);
|
||||
+
|
||||
+ if (captureListener) {
|
||||
+ // Defer blocking on renderFuture back to the Binder thread.
|
||||
|
@ -247,15 +328,15 @@ index 896d13d31d..852a8b81e1 100644
|
|||
+}
|
||||
+
|
||||
ftl::SharedFuture<FenceResult> SurfaceFlinger::renderScreenImpl(
|
||||
const RenderArea* renderArea, const std::shared_ptr<renderengine::ExternalTexture>& buffer,
|
||||
ScreenshotArgs& args, const std::shared_ptr<renderengine::ExternalTexture>& buffer,
|
||||
- bool regionSampling, bool grayscale, bool isProtected, ScreenCaptureResults& captureResults,
|
||||
- std::optional<OutputCompositionState>& displayState,
|
||||
- const std::vector<std::pair<Layer*, sp<LayerFE>>>& layers) {
|
||||
+ bool regionSampling, bool grayscale, bool isProtected, bool attachGainmap,
|
||||
+ ScreenCaptureResults& captureResults, std::optional<OutputCompositionState>& displayState,
|
||||
std::vector<std::pair<Layer*, sp<LayerFE>>>& layers) {
|
||||
+ ScreenCaptureResults& captureResults, const std::vector<std::pair<Layer*, sp<LayerFE>>>& layers) {
|
||||
SFTRACE_CALL();
|
||||
|
||||
@@ -7719,9 +7815,15 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::renderScreenImpl(
|
||||
for (auto& [_, layerFE] : layers) {
|
||||
@@ -8038,9 +8119,15 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::renderScreenImpl(
|
||||
//
|
||||
// TODO(b/196334700) Once we use RenderEngineThreaded everywhere we can always defer the call
|
||||
// to CompositionEngine::present.
|
||||
|
@ -275,41 +356,41 @@ index 896d13d31d..852a8b81e1 100644
|
|||
return presentFuture;
|
||||
}
|
||||
diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h
|
||||
index 1e2c08747b..835cb572b4 100644
|
||||
index f0298079a0..88c1701998 100644
|
||||
--- a/services/surfaceflinger/SurfaceFlinger.h
|
||||
+++ b/services/surfaceflinger/SurfaceFlinger.h
|
||||
@@ -885,10 +885,16 @@ private:
|
||||
std::optional<OutputCompositionState>& displayState,
|
||||
std::vector<std::pair<Layer*, sp<LayerFE>>>& layers);
|
||||
@@ -943,10 +943,16 @@ private:
|
||||
const std::shared_ptr<renderengine::ExternalTexture>& hdrBuffer = nullptr,
|
||||
const std::shared_ptr<renderengine::ExternalTexture>& gainmapBuffer = nullptr);
|
||||
|
||||
+ ftl::SharedFuture<FenceResult> captureScreenshotLegacy(
|
||||
+ RenderAreaBuilderVariant, GetLayerSnapshotsFunction,
|
||||
+ ScreenshotArgs& args, GetLayerSnapshotsFunction,
|
||||
+ const std::shared_ptr<renderengine::ExternalTexture>&, bool regionSampling,
|
||||
+ bool grayscale, bool isProtected, bool attachGainmap,
|
||||
+ const sp<IScreenCaptureListener>&);
|
||||
+
|
||||
ftl::SharedFuture<FenceResult> renderScreenImpl(
|
||||
const RenderArea*, const std::shared_ptr<renderengine::ExternalTexture>&,
|
||||
ScreenshotArgs& args, const std::shared_ptr<renderengine::ExternalTexture>&,
|
||||
- bool regionSampling, bool grayscale, bool isProtected, ScreenCaptureResults&,
|
||||
- std::optional<OutputCompositionState>& displayState,
|
||||
- const std::vector<std::pair<Layer*, sp<LayerFE>>>& layers);
|
||||
+ bool regionSampling, bool grayscale, bool isProtected, bool attachGainmap,
|
||||
+ ScreenCaptureResults&, std::optional<OutputCompositionState>& displayState,
|
||||
std::vector<std::pair<Layer*, sp<LayerFE>>>& layers);
|
||||
+ ScreenCaptureResults&, const std::vector<std::pair<Layer*, sp<LayerFE>>>& layers);
|
||||
|
||||
void readPersistentProperties();
|
||||
|
||||
diff --git a/services/surfaceflinger/common/FlagManager.cpp b/services/surfaceflinger/common/FlagManager.cpp
|
||||
index 5e78426c77..5c417ba748 100644
|
||||
index ebf451501d..6f3a58f6ff 100644
|
||||
--- a/services/surfaceflinger/common/FlagManager.cpp
|
||||
+++ b/services/surfaceflinger/common/FlagManager.cpp
|
||||
@@ -166,6 +166,7 @@ void FlagManager::dump(std::string& result) const {
|
||||
DUMP_ACONFIG_FLAG(skip_invisible_windows_in_input);
|
||||
DUMP_ACONFIG_FLAG(begone_bright_hlg);
|
||||
DUMP_ACONFIG_FLAG(window_blur_kawase2);
|
||||
@@ -172,6 +172,7 @@ void FlagManager::dump(std::string& result) const {
|
||||
DUMP_ACONFIG_FLAG(reject_dupe_layerstacks);
|
||||
DUMP_ACONFIG_FLAG(renderable_buffer_usage);
|
||||
DUMP_ACONFIG_FLAG(restore_blur_step);
|
||||
+ DUMP_ACONFIG_FLAG(single_hop_screenshot);
|
||||
|
||||
#undef DUMP_ACONFIG_FLAG
|
||||
#undef DUMP_LEGACY_SERVER_FLAG
|
||||
@@ -259,6 +260,7 @@ FLAG_MANAGER_ACONFIG_FLAG(local_tonemap_screenshots, "debug.sf.local_tonemap_scr
|
||||
DUMP_ACONFIG_FLAG(skip_invisible_windows_in_input);
|
||||
DUMP_ACONFIG_FLAG(stable_edid_ids);
|
||||
DUMP_ACONFIG_FLAG(synced_resolution_switch);
|
||||
@@ -290,6 +291,7 @@ FLAG_MANAGER_ACONFIG_FLAG(local_tonemap_screenshots, "debug.sf.local_tonemap_scr
|
||||
FLAG_MANAGER_ACONFIG_FLAG(override_trusted_overlay, "");
|
||||
FLAG_MANAGER_ACONFIG_FLAG(flush_buffer_slots_to_uncache, "");
|
||||
FLAG_MANAGER_ACONFIG_FLAG(force_compile_graphite_renderengine, "");
|
||||
|
@ -318,28 +399,27 @@ index 5e78426c77..5c417ba748 100644
|
|||
FLAG_MANAGER_ACONFIG_FLAG(display_config_error_hal, "");
|
||||
FLAG_MANAGER_ACONFIG_FLAG(connected_display_hdr, "debug.sf.connected_display_hdr");
|
||||
diff --git a/services/surfaceflinger/common/include/common/FlagManager.h b/services/surfaceflinger/common/include/common/FlagManager.h
|
||||
index d8887f538f..15284ba0ee 100644
|
||||
index 72b3bc302a..23232c381f 100644
|
||||
--- a/services/surfaceflinger/common/include/common/FlagManager.h
|
||||
+++ b/services/surfaceflinger/common/include/common/FlagManager.h
|
||||
@@ -95,6 +95,7 @@ public:
|
||||
bool override_trusted_overlay() const;
|
||||
bool flush_buffer_slots_to_uncache() const;
|
||||
bool force_compile_graphite_renderengine() const;
|
||||
@@ -107,6 +107,7 @@ public:
|
||||
bool reject_dupe_layerstacks() const;
|
||||
bool renderable_buffer_usage() const;
|
||||
bool restore_blur_step() const;
|
||||
+ bool single_hop_screenshot() const;
|
||||
bool trace_frame_rate_override() const;
|
||||
bool true_hdr_screenshots() const;
|
||||
bool display_config_error_hal() const;
|
||||
bool skip_invisible_windows_in_input() const;
|
||||
bool stable_edid_ids() const;
|
||||
bool synced_resolution_switch() const;
|
||||
diff --git a/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h b/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h
|
||||
index 7f0b7a6585..fd8bc0d22d 100644
|
||||
index 13c32bdf08..7e519d3842 100644
|
||||
--- a/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h
|
||||
+++ b/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h
|
||||
@@ -475,7 +475,8 @@ public:
|
||||
@@ -494,7 +494,7 @@ public:
|
||||
|
||||
return mFlinger->renderScreenImpl(renderArea.get(), buffer, regionSampling,
|
||||
return mFlinger->renderScreenImpl(screenshotArgs, buffer, regionSampling,
|
||||
false /* grayscale */, false /* isProtected */,
|
||||
- captureResults, displayState, layers);
|
||||
+ false /* attachGainmap */, captureResults, displayState,
|
||||
+ layers);
|
||||
- captureResults, layers);
|
||||
+ false /*attachGainmap */, captureResults, layers);
|
||||
}
|
||||
|
||||
auto getLayerSnapshotsForScreenshotsFn(ui::LayerStack layerStack, uint32_t uid) {
|
|
@ -1,101 +0,0 @@
|
|||
From 37580f1924099111b2995e910ed64bb4182b9c39 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Cai <peter@typeblog.net>
|
||||
Date: Mon, 7 Oct 2024 22:07:58 -0400
|
||||
Subject: [PATCH 3/7] vibratorservice: Support optionally ignoring vibrator
|
||||
effects
|
||||
|
||||
On Unihertz Jelly Max the preloaded vibrator HAL is utterly broken.
|
||||
|
||||
Change-Id: I308190a225932fba2a4aa1c830c03ab874d8032e
|
||||
---
|
||||
services/vibratorservice/Android.bp | 1 +
|
||||
.../vibratorservice/VibratorHalWrapper.cpp | 31 +++++++++++++++++++
|
||||
2 files changed, 32 insertions(+)
|
||||
|
||||
diff --git a/services/vibratorservice/Android.bp b/services/vibratorservice/Android.bp
|
||||
index 4735ae5897..6263b0506f 100644
|
||||
--- a/services/vibratorservice/Android.bp
|
||||
+++ b/services/vibratorservice/Android.bp
|
||||
@@ -41,6 +41,7 @@ cc_library_shared {
|
||||
},
|
||||
|
||||
shared_libs: [
|
||||
+ "libbase",
|
||||
"libbinder_ndk",
|
||||
"libhidlbase",
|
||||
"liblog",
|
||||
diff --git a/services/vibratorservice/VibratorHalWrapper.cpp b/services/vibratorservice/VibratorHalWrapper.cpp
|
||||
index 3ddc4f2aca..11178659ff 100644
|
||||
--- a/services/vibratorservice/VibratorHalWrapper.cpp
|
||||
+++ b/services/vibratorservice/VibratorHalWrapper.cpp
|
||||
@@ -17,6 +17,7 @@
|
||||
#define LOG_TAG "VibratorHalWrapper"
|
||||
|
||||
#include <aidl/android/hardware/vibrator/IVibrator.h>
|
||||
+#include <android-base/properties.h>
|
||||
#include <android/hardware/vibrator/1.3/IVibrator.h>
|
||||
#include <hardware/vibrator.h>
|
||||
#include <cmath>
|
||||
@@ -44,6 +45,22 @@ namespace V1_2 = android::hardware::vibrator::V1_2;
|
||||
namespace V1_3 = android::hardware::vibrator::V1_3;
|
||||
namespace Aidl = aidl::android::hardware::vibrator;
|
||||
|
||||
+const Effect EFFECT_WITH_FALLBACK[] = {
|
||||
+ Effect::CLICK,
|
||||
+ Effect::DOUBLE_CLICK,
|
||||
+ Effect::HEAVY_CLICK,
|
||||
+ Effect::TICK,
|
||||
+};
|
||||
+
|
||||
+#define RETURN_UNSUPPORTED_IF_IGNORED() \
|
||||
+ bool shouldIgnoreEffects = android::base::GetBoolProperty("persist.sys.phh.ignore_vibrator_effects", false); \
|
||||
+ auto casted_effect = static_cast<Effect>(effect); \
|
||||
+ bool isEffectWithFallback = std::find(std::begin(EFFECT_WITH_FALLBACK), std::end(EFFECT_WITH_FALLBACK), casted_effect) \
|
||||
+ != std::end(EFFECT_WITH_FALLBACK); \
|
||||
+ if (shouldIgnoreEffects && isEffectWithFallback) { \
|
||||
+ return HalResult<milliseconds>::unsupported(); \
|
||||
+ }
|
||||
+
|
||||
namespace android {
|
||||
|
||||
namespace vibrator {
|
||||
@@ -63,8 +80,18 @@ Info HalWrapper::getInfo() {
|
||||
getCapabilities();
|
||||
getPrimitiveDurations();
|
||||
std::lock_guard<std::mutex> lock(mInfoMutex);
|
||||
+ bool shouldIgnoreEffects = android::base::GetBoolProperty("persist.sys.phh.ignore_vibrator_effects", false);
|
||||
if (mInfoCache.mSupportedEffects.isFailed()) {
|
||||
mInfoCache.mSupportedEffects = getSupportedEffectsInternal();
|
||||
+ if (mInfoCache.mSupportedEffects.isOk()) {
|
||||
+ std::vector<Effect> filtered;
|
||||
+ for (auto& effect : mInfoCache.mSupportedEffects.value()) {
|
||||
+ if (std::find(std::begin(EFFECT_WITH_FALLBACK), std::end(EFFECT_WITH_FALLBACK), effect) == std::end(EFFECT_WITH_FALLBACK)) {
|
||||
+ filtered.push_back(effect);
|
||||
+ }
|
||||
+ }
|
||||
+ mInfoCache.mSupportedEffects = HalResult<std::vector<Effect>>::ok(filtered);
|
||||
+ }
|
||||
}
|
||||
if (mInfoCache.mSupportedBraking.isFailed()) {
|
||||
mInfoCache.mSupportedBraking = getSupportedBrakingInternal();
|
||||
@@ -305,6 +332,8 @@ HalResult<void> AidlHalWrapper::alwaysOnDisable(int32_t id) {
|
||||
|
||||
HalResult<milliseconds> AidlHalWrapper::performEffect(
|
||||
Effect effect, EffectStrength strength, const std::function<void()>& completionCallback) {
|
||||
+ RETURN_UNSUPPORTED_IF_IGNORED();
|
||||
+
|
||||
HalResult<Capabilities> capabilities = getCapabilities();
|
||||
bool supportsCallback = capabilities.isOk() &&
|
||||
static_cast<int32_t>(capabilities.value() & Capabilities::PERFORM_CALLBACK);
|
||||
@@ -582,6 +611,8 @@ template <typename T>
|
||||
HalResult<milliseconds> HidlHalWrapper<I>::performInternal(
|
||||
perform_fn<T> performFn, sp<I> handle, T effect, EffectStrength strength,
|
||||
const std::function<void()>& completionCallback) {
|
||||
+ RETURN_UNSUPPORTED_IF_IGNORED();
|
||||
+
|
||||
V1_0::Status status;
|
||||
int32_t lengthMs;
|
||||
auto effectCallback = [&status, &lengthMs](V1_0::Status retStatus, uint32_t retLengthMs) {
|
||||
--
|
||||
2.48.1
|
||||
|
|
@ -1,46 +1,52 @@
|
|||
From aa5e6f794b3e2c9f5bdbc40da702b14dd9a1764e Mon Sep 17 00:00:00 2001
|
||||
From 0aeb91404524322d4b1ccd0eeb76e5b2f735691f Mon Sep 17 00:00:00 2001
|
||||
From: Peter Cai <peter@typeblog.net>
|
||||
Date: Sun, 16 Mar 2025 13:19:17 -0400
|
||||
Subject: [PATCH 5/7] Revert "Reorder release fence attachment for non-threaded
|
||||
Date: Sun, 15 Jun 2025 18:31:42 -0400
|
||||
Subject: [PATCH 4/6] Revert "Reorder release fence attachment for non-threaded
|
||||
RE"
|
||||
|
||||
This reverts commit 0b80c74300b73e937ee9a9cb58487bd126daa4d8.
|
||||
|
||||
Change-Id: I7974588c1ca5c129b81846fbfb5a3422f4f98cf5
|
||||
|
||||
Conflicts:
|
||||
services/surfaceflinger/RegionSamplingThread.cpp
|
||||
services/surfaceflinger/SurfaceFlinger.cpp
|
||||
services/surfaceflinger/SurfaceFlinger.h
|
||||
services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h
|
||||
---
|
||||
.../surfaceflinger/RegionSamplingThread.cpp | 11 ++-
|
||||
services/surfaceflinger/SurfaceFlinger.cpp | 97 ++++++++++---------
|
||||
services/surfaceflinger/SurfaceFlinger.h | 16 ++-
|
||||
.../surfaceflinger/RegionSamplingThread.cpp | 9 +-
|
||||
services/surfaceflinger/SurfaceFlinger.cpp | 104 ++++++++++--------
|
||||
services/surfaceflinger/SurfaceFlinger.h | 15 ++-
|
||||
.../tests/unittests/TestableSurfaceFlinger.h | 3 +-
|
||||
4 files changed, 69 insertions(+), 58 deletions(-)
|
||||
4 files changed, 74 insertions(+), 57 deletions(-)
|
||||
|
||||
diff --git a/services/surfaceflinger/RegionSamplingThread.cpp b/services/surfaceflinger/RegionSamplingThread.cpp
|
||||
index 08f831c8e5..011fd9e20a 100644
|
||||
index e266656b5d..7e2144d6b1 100644
|
||||
--- a/services/surfaceflinger/RegionSamplingThread.cpp
|
||||
+++ b/services/surfaceflinger/RegionSamplingThread.cpp
|
||||
@@ -354,13 +354,14 @@ void RegionSamplingThread::captureSample() {
|
||||
RenderArea::Options::CAPTURE_SECURE_LAYERS);
|
||||
@@ -356,12 +356,13 @@ void RegionSamplingThread::captureSample() {
|
||||
screenshotArgs.seamlessTransition = false;
|
||||
|
||||
FenceResult fenceResult;
|
||||
- if (FlagManager::getInstance().single_hop_screenshot()) {
|
||||
- std::vector<std::pair<Layer*, sp<LayerFE>>> layers;
|
||||
- auto displayState =
|
||||
- mFlinger.getSnapshotsFromMainThread(renderAreaBuilder, getLayerSnapshotsFn, layers);
|
||||
+ if (FlagManager::getInstance().single_hop_screenshot() &&
|
||||
+ mFlinger.mRenderEngine->isThreaded()) {
|
||||
+ std::vector<sp<LayerFE>> layerFEs;
|
||||
+ auto displayState = mFlinger.getSnapshotsFromMainThread(renderAreaBuilder,
|
||||
+ getLayerSnapshotsFn, layerFEs);
|
||||
fenceResult = mFlinger.captureScreenshot(renderAreaBuilder, buffer, kRegionSampling,
|
||||
kGrayscale, kIsProtected, kAttachGainmap, nullptr,
|
||||
- displayState, layers)
|
||||
+ displayState, layerFEs)
|
||||
auto displayState =
|
||||
- mFlinger.getSnapshotsFromMainThread(screenshotArgs, getLayerSnapshotsFn, layers);
|
||||
+ mFlinger.getSnapshotsFromMainThread(screenshotArgs, getLayerSnapshotsFn, layerFEs);
|
||||
fenceResult = mFlinger.captureScreenshot(screenshotArgs, buffer, kRegionSampling,
|
||||
- kGrayscale, kIsProtected, nullptr, layers)
|
||||
+ kGrayscale, kIsProtected, nullptr, layerFEs)
|
||||
.get();
|
||||
} else {
|
||||
fenceResult = mFlinger.captureScreenshotLegacy(renderAreaBuilder, getLayerSnapshotsFn,
|
||||
fenceResult = mFlinger.captureScreenshotLegacy(screenshotArgs, getLayerSnapshotsFn, buffer,
|
||||
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
|
||||
index 852a8b81e1..067a8bafe0 100644
|
||||
index d601b24cbd..235ddfb762 100644
|
||||
--- a/services/surfaceflinger/SurfaceFlinger.cpp
|
||||
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
|
||||
@@ -7335,10 +7335,9 @@ void SurfaceFlinger::attachReleaseFenceFutureToLayer(Layer* layer, LayerFE* laye
|
||||
@@ -7650,10 +7650,9 @@ void SurfaceFlinger::attachReleaseFenceFutureToLayer(Layer* layer, LayerFE* laye
|
||||
// typically a layer with DRM contents, or have the GRALLOC_USAGE_PROTECTED set on the buffer.
|
||||
// A protected layer has no implication on whether it's secure, which is explicitly set by
|
||||
// application to avoid being screenshot or drawn via unsecure display.
|
||||
|
@ -53,15 +59,17 @@ index 852a8b81e1..067a8bafe0 100644
|
|||
protectedLayerFound |=
|
||||
(layerFE->mSnapshot->isVisible && layerFE->mSnapshot->hasProtectedContent);
|
||||
if (protectedLayerFound) {
|
||||
@@ -7354,21 +7353,15 @@ bool SurfaceFlinger::layersHasProtectedLayer(
|
||||
// risk of deadlocks.
|
||||
std::optional<SurfaceFlinger::OutputCompositionState> SurfaceFlinger::getSnapshotsFromMainThread(
|
||||
RenderAreaBuilderVariant& renderAreaBuilder, GetLayerSnapshotsFunction getLayerSnapshotsFn,
|
||||
@@ -7669,23 +7668,17 @@ bool SurfaceFlinger::layersHasProtectedLayer(
|
||||
// risk of deadlocks. Returns false if no display is found.
|
||||
bool SurfaceFlinger::getSnapshotsFromMainThread(
|
||||
ScreenshotArgs& args, GetLayerSnapshotsFunction getLayerSnapshotsFn,
|
||||
- std::vector<std::pair<Layer*, sp<LayerFE>>>& layers) {
|
||||
+ std::vector<sp<LayerFE>>& layerFEs) {
|
||||
return mScheduler
|
||||
- ->schedule([=, this, &renderAreaBuilder, &layers]() REQUIRES(kMainThreadContext) {
|
||||
+ ->schedule([=, this, &renderAreaBuilder, &layerFEs]() REQUIRES(kMainThreadContext) {
|
||||
- ->schedule([=, this, &args, &layers]() REQUIRES(kMainThreadContext) {
|
||||
+ ->schedule([=, this, &args, &layerFEs]() REQUIRES(kMainThreadContext) {
|
||||
SFTRACE_NAME_FOR_TRACK(WorkloadTracer::TRACK_NAME, "Screenshot");
|
||||
mPowerAdvisor->setScreenshotWorkload();
|
||||
SFTRACE_NAME("getSnapshotsFromMainThread");
|
||||
- layers = getLayerSnapshotsFn();
|
||||
- // Non-threaded RenderEngine eventually returns to the main thread a 2nd time
|
||||
|
@ -78,20 +86,29 @@ index 852a8b81e1..067a8bafe0 100644
|
|||
+ attachReleaseFenceFutureToLayer(layer, layerFE.get(), ui::INVALID_LAYER_STACK);
|
||||
}
|
||||
+ layerFEs = extractLayerFEs(layers);
|
||||
return getDisplayStateFromRenderAreaBuilder(renderAreaBuilder);
|
||||
return getDisplayStateOnMainThread(args);
|
||||
})
|
||||
.get();
|
||||
@@ -7389,15 +7382,15 @@ void SurfaceFlinger::captureScreenCommon(RenderAreaBuilderVariant renderAreaBuil
|
||||
@@ -7706,22 +7699,22 @@ void SurfaceFlinger::captureScreenCommon(ScreenshotArgs& args,
|
||||
return;
|
||||
}
|
||||
|
||||
- if (FlagManager::getInstance().single_hop_screenshot()) {
|
||||
- std::vector<std::pair<Layer*, sp<LayerFE>>> layers;
|
||||
- bool hasDisplayState = getSnapshotsFromMainThread(args, getLayerSnapshotsFn, layers);
|
||||
+ if (FlagManager::getInstance().single_hop_screenshot() && mRenderEngine->isThreaded()) {
|
||||
+ std::vector<sp<LayerFE>> layerFEs;
|
||||
auto displayState =
|
||||
- getSnapshotsFromMainThread(renderAreaBuilder, getLayerSnapshotsFn, layers);
|
||||
+ getSnapshotsFromMainThread(renderAreaBuilder, getLayerSnapshotsFn, layerFEs);
|
||||
+ bool hasDisplayState = getSnapshotsFromMainThread(args, getLayerSnapshotsFn, layerFEs);
|
||||
if (!hasDisplayState) {
|
||||
ALOGD("Display state not found");
|
||||
invokeScreenCaptureError(NO_MEMORY, captureListener);
|
||||
}
|
||||
|
||||
- const bool hasHdrLayer = std::any_of(layers.cbegin(), layers.cend(), [this](const auto& layer) {
|
||||
- return isHdrLayer(*(layer.second->mSnapshot.get()));
|
||||
+ const bool hasHdrLayer = std::any_of(layerFEs.cbegin(), layerFEs.cend(), [this](const auto& layer) {
|
||||
+ return isHdrLayer(*(layer->mSnapshot.get()));
|
||||
});
|
||||
|
||||
const bool supportsProtected = getRenderEngine().supportsProtectedContent();
|
||||
bool hasProtectedLayer = false;
|
||||
|
@ -101,16 +118,15 @@ index 852a8b81e1..067a8bafe0 100644
|
|||
}
|
||||
const bool isProtected = hasProtectedLayer && allowProtected && supportsProtected;
|
||||
const uint32_t usage = GRALLOC_USAGE_HW_COMPOSER | GRALLOC_USAGE_HW_RENDER |
|
||||
@@ -7424,7 +7417,7 @@ void SurfaceFlinger::captureScreenCommon(RenderAreaBuilderVariant renderAreaBuil
|
||||
WRITEABLE);
|
||||
auto futureFence = captureScreenshot(renderAreaBuilder, texture, false /* regionSampling */,
|
||||
grayscale, isProtected, attachGainmap, captureListener,
|
||||
- displayState, layers);
|
||||
+ displayState, layerFEs);
|
||||
futureFence.get();
|
||||
@@ -7787,14 +7780,14 @@ void SurfaceFlinger::captureScreenCommon(ScreenshotArgs& args,
|
||||
|
||||
auto futureFence =
|
||||
captureScreenshot(args, texture, false /* regionSampling */, grayscale, isProtected,
|
||||
- captureListener, layers, hdrTexture, gainmapTexture);
|
||||
+ captureListener, layerFEs, hdrTexture, gainmapTexture);
|
||||
futureFence.get();
|
||||
} else {
|
||||
@@ -7432,7 +7425,7 @@ void SurfaceFlinger::captureScreenCommon(RenderAreaBuilderVariant renderAreaBuil
|
||||
const bool supportsProtected = getRenderEngine().supportsProtectedContent();
|
||||
bool hasProtectedLayer = false;
|
||||
if (allowProtected && supportsProtected) {
|
||||
auto layers = mScheduler->schedule([=]() { return getLayerSnapshotsFn(); }).get();
|
||||
|
@ -119,8 +135,8 @@ index 852a8b81e1..067a8bafe0 100644
|
|||
}
|
||||
const bool isProtected = hasProtectedLayer && allowProtected && supportsProtected;
|
||||
const uint32_t usage = GRALLOC_USAGE_HW_COMPOSER | GRALLOC_USAGE_HW_RENDER |
|
||||
@@ -7500,13 +7493,22 @@ SurfaceFlinger::getDisplayStateFromRenderAreaBuilder(RenderAreaBuilderVariant& r
|
||||
return std::nullopt;
|
||||
@@ -7874,11 +7867,21 @@ bool SurfaceFlinger::getDisplayStateOnMainThread(ScreenshotArgs& args) {
|
||||
return false;
|
||||
}
|
||||
|
||||
+std::vector<sp<LayerFE>> SurfaceFlinger::extractLayerFEs(
|
||||
|
@ -134,66 +150,63 @@ index 852a8b81e1..067a8bafe0 100644
|
|||
+}
|
||||
+
|
||||
ftl::SharedFuture<FenceResult> SurfaceFlinger::captureScreenshot(
|
||||
const RenderAreaBuilderVariant& renderAreaBuilder,
|
||||
const std::shared_ptr<renderengine::ExternalTexture>& buffer, bool regionSampling,
|
||||
bool grayscale, bool isProtected, bool attachGainmap,
|
||||
ScreenshotArgs& args, const std::shared_ptr<renderengine::ExternalTexture>& buffer,
|
||||
bool regionSampling, bool grayscale, bool isProtected,
|
||||
const sp<IScreenCaptureListener>& captureListener,
|
||||
- std::optional<OutputCompositionState>& displayState,
|
||||
- std::vector<std::pair<Layer*, sp<LayerFE>>>& layers) {
|
||||
+ std::optional<OutputCompositionState>& displayState, std::vector<sp<LayerFE>>& layerFEs) {
|
||||
- const std::vector<std::pair<Layer*, sp<LayerFE>>>& layers,
|
||||
+ std::vector<sp<LayerFE>>& layerFEs,
|
||||
const std::shared_ptr<renderengine::ExternalTexture>& hdrBuffer,
|
||||
const std::shared_ptr<renderengine::ExternalTexture>& gainmapBuffer) {
|
||||
SFTRACE_CALL();
|
||||
@@ -7888,10 +7891,13 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::captureScreenshot(
|
||||
|
||||
ScreenCaptureResults captureResults;
|
||||
@@ -7525,9 +7527,11 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::captureScreenshot(
|
||||
float displayBrightnessNits = displayState.value().displayBrightnessNits;
|
||||
float sdrWhitePointNits = displayState.value().sdrWhitePointNits;
|
||||
float hdrSdrRatio = args.displayBrightnessNits / args.sdrWhitePointNits;
|
||||
|
||||
+ // Empty vector needed to pass into renderScreenImpl for legacy path
|
||||
+ std::vector<std::pair<Layer*, sp<android::LayerFE>>> layers;
|
||||
ftl::SharedFuture<FenceResult> renderFuture =
|
||||
renderScreenImpl(renderArea.get(), buffer, regionSampling, grayscale, isProtected,
|
||||
- attachGainmap, captureResults, displayState, layers);
|
||||
+ attachGainmap, captureResults, displayState, layers, layerFEs);
|
||||
|
||||
if (captureResults.capturedHdrLayers && attachGainmap &&
|
||||
FlagManager::getInstance().true_hdr_screenshots()) {
|
||||
@@ -7563,7 +7567,7 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::captureScreenshot(
|
||||
+
|
||||
if (hdrBuffer && gainmapBuffer) {
|
||||
ftl::SharedFuture<FenceResult> hdrRenderFuture =
|
||||
renderScreenImpl(renderArea.get(), hdrTexture, regionSampling, grayscale,
|
||||
isProtected, attachGainmap, unusedResults, displayState,
|
||||
- layers);
|
||||
+ layers, layerFEs);
|
||||
renderScreenImpl(args, hdrBuffer, regionSampling, grayscale, isProtected,
|
||||
- true, captureResults, layers);
|
||||
+ true, captureResults, layers, layerFEs);
|
||||
captureResults.buffer = buffer->getBuffer();
|
||||
captureResults.optionalGainMap = gainmapBuffer->getBuffer();
|
||||
|
||||
renderFuture =
|
||||
ftl::Future(std::move(renderFuture))
|
||||
@@ -7619,6 +7623,9 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::captureScreenshotLegacy(
|
||||
auto takeScreenshotFn = [=, this, renderAreaBuilder = std::move(renderAreaBuilder)]() REQUIRES(
|
||||
@@ -7913,7 +7919,7 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::captureScreenshot(
|
||||
.share();
|
||||
} else {
|
||||
renderFuture = renderScreenImpl(args, buffer, regionSampling, grayscale, isProtected,
|
||||
- false, captureResults, layers);
|
||||
+ false, captureResults, layers, layerFEs);
|
||||
}
|
||||
|
||||
if (captureListener) {
|
||||
@@ -7942,11 +7948,16 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::captureScreenshotLegacy(
|
||||
kMainThreadContext) mutable -> ftl::SharedFuture<FenceResult> {
|
||||
auto layers = getLayerSnapshotsFn();
|
||||
|
||||
+ for (auto& [layer, layerFE] : layers) {
|
||||
+ attachReleaseFenceFutureToLayer(layer, layerFE.get(), ui::INVALID_LAYER_STACK);
|
||||
+ }
|
||||
auto displayState = getDisplayStateFromRenderAreaBuilder(renderAreaBuilder);
|
||||
|
||||
+
|
||||
ScreenCaptureResults captureResults;
|
||||
@@ -7635,9 +7642,10 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::captureScreenshotLegacy(
|
||||
return ftl::yield<FenceResult>(base::unexpected(NO_ERROR)).share();
|
||||
}
|
||||
|
||||
+ auto layerFEs = extractLayerFEs(layers);
|
||||
ftl::SharedFuture<FenceResult> renderFuture =
|
||||
renderScreenImpl(renderArea.get(), buffer, regionSampling, grayscale, isProtected,
|
||||
- attachGainmap, captureResults, displayState, layers);
|
||||
+ attachGainmap, captureResults, displayState, layers, layerFEs);
|
||||
renderScreenImpl(args, buffer, regionSampling, grayscale, isProtected,
|
||||
- attachGainmap, captureResults, layers);
|
||||
+ attachGainmap, captureResults, layers, layerFEs);
|
||||
|
||||
if (captureListener) {
|
||||
// Defer blocking on renderFuture back to the Binder thread.
|
||||
@@ -7670,10 +7678,10 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::renderScreenImpl(
|
||||
const RenderArea* renderArea, const std::shared_ptr<renderengine::ExternalTexture>& buffer,
|
||||
@@ -7978,10 +7989,11 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::captureScreenshotLegacy(
|
||||
ftl::SharedFuture<FenceResult> SurfaceFlinger::renderScreenImpl(
|
||||
ScreenshotArgs& args, const std::shared_ptr<renderengine::ExternalTexture>& buffer,
|
||||
bool regionSampling, bool grayscale, bool isProtected, bool attachGainmap,
|
||||
ScreenCaptureResults& captureResults, std::optional<OutputCompositionState>& displayState,
|
||||
- std::vector<std::pair<Layer*, sp<LayerFE>>>& layers) {
|
||||
+ std::vector<std::pair<Layer*, sp<LayerFE>>>& layers, std::vector<sp<LayerFE>>& layerFEs) {
|
||||
- ScreenCaptureResults& captureResults, const std::vector<std::pair<Layer*, sp<LayerFE>>>& layers) {
|
||||
+ ScreenCaptureResults& captureResults, std::vector<std::pair<Layer*, sp<LayerFE>>>& layers,
|
||||
+ std::vector<sp<LayerFE>>& layerFEs) {
|
||||
SFTRACE_CALL();
|
||||
|
||||
- for (auto& [_, layerFE] : layers) {
|
||||
|
@ -201,7 +214,7 @@ index 852a8b81e1..067a8bafe0 100644
|
|||
frontend::LayerSnapshot* snapshot = layerFE->mSnapshot.get();
|
||||
captureResults.capturedSecureLayers |= (snapshot->isVisible && snapshot->isSecure);
|
||||
captureResults.capturedHdrLayers |= isHdrLayer(*snapshot);
|
||||
@@ -7732,32 +7740,29 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::renderScreenImpl(
|
||||
@@ -8026,31 +8038,29 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::renderScreenImpl(
|
||||
captureResults.buffer = capturedBuffer->getBuffer();
|
||||
|
||||
ui::LayerStack layerStack{ui::DEFAULT_LAYER_STACK};
|
||||
|
@ -222,14 +235,14 @@ index 852a8b81e1..067a8bafe0 100644
|
|||
+ };
|
||||
+
|
||||
auto present = [this, buffer = capturedBuffer, dataspace = captureResults.capturedDataspace,
|
||||
sdrWhitePointNits, displayBrightnessNits, grayscale, isProtected,
|
||||
- layers = std::move(layers), layerStack, regionSampling,
|
||||
+ layerFEs = copyLayerFEs(), layerStack, regionSampling,
|
||||
renderArea = std::move(renderArea), renderIntent,
|
||||
- grayscale, isProtected, layers, layerStack, regionSampling, args, renderIntent,
|
||||
+ grayscale, isProtected, layers, layerFEs = copyLayerFEs(),
|
||||
+ layerStack, regionSampling, args, renderIntent,
|
||||
enableLocalTonemapping]() -> FenceResult {
|
||||
std::unique_ptr<compositionengine::CompositionEngine> compositionEngine =
|
||||
mFactory.createCompositionEngine();
|
||||
compositionEngine->setRenderEngine(mRenderEngine.get());
|
||||
compositionEngine->setHwComposer(mHWComposer.get());
|
||||
|
||||
- std::vector<sp<compositionengine::LayerFE>> layerFEs;
|
||||
- layerFEs.reserve(layers.size());
|
||||
|
@ -246,7 +259,7 @@ index 852a8b81e1..067a8bafe0 100644
|
|||
compositionengine::Output::ColorProfile colorProfile{.dataspace = dataspace,
|
||||
.renderIntent = renderIntent};
|
||||
|
||||
@@ -7816,10 +7821,8 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::renderScreenImpl(
|
||||
@@ -8120,10 +8130,8 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::renderScreenImpl(
|
||||
// TODO(b/196334700) Once we use RenderEngineThreaded everywhere we can always defer the call
|
||||
// to CompositionEngine::present.
|
||||
ftl::SharedFuture<FenceResult> presentFuture;
|
||||
|
@ -260,10 +273,10 @@ index 852a8b81e1..067a8bafe0 100644
|
|||
presentFuture = mRenderEngine->isThreaded() ? ftl::defer(std::move(present)).share()
|
||||
: ftl::yield(present()).share();
|
||||
diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h
|
||||
index 835cb572b4..1df78acbf9 100644
|
||||
index 88c1701998..260fe20620 100644
|
||||
--- a/services/surfaceflinger/SurfaceFlinger.h
|
||||
+++ b/services/surfaceflinger/SurfaceFlinger.h
|
||||
@@ -861,14 +861,13 @@ private:
|
||||
@@ -872,7 +872,7 @@ private:
|
||||
void attachReleaseFenceFutureToLayer(Layer* layer, LayerFE* layerFE, ui::LayerStack layerStack);
|
||||
|
||||
// Checks if a protected layer exists in a list of layers.
|
||||
|
@ -272,17 +285,18 @@ index 835cb572b4..1df78acbf9 100644
|
|||
|
||||
using OutputCompositionState = compositionengine::impl::OutputCompositionState;
|
||||
|
||||
std::optional<OutputCompositionState> getSnapshotsFromMainThread(
|
||||
RenderAreaBuilderVariant& renderAreaBuilder,
|
||||
- GetLayerSnapshotsFunction getLayerSnapshotsFn,
|
||||
- std::vector<std::pair<Layer*, sp<LayerFE>>>& layers);
|
||||
+ GetLayerSnapshotsFunction getLayerSnapshotsFn, std::vector<sp<LayerFE>>& layerFEs);
|
||||
@@ -927,7 +927,7 @@ private:
|
||||
|
||||
void captureScreenCommon(RenderAreaBuilderVariant, GetLayerSnapshotsFunction,
|
||||
ui::Size bufferSize, ui::PixelFormat, bool allowProtected,
|
||||
@@ -877,13 +876,19 @@ private:
|
||||
std::optional<OutputCompositionState> getDisplayStateFromRenderAreaBuilder(
|
||||
RenderAreaBuilderVariant& renderAreaBuilder) REQUIRES(kMainThreadContext);
|
||||
bool getSnapshotsFromMainThread(ScreenshotArgs& args,
|
||||
GetLayerSnapshotsFunction getLayerSnapshotsFn,
|
||||
- std::vector<std::pair<Layer*, sp<LayerFE>>>& layers);
|
||||
+ std::vector<sp<LayerFE>>& layerFEs);
|
||||
|
||||
void captureScreenCommon(ScreenshotArgs& args, GetLayerSnapshotsFunction, ui::Size bufferSize,
|
||||
ui::PixelFormat, bool allowProtected, bool grayscale,
|
||||
@@ -935,11 +935,17 @@ private:
|
||||
|
||||
bool getDisplayStateOnMainThread(ScreenshotArgs& args) REQUIRES(kMainThreadContext);
|
||||
|
||||
+ // Legacy layer raw pointer is not safe to access outside the main thread.
|
||||
+ // Creates a new vector consisting only of LayerFEs, which can be safely
|
||||
|
@ -291,41 +305,42 @@ index 835cb572b4..1df78acbf9 100644
|
|||
+ const std::vector<std::pair<Layer*, sp<LayerFE>>>& layers) const;
|
||||
+
|
||||
ftl::SharedFuture<FenceResult> captureScreenshot(
|
||||
const RenderAreaBuilderVariant& renderAreaBuilder,
|
||||
const std::shared_ptr<renderengine::ExternalTexture>& buffer, bool regionSampling,
|
||||
bool grayscale, bool isProtected, bool attachGainmap,
|
||||
ScreenshotArgs& args, const std::shared_ptr<renderengine::ExternalTexture>& buffer,
|
||||
bool regionSampling, bool grayscale, bool isProtected,
|
||||
const sp<IScreenCaptureListener>& captureListener,
|
||||
std::optional<OutputCompositionState>& displayState,
|
||||
- std::vector<std::pair<Layer*, sp<LayerFE>>>& layers);
|
||||
+ std::vector<sp<LayerFE>>& layerFEs);
|
||||
- const std::vector<std::pair<Layer*, sp<LayerFE>>>& layers,
|
||||
+ std::vector<sp<LayerFE>>& layerFEs,
|
||||
const std::shared_ptr<renderengine::ExternalTexture>& hdrBuffer = nullptr,
|
||||
const std::shared_ptr<renderengine::ExternalTexture>& gainmapBuffer = nullptr);
|
||||
|
||||
ftl::SharedFuture<FenceResult> captureScreenshotLegacy(
|
||||
RenderAreaBuilderVariant, GetLayerSnapshotsFunction,
|
||||
@@ -895,7 +900,8 @@ private:
|
||||
const RenderArea*, const std::shared_ptr<renderengine::ExternalTexture>&,
|
||||
@@ -952,7 +958,8 @@ private:
|
||||
ftl::SharedFuture<FenceResult> renderScreenImpl(
|
||||
ScreenshotArgs& args, const std::shared_ptr<renderengine::ExternalTexture>&,
|
||||
bool regionSampling, bool grayscale, bool isProtected, bool attachGainmap,
|
||||
ScreenCaptureResults&, std::optional<OutputCompositionState>& displayState,
|
||||
- std::vector<std::pair<Layer*, sp<LayerFE>>>& layers);
|
||||
+ std::vector<std::pair<Layer*, sp<LayerFE>>>& layers,
|
||||
- ScreenCaptureResults&, const std::vector<std::pair<Layer*, sp<LayerFE>>>& layers);
|
||||
+ ScreenCaptureResults&, std::vector<std::pair<Layer*, sp<LayerFE>>>& layers,
|
||||
+ std::vector<sp<LayerFE>>& layerFEs);
|
||||
|
||||
void readPersistentProperties();
|
||||
|
||||
diff --git a/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h b/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h
|
||||
index fd8bc0d22d..2ba739b462 100644
|
||||
index 7e519d3842..062df4d5e2 100644
|
||||
--- a/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h
|
||||
+++ b/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h
|
||||
@@ -472,11 +472,12 @@ public:
|
||||
@@ -478,6 +478,7 @@ public:
|
||||
ScreenCaptureResults captureResults;
|
||||
auto displayState = std::optional{display->getCompositionDisplay()->getState()};
|
||||
const auto& state = display->getCompositionDisplay()->getState();
|
||||
auto layers = getLayerSnapshotsFn();
|
||||
+ auto layerFEs = mFlinger->extractLayerFEs(layers);
|
||||
|
||||
return mFlinger->renderScreenImpl(renderArea.get(), buffer, regionSampling,
|
||||
SurfaceFlinger::ScreenshotArgs screenshotArgs;
|
||||
screenshotArgs.captureTypeVariant = display;
|
||||
@@ -494,7 +495,7 @@ public:
|
||||
|
||||
return mFlinger->renderScreenImpl(screenshotArgs, buffer, regionSampling,
|
||||
false /* grayscale */, false /* isProtected */,
|
||||
false /* attachGainmap */, captureResults, displayState,
|
||||
- layers);
|
||||
+ layers, layerFEs);
|
||||
- false /*attachGainmap */, captureResults, layers);
|
||||
+ false /*attachGainmap */, captureResults, layers, layerFEs);
|
||||
}
|
||||
|
||||
auto getLayerSnapshotsForScreenshotsFn(ui::LayerStack layerStack, uint32_t uid) {
|
|
@ -1,11 +1,14 @@
|
|||
From 76923ab930a6fee15aa477bea3638e09fe7b604a Mon Sep 17 00:00:00 2001
|
||||
From 9d29befb9b5d3a9c5a893e7abdab42656d67eb14 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Cai <peter@typeblog.net>
|
||||
Date: Sun, 16 Mar 2025 13:25:10 -0400
|
||||
Subject: [PATCH 7/7] Revert "Remove dead code from LayerFE"
|
||||
Date: Sun, 15 Jun 2025 18:32:42 -0400
|
||||
Subject: [PATCH 5/6] Revert "Remove dead code from LayerFE"
|
||||
|
||||
This reverts commit 330571240ff3d44fdbecbe513309d73ba82404e6.
|
||||
|
||||
Change-Id: If3af99ec76a8c595dcd1ea22965f2d126d74a315
|
||||
Change-Id: Idade7d609dbec06f2b0636df2640388937f68f62
|
||||
|
||||
Conflicts:
|
||||
services/surfaceflinger/LayerFE.cpp
|
||||
---
|
||||
.../CompositionEngine/include/compositionengine/LayerFE.h | 3 +++
|
||||
.../include/compositionengine/mock/LayerFE.h | 3 +++
|
||||
|
@ -14,10 +17,10 @@ Change-Id: If3af99ec76a8c595dcd1ea22965f2d126d74a315
|
|||
4 files changed, 15 insertions(+)
|
||||
|
||||
diff --git a/services/surfaceflinger/CompositionEngine/include/compositionengine/LayerFE.h b/services/surfaceflinger/CompositionEngine/include/compositionengine/LayerFE.h
|
||||
index cda4edc216..8199c929e5 100644
|
||||
index e2ea0f1397..41d4afe207 100644
|
||||
--- a/services/surfaceflinger/CompositionEngine/include/compositionengine/LayerFE.h
|
||||
+++ b/services/surfaceflinger/CompositionEngine/include/compositionengine/LayerFE.h
|
||||
@@ -148,6 +148,9 @@ public:
|
||||
@@ -154,6 +154,9 @@ public:
|
||||
virtual std::optional<LayerSettings> prepareClientComposition(
|
||||
ClientCompositionTargetSettings&) const = 0;
|
||||
|
||||
|
@ -28,7 +31,7 @@ index cda4edc216..8199c929e5 100644
|
|||
// fence. This should only be called when a promise has not yet been created, or
|
||||
// after the previous promise has already been fulfilled. Attempting to call this
|
||||
diff --git a/services/surfaceflinger/CompositionEngine/include/compositionengine/mock/LayerFE.h b/services/surfaceflinger/CompositionEngine/include/compositionengine/mock/LayerFE.h
|
||||
index 272fa3eef7..a236ebf180 100644
|
||||
index f65a9083c5..4733939ce2 100644
|
||||
--- a/services/surfaceflinger/CompositionEngine/include/compositionengine/mock/LayerFE.h
|
||||
+++ b/services/surfaceflinger/CompositionEngine/include/compositionengine/mock/LayerFE.h
|
||||
@@ -50,6 +50,9 @@ public:
|
||||
|
@ -40,21 +43,21 @@ index 272fa3eef7..a236ebf180 100644
|
|||
+
|
||||
MOCK_METHOD0(createReleaseFenceFuture, ftl::Future<FenceResult>());
|
||||
MOCK_METHOD1(setReleaseFence, void(const FenceResult&));
|
||||
MOCK_METHOD0(getReleaseFencePromiseStatus, LayerFE::ReleaseFencePromiseStatus());
|
||||
MOCK_METHOD1(setReleasedBuffer, void(sp<GraphicBuffer>));
|
||||
diff --git a/services/surfaceflinger/LayerFE.cpp b/services/surfaceflinger/LayerFE.cpp
|
||||
index de64b271f5..012aa32c30 100644
|
||||
index 3cd432cd2b..7ae407da1a 100644
|
||||
--- a/services/surfaceflinger/LayerFE.cpp
|
||||
+++ b/services/surfaceflinger/LayerFE.cpp
|
||||
@@ -28,6 +28,7 @@
|
||||
@@ -27,6 +27,7 @@
|
||||
#include "LayerFE.h"
|
||||
#include "SurfaceFlinger.h"
|
||||
#include "common/FlagManager.h"
|
||||
#include "ui/FenceResult.h"
|
||||
+#include "ui/LayerStack.h"
|
||||
|
||||
namespace android {
|
||||
|
||||
@@ -355,6 +356,11 @@ CompositionResult LayerFE::stealCompositionResult() {
|
||||
return result;
|
||||
@@ -352,6 +353,11 @@ void LayerFE::onPictureProfileCommitted() {
|
||||
mCompositionResult.pictureProfileHandle = mSnapshot->pictureProfileHandle;
|
||||
}
|
||||
|
||||
+void LayerFE::onLayerDisplayed(ftl::SharedFuture<FenceResult> futureFenceResult,
|
||||
|
@ -62,14 +65,14 @@ index de64b271f5..012aa32c30 100644
|
|||
+ mCompositionResult.releaseFences.emplace_back(std::move(futureFenceResult), layerStack);
|
||||
+}
|
||||
+
|
||||
const char* LayerFE::getDebugName() const {
|
||||
return mName.c_str();
|
||||
}
|
||||
CompositionResult LayerFE::stealCompositionResult() {
|
||||
CompositionResult result;
|
||||
std::swap(mCompositionResult, result);
|
||||
diff --git a/services/surfaceflinger/LayerFE.h b/services/surfaceflinger/LayerFE.h
|
||||
index 9483aebafa..ce6d27a91a 100644
|
||||
index b897a90687..fad77e92a9 100644
|
||||
--- a/services/surfaceflinger/LayerFE.h
|
||||
+++ b/services/surfaceflinger/LayerFE.h
|
||||
@@ -25,12 +25,14 @@
|
||||
@@ -26,12 +26,14 @@
|
||||
#include "compositionengine/LayerFE.h"
|
||||
#include "compositionengine/LayerFECompositionState.h"
|
||||
#include "renderengine/LayerSettings.h"
|
||||
|
@ -84,7 +87,7 @@ index 9483aebafa..ce6d27a91a 100644
|
|||
sp<Fence> lastClientCompositionFence = nullptr;
|
||||
bool wasPictureProfileCommitted = false;
|
||||
// TODO(b/337330263): Why does LayerFE coming from SF have a null composition state?
|
||||
@@ -46,6 +48,7 @@ public:
|
||||
@@ -47,6 +49,7 @@ public:
|
||||
// compositionengine::LayerFE overrides
|
||||
const compositionengine::LayerFECompositionState* getCompositionState() const override;
|
||||
bool onPreComposition(bool updatingOutputGeometryThisFrame) override;
|
|
@ -1,11 +1,19 @@
|
|||
From c2edb476e76d96dc48ed0f5b46367d1b0137e8b7 Mon Sep 17 00:00:00 2001
|
||||
From b89cd9e4add465d850fe7e0bab57c6ad6f133c69 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Cai <peter@typeblog.net>
|
||||
Date: Sun, 16 Mar 2025 13:24:30 -0400
|
||||
Subject: [PATCH 6/7] Revert "Remove release fence flags"
|
||||
Date: Sun, 15 Jun 2025 18:57:59 -0400
|
||||
Subject: [PATCH 6/6] Revert "Remove release fence flags"
|
||||
|
||||
This reverts commit 0077fde3aba6f2bde4e878f88c0dd466350fc1b1.
|
||||
|
||||
Change-Id: I04eb5f0a45cc63e55b6b74f2327d182cd9f15098
|
||||
Change-Id: I339bebac4a7875ccef3b0c5d5111ecfdab35af99
|
||||
|
||||
Conflicts:
|
||||
services/surfaceflinger/CompositionEngine/src/Output.cpp
|
||||
services/surfaceflinger/Layer.cpp
|
||||
services/surfaceflinger/SurfaceFlinger.cpp
|
||||
services/surfaceflinger/common/FlagManager.cpp
|
||||
services/surfaceflinger/common/include/common/FlagManager.h
|
||||
services/surfaceflinger/tests/TransactionTestHarnesses.h
|
||||
---
|
||||
.../src/CompositionEngine.cpp | 32 +++--
|
||||
.../CompositionEngine/src/Output.cpp | 15 +-
|
||||
|
@ -15,16 +23,16 @@ Change-Id: I04eb5f0a45cc63e55b6b74f2327d182cd9f15098
|
|||
services/surfaceflinger/Layer.h | 16 +++
|
||||
services/surfaceflinger/LayerFE.cpp | 4 +-
|
||||
.../surfaceflinger/RegionSamplingThread.cpp | 2 +-
|
||||
services/surfaceflinger/SurfaceFlinger.cpp | 123 +++++++++++-----
|
||||
.../TransactionCallbackInvoker.cpp | 11 +-
|
||||
services/surfaceflinger/SurfaceFlinger.cpp | 96 +++++++++----
|
||||
.../TransactionCallbackInvoker.cpp | 10 +-
|
||||
.../TransactionCallbackInvoker.h | 1 +
|
||||
.../surfaceflinger/common/FlagManager.cpp | 4 +
|
||||
.../common/include/common/FlagManager.h | 2 +
|
||||
.../tests/TransactionTestHarnesses.h | 15 +-
|
||||
14 files changed, 364 insertions(+), 59 deletions(-)
|
||||
14 files changed, 345 insertions(+), 50 deletions(-)
|
||||
|
||||
diff --git a/services/surfaceflinger/CompositionEngine/src/CompositionEngine.cpp b/services/surfaceflinger/CompositionEngine/src/CompositionEngine.cpp
|
||||
index cfcce473a2..5c5d0cd74d 100644
|
||||
index ab2a03cd60..787bc23389 100644
|
||||
--- a/services/surfaceflinger/CompositionEngine/src/CompositionEngine.cpp
|
||||
+++ b/services/surfaceflinger/CompositionEngine/src/CompositionEngine.cpp
|
||||
@@ -198,23 +198,25 @@ void CompositionEngine::preComposition(CompositionRefreshArgs& args) {
|
||||
|
@ -69,10 +77,10 @@ index cfcce473a2..5c5d0cd74d 100644
|
|||
}
|
||||
}
|
||||
diff --git a/services/surfaceflinger/CompositionEngine/src/Output.cpp b/services/surfaceflinger/CompositionEngine/src/Output.cpp
|
||||
index f9ed92d1ee..34773de107 100644
|
||||
index 00a61a5ab6..7c7537bbbe 100644
|
||||
--- a/services/surfaceflinger/CompositionEngine/src/Output.cpp
|
||||
+++ b/services/surfaceflinger/CompositionEngine/src/Output.cpp
|
||||
@@ -1664,7 +1664,13 @@ void Output::presentFrameAndReleaseLayers(bool flushEvenWhenDisabled) {
|
||||
@@ -1675,7 +1675,13 @@ void Output::presentFrameAndReleaseLayers(bool flushEvenWhenDisabled) {
|
||||
releaseFence =
|
||||
Fence::merge("LayerRelease", releaseFence, frame.clientTargetAcquireFence);
|
||||
}
|
||||
|
@ -84,10 +92,10 @@ index f9ed92d1ee..34773de107 100644
|
|||
+ .onLayerDisplayed(ftl::yield<FenceResult>(std::move(releaseFence)).share(),
|
||||
+ outputState.layerFilter.layerStack);
|
||||
+ }
|
||||
layer->getLayerFE().setReleasedBuffer(layer->getLayerFE().getCompositionState()->buffer);
|
||||
}
|
||||
|
||||
// We've got a list of layers needing fences, that are disjoint with
|
||||
@@ -1672,7 +1678,12 @@ void Output::presentFrameAndReleaseLayers(bool flushEvenWhenDisabled) {
|
||||
@@ -1684,7 +1690,12 @@ void Output::presentFrameAndReleaseLayers(bool flushEvenWhenDisabled) {
|
||||
// supply them with the present fence.
|
||||
for (auto& weakLayer : mReleasedLayers) {
|
||||
if (const auto layer = weakLayer.promote()) {
|
||||
|
@ -102,7 +110,7 @@ index f9ed92d1ee..34773de107 100644
|
|||
}
|
||||
|
||||
diff --git a/services/surfaceflinger/CompositionEngine/tests/CompositionEngineTest.cpp b/services/surfaceflinger/CompositionEngine/tests/CompositionEngineTest.cpp
|
||||
index 3e0c390a5d..deb90deaf7 100644
|
||||
index 34c09db6f8..dd012dad75 100644
|
||||
--- a/services/surfaceflinger/CompositionEngine/tests/CompositionEngineTest.cpp
|
||||
+++ b/services/surfaceflinger/CompositionEngine/tests/CompositionEngineTest.cpp
|
||||
@@ -29,6 +29,8 @@
|
||||
|
@ -114,7 +122,7 @@ index 3e0c390a5d..deb90deaf7 100644
|
|||
using namespace com::android::graphics::surfaceflinger;
|
||||
|
||||
namespace android::compositionengine {
|
||||
@@ -491,6 +493,9 @@ struct CompositionEnginePostCompositionTest : public CompositionEngineTest {
|
||||
@@ -504,6 +506,9 @@ struct CompositionEnginePostCompositionTest : public CompositionEngineTest {
|
||||
};
|
||||
|
||||
TEST_F(CompositionEnginePostCompositionTest, postCompositionReleasesAllFences) {
|
||||
|
@ -125,7 +133,7 @@ index 3e0c390a5d..deb90deaf7 100644
|
|||
.WillOnce(Return(LayerFE::ReleaseFencePromiseStatus::FULFILLED));
|
||||
EXPECT_CALL(*mLayer2FE, getReleaseFencePromiseStatus)
|
||||
diff --git a/services/surfaceflinger/CompositionEngine/tests/OutputTest.cpp b/services/surfaceflinger/CompositionEngine/tests/OutputTest.cpp
|
||||
index 442b603ca0..eb7f0ddc37 100644
|
||||
index 590626ace5..38ff11f092 100644
|
||||
--- a/services/surfaceflinger/CompositionEngine/tests/OutputTest.cpp
|
||||
+++ b/services/surfaceflinger/CompositionEngine/tests/OutputTest.cpp
|
||||
@@ -35,6 +35,7 @@
|
||||
|
@ -136,7 +144,7 @@ index 442b603ca0..eb7f0ddc37 100644
|
|||
#include <cstdint>
|
||||
#include <variant>
|
||||
|
||||
@@ -3289,9 +3290,57 @@ TEST_F(OutputPostFramebufferTest, ifEnabledMustFlipThenPresentThenSendPresentCom
|
||||
@@ -3304,9 +3305,57 @@ TEST_F(OutputPostFramebufferTest, ifEnabledMustFlipThenPresentThenSendPresentCom
|
||||
mOutput.presentFrameAndReleaseLayers(kFlushEvenWhenDisabled);
|
||||
}
|
||||
|
||||
|
@ -194,7 +202,7 @@ index 442b603ca0..eb7f0ddc37 100644
|
|||
mOutput.mState.isEnabled = true;
|
||||
|
||||
// Create three unique fence instances
|
||||
@@ -3328,7 +3377,37 @@ TEST_F(OutputPostFramebufferTest, releaseFencesAreSetInLayerFE) {
|
||||
@@ -3363,7 +3412,37 @@ TEST_F(OutputPostFramebufferTest, releaseFencesAreSetInLayerFE) {
|
||||
mOutput.presentFrameAndReleaseLayers(kFlushEvenWhenDisabled);
|
||||
}
|
||||
|
||||
|
@ -232,7 +240,7 @@ index 442b603ca0..eb7f0ddc37 100644
|
|||
mOutput.mState.isEnabled = true;
|
||||
mOutput.mState.usesClientComposition = true;
|
||||
|
||||
@@ -3351,7 +3430,62 @@ TEST_F(OutputPostFramebufferTest, setReleaseFencesIncludeClientTargetAcquireFenc
|
||||
@@ -3406,7 +3485,62 @@ TEST_F(OutputPostFramebufferTest, setReleaseFencesIncludeClientTargetAcquireFenc
|
||||
mOutput.presentFrameAndReleaseLayers(kFlushEvenWhenDisabled);
|
||||
}
|
||||
|
||||
|
@ -296,10 +304,10 @@ index 442b603ca0..eb7f0ddc37 100644
|
|||
mOutput.mState.usesClientComposition = true;
|
||||
|
||||
diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp
|
||||
index 195461f47e..a8e60f1632 100644
|
||||
index 2e312827f2..cff489062c 100644
|
||||
--- a/services/surfaceflinger/Layer.cpp
|
||||
+++ b/services/surfaceflinger/Layer.cpp
|
||||
@@ -805,6 +805,54 @@ void Layer::prepareReleaseCallbacks(ftl::Future<FenceResult> futureFenceResult,
|
||||
@@ -812,6 +812,54 @@ void Layer::prepareReleaseCallbacks(ftl::Future<FenceResult> futureFenceResult,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -354,10 +362,10 @@ index 195461f47e..a8e60f1632 100644
|
|||
void Layer::releasePendingBuffer(nsecs_t dequeueReadyTime) {
|
||||
for (const auto& handle : mDrawingState.callbackHandles) {
|
||||
handle->bufferReleaseChannel = mBufferReleaseChannel;
|
||||
@@ -1117,13 +1165,22 @@ bool Layer::setTransactionCompletedListeners(const std::vector<sp<CallbackHandle
|
||||
handle->acquireTimeOrFence = mCallbackHandleAcquireTimeOrFence;
|
||||
@@ -1128,13 +1176,22 @@ bool Layer::setTransactionCompletedListeners(const std::vector<sp<CallbackHandle
|
||||
handle->frameNumber = mDrawingState.frameNumber;
|
||||
handle->previousFrameNumber = mDrawingState.previousFrameNumber;
|
||||
handle->previousBuffer = mDrawingState.previousBuffer;
|
||||
- if (mPreviousReleaseBufferEndpoint == handle->listener) {
|
||||
+ if (FlagManager::getInstance().ce_fence_promise() &&
|
||||
+ mPreviousReleaseBufferEndpoint == handle->listener) {
|
||||
|
@ -379,10 +387,10 @@ index 195461f47e..a8e60f1632 100644
|
|||
// Store so latched time and release fence can be set
|
||||
mDrawingState.callbackHandles.push_back(handle);
|
||||
diff --git a/services/surfaceflinger/Layer.h b/services/surfaceflinger/Layer.h
|
||||
index c234a75693..c4ffe1ef2d 100644
|
||||
index 88754f9fa3..16324a426c 100644
|
||||
--- a/services/surfaceflinger/Layer.h
|
||||
+++ b/services/surfaceflinger/Layer.h
|
||||
@@ -261,6 +261,8 @@ public:
|
||||
@@ -262,6 +262,8 @@ public:
|
||||
|
||||
bool fenceHasSignaled() const;
|
||||
void onPreComposition(nsecs_t refreshStartTime);
|
||||
|
@ -391,7 +399,7 @@ index c234a75693..c4ffe1ef2d 100644
|
|||
|
||||
// Tracks mLastClientCompositionFence and gets the callback handle for this layer.
|
||||
sp<CallbackHandle> findCallbackHandle();
|
||||
@@ -389,6 +391,20 @@ public:
|
||||
@@ -390,6 +392,20 @@ public:
|
||||
// from the layer.
|
||||
std::vector<ui::LayerStack> mPreviouslyPresentedLayerStacks;
|
||||
|
||||
|
@ -413,7 +421,7 @@ index c234a75693..c4ffe1ef2d 100644
|
|||
// callback. A release callback may not be given when capturing
|
||||
// screenshots asynchronously. There may be no buffer update for the
|
||||
diff --git a/services/surfaceflinger/LayerFE.cpp b/services/surfaceflinger/LayerFE.cpp
|
||||
index fea7671af2..de64b271f5 100644
|
||||
index 7ae407da1a..21a1ce733c 100644
|
||||
--- a/services/surfaceflinger/LayerFE.cpp
|
||||
+++ b/services/surfaceflinger/LayerFE.cpp
|
||||
@@ -26,6 +26,7 @@
|
||||
|
@ -422,9 +430,9 @@ index fea7671af2..de64b271f5 100644
|
|||
#include "SurfaceFlinger.h"
|
||||
+#include "common/FlagManager.h"
|
||||
#include "ui/FenceResult.h"
|
||||
#include "ui/LayerStack.h"
|
||||
|
||||
namespace android {
|
||||
@@ -82,7 +83,8 @@ LayerFE::~LayerFE() {
|
||||
@@ -83,7 +84,8 @@ LayerFE::~LayerFE() {
|
||||
// Ensures that no promise is left unfulfilled before the LayerFE is destroyed.
|
||||
// An unfulfilled promise could occur when a screenshot is attempted, but the
|
||||
// render area is invalid and there is no memory for the capture result.
|
||||
|
@ -435,23 +443,23 @@ index fea7671af2..de64b271f5 100644
|
|||
}
|
||||
}
|
||||
diff --git a/services/surfaceflinger/RegionSamplingThread.cpp b/services/surfaceflinger/RegionSamplingThread.cpp
|
||||
index 011fd9e20a..06c2f26a6d 100644
|
||||
index 7e2144d6b1..c9f0bfb928 100644
|
||||
--- a/services/surfaceflinger/RegionSamplingThread.cpp
|
||||
+++ b/services/surfaceflinger/RegionSamplingThread.cpp
|
||||
@@ -355,7 +355,7 @@ void RegionSamplingThread::captureSample() {
|
||||
@@ -357,7 +357,7 @@ void RegionSamplingThread::captureSample() {
|
||||
|
||||
FenceResult fenceResult;
|
||||
if (FlagManager::getInstance().single_hop_screenshot() &&
|
||||
- mFlinger.mRenderEngine->isThreaded()) {
|
||||
+ FlagManager::getInstance().ce_fence_promise() && mFlinger.mRenderEngine->isThreaded()) {
|
||||
std::vector<sp<LayerFE>> layerFEs;
|
||||
auto displayState = mFlinger.getSnapshotsFromMainThread(renderAreaBuilder,
|
||||
getLayerSnapshotsFn, layerFEs);
|
||||
auto displayState =
|
||||
mFlinger.getSnapshotsFromMainThread(screenshotArgs, getLayerSnapshotsFn, layerFEs);
|
||||
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
|
||||
index 067a8bafe0..47a3c2c2bf 100644
|
||||
index 235ddfb762..fbae69f30f 100644
|
||||
--- a/services/surfaceflinger/SurfaceFlinger.cpp
|
||||
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
|
||||
@@ -2820,6 +2820,16 @@ CompositeResultsPerDisplay SurfaceFlinger::composite(
|
||||
@@ -2918,6 +2918,16 @@ CompositeResultsPerDisplay SurfaceFlinger::composite(
|
||||
compositionengine::Feature::kSnapshotLayerMetadata);
|
||||
|
||||
refreshArgs.bufferIdsToUncache = std::move(mBufferIdsToUncache);
|
||||
|
@ -468,7 +476,7 @@ index 067a8bafe0..47a3c2c2bf 100644
|
|||
refreshArgs.outputColorSetting = mDisplayColorSetting;
|
||||
refreshArgs.forceOutputColorMode = mForceColorMode;
|
||||
|
||||
@@ -2883,38 +2893,54 @@ CompositeResultsPerDisplay SurfaceFlinger::composite(
|
||||
@@ -2981,24 +2991,26 @@ CompositeResultsPerDisplay SurfaceFlinger::composite(
|
||||
layer->onPreComposition(refreshArgs.refreshStartTime);
|
||||
}
|
||||
|
||||
|
@ -512,45 +520,20 @@ index 067a8bafe0..47a3c2c2bf 100644
|
|||
+ }
|
||||
}
|
||||
}
|
||||
- }
|
||||
|
||||
- mCompositionEngine->present(refreshArgs);
|
||||
- moveSnapshotsFromCompositionArgs(refreshArgs, layers);
|
||||
+ mCompositionEngine->present(refreshArgs);
|
||||
+ moveSnapshotsFromCompositionArgs(refreshArgs, layers);
|
||||
|
||||
- for (auto& [layer, layerFE] : layers) {
|
||||
- CompositionResult compositionResult{layerFE->stealCompositionResult()};
|
||||
- if (compositionResult.lastClientCompositionFence) {
|
||||
- layer->setWasClientComposed(compositionResult.lastClientCompositionFence);
|
||||
+ for (auto& [layer, layerFE] : layers) {
|
||||
+ CompositionResult compositionResult{layerFE->stealCompositionResult()};
|
||||
+ if (compositionResult.lastClientCompositionFence) {
|
||||
+ layer->setWasClientComposed(compositionResult.lastClientCompositionFence);
|
||||
+ }
|
||||
}
|
||||
- if (com_android_graphics_libgui_flags_apply_picture_profiles()) {
|
||||
- mActivePictureUpdater.onLayerComposed(*layer, *layerFE, compositionResult);
|
||||
+
|
||||
+ } else {
|
||||
+ mCompositionEngine->present(refreshArgs);
|
||||
+ moveSnapshotsFromCompositionArgs(refreshArgs, layers);
|
||||
+
|
||||
+ for (auto [layer, layerFE] : layers) {
|
||||
+ CompositionResult compositionResult{layerFE->stealCompositionResult()};
|
||||
@@ -3020,6 +3032,11 @@ CompositeResultsPerDisplay SurfaceFlinger::composite(
|
||||
uint64_t prevOverrideBufferId = 0;
|
||||
for (auto& [layer, layerFE] : layers) {
|
||||
CompositionResult compositionResult{layerFE->stealCompositionResult()};
|
||||
+ if (FlagManager::getInstance().ce_fence_promise()) {
|
||||
+ for (auto& [releaseFence, layerStack] : compositionResult.releaseFences) {
|
||||
+ layer->onLayerDisplayed(std::move(releaseFence), layerStack);
|
||||
+ }
|
||||
+ if (compositionResult.lastClientCompositionFence) {
|
||||
+ layer->setWasClientComposed(compositionResult.lastClientCompositionFence);
|
||||
+ }
|
||||
+ if (com_android_graphics_libgui_flags_apply_picture_profiles()) {
|
||||
+ mActivePictureUpdater.onLayerComposed(*layer, *layerFE, compositionResult);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3196,8 +3222,13 @@ void SurfaceFlinger::onCompositionPresented(PhysicalDisplayId pacesetterId,
|
||||
if (lastLayerStack != layerFE->mSnapshot->outputFilter.layerStack) {
|
||||
if (lastLayerStack != ui::INVALID_LAYER_STACK) {
|
||||
// add a space to separate displays
|
||||
@@ -3345,8 +3362,13 @@ void SurfaceFlinger::onCompositionPresented(PhysicalDisplayId pacesetterId,
|
||||
auto optDisplay = layerStackToDisplay.get(layerStack);
|
||||
if (optDisplay && !optDisplay->get()->isVirtual()) {
|
||||
auto fence = getHwComposer().getPresentFence(optDisplay->get()->getPhysicalId());
|
||||
|
@ -566,7 +549,7 @@ index 067a8bafe0..47a3c2c2bf 100644
|
|||
}
|
||||
}
|
||||
layer->releasePendingBuffer(presentTime.ns());
|
||||
@@ -7382,7 +7413,8 @@ void SurfaceFlinger::captureScreenCommon(RenderAreaBuilderVariant renderAreaBuil
|
||||
@@ -7699,7 +7721,8 @@ void SurfaceFlinger::captureScreenCommon(ScreenshotArgs& args,
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -574,12 +557,12 @@ index 067a8bafe0..47a3c2c2bf 100644
|
|||
+ if (FlagManager::getInstance().single_hop_screenshot() &&
|
||||
+ FlagManager::getInstance().ce_fence_promise() && mRenderEngine->isThreaded()) {
|
||||
std::vector<sp<LayerFE>> layerFEs;
|
||||
auto displayState =
|
||||
getSnapshotsFromMainThread(renderAreaBuilder, getLayerSnapshotsFn, layerFEs);
|
||||
@@ -7623,8 +7655,10 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::captureScreenshotLegacy(
|
||||
auto takeScreenshotFn = [=, this, renderAreaBuilder = std::move(renderAreaBuilder)]() REQUIRES(
|
||||
bool hasDisplayState = getSnapshotsFromMainThread(args, getLayerSnapshotsFn, layerFEs);
|
||||
if (!hasDisplayState) {
|
||||
@@ -7948,8 +7971,10 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::captureScreenshotLegacy(
|
||||
kMainThreadContext) mutable -> ftl::SharedFuture<FenceResult> {
|
||||
auto layers = getLayerSnapshotsFn();
|
||||
|
||||
- for (auto& [layer, layerFE] : layers) {
|
||||
- attachReleaseFenceFutureToLayer(layer, layerFE.get(), ui::INVALID_LAYER_STACK);
|
||||
+ if (FlagManager::getInstance().ce_fence_promise()) {
|
||||
|
@ -587,9 +570,9 @@ index 067a8bafe0..47a3c2c2bf 100644
|
|||
+ attachReleaseFenceFutureToLayer(layer, layerFE.get(), ui::INVALID_LAYER_STACK);
|
||||
+ }
|
||||
}
|
||||
auto displayState = getDisplayStateFromRenderAreaBuilder(renderAreaBuilder);
|
||||
|
||||
@@ -7821,13 +7855,36 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::renderScreenImpl(
|
||||
ScreenCaptureResults captureResults;
|
||||
@@ -8130,13 +8155,36 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::renderScreenImpl(
|
||||
// TODO(b/196334700) Once we use RenderEngineThreaded everywhere we can always defer the call
|
||||
// to CompositionEngine::present.
|
||||
ftl::SharedFuture<FenceResult> presentFuture;
|
||||
|
@ -628,18 +611,10 @@ index 067a8bafe0..47a3c2c2bf 100644
|
|||
}
|
||||
|
||||
diff --git a/services/surfaceflinger/TransactionCallbackInvoker.cpp b/services/surfaceflinger/TransactionCallbackInvoker.cpp
|
||||
index b22ec66819..cc79acbbf5 100644
|
||||
index 2e8c8c1111..e01c494e15 100644
|
||||
--- a/services/surfaceflinger/TransactionCallbackInvoker.cpp
|
||||
+++ b/services/surfaceflinger/TransactionCallbackInvoker.cpp
|
||||
@@ -28,6 +28,7 @@
|
||||
#include "Utils/FenceUtils.h"
|
||||
|
||||
#include <binder/IInterface.h>
|
||||
+#include <common/FlagManager.h>
|
||||
#include <common/trace.h>
|
||||
#include <utils/RefBase.h>
|
||||
|
||||
@@ -126,8 +127,14 @@ status_t TransactionCallbackInvoker::addCallbackHandle(const sp<CallbackHandle>&
|
||||
@@ -127,8 +127,14 @@ status_t TransactionCallbackInvoker::addCallbackHandle(const sp<CallbackHandle>&
|
||||
if (surfaceControl) {
|
||||
sp<Fence> prevFence = nullptr;
|
||||
|
||||
|
@ -657,10 +632,10 @@ index b22ec66819..cc79acbbf5 100644
|
|||
|
||||
handle->previousReleaseFence = prevFence;
|
||||
diff --git a/services/surfaceflinger/TransactionCallbackInvoker.h b/services/surfaceflinger/TransactionCallbackInvoker.h
|
||||
index 178ddbbe79..9c7bb0d588 100644
|
||||
index 34f6ffc5da..a9d62d9fd1 100644
|
||||
--- a/services/surfaceflinger/TransactionCallbackInvoker.h
|
||||
+++ b/services/surfaceflinger/TransactionCallbackInvoker.h
|
||||
@@ -43,6 +43,7 @@ public:
|
||||
@@ -44,6 +44,7 @@ public:
|
||||
std::string name;
|
||||
sp<Fence> previousReleaseFence;
|
||||
std::vector<ftl::Future<FenceResult>> previousReleaseFences;
|
||||
|
@ -669,49 +644,42 @@ index 178ddbbe79..9c7bb0d588 100644
|
|||
nsecs_t latchTime = -1;
|
||||
std::optional<uint32_t> transformHint = std::nullopt;
|
||||
diff --git a/services/surfaceflinger/common/FlagManager.cpp b/services/surfaceflinger/common/FlagManager.cpp
|
||||
index 5c417ba748..b86e815b57 100644
|
||||
index 6f3a58f6ff..d52957876b 100644
|
||||
--- a/services/surfaceflinger/common/FlagManager.cpp
|
||||
+++ b/services/surfaceflinger/common/FlagManager.cpp
|
||||
@@ -167,6 +167,8 @@ void FlagManager::dump(std::string& result) const {
|
||||
DUMP_ACONFIG_FLAG(begone_bright_hlg);
|
||||
DUMP_ACONFIG_FLAG(window_blur_kawase2);
|
||||
DUMP_ACONFIG_FLAG(single_hop_screenshot);
|
||||
+ DUMP_ACONFIG_FLAG(screenshot_fence_preservation);
|
||||
@@ -169,6 +169,8 @@ void FlagManager::dump(std::string& result) const {
|
||||
DUMP_ACONFIG_FLAG(no_vsyncs_on_screen_off);
|
||||
DUMP_ACONFIG_FLAG(override_trusted_overlay);
|
||||
DUMP_ACONFIG_FLAG(protected_if_client);
|
||||
+ DUMP_ACONFIG_FLAG(ce_fence_promise);
|
||||
|
||||
#undef DUMP_ACONFIG_FLAG
|
||||
#undef DUMP_LEGACY_SERVER_FLAG
|
||||
@@ -268,6 +270,8 @@ FLAG_MANAGER_ACONFIG_FLAG(deprecate_frame_tracker, "");
|
||||
FLAG_MANAGER_ACONFIG_FLAG(skip_invisible_windows_in_input, "");
|
||||
FLAG_MANAGER_ACONFIG_FLAG(begone_bright_hlg, "debug.sf.begone_bright_hlg");
|
||||
FLAG_MANAGER_ACONFIG_FLAG(window_blur_kawase2, "");
|
||||
+FLAG_MANAGER_ACONFIG_FLAG(screenshot_fence_preservation, "debug.sf.screenshot_fence_preservation");
|
||||
+FLAG_MANAGER_ACONFIG_FLAG(ce_fence_promise, "");
|
||||
|
||||
/// Trunk stable server (R/W) flags ///
|
||||
FLAG_MANAGER_ACONFIG_FLAG(refresh_rate_overlay_on_external_display, "")
|
||||
+ DUMP_ACONFIG_FLAG(screenshot_fence_preservation);
|
||||
DUMP_ACONFIG_FLAG(reject_dupe_layerstacks);
|
||||
DUMP_ACONFIG_FLAG(renderable_buffer_usage);
|
||||
DUMP_ACONFIG_FLAG(restore_blur_step);
|
||||
@@ -279,6 +281,8 @@ FLAG_MANAGER_ACONFIG_FLAG(no_vsyncs_on_screen_off, "debug.sf.no_vsyncs_on_screen
|
||||
FLAG_MANAGER_ACONFIG_FLAG(protected_if_client, "")
|
||||
FLAG_MANAGER_ACONFIG_FLAG(vrr_bugfix_24q4, "");
|
||||
FLAG_MANAGER_ACONFIG_FLAG(vrr_bugfix_dropped_frame, "")
|
||||
+FLAG_MANAGER_ACONFIG_FLAG(ce_fence_promise, "")
|
||||
+FLAG_MANAGER_ACONFIG_FLAG(screenshot_fence_preservation, "debug.sf.screenshot_fence_preservation")
|
||||
FLAG_MANAGER_ACONFIG_FLAG(graphite_renderengine, "debug.renderengine.graphite")
|
||||
FLAG_MANAGER_ACONFIG_FLAG(filter_frames_before_trace_starts, "")
|
||||
FLAG_MANAGER_ACONFIG_FLAG(latch_unsignaled_with_auto_refresh_changed, "");
|
||||
diff --git a/services/surfaceflinger/common/include/common/FlagManager.h b/services/surfaceflinger/common/include/common/FlagManager.h
|
||||
index 15284ba0ee..4766f6be38 100644
|
||||
index 23232c381f..91399c1dda 100644
|
||||
--- a/services/surfaceflinger/common/include/common/FlagManager.h
|
||||
+++ b/services/surfaceflinger/common/include/common/FlagManager.h
|
||||
@@ -74,6 +74,7 @@ public:
|
||||
bool fp16_client_target() const;
|
||||
bool game_default_frame_rate() const;
|
||||
bool enable_layer_command_batching() const;
|
||||
+ bool screenshot_fence_preservation() const;
|
||||
bool vulkan_renderengine() const;
|
||||
bool vrr_bugfix_24q4() const;
|
||||
bool vrr_bugfix_dropped_frame() const;
|
||||
@@ -82,6 +83,7 @@ public:
|
||||
bool dont_skip_on_early_ro() const;
|
||||
bool no_vsyncs_on_screen_off() const;
|
||||
bool protected_if_client() const;
|
||||
@@ -71,6 +71,8 @@ public:
|
||||
/// IMPORTANT - please keep alphabetize to reduce merge conflicts
|
||||
bool add_sf_skipped_frames_to_trace() const;
|
||||
bool adpf_fmq_sf() const;
|
||||
+ bool ce_fence_promise() const;
|
||||
bool idle_screen_refresh_rate_timeout() const;
|
||||
bool graphite_renderengine() const;
|
||||
bool filter_frames_before_trace_starts() const;
|
||||
+ bool screenshot_fence_preservation() const;
|
||||
bool allow_n_vsyncs_in_targeter() const;
|
||||
bool arr_setframerate_gte_enum() const;
|
||||
bool begone_bright_hlg() const;
|
||||
diff --git a/services/surfaceflinger/tests/TransactionTestHarnesses.h b/services/surfaceflinger/tests/TransactionTestHarnesses.h
|
||||
index c95c875746..5899c7e8b6 100644
|
||||
index c91f1ea760..186c3a8c5a 100644
|
||||
--- a/services/surfaceflinger/tests/TransactionTestHarnesses.h
|
||||
+++ b/services/surfaceflinger/tests/TransactionTestHarnesses.h
|
||||
@@ -17,6 +17,7 @@
|
||||
|
@ -722,10 +690,10 @@ index c95c875746..5899c7e8b6 100644
|
|||
#include <ui/DisplayState.h>
|
||||
|
||||
#include "LayerTransactionTest.h"
|
||||
@@ -95,8 +96,12 @@ public:
|
||||
@@ -99,8 +100,12 @@ public:
|
||||
#endif // COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ)
|
||||
t.setDisplayProjection(vDisplay, displayState.orientation,
|
||||
Rect(displayState.layerStackSpaceRect), Rect(resolution));
|
||||
t.setDisplayProjection(vDisplay, ui::Rotation::Rotation0, Rect(resolution),
|
||||
Rect(resolution));
|
||||
- t.setDisplayLayerStack(vDisplay, layerStack);
|
||||
- t.setLayerStack(mirrorSc, layerStack);
|
||||
+ if (FlagManager::getInstance().ce_fence_promise()) {
|
||||
|
@ -737,7 +705,7 @@ index c95c875746..5899c7e8b6 100644
|
|||
t.apply();
|
||||
SurfaceComposerClient::Transaction().apply(true);
|
||||
|
||||
@@ -116,8 +121,10 @@ public:
|
||||
@@ -120,8 +125,10 @@ public:
|
||||
// CompositionEngine::present may attempt to be called on the same
|
||||
// display multiple times. The layerStack is set to invalid here so
|
||||
// that the display is ignored if that scenario occurs.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 7fc0423bce6be78bf802dcd16e9c3cb2b417c19b Mon Sep 17 00:00:00 2001
|
||||
From 8538024484f651aaa8b7605fa078519c76105033 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sun, 14 Nov 2021 13:47:29 -0500
|
||||
Subject: [PATCH] Pie MTK IMS calls static
|
||||
|
@ -10,10 +10,10 @@ Change-Id: I3dd66d436629d37c8ec795df6569736195ae570e
|
|||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/src/java/com/android/ims/ImsManager.java b/src/java/com/android/ims/ImsManager.java
|
||||
index 217a26f..b687e4b 100644
|
||||
index 37c0832..8456682 100644
|
||||
--- a/src/java/com/android/ims/ImsManager.java
|
||||
+++ b/src/java/com/android/ims/ImsManager.java
|
||||
@@ -1679,6 +1679,14 @@ public class ImsManager implements FeatureUpdates {
|
||||
@@ -1707,6 +1707,14 @@ public class ImsManager implements FeatureUpdates {
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -29,5 +29,5 @@ index 217a26f..b687e4b 100644
|
|||
* Push configuration updates to the ImsService implementation.
|
||||
*/
|
||||
--
|
||||
2.44.0
|
||||
2.48.1
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From b172f8039cd27e782a964dc905de2efc6f4d84e4 Mon Sep 17 00:00:00 2001
|
||||
From 90088ccfac54e95806b29fc2fa12fed28ed1306c Mon Sep 17 00:00:00 2001
|
||||
From: ironydelerium <42721860+ironydelerium@users.noreply.github.com>
|
||||
Date: Fri, 31 Dec 2021 02:20:28 -0800
|
||||
Subject: [PATCH 1/4] Reintroduce 'public void
|
||||
|
@ -42,5 +42,5 @@ index 3fdbfe0..fb8011c 100644
|
|||
* Write Send SMS event using ImsService. Expecting response from
|
||||
* {@link #writeOnSmsSolicitedResponse}.
|
||||
--
|
||||
2.44.0
|
||||
2.48.1
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 7dde5cf40fdf6c8c1d968d8baa9af7cc105e3201 Mon Sep 17 00:00:00 2001
|
||||
From 035ee3fa580cc494187181e76da1435670641eca Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 6 Dec 2021 16:28:22 -0500
|
||||
Subject: [PATCH 2/4] Fix baseband being too long to fit into a 91 chars
|
||||
|
@ -10,10 +10,10 @@ Change-Id: I1762e4a8cc137626be89f350229d6be162bdaf57
|
|||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/java/com/android/internal/telephony/GsmCdmaPhone.java b/src/java/com/android/internal/telephony/GsmCdmaPhone.java
|
||||
index 5d59327..b5f6509 100644
|
||||
index f08e237..1f20e3c 100644
|
||||
--- a/src/java/com/android/internal/telephony/GsmCdmaPhone.java
|
||||
+++ b/src/java/com/android/internal/telephony/GsmCdmaPhone.java
|
||||
@@ -3448,7 +3448,7 @@ public class GsmCdmaPhone extends Phone {
|
||||
@@ -3447,7 +3447,7 @@ public class GsmCdmaPhone extends Phone {
|
||||
String version = (String)ar.result;
|
||||
if (version != null) {
|
||||
int length = version.length();
|
||||
|
@ -23,5 +23,5 @@ index 5d59327..b5f6509 100644
|
|||
length <= MAX_VERSION_LEN ? version
|
||||
: version.substring(length - MAX_VERSION_LEN, length));
|
||||
--
|
||||
2.44.0
|
||||
2.48.1
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From f31cd295a7431bdb6c1cc126f32348d7fe84301a Mon Sep 17 00:00:00 2001
|
||||
From ea3633c855860cd01b30673444d26a0b0488b8b5 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Cai <peter@typeblog.net>
|
||||
Date: Mon, 5 Sep 2022 14:02:37 -0400
|
||||
Subject: [PATCH 3/4] SubscriptionController: Do not override default calling
|
||||
|
@ -18,10 +18,10 @@ Change-Id: Iccab64e9b3b3ab4773bd8944d47c2006f229d472
|
|||
1 file changed, 17 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java b/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java
|
||||
index 353493b..9857641 100644
|
||||
index bedc20e..8acca40 100644
|
||||
--- a/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java
|
||||
+++ b/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java
|
||||
@@ -86,6 +86,7 @@ import android.util.Base64;
|
||||
@@ -88,6 +88,7 @@ import android.util.Base64;
|
||||
import android.util.EventLog;
|
||||
import android.util.IndentingPrintWriter;
|
||||
import android.util.LocalLog;
|
||||
|
@ -29,7 +29,7 @@ index 353493b..9857641 100644
|
|||
|
||||
import com.android.internal.R;
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
@@ -3268,7 +3269,22 @@ public class SubscriptionManagerService extends ISub.Stub {
|
||||
@@ -3291,7 +3292,22 @@ public class SubscriptionManagerService extends ISub.Stub {
|
||||
|
||||
TelecomManager telecomManager = mContext.getSystemService(TelecomManager.class);
|
||||
if (telecomManager != null) {
|
||||
|
@ -54,5 +54,5 @@ index 353493b..9857641 100644
|
|||
|
||||
updateDefaultSubId();
|
||||
--
|
||||
2.44.0
|
||||
2.48.1
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 0dd5ea9e9e05b4ef9e01d0c9c6a66a25b321791f Mon Sep 17 00:00:00 2001
|
||||
From 6bf65947854d44369512676a61c59ff5dcdcc4c9 Mon Sep 17 00:00:00 2001
|
||||
From: ExactExampl <exactxmpl@pixelexperience.org>
|
||||
Date: Tue, 11 Oct 2022 12:38:00 +0300
|
||||
Subject: [PATCH 4/4] Conditionally revert "Block Binder thread until incoming
|
||||
|
@ -17,7 +17,7 @@ Change-Id: I55a8f3bbca4a2b9a6bc7511e9fe2d0884a8818e5
|
|||
1 file changed, 14 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java b/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java
|
||||
index 26b6e18..c6b3355 100644
|
||||
index f4475b5..3d0d3ec 100644
|
||||
--- a/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java
|
||||
+++ b/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java
|
||||
@@ -70,6 +70,7 @@ import android.os.Registrant;
|
||||
|
@ -28,7 +28,7 @@ index 26b6e18..c6b3355 100644
|
|||
import android.os.UserHandle;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.provider.Settings;
|
||||
@@ -390,7 +391,19 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
|
||||
@@ -389,7 +390,19 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
|
||||
@Nullable
|
||||
public IImsCallSessionListener onIncomingCall(
|
||||
@NonNull IImsCallSession c, @Nullable String callId, @Nullable Bundle extras) {
|
||||
|
@ -50,5 +50,5 @@ index 26b6e18..c6b3355 100644
|
|||
|
||||
@Override
|
||||
--
|
||||
2.44.0
|
||||
2.48.1
|
||||
|
||||
|
|
|
@ -1,24 +0,0 @@
|
|||
From 6acc862452fd91732f63afa4a3829d0e249355e0 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Cai <peter@typeblog.net>
|
||||
Date: Sun, 16 Mar 2025 13:55:53 -0400
|
||||
Subject: [PATCH 1/2] Stop using resource processor
|
||||
|
||||
---
|
||||
Android.bp | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/Android.bp b/Android.bp
|
||||
index 0b368c8e..a2dff379 100644
|
||||
--- a/Android.bp
|
||||
+++ b/Android.bp
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
android_app {
|
||||
name: "org.lineageos.platform-res",
|
||||
+ use_resource_processor: false,
|
||||
sdk_version: "core_platform",
|
||||
certificate: "platform",
|
||||
|
||||
--
|
||||
2.48.1
|
||||
|
|
@ -1,133 +0,0 @@
|
|||
From 6cf57340bf1d906438a112942763c12eb35feb51 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Cai <peter@typeblog.net>
|
||||
Date: Sun, 16 Mar 2025 13:56:06 -0400
|
||||
Subject: [PATCH 2/2] Add spninfo / schema
|
||||
|
||||
---
|
||||
lib/SpnInfo.xsd | 47 +++++++++++++++++++++++++++++++++++++
|
||||
lib/schema/current.txt | 40 +++++++++++++++++++++++++++++++
|
||||
lib/schema/last_current.txt | 0
|
||||
lib/schema/last_removed.txt | 0
|
||||
lib/schema/removed.txt | 1 +
|
||||
5 files changed, 88 insertions(+)
|
||||
create mode 100644 lib/SpnInfo.xsd
|
||||
create mode 100644 lib/schema/current.txt
|
||||
create mode 100644 lib/schema/last_current.txt
|
||||
create mode 100644 lib/schema/last_removed.txt
|
||||
create mode 100644 lib/schema/removed.txt
|
||||
|
||||
diff --git a/lib/SpnInfo.xsd b/lib/SpnInfo.xsd
|
||||
new file mode 100644
|
||||
index 00000000..d30630dc
|
||||
--- /dev/null
|
||||
+++ b/lib/SpnInfo.xsd
|
||||
@@ -0,0 +1,47 @@
|
||||
+<?xml version="1.0" encoding="utf-8"?>
|
||||
+<!--
|
||||
+ ~ Copyright (C) 2021 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.
|
||||
+ -->
|
||||
+<xs:schema version="2.0"
|
||||
+ elementFormDefault="qualified"
|
||||
+ attributeFormDefault="unqualified"
|
||||
+ xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
+
|
||||
+ <xs:element name="sensitivePNS">
|
||||
+ <xs:complexType>
|
||||
+ <xs:sequence>
|
||||
+ <xs:element name="sensitivePN" maxOccurs="unbounded" type="sensitivePN" />
|
||||
+ </xs:sequence>
|
||||
+ </xs:complexType>
|
||||
+ </xs:element>
|
||||
+
|
||||
+ <xs:complexType name="sensitivePN">
|
||||
+ <xs:sequence>
|
||||
+ <xs:element name="item" maxOccurs="unbounded" type="item" />
|
||||
+ </xs:sequence>
|
||||
+ <xs:attribute name="network" type="xs:string" use="required" />
|
||||
+ </xs:complexType>
|
||||
+
|
||||
+ <xs:complexType name="item">
|
||||
+ <xs:sequence>
|
||||
+ <xs:element name="number" type="xs:string" />
|
||||
+ <xs:element name="name" minOccurs="0" type="xs:string" />
|
||||
+ <xs:element name="categories" minOccurs="0" type="xs:string" />
|
||||
+ <xs:element name="languages" minOccurs="0" type="xs:string" />
|
||||
+ <xs:element name="organization" minOccurs="0" type="xs:string" />
|
||||
+ <xs:element name="website" minOccurs="0" type="xs:anyURI" />
|
||||
+ </xs:sequence>
|
||||
+ </xs:complexType>
|
||||
+</xs:schema>
|
||||
diff --git a/lib/schema/current.txt b/lib/schema/current.txt
|
||||
new file mode 100644
|
||||
index 00000000..13e52c67
|
||||
--- /dev/null
|
||||
+++ b/lib/schema/current.txt
|
||||
@@ -0,0 +1,40 @@
|
||||
+// Signature format: 2.0
|
||||
+package org.lineageos.lib.phone.spn {
|
||||
+
|
||||
+ public class Item {
|
||||
+ ctor public Item();
|
||||
+ method public String getCategories();
|
||||
+ method public String getLanguages();
|
||||
+ method public String getName();
|
||||
+ method public String getNumber();
|
||||
+ method public String getOrganization();
|
||||
+ method public String getWebsite();
|
||||
+ method public void setCategories(String);
|
||||
+ method public void setLanguages(String);
|
||||
+ method public void setName(String);
|
||||
+ method public void setNumber(String);
|
||||
+ method public void setOrganization(String);
|
||||
+ method public void setWebsite(String);
|
||||
+ }
|
||||
+
|
||||
+ public class SensitivePN {
|
||||
+ ctor public SensitivePN();
|
||||
+ method public java.util.List<org.lineageos.lib.phone.spn.Item> getItem();
|
||||
+ method public String getNetwork();
|
||||
+ method public void setNetwork(String);
|
||||
+ }
|
||||
+
|
||||
+ public class SensitivePNS {
|
||||
+ ctor public SensitivePNS();
|
||||
+ method public java.util.List<org.lineageos.lib.phone.spn.SensitivePN> getSensitivePN();
|
||||
+ }
|
||||
+
|
||||
+ public class XmlParser {
|
||||
+ ctor public XmlParser();
|
||||
+ method public static org.lineageos.lib.phone.spn.SensitivePNS read(java.io.InputStream) throws javax.xml.datatype.DatatypeConfigurationException, java.io.IOException, org.xmlpull.v1.XmlPullParserException;
|
||||
+ method public static String readText(org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
|
||||
+ method public static void skip(org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
|
||||
+ }
|
||||
+
|
||||
+}
|
||||
+
|
||||
diff --git a/lib/schema/last_current.txt b/lib/schema/last_current.txt
|
||||
new file mode 100644
|
||||
index 00000000..e69de29b
|
||||
diff --git a/lib/schema/last_removed.txt b/lib/schema/last_removed.txt
|
||||
new file mode 100644
|
||||
index 00000000..e69de29b
|
||||
diff --git a/lib/schema/removed.txt b/lib/schema/removed.txt
|
||||
new file mode 100644
|
||||
index 00000000..d802177e
|
||||
--- /dev/null
|
||||
+++ b/lib/schema/removed.txt
|
||||
@@ -0,0 +1 @@
|
||||
+// Signature format: 2.0
|
||||
--
|
||||
2.48.1
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
From 4a576ac73698b2232c51a4b6b3c9a21845801136 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Cai <peter@typeblog.net>
|
||||
Date: Sun, 6 Oct 2024 14:22:49 -0400
|
||||
Subject: [PATCH 1/3] Downgrade target_sdk_version to 34 for now
|
||||
|
||||
---
|
||||
Android.bp | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/Android.bp b/Android.bp
|
||||
index 388f4c00c..498e7c8f0 100644
|
||||
--- a/Android.bp
|
||||
+++ b/Android.bp
|
||||
@@ -207,6 +207,7 @@ android_app {
|
||||
"java/com/android/voicemail/impl/configui/res",
|
||||
"java/com/android/voicemail/impl/res",
|
||||
],
|
||||
+ target_sdk_version: "34",
|
||||
sdk_version: "system_current",
|
||||
srcs: [
|
||||
"java/**/I*.aidl",
|
||||
--
|
||||
2.48.1
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
From 080c04159988f202694f087f442e3e32f18d4625 Mon Sep 17 00:00:00 2001
|
||||
From: Jihoon Kang <jihoonkang@google.com>
|
||||
Date: Fri, 30 Aug 2024 00:29:34 +0000
|
||||
Subject: [PATCH 2/3] Make java_sdk_library dependencies explicit
|
||||
|
||||
modules should specify the submodule of java_sdk_library that the module
|
||||
actually depends on
|
||||
|
||||
Test: CI
|
||||
Bug: 358613520
|
||||
Change-Id: I23a22e9d3dc001a5b061177273d407b01bb77a50
|
||||
---
|
||||
Android.bp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Android.bp b/Android.bp
|
||||
index 498e7c8f0..299c1a6e7 100644
|
||||
--- a/Android.bp
|
||||
+++ b/Android.bp
|
||||
@@ -102,7 +102,7 @@ android_app {
|
||||
exclude_srcs: ["java/com/android/dialer/rootcomponentgenerator/*.java"],
|
||||
libs: [
|
||||
"auto_value_annotations",
|
||||
- "org.apache.http.legacy",
|
||||
+ "org.apache.http.legacy.stubs.system",
|
||||
],
|
||||
optimize: {
|
||||
proguard_flags_files: [
|
||||
--
|
||||
2.48.1
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
From fa83fab06f1bd59551b926a224e0cf4cdfcb86da Mon Sep 17 00:00:00 2001
|
||||
From: Peter Cai <peter@typeblog.net>
|
||||
Date: Sun, 16 Mar 2025 13:51:15 -0400
|
||||
Subject: [PATCH 3/3] Opt-out from the resource processor (for now)
|
||||
|
||||
---
|
||||
Android.bp | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/Android.bp b/Android.bp
|
||||
index 299c1a6e7..b35b8913e 100644
|
||||
--- a/Android.bp
|
||||
+++ b/Android.bp
|
||||
@@ -9,6 +9,7 @@ package {
|
||||
|
||||
android_app {
|
||||
name: "Dialer",
|
||||
+ use_resource_processor: false,
|
||||
aaptflags: [
|
||||
"--auto-add-overlay",
|
||||
"--extra-packages com.android.contacts.common",
|
||||
--
|
||||
2.48.1
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
From 09d183a632ab5ba6ef0f1f76765fc94ef24035f4 Mon Sep 17 00:00:00 2001
|
||||
From 94e3b8c516fb084eb8b76f71e3bf2de20ace6a3d Mon Sep 17 00:00:00 2001
|
||||
From: Danny Lin <danny@kdrag0n.dev>
|
||||
Date: Mon, 11 Oct 2021 20:48:44 -0700
|
||||
Subject: [PATCH 1/3] Expose themed icon setting in ThemePicker
|
||||
|
@ -10,10 +10,10 @@ Change-Id: I44e9288c3de13a3604b7a03857ec400753317d9a
|
|||
2 files changed, 6 insertions(+)
|
||||
|
||||
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
|
||||
index 517bd6d..89291c1 100644
|
||||
index 1bce9b3..030c67b 100644
|
||||
--- a/AndroidManifest.xml
|
||||
+++ b/AndroidManifest.xml
|
||||
@@ -67,6 +67,9 @@
|
||||
@@ -68,6 +68,9 @@
|
||||
<meta-data
|
||||
android:name="com.android.launcher3.grid.control"
|
||||
android:value="${packageName}.grid_control" />
|
||||
|
@ -24,10 +24,10 @@ index 517bd6d..89291c1 100644
|
|||
|
||||
</application>
|
||||
diff --git a/quickstep/AndroidManifest-launcher.xml b/quickstep/AndroidManifest-launcher.xml
|
||||
index 80d8154..813ef75 100644
|
||||
index d6aa886..080c4d6 100644
|
||||
--- a/quickstep/AndroidManifest-launcher.xml
|
||||
+++ b/quickstep/AndroidManifest-launcher.xml
|
||||
@@ -65,6 +65,9 @@
|
||||
@@ -66,6 +66,9 @@
|
||||
<meta-data
|
||||
android:name="com.android.launcher3.grid.control"
|
||||
android:value="${packageName}.grid_control" />
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From c2cafe53a8b6acf97dc9a634ada0d4ab53b5fd9f Mon Sep 17 00:00:00 2001
|
||||
From 02763a96fd66df156cff0d7da383d9d3d9d3d850 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Cai <peter@typeblog.net>
|
||||
Date: Fri, 7 Jul 2023 18:13:32 -0400
|
||||
Subject: [PATCH 2/3] Disable QSB in BuildConfig
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From de7b698be0f1e01b337672d919854e3a28b8685f Mon Sep 17 00:00:00 2001
|
||||
From ae08ed286496493afcf23a8abe80cdf3859926d7 Mon Sep 17 00:00:00 2001
|
||||
From: Luca Stefani <luca.stefani.ge1@gmail.com>
|
||||
Date: Fri, 1 Nov 2019 23:17:59 +0100
|
||||
Subject: [PATCH 3/3] Properly expose GridCustomizationsProvider
|
||||
|
@ -9,13 +9,13 @@ Change-Id: I8268a215257ae0e399c56ac8b44cdfdff8cc92a0
|
|||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/AndroidManifest-common.xml b/AndroidManifest-common.xml
|
||||
index 80d2eac..53bdfff 100644
|
||||
index 46f0e41..f728b76 100644
|
||||
--- a/AndroidManifest-common.xml
|
||||
+++ b/AndroidManifest-common.xml
|
||||
@@ -138,7 +138,9 @@
|
||||
<provider
|
||||
android:name="com.android.launcher3.graphics.GridCustomizationsProvider"
|
||||
@@ -136,7 +136,9 @@
|
||||
android:name="com.android.launcher3.graphics.LauncherCustomizationProvider"
|
||||
android:authorities="${applicationId}.grid_control"
|
||||
android:permission="android.permission.BIND_WALLPAPER"
|
||||
- android:exported="true" />
|
||||
+ android:exported="true"
|
||||
+ android:writePermission="${packageName}.permission.WRITE_SETTINGS"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 2002ea94d153575b5178bd4365a897f6cb468134 Mon Sep 17 00:00:00 2001
|
||||
From 13f7a46bfaa8fd463e486e7ece7cfd7659305bc4 Mon Sep 17 00:00:00 2001
|
||||
From: Asher Simonds <dayanhammer@gmail.com>
|
||||
Date: Sun, 3 Apr 2022 12:18:21 +0200
|
||||
Subject: [PATCH 1/2] Settings: Bring in the new icon
|
||||
|
@ -30,7 +30,7 @@ Change-Id: Icdc71193c78642c9253f34b04f8629864f48212a
|
|||
|
||||
diff --git a/res/drawable/ic_launcher_background.xml b/res/drawable/ic_launcher_background.xml
|
||||
new file mode 100644
|
||||
index 0000000..8c65155
|
||||
index 00000000000..8c651550f93
|
||||
--- /dev/null
|
||||
+++ b/res/drawable/ic_launcher_background.xml
|
||||
@@ -0,0 +1,18 @@
|
||||
|
@ -54,7 +54,7 @@ index 0000000..8c65155
|
|||
+</vector>
|
||||
diff --git a/res/drawable/ic_launcher_foreground.xml b/res/drawable/ic_launcher_foreground.xml
|
||||
new file mode 100644
|
||||
index 0000000..4d28d39
|
||||
index 00000000000..4d28d393e2b
|
||||
--- /dev/null
|
||||
+++ b/res/drawable/ic_launcher_foreground.xml
|
||||
@@ -0,0 +1,36 @@
|
||||
|
@ -96,7 +96,7 @@ index 0000000..4d28d39
|
|||
+</vector>
|
||||
diff --git a/res/drawable/ic_launcher_monochrome.xml b/res/drawable/ic_launcher_monochrome.xml
|
||||
new file mode 100644
|
||||
index 0000000..087d83f
|
||||
index 00000000000..087d83f82b3
|
||||
--- /dev/null
|
||||
+++ b/res/drawable/ic_launcher_monochrome.xml
|
||||
@@ -0,0 +1,15 @@
|
||||
|
@ -116,7 +116,7 @@ index 0000000..087d83f
|
|||
+ android:fillType="evenOdd"/>
|
||||
+</vector>
|
||||
diff --git a/res/drawable/ic_launcher_settings.xml b/res/drawable/ic_launcher_settings.xml
|
||||
index 9ede59d..b58c81f 100644
|
||||
index 9ede59d3c7b..b58c81ff94f 100644
|
||||
--- a/res/drawable/ic_launcher_settings.xml
|
||||
+++ b/res/drawable/ic_launcher_settings.xml
|
||||
@@ -1,5 +1,10 @@
|
||||
|
@ -1605,7 +1605,7 @@ z6ETeSztRPj2WqpS>%sk}Z93Z&Tr+fZKn*nj{qN&iN>evQCB%QCz?wonp#Lib2QCjH
|
|||
z>i%o42p|ibx<XR!|GxahsWW*4*KAw-N^A@R6S=SZu?z6;ukd806eTOgjf4IV%pwj@
|
||||
|
||||
diff --git a/src/com/android/settings/shortcut/CreateShortcutPreferenceController.java b/src/com/android/settings/shortcut/CreateShortcutPreferenceController.java
|
||||
index 0e2e6bc..21a1525 100644
|
||||
index 0e2e6bcb44c..21a1525b156 100644
|
||||
--- a/src/com/android/settings/shortcut/CreateShortcutPreferenceController.java
|
||||
+++ b/src/com/android/settings/shortcut/CreateShortcutPreferenceController.java
|
||||
@@ -140,7 +140,7 @@ public class CreateShortcutPreferenceController extends BasePreferenceController
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From c8463140729b40cca3cb143561d652fa06c6d628 Mon Sep 17 00:00:00 2001
|
||||
From 5f9289f600d3c72fe261adebc1c6a3b87759771f Mon Sep 17 00:00:00 2001
|
||||
From: Oliver Scott <olivercscott@gmail.com>
|
||||
Date: Thu, 8 Jul 2021 10:40:49 -0400
|
||||
Subject: [PATCH 2/2] Global VPN feature [2/2]
|
||||
|
@ -14,13 +14,13 @@ Change-Id: If4a552b8f59bc15f53c324afa93a67e086b9c5a9
|
|||
3 files changed, 59 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/res/values/strings.xml b/res/values/strings.xml
|
||||
index 730c258..0feb0f6 100644
|
||||
index 0c5bedca93d..17b2cf91e8c 100644
|
||||
--- a/res/values/strings.xml
|
||||
+++ b/res/values/strings.xml
|
||||
@@ -13910,4 +13910,10 @@
|
||||
<string name="search_gesture_feature_title">Circle to Search</string>
|
||||
<!-- Summary text for press and hold nav handle OR home button to invoke Circle to Search. [CHAR LIMIT=NONE] -->
|
||||
<string name="search_gesture_feature_summary">Touch and hold the Home button or the navigation handle to search using the content on your screen.</string>
|
||||
@@ -14399,4 +14399,10 @@ Data usage charges may apply.</string>
|
||||
<!-- Title for supervision PIN verification screen [CHAR LIMIT=60] -->
|
||||
<string name="supervision_full_screen_pin_verification_title">Enter supervision PIN</string>
|
||||
<string name="accessibility_illustration_content_description"><xliff:g id="feature" example="Select to Speak">%1$s</xliff:g> animation</string>
|
||||
+
|
||||
+ <!-- VPN app management screen, global VPN -->
|
||||
+ <string name="global_vpn_title">Global VPN</string>
|
||||
|
@ -29,7 +29,7 @@ index 730c258..0feb0f6 100644
|
|||
+ <string name="global_vpn_summary_any_vpn_active">You need to disable all active VPN connections first to enable this</string>
|
||||
</resources>
|
||||
diff --git a/res/xml/vpn_app_management.xml b/res/xml/vpn_app_management.xml
|
||||
index dffbbbe..93df378 100644
|
||||
index dffbbbe3116..93df378fd76 100644
|
||||
--- a/res/xml/vpn_app_management.xml
|
||||
+++ b/res/xml/vpn_app_management.xml
|
||||
@@ -23,6 +23,12 @@
|
||||
|
@ -46,7 +46,7 @@ index dffbbbe..93df378 100644
|
|||
android:key="always_on_vpn"
|
||||
android:title="@string/vpn_menu_lockdown"
|
||||
diff --git a/src/com/android/settings/vpn2/AppManagementFragment.java b/src/com/android/settings/vpn2/AppManagementFragment.java
|
||||
index 00c8f59..c4f447f 100644
|
||||
index 00c8f5994ce..c4f447f44fb 100644
|
||||
--- a/src/com/android/settings/vpn2/AppManagementFragment.java
|
||||
+++ b/src/com/android/settings/vpn2/AppManagementFragment.java
|
||||
@@ -27,10 +27,12 @@ import android.content.pm.ApplicationInfo;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From bc50b3024c266f307ce804ef1887062cf1f34944 Mon Sep 17 00:00:00 2001
|
||||
From 87ef7ebbcf6efe1c25a2c1d514d022859433c55f Mon Sep 17 00:00:00 2001
|
||||
From: Luca Stefani <luca.stefani.ge1@gmail.com>
|
||||
Date: Fri, 1 Nov 2019 21:14:29 +0100
|
||||
Subject: [PATCH 1/4] Add wallpaper privapp whitelist
|
||||
|
@ -11,10 +11,10 @@ Change-Id: I044b1d9201ac0b8780fc37a387f401f3dd0ddeac
|
|||
create mode 100644 privapp_whitelist_com.android.wallpaper.xml
|
||||
|
||||
diff --git a/Android.bp b/Android.bp
|
||||
index 58e6413..40e2241 100644
|
||||
index 5efee51..1938697 100644
|
||||
--- a/Android.bp
|
||||
+++ b/Android.bp
|
||||
@@ -140,6 +140,15 @@ android_app {
|
||||
@@ -151,6 +151,15 @@ android_app {
|
||||
platform_apis: true,
|
||||
manifest: "AndroidManifest.xml",
|
||||
additional_manifests: [":WallpaperPicker2_Manifest"],
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From b255f705538f7e55d445c60c1a12f60dd309df1d Mon Sep 17 00:00:00 2001
|
||||
From 7eae80748fa17836e787c018808d6b87458b8ea9 Mon Sep 17 00:00:00 2001
|
||||
From: LuK1337 <priv.luk@gmail.com>
|
||||
Date: Tue, 15 Sep 2020 03:27:19 +0200
|
||||
Subject: [PATCH 2/4] Add wallpaper default permissions
|
||||
|
@ -11,10 +11,10 @@ Change-Id: If43a594da31fbab9280ce45b049737f6c534b620
|
|||
create mode 100644 default_permissions_com.android.wallpaper.xml
|
||||
|
||||
diff --git a/Android.bp b/Android.bp
|
||||
index 40e2241..614739a 100644
|
||||
index 1938697..1d475af 100644
|
||||
--- a/Android.bp
|
||||
+++ b/Android.bp
|
||||
@@ -140,7 +140,10 @@ android_app {
|
||||
@@ -151,7 +151,10 @@ android_app {
|
||||
platform_apis: true,
|
||||
manifest: "AndroidManifest.xml",
|
||||
additional_manifests: [":WallpaperPicker2_Manifest"],
|
||||
|
@ -26,7 +26,7 @@ index 40e2241..614739a 100644
|
|||
overrides: ["WallpaperPicker", "WallpaperPicker2"],
|
||||
static_libs: ["ThemePickerApplicationLib"],
|
||||
}
|
||||
@@ -152,3 +155,11 @@ prebuilt_etc_xml {
|
||||
@@ -163,3 +166,11 @@ prebuilt_etc_xml {
|
||||
filename_from_src: true,
|
||||
sub_dir: "permissions",
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 623014b94ae4bb08328684bb077b05973ab858eb Mon Sep 17 00:00:00 2001
|
||||
From 5e5726c6def41758424960f9f25f98a8fe6d2ef0 Mon Sep 17 00:00:00 2001
|
||||
From: Luca Stefani <luca.stefani.ge1@gmail.com>
|
||||
Date: Fri, 1 Nov 2019 23:17:08 +0100
|
||||
Subject: [PATCH 3/4] Specify we read and write launcher settings
|
||||
|
@ -9,7 +9,7 @@ Change-Id: Ifc8196588443b007602118389ca76d34ab531f14
|
|||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
|
||||
index f89ff6e..95f5b0e 100755
|
||||
index 46f364c..5f74c5a 100755
|
||||
--- a/AndroidManifest.xml
|
||||
+++ b/AndroidManifest.xml
|
||||
@@ -60,6 +60,9 @@
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 5880006d7be5eeb3fff8a6d9154ae16e2e6ffac7 Mon Sep 17 00:00:00 2001
|
||||
From 987c8e91cc42db76d54b0f93ac09c3c10d1e5a0d Mon Sep 17 00:00:00 2001
|
||||
From: Danny Lin <danny@kdrag0n.dev>
|
||||
Date: Tue, 5 Oct 2021 22:40:58 -0700
|
||||
Subject: [PATCH 4/4] Add permission for launcher preview rendering
|
||||
|
@ -10,7 +10,7 @@ Change-Id: Ie707dcd98161e8f5993b0504295fddc3f395cd20
|
|||
2 files changed, 2 insertions(+)
|
||||
|
||||
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
|
||||
index 95f5b0e..8c55499 100755
|
||||
index 5f74c5a..7d43fd6 100755
|
||||
--- a/AndroidManifest.xml
|
||||
+++ b/AndroidManifest.xml
|
||||
@@ -13,6 +13,7 @@
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 73a87c7bcc594cc3da4b9c2394cda066d36bb557 Mon Sep 17 00:00:00 2001
|
||||
From 98f9dad6c61b807278e8eaf31f9c03dbf16d926b Mon Sep 17 00:00:00 2001
|
||||
From: Peter Cai <peter@typeblog.net>
|
||||
Date: Wed, 24 Aug 2022 15:45:18 -0400
|
||||
Subject: [PATCH 1/2] audio_hal_interface: Optionally use sysbta HAL
|
||||
|
@ -15,7 +15,7 @@ Change-Id: I59973e6ec84c5923be8a7c67b36b2e237f000860
|
|||
5 files changed, 31 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/system/audio_hal_interface/aidl/a2dp/client_interface_aidl.cc b/system/audio_hal_interface/aidl/a2dp/client_interface_aidl.cc
|
||||
index f022ec3ea2..283beb22fa 100644
|
||||
index f022ec3..283beb2 100644
|
||||
--- a/system/audio_hal_interface/aidl/a2dp/client_interface_aidl.cc
|
||||
+++ b/system/audio_hal_interface/aidl/a2dp/client_interface_aidl.cc
|
||||
@@ -58,7 +58,7 @@ BluetoothAudioClientInterface::~BluetoothAudioClientInterface() {
|
||||
|
@ -55,7 +55,7 @@ index f022ec3ea2..283beb22fa 100644
|
|||
if (provider_factory == nullptr) {
|
||||
log::error("can't get capability from unknown factory");
|
||||
diff --git a/system/audio_hal_interface/aidl/a2dp/client_interface_aidl.h b/system/audio_hal_interface/aidl/a2dp/client_interface_aidl.h
|
||||
index a45ff946f2..4c99832e1b 100644
|
||||
index bf687e7..c461c1a 100644
|
||||
--- a/system/audio_hal_interface/aidl/a2dp/client_interface_aidl.h
|
||||
+++ b/system/audio_hal_interface/aidl/a2dp/client_interface_aidl.h
|
||||
@@ -28,6 +28,7 @@
|
||||
|
@ -66,7 +66,7 @@ index a45ff946f2..4c99832e1b 100644
|
|||
|
||||
// Keep after audio_aidl_interfaces.h because of <base/logging.h>
|
||||
// conflicting definitions.
|
||||
@@ -156,6 +157,12 @@ protected:
|
||||
@@ -158,6 +159,12 @@ protected:
|
||||
// "android.hardware.bluetooth.audio.IBluetoothAudioProviderFactory/default";
|
||||
static inline const std::string kDefaultAudioProviderFactoryInterface =
|
||||
std::string() + IBluetoothAudioProviderFactory::descriptor + "/default";
|
||||
|
@ -80,7 +80,7 @@ index a45ff946f2..4c99832e1b 100644
|
|||
private:
|
||||
IBluetoothTransportInstance* transport_;
|
||||
diff --git a/system/audio_hal_interface/aidl/client_interface_aidl.cc b/system/audio_hal_interface/aidl/client_interface_aidl.cc
|
||||
index 176b355eeb..9d8ddd2cac 100644
|
||||
index 176b355..9d8ddd2 100644
|
||||
--- a/system/audio_hal_interface/aidl/client_interface_aidl.cc
|
||||
+++ b/system/audio_hal_interface/aidl/client_interface_aidl.cc
|
||||
@@ -69,7 +69,7 @@ BluetoothAudioClientInterface::BluetoothAudioClientInterface(IBluetoothTransport
|
||||
|
@ -120,7 +120,7 @@ index 176b355eeb..9d8ddd2cac 100644
|
|||
if (provider_factory == nullptr) {
|
||||
log::error("can't get capability from unknown factory");
|
||||
diff --git a/system/audio_hal_interface/aidl/client_interface_aidl.h b/system/audio_hal_interface/aidl/client_interface_aidl.h
|
||||
index a3c60384ab..ee5901e32a 100644
|
||||
index a3c6038..ee5901e 100644
|
||||
--- a/system/audio_hal_interface/aidl/client_interface_aidl.h
|
||||
+++ b/system/audio_hal_interface/aidl/client_interface_aidl.h
|
||||
@@ -29,6 +29,7 @@
|
||||
|
@ -145,7 +145,7 @@ index a3c60384ab..ee5901e32a 100644
|
|||
private:
|
||||
IBluetoothTransportInstance* transport_;
|
||||
diff --git a/system/audio_hal_interface/hal_version_manager.cc b/system/audio_hal_interface/hal_version_manager.cc
|
||||
index f9843df858..3931bc6a8d 100644
|
||||
index f9843df..3931bc6 100644
|
||||
--- a/system/audio_hal_interface/hal_version_manager.cc
|
||||
+++ b/system/audio_hal_interface/hal_version_manager.cc
|
||||
@@ -20,6 +20,7 @@
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 29c09f59e76930a00cefd474c96eb40e63a475f5 Mon Sep 17 00:00:00 2001
|
||||
From 59adcdccddda720e26386e758e015240dfce73ad Mon Sep 17 00:00:00 2001
|
||||
From: DerTeufel <dominik-kassel@gmx.de>
|
||||
Date: Wed, 4 Jan 2023 21:39:37 +0100
|
||||
Subject: [PATCH 2/2] Don't crash on status:UNSUPPORTED_REMOTE_OR_LMP_FEATURE
|
||||
|
@ -11,10 +11,10 @@ Change-Id: Ic57d6631185370cbfdeafdac00801c6ca27fb755
|
|||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/system/gd/hci/hci_layer.cc b/system/gd/hci/hci_layer.cc
|
||||
index 1311815633..7b913888b2 100644
|
||||
index da370a7..06677cb 100644
|
||||
--- a/system/gd/hci/hci_layer.cc
|
||||
+++ b/system/gd/hci/hci_layer.cc
|
||||
@@ -238,8 +238,10 @@ struct HciLayer::impl {
|
||||
@@ -244,8 +244,10 @@ struct HciLayer::impl {
|
||||
using WaitingFor = CommandQueueEntry::WaitingFor;
|
||||
WaitingFor waiting_for = command_queue_.front().waiting_for_;
|
||||
CommandStatusView status_view = CommandStatusView::Create(event);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From c632ab2581f8dbff4381aba8fd94979e71edc356 Mon Sep 17 00:00:00 2001
|
||||
From 10d2007f5120cd3e9a7f775b0ae5e2f1a69474fc Mon Sep 17 00:00:00 2001
|
||||
From: Peter Cai <peter@typeblog.net>
|
||||
Date: Sat, 16 Mar 2024 15:27:27 -0400
|
||||
Subject: [PATCH] Revert "drop support for V gsi on pixel 5 R base kernel"
|
||||
|
@ -9,7 +9,7 @@ This reverts commit bbbd18a71368a80f689b924dcf82062c2ee351b2.
|
|||
1 file changed, 13 insertions(+)
|
||||
|
||||
diff --git a/service/jni/com_android_server_connectivity_ClatCoordinator.cpp b/service/jni/com_android_server_connectivity_ClatCoordinator.cpp
|
||||
index c0082bb..619f4a3 100644
|
||||
index 622fba8..d419480 100644
|
||||
--- a/service/jni/com_android_server_connectivity_ClatCoordinator.cpp
|
||||
+++ b/service/jni/com_android_server_connectivity_ClatCoordinator.cpp
|
||||
@@ -91,6 +91,11 @@ static void verifyPerms(const char * const path,
|
||||
|
@ -40,5 +40,5 @@ index c0082bb..619f4a3 100644
|
|||
}
|
||||
|
||||
--
|
||||
2.44.0
|
||||
2.48.1
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From bb84dbc1eafbe7604912a7cba72ae65417c2923d Mon Sep 17 00:00:00 2001
|
||||
From dec8e279b0e806ba98e9457e5c4be87dd7f53259 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Wed, 23 Feb 2022 17:37:47 -0500
|
||||
Subject: [PATCH 1/2] init: Override select system properties
|
||||
|
@ -11,10 +11,10 @@ Change-Id: I94efa3f108ae97711026f099f367b6bea325629f
|
|||
1 file changed, 11 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/init/property_service.cpp b/init/property_service.cpp
|
||||
index f2606e3..d12fac1 100644
|
||||
index 83e9a0d..97d2fe0 100644
|
||||
--- a/init/property_service.cpp
|
||||
+++ b/init/property_service.cpp
|
||||
@@ -797,13 +797,20 @@ static void LoadProperties(char* data, const char* filter, const char* filename,
|
||||
@@ -795,13 +795,20 @@ static void LoadProperties(char* data, const char* filter, const char* filename,
|
||||
std::string error;
|
||||
if (CheckPermissions(key, value, context, cr, &error) == PROP_SUCCESS) {
|
||||
auto it = properties->find(key);
|
||||
|
@ -40,5 +40,5 @@ index f2606e3..d12fac1 100644
|
|||
LOG(ERROR) << "Do not have permissions to set '" << key << "' to '" << value
|
||||
<< "' in property file '" << filename << "': " << error;
|
||||
--
|
||||
2.44.0
|
||||
2.48.1
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From f1bdfa28ee093ca4db697560ccd4b1e4b24be937 Mon Sep 17 00:00:00 2001
|
||||
From 1fba99a3d1ffe80ef978a4d99c79a83218e3b5bd Mon Sep 17 00:00:00 2001
|
||||
From: Isaac Chen <tingyi364@gmail.com>
|
||||
Date: Wed, 23 Jun 2021 13:07:30 +0800
|
||||
Subject: [PATCH 2/2] init: Do not start console service when debuggable
|
||||
|
@ -13,10 +13,10 @@ Change-Id: I34cfd6b42d3b9aee4b3e63181480cfb8b1255f29
|
|||
1 file changed, 3 deletions(-)
|
||||
|
||||
diff --git a/rootdir/init.rc b/rootdir/init.rc
|
||||
index 1acd637..c3d963f 100644
|
||||
index 471059b..0019c38 100644
|
||||
--- a/rootdir/init.rc
|
||||
+++ b/rootdir/init.rc
|
||||
@@ -1355,9 +1355,6 @@ on property:ro.debuggable=1
|
||||
@@ -1315,9 +1315,6 @@ on property:ro.debuggable=1
|
||||
# Give reads to anyone for the accessibility trace folder on debug builds.
|
||||
chmod 0775 /data/misc/a11ytrace
|
||||
|
||||
|
@ -27,5 +27,5 @@ index 1acd637..c3d963f 100644
|
|||
on property:persist.device_config.mglru_native.lru_gen_config=none
|
||||
write /sys/kernel/mm/lru_gen/enabled 0
|
||||
--
|
||||
2.44.0
|
||||
2.48.1
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue