Refresh patches for r35

This commit is contained in:
Peter Cai 2023-03-17 21:09:50 -04:00
parent eb831a8f3b
commit a898fa0bea
21 changed files with 155 additions and 390 deletions

View File

@ -1,7 +1,7 @@
From 51deb8e31ca57f19420277cc92b26375233e9050 Mon Sep 17 00:00:00 2001
From f9be27ef60cd4ccca6803458ff29ee7a2236769c Mon Sep 17 00:00:00 2001
From: Peter Cai <peter@typeblog.net>
Date: Thu, 18 Aug 2022 15:44:46 -0400
Subject: [PATCH 1/5] APM: Restore S, R and Q behavior respectively for
Subject: [PATCH 1/4] APM: Restore S, R and Q behavior respectively for
telephony audio
This conditionally reverts part of b2e5cb (T), 51c9cc (S) and afd4ce (R)
@ -31,12 +31,12 @@ relying on the value of `ro.vndk.version`.
Change-Id: I56d36d2aef4319935cb88a3e4771b23c6d5b2145
---
.../managerdefault/AudioPolicyManager.cpp | 193 +++++++++++++-----
.../managerdefault/AudioPolicyManager.cpp | 103 ++++++++++++++++--
.../managerdefault/AudioPolicyManager.h | 3 +
2 files changed, 141 insertions(+), 55 deletions(-)
2 files changed, 96 insertions(+), 10 deletions(-)
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
index 744609f27b..224dae3820 100644
index 4573382a06..c218c7ce2d 100644
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
@@ -675,6 +675,17 @@ status_t AudioPolicyManager::updateCallRoutingInternal(
@ -148,107 +148,25 @@ index 744609f27b..224dae3820 100644
bool AudioPolicyManager::isDeviceOfModule(
const sp<DeviceDescriptor>& devDesc, const char *moduleId) const {
sp<HwModule> module = mHwModules.getModuleFromName(moduleId);
@@ -4520,76 +4584,95 @@ status_t AudioPolicyManager::createAudioPatchInternal(const struct audio_patch *
@@ -4541,6 +4605,7 @@ 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 = nullptr;
- if (!sourceDesc->isInternal()) {
- // take care of dynamic routing for SwOutput selection,
- audio_attributes_t attributes = sourceDesc->attributes();
- audio_stream_type_t stream = sourceDesc->stream();
- audio_attributes_t resultAttr;
- audio_config_t config = AUDIO_CONFIG_INITIALIZER;
- config.sample_rate = sourceDesc->config().sample_rate;
- config.channel_mask = sourceDesc->config().channel_mask;
- config.format = sourceDesc->config().format;
- audio_output_flags_t flags = AUDIO_OUTPUT_FLAG_NONE;
- audio_port_handle_t selectedDeviceId = AUDIO_PORT_HANDLE_NONE;
- bool isRequestedDeviceForExclusiveUse = false;
- output_type_t outputType;
- bool isSpatialized;
- getOutputForAttrInt(&resultAttr, &output, AUDIO_SESSION_NONE, &attributes,
- &stream, sourceDesc->uid(), &config, &flags,
- &selectedDeviceId, &isRequestedDeviceForExclusiveUse,
- nullptr, &outputType, &isSpatialized);
- if (output == AUDIO_IO_HANDLE_NONE) {
- ALOGV("%s no output for device %s",
- __FUNCTION__, sinkDevice->toString().c_str());
- return INVALID_OPERATION;
- }
- outputDesc = mOutputs.valueFor(output);
- if (outputDesc->isDuplicated()) {
- ALOGE("%s output is duplicated", __func__);
- return INVALID_OPERATION;
- }
- sourceDesc->setSwOutput(outputDesc);
- } else {
- // Same for "raw patches" aka created from createAudioPatch API
- SortedVector<audio_io_handle_t> outputs =
+ if (sourceDesc != nullptr) {
+ if (!sourceDesc->isInternal()) {
+ // take care of dynamic routing for SwOutput selection,
+ audio_attributes_t attributes = sourceDesc->attributes();
+ audio_stream_type_t stream = sourceDesc->stream();
+ audio_attributes_t resultAttr;
+ audio_config_t config = AUDIO_CONFIG_INITIALIZER;
+ config.sample_rate = sourceDesc->config().sample_rate;
+ config.channel_mask = sourceDesc->config().channel_mask;
+ config.format = sourceDesc->config().format;
+ audio_output_flags_t flags = AUDIO_OUTPUT_FLAG_NONE;
+ audio_port_handle_t selectedDeviceId = AUDIO_PORT_HANDLE_NONE;
+ bool isRequestedDeviceForExclusiveUse = false;
+ output_type_t outputType;
+ bool isSpatialized;
+ getOutputForAttrInt(&resultAttr, &output, AUDIO_SESSION_NONE, &attributes,
+ &stream, sourceDesc->uid(), &config, &flags,
+ &selectedDeviceId, &isRequestedDeviceForExclusiveUse,
+ nullptr, &outputType, &isSpatialized);
+ if (output == AUDIO_IO_HANDLE_NONE) {
+ ALOGV("%s no output for device %s",
+ __FUNCTION__, sinkDevice->toString().c_str());
+ return INVALID_OPERATION;
+ }
+ outputDesc = mOutputs.valueFor(output);
+ if (outputDesc->isDuplicated()) {
+ ALOGE("%s output is duplicated", __func__);
+ return INVALID_OPERATION;
+ }
+ sourceDesc->setSwOutput(outputDesc);
+ } else {
+ // Same for "raw patches" aka created from createAudioPatch API
+ SortedVector<audio_io_handle_t> outputs =
getOutputsForDevices(DeviceVector(sinkDevice), mOutputs);
- // if the sink device is reachable via an opened output stream, request to
- // go via this output stream by adding a second source to the patch
- // description
- output = selectOutput(outputs);
- if (output == AUDIO_IO_HANDLE_NONE) {
- ALOGE("%s no output available for internal patch sink", __func__);
- return INVALID_OPERATION;
- }
- outputDesc = mOutputs.valueFor(output);
- if (outputDesc->isDuplicated()) {
- ALOGV("%s output for device %s is duplicated",
sp<SwAudioOutputDescriptor> outputDesc;
+ if (sourceDesc != nullptr) { // Ignore indentation, we don't want to cuase huge conflicts...
if (!sourceDesc->isInternal()) {
// take care of dynamic routing for SwOutput selection,
audio_attributes_t attributes = sourceDesc->attributes();
@@ -4586,33 +4651,51 @@ status_t AudioPolicyManager::createAudioPatchInternal(const struct audio_patch *
outputDesc = mOutputs.valueFor(output);
if (outputDesc->isDuplicated()) {
ALOGV("%s output for device %s is duplicated",
- __func__, sinkDevice->toString().c_str());
- return INVALID_OPERATION;
+ // if the sink device is reachable via an opened output stream, request to
+ // go via this output stream by adding a second source to the patch
+ // description
+ output = selectOutput(outputs);
+ if (output == AUDIO_IO_HANDLE_NONE) {
+ ALOGE("%s no output available for internal patch sink", __func__);
+ return INVALID_OPERATION;
+ }
+ outputDesc = mOutputs.valueFor(output);
+ if (outputDesc->isDuplicated()) {
+ ALOGV("%s output for device %s is duplicated",
+ __func__, sinkDevice->toString().c_str());
+ return INVALID_OPERATION;
+ }
+ sourceDesc->setSwOutput(outputDesc);
+ __func__, sinkDevice->toString().c_str());
return INVALID_OPERATION;
}
- sourceDesc->setSwOutput(outputDesc);
sourceDesc->setSwOutput(outputDesc, /* closeOutput= */ false);
}
+ }
// create a software bridge in PatchPanel if:
// - source and sink devices are on different HW modules OR
// - audio HAL version is < 3.0
@ -289,16 +207,17 @@ index 744609f27b..224dae3820 100644
audio_port_config srcMixPortConfig = {};
outputDesc->toAudioPortConfig(&srcMixPortConfig, nullptr);
// for volume control, we may need a valid stream
- srcMixPortConfig.ext.mix.usecase.stream = !sourceDesc->isInternal() ?
+ srcMixPortConfig.ext.mix.usecase.stream = (sourceDesc != nullptr && !sourceDesc->isInternal()) ?
srcMixPortConfig.ext.mix.usecase.stream =
- (!sourceDesc->isInternal() || isCallTxAudioSource(sourceDesc)) ?
+ ((sourceDesc != nullptr && !sourceDesc->isInternal()) || isCallTxAudioSource(sourceDesc)) ?
mEngine->getStreamTypeForAttributes(sourceDesc->attributes()) :
AUDIO_STREAM_PATCH;
patchBuilder.addSource(srcMixPortConfig);
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.h b/services/audiopolicy/managerdefault/AudioPolicyManager.h
index db0ee15de8..97fa6f6f81 100644
index a69e08871b..f8762016db 100644
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.h
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.h
@@ -938,6 +938,9 @@ protected:
@@ -944,6 +944,9 @@ protected:
SoundTriggerSessionCollection mSoundTriggerSessions;
@ -309,5 +228,5 @@ index db0ee15de8..97fa6f6f81 100644
SourceClientCollection mAudioSources;
--
2.37.2
2.39.2

View File

@ -1,7 +1,7 @@
From 5def9ad1a26e28d517666e34301dc725c1660e36 Mon Sep 17 00:00:00 2001
From 5ae18168ff97d9e4eb66fc6dc8e087bd0ead8f31 Mon Sep 17 00:00:00 2001
From: Peter Cai <peter@typeblog.net>
Date: Wed, 24 Aug 2022 15:42:39 -0400
Subject: [PATCH 2/5] APM: Optionally force-load audio policy for system-side
Subject: [PATCH 2/4] APM: Optionally force-load audio policy for system-side
bt audio HAL
Required to support our system-side bt audio implementation, i.e.
@ -57,5 +57,5 @@ index d446e9667b..f5233f2a42 100644
// Global Configuration
--
2.37.2
2.39.2

View File

@ -1,7 +1,7 @@
From e31fc6f3f79848e6f7e7b1b4abe82aa26571cf7b Mon Sep 17 00:00:00 2001
From d11e204968cbf01851042f03fe2a12aabbe84a93 Mon Sep 17 00:00:00 2001
From: Peter Cai <peter@typeblog.net>
Date: Thu, 25 Aug 2022 13:30:29 -0400
Subject: [PATCH 3/5] APM: Remove A2DP audio ports from the primary HAL
Subject: [PATCH 3/4] 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
@ -75,5 +75,5 @@ index f5233f2a42..6630d06f6d 100644
RouteTraits::Collection routes;
--
2.37.2
2.39.2

View File

@ -1,7 +1,7 @@
From d68bf009f5f9065163ae6ece838cdb77784e3595 Mon Sep 17 00:00:00 2001
From 628ff965d6ade74843a58cab6fe58069ef0ec3ad Mon Sep 17 00:00:00 2001
From: Emilian Peev <epeev@google.com>
Date: Fri, 5 Aug 2022 17:28:06 -0700
Subject: [PATCH 5/5] Camera: Avoid unnecessary close of buffer acquire fence
Subject: [PATCH 4/4] Camera: Avoid unnecessary close of buffer acquire fence
fds
According to the gralloc lock documentation:
@ -17,10 +17,10 @@ Merged-In: Ieec34b54aaa7f0d773eccb593c3daaa3e41bae0b
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/services/camera/libcameraservice/device3/Camera3OutputStream.cpp b/services/camera/libcameraservice/device3/Camera3OutputStream.cpp
index 1e20ee0eb8..f23a2de340 100644
index 396104c4fd..c725aadb79 100644
--- a/services/camera/libcameraservice/device3/Camera3OutputStream.cpp
+++ b/services/camera/libcameraservice/device3/Camera3OutputStream.cpp
@@ -327,7 +327,7 @@ status_t Camera3OutputStream::fixUpHidlJpegBlobHeader(ANativeWindowBuffer* anwBu
@@ -331,7 +331,7 @@ status_t Camera3OutputStream::fixUpHidlJpegBlobHeader(ANativeWindowBuffer* anwBu
status_t res =
gbLocker.lockAsync(
GraphicBuffer::USAGE_SW_READ_OFTEN | GraphicBuffer::USAGE_SW_WRITE_RARELY,
@ -29,7 +29,7 @@ index 1e20ee0eb8..f23a2de340 100644
if (res != OK) {
ALOGE("%s: Failed to lock the buffer: %s (%d)", __FUNCTION__, strerror(-res), res);
return res;
@@ -1298,7 +1298,7 @@ void Camera3OutputStream::dumpImageToDisk(nsecs_t timestamp,
@@ -1327,7 +1327,7 @@ void Camera3OutputStream::dumpImageToDisk(nsecs_t timestamp,
void* mapped = nullptr;
base::unique_fd fenceFd(dup(fence));
status_t res = graphicBuffer->lockAsync(GraphicBuffer::USAGE_SW_READ_OFTEN, &mapped,
@ -39,5 +39,5 @@ index 1e20ee0eb8..f23a2de340 100644
ALOGE("%s: Failed to lock the buffer: %s (%d)", __FUNCTION__, strerror(-res), res);
return;
--
2.37.2
2.39.2

View File

@ -1,62 +0,0 @@
From 9d5b1f22e00167bd6f75fde20ace1c1d1e964318 Mon Sep 17 00:00:00 2001
From: Peter Cai <peter@typeblog.net>
Date: Wed, 1 Jun 2022 16:56:46 -0400
Subject: [PATCH 4/5] camera: Implement property to override default camera
Complement to the frameworks/base patch.
Change-Id: I002bfa974bafc2cc01365eeea31c7a5dcb5a2028
---
.../common/CameraProviderManager.cpp | 22 +++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/services/camera/libcameraservice/common/CameraProviderManager.cpp b/services/camera/libcameraservice/common/CameraProviderManager.cpp
index abaea6639f..59b59f44fb 100644
--- a/services/camera/libcameraservice/common/CameraProviderManager.cpp
+++ b/services/camera/libcameraservice/common/CameraProviderManager.cpp
@@ -36,6 +36,7 @@
#include <functional>
#include <camera_metadata_hidden.h>
#include <android-base/parseint.h>
+#include <android-base/properties.h>
#include <android-base/logging.h>
#include <cutils/properties.h>
#include <hwbinder/IPCThreadState.h>
@@ -205,6 +206,15 @@ std::vector<std::string> CameraProviderManager::getCameraDeviceIds() const {
deviceIds.push_back(id);
}
}
+
+ int32_t altPrimaryCamera = property_get_int32("persist.sys.alt_primary_camera", 0);
+
+ if (altPrimaryCamera != 0 && deviceIds.size() > (size_t) altPrimaryCamera) {
+ const std::string origPrimary = deviceIds[0];
+ deviceIds[0] = deviceIds[altPrimaryCamera];
+ deviceIds[altPrimaryCamera] = origPrimary;
+ }
+
return deviceIds;
}
@@ -271,6 +281,18 @@ std::vector<std::string> CameraProviderManager::getAPI1CompatibleCameraDeviceIds
std::sort(systemDeviceIds.begin(), systemDeviceIds.end(), sortFunc);
deviceIds.insert(deviceIds.end(), publicDeviceIds.begin(), publicDeviceIds.end());
deviceIds.insert(deviceIds.end(), systemDeviceIds.begin(), systemDeviceIds.end());
+
+ // Default camera ID hack should match with android.hardware.camera2.CameraManager.sortCameraIds
+ // Note that the alt primary camera may not be available here due to filterLogicalCameraIdsLocked()
+ // in which case we will just ignore it.
+ int altPrimaryCameraId = base::GetIntProperty("persist.sys.alt_primary_camera", -1);
+
+ if (altPrimaryCameraId > 0 && altPrimaryCameraId < (int) deviceIds.size()) {
+ std::string origPrimary = deviceIds[0];
+ deviceIds[0] = deviceIds[altPrimaryCameraId];
+ deviceIds[altPrimaryCameraId] = origPrimary;
+ }
+
return deviceIds;
}
--
2.37.2

View File

@ -1,7 +1,7 @@
From 0f7b66cc9930141f645569f354e901bef5ae384b Mon Sep 17 00:00:00 2001
From b2a523bde06164be9431c4e5f51d3acd2b459bd5 Mon Sep 17 00:00:00 2001
From: Peter Cai <peter@typeblog.net>
Date: Tue, 12 Oct 2021 21:37:22 -0400
Subject: [PATCH 1/5] PackageParser: support glob matching for properties
Subject: [PATCH 1/4] PackageParser: support glob matching for properties
Needed to make phh's vendor overlays work
---
@ -9,10 +9,10 @@ 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 44dc28d2b0fa..27c0795d47d2 100644
index c15b3e0b80c3..05bb843c0c4d 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -2535,8 +2535,16 @@ public class PackageParser {
@@ -2545,8 +2545,16 @@ public class PackageParser {
for (int i = 0; i < propNames.length; i++) {
// Check property value: make sure it is both set and equal to expected value
final String currValue = SystemProperties.get(propNames[i]);
@ -32,5 +32,5 @@ index 44dc28d2b0fa..27c0795d47d2 100644
}
return true;
--
2.37.2
2.39.2

View File

@ -1,7 +1,7 @@
From 381aa92ab038fc6c0157c5b9396218e80ed3ae65 Mon Sep 17 00:00:00 2001
From d5d5ffd0bdf5be719f18b972706948aa87135934 Mon Sep 17 00:00:00 2001
From: dhacker29 <dhackerdvm@gmail.com>
Date: Tue, 24 Nov 2015 01:53:47 -0500
Subject: [PATCH 2/5] fw/b: Use ro.build.version.incremental to signal OTA
Subject: [PATCH 2/4] fw/b: Use ro.build.version.incremental to signal OTA
upgrades
[PeterCxy]: On T, there is a new class PackagePartitions that is
@ -104,10 +104,10 @@ index ff80e614be58..8bf0d5ffff76 100644
}
diff --git a/services/core/java/com/android/server/pm/ShortcutService.java b/services/core/java/com/android/server/pm/ShortcutService.java
index f2bcf5e461a7..0e66d1a7a7ef 100644
index 0b20683185f0..fdc2b4c11fd1 100644
--- a/services/core/java/com/android/server/pm/ShortcutService.java
+++ b/services/core/java/com/android/server/pm/ShortcutService.java
@@ -5136,7 +5136,7 @@ public class ShortcutService extends IShortcutService.Stub {
@@ -5139,7 +5139,7 @@ public class ShortcutService extends IShortcutService.Stub {
// Injection point.
String injectBuildFingerprint() {
@ -117,5 +117,5 @@ index f2bcf5e461a7..0e66d1a7a7ef 100644
final void wtf(String message) {
--
2.37.2
2.39.2

View File

@ -1,7 +1,7 @@
From effc76211ce9b665c4f9418d86d2b1a8aa67d42b Mon Sep 17 00:00:00 2001
From 61fc857a22f3e11f2d8095041ee7b006106064f0 Mon Sep 17 00:00:00 2001
From: Danny Lin <danny@kdrag0n.dev>
Date: Sat, 16 Oct 2021 05:27:57 -0700
Subject: [PATCH 3/5] Add support for app signature spoofing
Subject: [PATCH 3/4] Add support for app signature spoofing
This is needed by microG GmsCore to pretend to be the official Google
Play Services package, because client apps check the package signature
@ -38,7 +38,7 @@ Change-Id: Ied7d6ce0b83a2d2345c3abba0429998d86494a88
4 files changed, 56 insertions(+), 3 deletions(-)
diff --git a/core/api/current.txt b/core/api/current.txt
index c8a43db2f9c2..277183036c60 100644
index 487e57d114c9..04e69741b9fd 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -87,6 +87,7 @@ package android {
@ -58,10 +58,10 @@ index c8a43db2f9c2..277183036c60 100644
field public static final String MICROPHONE = "android.permission-group.MICROPHONE";
field public static final String NEARBY_DEVICES = "android.permission-group.NEARBY_DEVICES";
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 7439b2f0921f..eadcac3af765 100644
index 6a80d1cb62a7..189c5c223cd0 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -3534,6 +3534,21 @@
@@ -3564,6 +3564,21 @@
android:description="@string/permdesc_getPackageSize"
android:protectionLevel="normal" />
@ -84,10 +84,10 @@ index 7439b2f0921f..eadcac3af765 100644
{@link android.content.pm.PackageManager#addPackageToPreferred}
for details. -->
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index e5d90f00f327..7ac26e536f2a 100644
index 9410e0682106..7ed7a03f1b61 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -974,6 +974,18 @@
@@ -977,6 +977,18 @@
<!-- Permissions -->
@ -107,10 +107,10 @@ index e5d90f00f327..7ac26e536f2a 100644
<string name="permlab_statusBar">disable or modify status bar</string>
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
diff --git a/services/core/java/com/android/server/pm/ComputerEngine.java b/services/core/java/com/android/server/pm/ComputerEngine.java
index 259ca655d2b9..674b22e28a83 100644
index 46b7460dff1b..40549962436f 100644
--- a/services/core/java/com/android/server/pm/ComputerEngine.java
+++ b/services/core/java/com/android/server/pm/ComputerEngine.java
@@ -1591,6 +1591,29 @@ public class ComputerEngine implements Computer {
@@ -1603,6 +1603,29 @@ public class ComputerEngine implements Computer {
return result;
}
@ -140,7 +140,7 @@ index 259ca655d2b9..674b22e28a83 100644
public final PackageInfo generatePackageInfo(PackageStateInternal ps,
@PackageManager.PackageInfoFlagsBits long flags, int userId) {
if (!mUserManager.exists(userId)) return null;
@@ -1620,13 +1643,14 @@ public class ComputerEngine implements Computer {
@@ -1632,13 +1655,14 @@ public class ComputerEngine implements Computer {
final int[] gids = (flags & PackageManager.GET_GIDS) == 0 ? EMPTY_INT_ARRAY
: mPermissionManager.getGidsForUid(UserHandle.getUid(userId, ps.getAppId()));
// Compute granted permissions only if package has requested permissions
@ -159,5 +159,5 @@ index 259ca655d2b9..674b22e28a83 100644
if (packageInfo == null) {
return null;
--
2.37.2
2.39.2

View File

@ -1,7 +1,7 @@
From f95505e81e0c4064eb5c78a62ed6257530734b37 Mon Sep 17 00:00:00 2001
From 7cd264509a929835a1770e931e3ec8001da7aecb Mon Sep 17 00:00:00 2001
From: Peter Cai <peter@typeblog.net>
Date: Fri, 2 Sep 2022 21:36:06 -0400
Subject: [PATCH 5/5] FrameworkParsingPackageUtils: Add glob matching support
Subject: [PATCH 4/4] FrameworkParsingPackageUtils: Add glob matching support
for properties
This is now required in addition to the one in PackageParser in order
@ -36,5 +36,5 @@ index 3e1c5bb3d7ec..f15978c57574 100644
}
return true;
--
2.37.2
2.39.2

View File

@ -1,59 +0,0 @@
From bd9fc170c2125e142f19805cceaaabe354ba6da8 Mon Sep 17 00:00:00 2001
From: Peter Cai <peter@typeblog.net>
Date: Wed, 1 Jun 2022 16:56:20 -0400
Subject: [PATCH 4/5] Implement a persistent property to override the default
primary camera (0)
Change-Id: I49b45d00bf71d7932591b3516d49a680e1b6568b
---
core/java/android/hardware/Camera.java | 6 ++++++
core/java/android/hardware/camera2/CameraManager.java | 9 +++++++++
2 files changed, 15 insertions(+)
diff --git a/core/java/android/hardware/Camera.java b/core/java/android/hardware/Camera.java
index 3bdd39f5d7d7..fff46f20342b 100644
--- a/core/java/android/hardware/Camera.java
+++ b/core/java/android/hardware/Camera.java
@@ -45,6 +45,7 @@ import android.os.Message;
import android.os.Process;
import android.os.RemoteException;
import android.os.ServiceManager;
+import android.os.SystemProperties;
import android.renderscript.Allocation;
import android.renderscript.Element;
import android.renderscript.RSIllegalArgumentException;
@@ -408,6 +409,11 @@ public class Camera {
* @see #open(int)
*/
public static Camera open() {
+ int altPrimaryCamera = SystemProperties.getInt("persist.sys.alt_primary_camera", -1);
+ if (altPrimaryCamera > 0) {
+ return new Camera(altPrimaryCamera);
+ }
+
int numberOfCameras = getNumberOfCameras();
CameraInfo cameraInfo = new CameraInfo();
for (int i = 0; i < numberOfCameras; i++) {
diff --git a/core/java/android/hardware/camera2/CameraManager.java b/core/java/android/hardware/camera2/CameraManager.java
index d6d3a97687b5..c86c909a4109 100644
--- a/core/java/android/hardware/camera2/CameraManager.java
+++ b/core/java/android/hardware/camera2/CameraManager.java
@@ -1723,6 +1723,15 @@ public final class CameraManager {
}
}});
+ // HAXX: Allow overriding default primary camera (assumed to be camera 0) via property
+ // Should match with libcameraservice/common/CameraProviderManager.cpp
+ int altPrimaryCamera = SystemProperties.getInt("persist.sys.alt_primary_camera", -1);
+ if (altPrimaryCamera > 0 && altPrimaryCamera < cameraIds.length) {
+ String origPrimary = cameraIds[0];
+ cameraIds[0] = cameraIds[altPrimaryCamera];
+ cameraIds[altPrimaryCamera] = origPrimary;
+ }
+
}
public static boolean cameraStatusesContains(CameraStatus[] cameraStatuses, String id) {
--
2.37.2

View File

@ -1,4 +1,4 @@
From 2de099f8a86c02bc74b28beb7fbf8ccc71b17922 Mon Sep 17 00:00:00 2001
From 9990507a53c8bc7ac154f78ed260fea6be30f252 Mon Sep 17 00:00:00 2001
From: Peter Cai <peter@typeblog.net>
Date: Mon, 5 Sep 2022 14:02:37 -0400
Subject: [PATCH] SubscriptionController: Do not override default calling
@ -14,29 +14,32 @@ to keep re-selecting the desired calling account after every reboot.
Test: manual
Change-Id: Iccab64e9b3b3ab4773bd8944d47c2006f229d472
---
.../internal/telephony/SubscriptionController.java | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
.../internal/telephony/SubscriptionController.java | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/src/java/com/android/internal/telephony/SubscriptionController.java b/src/java/com/android/internal/telephony/SubscriptionController.java
index 7e762d7af0..f2bff8b15f 100644
index 82799bea8b..5105d3a183 100644
--- a/src/java/com/android/internal/telephony/SubscriptionController.java
+++ b/src/java/com/android/internal/telephony/SubscriptionController.java
@@ -2846,7 +2846,14 @@ public class SubscriptionController extends ISub.Stub {
PhoneAccountHandle currentHandle = telecomManager.getUserSelectedOutgoingPhoneAccount();
logd("[setDefaultVoiceSubId] current phoneAccountHandle=" + currentHandle);
@@ -2855,8 +2855,17 @@ public class SubscriptionController extends ISub.Stub {
subId);
- if (!Objects.equals(currentHandle, newHandle)) {
TelecomManager telecomManager = mContext.getSystemService(TelecomManager.class);
+ PhoneAccountHandle currentHandle = telecomManager.getUserSelectedOutgoingPhoneAccount();
+ String currentPackageName =
+ currentHandle == null ? null : currentHandle.getComponentName().getPackageName();
+ boolean currentIsSim = "com.android.phone".equals(currentPackageName);
+ // Do not override user selected outgoing calling account
+ // if the user has selected a third-party app as default
+ boolean shouldKeepOutgoingAccount = currentHandle != null && !currentIsSim;
+
+ if (!Objects.equals(currentHandle, newHandle) && !shouldKeepOutgoingAccount) {
telecomManager.setUserSelectedOutgoingPhoneAccount(newHandle);
logd("[setDefaultVoiceSubId] change to phoneAccountHandle=" + newHandle);
} else {
- telecomManager.setUserSelectedOutgoingPhoneAccount(newHandle);
+ if (!shouldKeepOutgoingAccount) {
+ telecomManager.setUserSelectedOutgoingPhoneAccount(newHandle);
+ }
logd("[setDefaultVoiceSubId] requesting change to phoneAccountHandle=" + newHandle);
if (previousDefaultSub != getDefaultSubId()) {
--
2.37.2
2.39.2

View File

@ -1,7 +1,7 @@
From f11b5953c3d3a4e69fcf91eb5642d5e7e37fe398 Mon Sep 17 00:00:00 2001
From 4cc2be49efa697ff1d581b272f53b41348684e09 Mon Sep 17 00:00:00 2001
From: Peter Cai <peter@typeblog.net>
Date: Wed, 17 Aug 2022 22:02:33 -0400
Subject: [PATCH 1/5] Disable QSB in BuildConfig
Subject: [PATCH 1/4] Disable QSB in BuildConfig
Change-Id: I3150ef1d9b8c161ed2a6569d1ae75bba0060b36f
---
@ -20,5 +20,5 @@ index 9a81d3f54c..8c83bcc372 100644
+ public static final boolean QSB_ON_FIRST_SCREEN = false;
}
--
2.37.2
2.39.2

View File

@ -1,7 +1,7 @@
From 8d396831eabfaa0859313db9598a5641f51493e6 Mon Sep 17 00:00:00 2001
From ae423b97721ce943c74a9e2a8a94d6160c56da4b Mon Sep 17 00:00:00 2001
From: Danny Lin <danny@kdrag0n.dev>
Date: Mon, 11 Oct 2021 20:48:44 -0700
Subject: [PATCH 2/5] Expose themed icon setting in ThemePicker
Subject: [PATCH 2/4] Expose themed icon setting in ThemePicker
Change-Id: I44e9288c3de13a3604b7a03857ec400753317d9a
---
@ -38,5 +38,5 @@ index 7d7054f5a5..d2955c4327 100644
</application>
--
2.37.2
2.39.2

View File

@ -1,7 +1,7 @@
From c304a46115f8244f55f38b85ca68613905c6c015 Mon Sep 17 00:00:00 2001
From 47d4a143786047a8ed00b00c046b996091f90191 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/5] Properly expose GridCustomizationsProvider
Subject: [PATCH 3/4] Properly expose GridCustomizationsProvider
Change-Id: I8268a215257ae0e399c56ac8b44cdfdff8cc92a0
---
@ -9,10 +9,10 @@ Change-Id: I8268a215257ae0e399c56ac8b44cdfdff8cc92a0
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/AndroidManifest-common.xml b/AndroidManifest-common.xml
index 02b83fe889..00e7fc35ad 100644
index 951be4e54e..49007bd00d 100644
--- a/AndroidManifest-common.xml
+++ b/AndroidManifest-common.xml
@@ -135,7 +135,9 @@
@@ -136,7 +136,9 @@
<provider
android:name="com.android.launcher3.graphics.GridCustomizationsProvider"
android:authorities="${packageName}.grid_control"
@ -24,5 +24,5 @@ index 02b83fe889..00e7fc35ad 100644
<!--
The settings activity. To extend point settings_fragment_name to appropriate fragment class
--
2.37.2
2.39.2

View File

@ -1,7 +1,7 @@
From cf2a48c3b77753dbb850726495308dad64205497 Mon Sep 17 00:00:00 2001
From 9de3a5944dd2b232812bb2aef127e63486edc3f6 Mon Sep 17 00:00:00 2001
From: Danny Lin <danny@kdrag0n.dev>
Date: Wed, 6 Oct 2021 22:45:33 -0700
Subject: [PATCH 4/5] Fix all apps header color in dark mode
Subject: [PATCH 4/4] Fix all apps header color in dark mode
Change-Id: Ib2ce7f6e3c9b87a4626699cb54673d88392a5f41
---
@ -9,17 +9,17 @@ Change-Id: Ib2ce7f6e3c9b87a4626699cb54673d88392a5f41
1 file changed, 1 insertion(+)
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 21095109a6..63f46e413d 100644
index 7582a30435..454db61d90 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -99,6 +99,7 @@
@@ -95,6 +95,7 @@
<item name="android:colorControlHighlight">#19FFFFFF</item>
<item name="android:colorPrimary">#FF212121</item>
<item name="allAppsScrimColor">?android:attr/colorBackgroundFloating</item>
+ <item name="allappsHeaderProtectionColor">@color/popup_color_tertiary_dark</item>
<item name="allAppsNavBarScrimColor">#80000000</item>
<item name="allAppsTheme">@style/AllAppsTheme.Dark</item>
<item name="popupColorPrimary">@color/popup_color_primary_dark</item>
<item name="popupColorSecondary">@color/popup_color_secondary_dark</item>
--
2.37.2
2.39.2

View File

@ -1,73 +0,0 @@
From dbb30694c2cce4a5fb70ea6a8c5594bcca7cba4d Mon Sep 17 00:00:00 2001
From: Danny Lin <danny@kdrag0n.dev>
Date: Sun, 10 Oct 2021 03:38:23 -0700
Subject: [PATCH 5/5] Fix Personal/Work profile tab colors in All Apps
The default AOSP colors are broken and result in poor contrast, among
other issues.
Change-Id: Id7824bc08cac0aad055f41c0b617e15300af05d4
---
res/color-night-v31/all_apps_tab_text.xml | 6 +++---
.../all_apps_tabs_background.xml | 18 ++++++++++++++++++
res/color-v31/all_apps_tab_text.xml | 6 +++---
3 files changed, 24 insertions(+), 6 deletions(-)
create mode 100644 res/color-night-v31/all_apps_tabs_background.xml
diff --git a/res/color-night-v31/all_apps_tab_text.xml b/res/color-night-v31/all_apps_tab_text.xml
index 83237b49e5..eaac621cfc 100644
--- a/res/color-night-v31/all_apps_tab_text.xml
+++ b/res/color-night-v31/all_apps_tab_text.xml
@@ -14,6 +14,6 @@
limitations under the License.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:color="@android:color/system_neutral1_50" android:state_selected="true"/>
- <item android:color="@android:color/system_neutral2_700"/>
-</selector>
\ No newline at end of file
+ <item android:color="?android:textColorPrimaryInverse" android:state_selected="true"/>
+ <item android:color="?android:textColorSecondary"/>
+</selector>
diff --git a/res/color-night-v31/all_apps_tabs_background.xml b/res/color-night-v31/all_apps_tabs_background.xml
new file mode 100644
index 0000000000..fc8a4d7d79
--- /dev/null
+++ b/res/color-night-v31/all_apps_tabs_background.xml
@@ -0,0 +1,18 @@
+<?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.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:color="@android:color/system_neutral1_800" />
+</selector>
diff --git a/res/color-v31/all_apps_tab_text.xml b/res/color-v31/all_apps_tab_text.xml
index c3520a7ab5..d133a31a2d 100644
--- a/res/color-v31/all_apps_tab_text.xml
+++ b/res/color-v31/all_apps_tab_text.xml
@@ -14,6 +14,6 @@
limitations under the License.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:color="@android:color/system_neutral1_900" android:state_selected="true"/>
- <item android:color="@android:color/system_neutral2_700"/>
-</selector>
\ No newline at end of file
+ <item android:color="?android:textColorPrimary" android:state_selected="true"/>
+ <item android:color="?android:textColorSecondary"/>
+</selector>
--
2.37.2

View File

@ -1,7 +1,7 @@
From d043802a9e21a05b3fda0d2c3c41a69e513248e0 Mon Sep 17 00:00:00 2001
From ab8f40929c16e56034811ab5de87a6d658ce70b5 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/6] Add wallpaper privapp whitelist
Subject: [PATCH 1/5] Add wallpaper privapp whitelist
Change-Id: I044b1d9201ac0b8780fc37a387f401f3dd0ddeac
---
@ -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 c85fd2b..5c1f487 100644
index 6d9ff8f6..ff9413ac 100644
--- a/Android.bp
+++ b/Android.bp
@@ -104,5 +104,15 @@ android_app {
@@ -117,5 +117,15 @@ android_app {
platform_apis: true,
manifest: "AndroidManifest.xml",
additional_manifests: [":WallpaperPicker2_Manifest"],
@ -32,7 +32,7 @@ index c85fd2b..5c1f487 100644
+}
diff --git a/privapp_whitelist_com.android.wallpaper.xml b/privapp_whitelist_com.android.wallpaper.xml
new file mode 100644
index 0000000..e3f3b65
index 00000000..e3f3b658
--- /dev/null
+++ b/privapp_whitelist_com.android.wallpaper.xml
@@ -0,0 +1,24 @@
@ -61,5 +61,5 @@ index 0000000..e3f3b65
+ </privapp-permissions>
+</permissions>
--
2.37.2
2.39.2

View File

@ -1,7 +1,7 @@
From 5a3e22296f8de9fa21140cf28f622875928ba8ca Mon Sep 17 00:00:00 2001
From 4b8b458becc81bdf4171e40660c5e4b1073985fc Mon Sep 17 00:00:00 2001
From: Danny Lin <danny@kdrag0n.dev>
Date: Tue, 5 Oct 2021 19:00:36 -0700
Subject: [PATCH 2/6] Override legacy WallpaperPicker app
Subject: [PATCH 2/5] Override legacy WallpaperPicker app
Change-Id: I9a1907527eea0e8e7cd10bab64ba79c2c4006c59
---
@ -9,10 +9,10 @@ Change-Id: I9a1907527eea0e8e7cd10bab64ba79c2c4006c59
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Android.bp b/Android.bp
index 5c1f487..ce850c5 100644
index ff9413ac..dee08f45 100644
--- a/Android.bp
+++ b/Android.bp
@@ -106,7 +106,7 @@ android_app {
@@ -119,7 +119,7 @@ android_app {
additional_manifests: [":WallpaperPicker2_Manifest"],
required: ["privapp_whitelist_com.android.wallpaper.xml"],
@ -22,5 +22,5 @@ index 5c1f487..ce850c5 100644
prebuilt_etc_xml {
--
2.37.2
2.39.2

View File

@ -1,7 +1,7 @@
From 75de47c866b31a8930bc7e58954928712dbcbe60 Mon Sep 17 00:00:00 2001
From 9ebd057db4adf880c69de6d3558bfbe6948d60ca Mon Sep 17 00:00:00 2001
From: LuK1337 <priv.luk@gmail.com>
Date: Tue, 15 Sep 2020 03:27:19 +0200
Subject: [PATCH 3/6] Add wallpaper default permissions
Subject: [PATCH 3/5] Add wallpaper default permissions
Change-Id: If43a594da31fbab9280ce45b049737f6c534b620
---
@ -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 ce850c5..8ad98d2 100644
index dee08f45..74479801 100644
--- a/Android.bp
+++ b/Android.bp
@@ -105,7 +105,11 @@ android_app {
@@ -118,7 +118,11 @@ android_app {
manifest: "AndroidManifest.xml",
additional_manifests: [":WallpaperPicker2_Manifest"],
@ -27,7 +27,7 @@ index ce850c5..8ad98d2 100644
overrides: ["WallpaperPicker2", "WallpaperPicker"],
}
@@ -116,3 +120,11 @@ prebuilt_etc_xml {
@@ -129,3 +133,11 @@ prebuilt_etc_xml {
filename_from_src: true,
sub_dir: "permissions",
}
@ -41,7 +41,7 @@ index ce850c5..8ad98d2 100644
+}
diff --git a/default_permissions_com.android.wallpaper.xml b/default_permissions_com.android.wallpaper.xml
new file mode 100644
index 0000000..41b23ce
index 00000000..41b23ce1
--- /dev/null
+++ b/default_permissions_com.android.wallpaper.xml
@@ -0,0 +1,37 @@
@ -83,5 +83,5 @@ index 0000000..41b23ce
+ </exception>
+</exceptions>
--
2.37.2
2.39.2

View File

@ -1,7 +1,7 @@
From 0d59123442f547d1d3cbd5e4200d6f2ec6d4bed0 Mon Sep 17 00:00:00 2001
From 1814b701dfef99ecc9246620c33740ef466c9e71 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 4/6] Specify we read and write launcher settings
Subject: [PATCH 4/5] Specify we read and write launcher settings
Change-Id: Ifc8196588443b007602118389ca76d34ab531f14
---
@ -9,10 +9,10 @@ Change-Id: Ifc8196588443b007602118389ca76d34ab531f14
1 file changed, 3 insertions(+)
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index ff8f187..cace7db 100755
index 4e71bcc6..26f4fce0 100755
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -37,6 +37,9 @@
@@ -45,6 +45,9 @@
</intent>
</queries>
@ -23,5 +23,5 @@ index ff8f187..cace7db 100755
tools:replace="android:icon,android:name"
android:extractNativeLibs="false"
--
2.37.2
2.39.2

View File

@ -0,0 +1,37 @@
From 8ebb9654981aea1a79a4145eda7c55d2f5a02d1c Mon Sep 17 00:00:00 2001
From: Danny Lin <danny@kdrag0n.dev>
Date: Tue, 5 Oct 2021 22:40:58 -0700
Subject: [PATCH 5/5] Add permission for launcher preview rendering
Change-Id: Ie707dcd98161e8f5993b0504295fddc3f395cd20
---
AndroidManifest.xml | 1 +
privapp_whitelist_com.android.wallpaper.xml | 1 +
2 files changed, 2 insertions(+)
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 26f4fce0..40281cf9 100755
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -8,6 +8,7 @@
<uses-permission android:name="android.permission.CHANGE_OVERLAY_PACKAGES"/>
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
<uses-permission android:name="android.permission.SET_WALLPAPER_COMPONENT" />
+ <uses-permission android:name="android.permission.BIND_WALLPAPER" />
<uses-permission android:name="android.permission.READ_DEVICE_CONFIG" />
<uses-permission android:name="android.permission.MODIFY_DAY_NIGHT_MODE" />
<uses-permission android:name="android.permission.CUSTOMIZE_SYSTEM_UI" />
diff --git a/privapp_whitelist_com.android.wallpaper.xml b/privapp_whitelist_com.android.wallpaper.xml
index e3f3b658..47133be8 100644
--- a/privapp_whitelist_com.android.wallpaper.xml
+++ b/privapp_whitelist_com.android.wallpaper.xml
@@ -20,5 +20,6 @@
<permission name="android.permission.MODIFY_DAY_NIGHT_MODE"/>
<permission name="android.permission.CHANGE_OVERLAY_PACKAGES"/>
<permission name="android.permission.WRITE_SECURE_SETTINGS" />
+ <permission name="android.permission.BIND_WALLPAPER"/>
</privapp-permissions>
</permissions>
--
2.39.2