Sync up to v219
This commit is contained in:
parent
23b58fa57f
commit
133b4799cc
@ -0,0 +1,27 @@
|
|||||||
|
From b54a7a80c84c693549a77c57e2dc5a023928f524 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Sun, 24 May 2020 17:22:22 +0200
|
||||||
|
Subject: [PATCH 8/8] Allow mismatches of exfat genfscon
|
||||||
|
|
||||||
|
---
|
||||||
|
libsepol/cil/src/cil_post.c | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/libsepol/cil/src/cil_post.c b/libsepol/cil/src/cil_post.c
|
||||||
|
index 255c9e12..f97c65c1 100644
|
||||||
|
--- a/libsepol/cil/src/cil_post.c
|
||||||
|
+++ b/libsepol/cil/src/cil_post.c
|
||||||
|
@@ -488,6 +488,10 @@ int cil_post_genfscon_context_compare(const void *a, const void *b)
|
||||||
|
*/
|
||||||
|
if(strcmp(a_genfscon->path_str, "/devices/virtual/block/") == 0)
|
||||||
|
bypass = 1;
|
||||||
|
+ if(strcmp(a_genfscon->fs_str, "exfat") == 0 || strcmp(a_genfscon->fs_str, "esdfs") == 0) {
|
||||||
|
+ if(strcmp(a_genfscon->path_str, "/") == 0)
|
||||||
|
+ bypass = 1;
|
||||||
|
+ }
|
||||||
|
if(bypass == 1) {
|
||||||
|
fprintf(stderr, "Received conflicting %s vs %s but ignore\n", a_genfscon->path_str, b_genfscon->path_str);
|
||||||
|
return 0;
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,71 @@
|
|||||||
|
From a280506c41623f2c2e0f96651189ec4b5e19bad1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Thu, 14 May 2020 19:54:55 +0200
|
||||||
|
Subject: [PATCH] Add persist.sys.phh.samsung.camera_ids property to access
|
||||||
|
hidden Samsung cameras
|
||||||
|
|
||||||
|
---
|
||||||
|
services/camera/libcameraservice/Android.bp | 1 +
|
||||||
|
.../common/CameraProviderManager.cpp | 13 +++++++++++--
|
||||||
|
2 files changed, 12 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/services/camera/libcameraservice/Android.bp b/services/camera/libcameraservice/Android.bp
|
||||||
|
index c4bc0f1a9..d6a4d6132 100644
|
||||||
|
--- a/services/camera/libcameraservice/Android.bp
|
||||||
|
+++ b/services/camera/libcameraservice/Android.bp
|
||||||
|
@@ -108,6 +108,7 @@ cc_library_shared {
|
||||||
|
"android.hardware.camera.device@3.4",
|
||||||
|
"android.hardware.camera.device@3.5",
|
||||||
|
"vendor.lineage.camera.motor@1.0",
|
||||||
|
+ "vendor.samsung.hardware.camera.provider@3.0",
|
||||||
|
],
|
||||||
|
|
||||||
|
export_shared_lib_headers: [
|
||||||
|
diff --git a/services/camera/libcameraservice/common/CameraProviderManager.cpp b/services/camera/libcameraservice/common/CameraProviderManager.cpp
|
||||||
|
index fdb565750..9c1c70c84 100644
|
||||||
|
--- a/services/camera/libcameraservice/common/CameraProviderManager.cpp
|
||||||
|
+++ b/services/camera/libcameraservice/common/CameraProviderManager.cpp
|
||||||
|
@@ -21,6 +21,7 @@
|
||||||
|
#include "CameraProviderManager.h"
|
||||||
|
|
||||||
|
#include <android/hardware/camera/device/3.5/ICameraDevice.h>
|
||||||
|
+#include <vendor/samsung/hardware/camera/provider/3.0/ISehCameraProvider.h>
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
#include <chrono>
|
||||||
|
@@ -1225,6 +1226,9 @@ status_t CameraProviderManager::ProviderInfo::initialize(
|
||||||
|
mMinorVersion = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ auto samsungCast = vendor::samsung::hardware::camera::provider::V3_0::ISehCameraProvider::castFrom(interface);
|
||||||
|
+ auto samsungProvider = samsungCast.isOk() ? static_cast<sp<vendor::samsung::hardware::camera::provider::V3_0::ISehCameraProvider>>(samsungCast) : nullptr;
|
||||||
|
+
|
||||||
|
// cameraDeviceStatusChange callbacks may be called (and causing new devices added)
|
||||||
|
// before setCallback returns
|
||||||
|
hardware::Return<Status> status = interface->setCallback(this);
|
||||||
|
@@ -1269,7 +1273,7 @@ status_t CameraProviderManager::ProviderInfo::initialize(
|
||||||
|
|
||||||
|
// Get initial list of camera devices, if any
|
||||||
|
std::vector<std::string> devices;
|
||||||
|
- hardware::Return<void> ret = interface->getCameraIdList([&status, this, &devices](
|
||||||
|
+ auto cb = [&status, this, &devices](
|
||||||
|
Status idStatus,
|
||||||
|
const hardware::hidl_vec<hardware::hidl_string>& cameraDeviceNames) {
|
||||||
|
status = idStatus;
|
||||||
|
@@ -1286,7 +1290,12 @@ status_t CameraProviderManager::ProviderInfo::initialize(
|
||||||
|
mProviderPublicCameraIds.push_back(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
- } });
|
||||||
|
+ } };
|
||||||
|
+ hardware::Return<void> ret;
|
||||||
|
+ if(samsungProvider != nullptr && property_get_bool("persist.sys.phh.samsung.camera_ids", false))
|
||||||
|
+ ret = samsungProvider->sehGetCameraIdList(cb);
|
||||||
|
+ else
|
||||||
|
+ ret = interface->getCameraIdList(cb);
|
||||||
|
if (!ret.isOk()) {
|
||||||
|
ALOGE("%s: Transaction error in getting camera ID list from provider '%s': %s",
|
||||||
|
__FUNCTION__, mProviderName.c_str(), linked.description().c_str());
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,45 @@
|
|||||||
|
From 51622b87d04e709067335e38ae2257c21dde00a5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Tue, 19 May 2020 14:01:14 +0200
|
||||||
|
Subject: [PATCH 23/24] Add a property to force camera timestamp source
|
||||||
|
|
||||||
|
Some devices wrongly report their timesource
|
||||||
|
Camera's timesource can either be CLOCK_MONOTONIC, or CLOCK_BOOTTIME
|
||||||
|
The former doesn't increment in sleep, while the later does.
|
||||||
|
There is a camera HAL property for that, though some devices don't
|
||||||
|
report it properly.
|
||||||
|
|
||||||
|
This issue happens on Xiaomi Redmi 7A, it needs to force the value to 1
|
||||||
|
|
||||||
|
Add a property persist.sys.phh.camera.force_timestampsource to force
|
||||||
|
timestamp source.
|
||||||
|
---
|
||||||
|
.../libcameraservice/device3/Camera3Device.cpp | 12 ++++++++++--
|
||||||
|
1 file changed, 10 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/services/camera/libcameraservice/device3/Camera3Device.cpp b/services/camera/libcameraservice/device3/Camera3Device.cpp
|
||||||
|
index 93e18cfee3..9cc44f1ec9 100644
|
||||||
|
--- a/services/camera/libcameraservice/device3/Camera3Device.cpp
|
||||||
|
+++ b/services/camera/libcameraservice/device3/Camera3Device.cpp
|
||||||
|
@@ -299,8 +299,16 @@ status_t Camera3Device::initializeCommonLocked() {
|
||||||
|
// Measure the clock domain offset between camera and video/hw_composer
|
||||||
|
camera_metadata_entry timestampSource =
|
||||||
|
mDeviceInfo.find(ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE);
|
||||||
|
- if (timestampSource.count > 0 && timestampSource.data.u8[0] ==
|
||||||
|
- ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME) {
|
||||||
|
+ int timestampSourceValue = 0;
|
||||||
|
+ if ((timestampSource.count > 0 && timestampSource.data.u8[0] ==
|
||||||
|
+ ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME)) {
|
||||||
|
+ timestampSourceValue = 1;
|
||||||
|
+ }
|
||||||
|
+ int forceTimestampSource = property_get_int32("persist.sys.phh.camera.force_timestampsource", -1);
|
||||||
|
+ //Don't override if it's -1, default value
|
||||||
|
+ if(forceTimestampSource == 0) timestampSourceValue = 0;
|
||||||
|
+ if(forceTimestampSource == 1) timestampSourceValue = 1;
|
||||||
|
+ if (timestampSourceValue == 1) {
|
||||||
|
mTimestampOffset = getMonoToBoottimeOffset();
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,325 @@
|
|||||||
|
From 637819ddb60b3a5c16e21b68e448f21e621699b1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Mon, 25 May 2020 21:26:54 +0200
|
||||||
|
Subject: [PATCH 24/24] Add persist.sys.phh.disable_a2dp_offload property to
|
||||||
|
force a2dp offload
|
||||||
|
|
||||||
|
---
|
||||||
|
media/libstagefright/ACodec.cpp | 20 +-
|
||||||
|
.../managerdefinitions/src/Serializer.cpp | 180 +++++++++++++++++-
|
||||||
|
.../managerdefault/AudioPolicyManager.cpp | 3 +
|
||||||
|
3 files changed, 197 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/media/libstagefright/ACodec.cpp b/media/libstagefright/ACodec.cpp
|
||||||
|
index 0271ecef34..7824b590a6 100644
|
||||||
|
--- a/media/libstagefright/ACodec.cpp
|
||||||
|
+++ b/media/libstagefright/ACodec.cpp
|
||||||
|
@@ -1166,6 +1166,9 @@ status_t ACodec::configureOutputBuffersFromNativeWindow(
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ ALOGE("Window undequeued buffers is %d\n", *minUndequeuedBuffers);
|
||||||
|
+ ALOGE("Consumerrequested %d\n", def.nBufferCountMin);
|
||||||
|
+
|
||||||
|
// FIXME: assume that surface is controlled by app (native window
|
||||||
|
// returns the number for the case when surface is not controlled by app)
|
||||||
|
// FIXME2: This means that minUndeqeueudBufs can be 1 larger than reported
|
||||||
|
@@ -1178,22 +1181,29 @@ status_t ACodec::configureOutputBuffersFromNativeWindow(
|
||||||
|
// 2. try to allocate two (2) additional buffers to reduce starvation from
|
||||||
|
// the consumer
|
||||||
|
// plus an extra buffer to account for incorrect minUndequeuedBufs
|
||||||
|
- for (OMX_U32 extraBuffers = 2 + 1; /* condition inside loop */; extraBuffers--) {
|
||||||
|
- OMX_U32 newBufferCount =
|
||||||
|
- def.nBufferCountMin + *minUndequeuedBuffers + extraBuffers;
|
||||||
|
+ for (int extraBuffers = 2 + 1; /* condition inside loop */; extraBuffers--) {
|
||||||
|
+ int a = def.nBufferCountMin;
|
||||||
|
+ int b = *minUndequeuedBuffers;
|
||||||
|
+ int c = extraBuffers;
|
||||||
|
+ int newBufferCount = a+b+c;
|
||||||
|
def.nBufferCountActual = newBufferCount;
|
||||||
|
err = mOMXNode->setParameter(
|
||||||
|
OMX_IndexParamPortDefinition, &def, sizeof(def));
|
||||||
|
|
||||||
|
if (err == OK) {
|
||||||
|
- *minUndequeuedBuffers += extraBuffers;
|
||||||
|
+ ALOGE("Managed to allocate %d buffers (%d extra)\n", newBufferCount, extraBuffers);
|
||||||
|
+ if(extraBuffers > 0) {
|
||||||
|
+ *minUndequeuedBuffers += extraBuffers;
|
||||||
|
+ } else {
|
||||||
|
+ *minUndequeuedBuffers -= -extraBuffers;
|
||||||
|
+ }
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
ALOGW("[%s] setting nBufferCountActual to %u failed: %d",
|
||||||
|
mComponentName.c_str(), newBufferCount, err);
|
||||||
|
/* exit condition */
|
||||||
|
- if (extraBuffers == 0) {
|
||||||
|
+ if (extraBuffers == -2 || newBufferCount == 1) {
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
diff --git a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||||
|
index 4bdb082ba1..d144f8991d 100644
|
||||||
|
--- a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||||
|
+++ b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||||
|
@@ -29,6 +29,7 @@
|
||||||
|
#include <utils/StrongPointer.h>
|
||||||
|
#include <utils/Errors.h>
|
||||||
|
#include <utils/RefBase.h>
|
||||||
|
+#include <cutils/properties.h>
|
||||||
|
#include "Serializer.h"
|
||||||
|
#include "TypeConverter.h"
|
||||||
|
|
||||||
|
@@ -36,6 +37,8 @@ namespace android {
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
+static bool forceDisableA2dpOffload = false;
|
||||||
|
+
|
||||||
|
// TODO(mnaganov): Consider finding an alternative for using HIDL code.
|
||||||
|
using hardware::Return;
|
||||||
|
using hardware::Status;
|
||||||
|
@@ -316,7 +319,7 @@ status_t deserializeCollection(const xmlNode *cur,
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
- return BAD_VALUE;
|
||||||
|
+ ALOGE("Ignoring...");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -732,12 +735,34 @@ Return<ModuleTraits::Element> ModuleTraits::deserialize(const xmlNode *cur, PtrS
|
||||||
|
|
||||||
|
Element module = new HwModule(name.c_str(), versionMajor, versionMinor);
|
||||||
|
|
||||||
|
+ bool isA2dpModule = strcmp(name.c_str(), "a2dp") == 0;
|
||||||
|
+ bool isPrimaryModule = strcmp(name.c_str(), "primary") == 0;
|
||||||
|
+
|
||||||
|
// Deserialize childrens: Audio Mix Port, Audio Device Ports (Source/Sink), Audio Routes
|
||||||
|
MixPortTraits::Collection mixPorts;
|
||||||
|
status_t status = deserializeCollection<MixPortTraits>(cur, &mixPorts, NULL);
|
||||||
|
if (status != NO_ERROR) {
|
||||||
|
return Status::fromStatusT(status);
|
||||||
|
}
|
||||||
|
+ if(forceDisableA2dpOffload && isA2dpModule) {
|
||||||
|
+ for(const auto& mixPort: mixPorts) {
|
||||||
|
+ ALOGE("Disable a2dp offload...? %s", mixPort->getTagName().c_str());
|
||||||
|
+ //"a2dp" sw module already has a2dp out
|
||||||
|
+ if(mixPort->getTagName() == String8("a2dp output")) {
|
||||||
|
+ forceDisableA2dpOffload = false;
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ if(forceDisableA2dpOffload && isA2dpModule) {
|
||||||
|
+ //Add
|
||||||
|
+ //<mixPort name="a2dp output" role="source"/>
|
||||||
|
+ auto mixPort = new IOProfile(String8("a2dp output"), AUDIO_PORT_ROLE_SOURCE);
|
||||||
|
+ AudioProfileTraits::Collection profiles;
|
||||||
|
+ profiles.add(AudioProfile::createFullDynamic());
|
||||||
|
+ mixPort->setAudioProfiles(profiles);
|
||||||
|
+ mixPorts.push_back(mixPort);
|
||||||
|
+ }
|
||||||
|
module->setProfiles(mixPorts);
|
||||||
|
|
||||||
|
DevicePortTraits::Collection devicePorts;
|
||||||
|
@@ -745,6 +770,89 @@ Return<ModuleTraits::Element> ModuleTraits::deserialize(const xmlNode *cur, PtrS
|
||||||
|
if (status != NO_ERROR) {
|
||||||
|
return Status::fromStatusT(status);
|
||||||
|
}
|
||||||
|
+ Vector<String8> a2dpOuts;
|
||||||
|
+ a2dpOuts.push_back(String8("BT A2DP Out"));
|
||||||
|
+ a2dpOuts.push_back(String8("BT A2DP Headphones"));
|
||||||
|
+ a2dpOuts.push_back(String8("BT A2DP Speaker"));
|
||||||
|
+ if(forceDisableA2dpOffload) {
|
||||||
|
+ if(isA2dpModule) {
|
||||||
|
+ //<devicePort tagName="BT A2DP Out" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP" role="sink" address="lhdc_a2dp">
|
||||||
|
+ // <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||||
|
+ // samplingRates="44100,48000,96000"
|
||||||
|
+ // channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
|
||||||
|
+ //</devicePort>
|
||||||
|
+ if(true) {
|
||||||
|
+ FormatVector formats;
|
||||||
|
+ auto devicePortOut = new DeviceDescriptor(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP, formats, String8(strdup("BT A2DP Out")));
|
||||||
|
+ AudioProfileTraits::Collection profiles;
|
||||||
|
+ ChannelsVector channels;
|
||||||
|
+ SampleRateVector sampleRates;
|
||||||
|
+ channels.add(AUDIO_CHANNEL_OUT_STEREO);
|
||||||
|
+ sampleRates.add(44100);
|
||||||
|
+ sampleRates.add(48000);
|
||||||
|
+ sampleRates.add(96000);
|
||||||
|
+ auto profile = new AudioProfile(AUDIO_FORMAT_PCM_16_BIT, channels, sampleRates);
|
||||||
|
+ profiles.add(profile);
|
||||||
|
+ devicePortOut->setAudioProfiles(profiles);
|
||||||
|
+ devicePortOut->setAddress(String8("lhdc_a2dp"));
|
||||||
|
+ devicePorts.add(devicePortOut);
|
||||||
|
+ }
|
||||||
|
+ //<devicePort tagName="BT A2DP Headphones" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES" role="sink" address="lhdc_a2dp">
|
||||||
|
+ // <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||||
|
+ // samplingRates="44100,48000,96000"
|
||||||
|
+ // channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
|
||||||
|
+ //</devicePort>
|
||||||
|
+ if(true) {
|
||||||
|
+ FormatVector formats;
|
||||||
|
+ auto devicePortOut = new DeviceDescriptor(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES, formats, String8(strdup("BT A2DP Headphones")));
|
||||||
|
+ AudioProfileTraits::Collection profiles;
|
||||||
|
+ ChannelsVector channels;
|
||||||
|
+ SampleRateVector sampleRates;
|
||||||
|
+ channels.add(AUDIO_CHANNEL_OUT_STEREO);
|
||||||
|
+ sampleRates.add(44100);
|
||||||
|
+ sampleRates.add(48000);
|
||||||
|
+ sampleRates.add(96000);
|
||||||
|
+ auto profile = new AudioProfile(AUDIO_FORMAT_PCM_16_BIT, channels, sampleRates);
|
||||||
|
+ profiles.add(profile);
|
||||||
|
+ devicePortOut->setAudioProfiles(profiles);
|
||||||
|
+ devicePortOut->setAddress(String8("lhdc_a2dp"));
|
||||||
|
+ devicePorts.add(devicePortOut);
|
||||||
|
+ }
|
||||||
|
+ //<devicePort tagName="BT A2DP Speaker" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER" role="sink" address="lhdc_a2dp">
|
||||||
|
+ // <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
|
||||||
|
+ // samplingRates="44100,48000,96000"
|
||||||
|
+ // channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
|
||||||
|
+ //</devicePort>
|
||||||
|
+ if(true) {
|
||||||
|
+ FormatVector formats;
|
||||||
|
+ auto devicePortOut = new DeviceDescriptor(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER, formats, String8(strdup("BT A2DP Speaker")));
|
||||||
|
+ AudioProfileTraits::Collection profiles;
|
||||||
|
+ ChannelsVector channels;
|
||||||
|
+ SampleRateVector sampleRates;
|
||||||
|
+ channels.add(AUDIO_CHANNEL_OUT_STEREO);
|
||||||
|
+ sampleRates.add(44100);
|
||||||
|
+ sampleRates.add(48000);
|
||||||
|
+ sampleRates.add(96000);
|
||||||
|
+ auto profile = new AudioProfile(AUDIO_FORMAT_PCM_16_BIT, channels, sampleRates);
|
||||||
|
+ profiles.add(profile);
|
||||||
|
+ devicePortOut->setAudioProfiles(profiles);
|
||||||
|
+ devicePortOut->setAddress(String8("lhdc_a2dp"));
|
||||||
|
+ devicePorts.add(devicePortOut);
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
+ } else if(isPrimaryModule) {
|
||||||
|
+ for(const auto& out: a2dpOuts) {
|
||||||
|
+ auto iterA = std::find_if(devicePorts.begin(), devicePorts.end(), [out](const auto port) {
|
||||||
|
+ if(port->getTagName() == out) return true;
|
||||||
|
+ return false;
|
||||||
|
+ });
|
||||||
|
+ if(iterA != devicePorts.end()) {
|
||||||
|
+ ALOGE("Erasing device port %s", (*iterA)->getTagName().c_str());
|
||||||
|
+ devicePorts.erase(iterA);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
module->setDeclaredDevices(devicePorts);
|
||||||
|
|
||||||
|
RouteTraits::Collection routes;
|
||||||
|
@@ -752,7 +860,76 @@ Return<ModuleTraits::Element> ModuleTraits::deserialize(const xmlNode *cur, PtrS
|
||||||
|
if (status != NO_ERROR) {
|
||||||
|
return Status::fromStatusT(status);
|
||||||
|
}
|
||||||
|
+ if(forceDisableA2dpOffload) {
|
||||||
|
+ if(strcmp(name.c_str(), "primary") == 0) {
|
||||||
|
+ for(const auto& out: a2dpOuts) {
|
||||||
|
+ auto iterA = std::find_if(routes.begin(), routes.end(), [out](const auto route) {
|
||||||
|
+ if(route->getType() != AUDIO_ROUTE_MIX)
|
||||||
|
+ return false;
|
||||||
|
+ auto sink = route->getSink();
|
||||||
|
+ if(sink->getTagName() == out) {
|
||||||
|
+ return true;
|
||||||
|
+ }
|
||||||
|
+ return false;
|
||||||
|
+ });
|
||||||
|
+ if(iterA != routes.end()) {
|
||||||
|
+ auto sink = (*iterA)->getSink()->getTagName();
|
||||||
|
+ ALOGE("Erasing route %s", sink.c_str());
|
||||||
|
+ routes.erase(iterA);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ } else if(isA2dpModule) {
|
||||||
|
+ //<route type="mix" sink="BT A2DP Out"
|
||||||
|
+ // sources="a2dp output"/>
|
||||||
|
+ if(true) {
|
||||||
|
+ auto newRoute = new AudioRoute(AUDIO_ROUTE_MIX);
|
||||||
|
+ auto sink = module->findPortByTagName(String8("BT A2DP Out"));
|
||||||
|
+ auto source = module->findPortByTagName(String8("a2dp output"));
|
||||||
|
+ newRoute->setSink(sink);
|
||||||
|
+ AudioPortVector sources;
|
||||||
|
+ sources.add(source);
|
||||||
|
+
|
||||||
|
+ sink->addRoute(newRoute);
|
||||||
|
+ source->addRoute(newRoute);
|
||||||
|
+ newRoute->setSources(sources);
|
||||||
|
+
|
||||||
|
+ routes.add(newRoute);
|
||||||
|
+ }
|
||||||
|
+ //<route type="mix" sink="BT A2DP Headphones"
|
||||||
|
+ // sources="a2dp output"/>
|
||||||
|
+ if(true) {
|
||||||
|
+ auto newRoute = new AudioRoute(AUDIO_ROUTE_MIX);
|
||||||
|
+ auto sink = module->findPortByTagName(String8("BT A2DP Headphones"));
|
||||||
|
+ auto source = module->findPortByTagName(String8("a2dp output"));
|
||||||
|
+ newRoute->setSink(sink);
|
||||||
|
+ AudioPortVector sources;
|
||||||
|
+ sources.add(source);
|
||||||
|
+
|
||||||
|
+ sink->addRoute(newRoute);
|
||||||
|
+ source->addRoute(newRoute);
|
||||||
|
+ newRoute->setSources(sources);
|
||||||
|
+ routes.add(newRoute);
|
||||||
|
+ }
|
||||||
|
+ //<route type="mix" sink="BT A2DP Speaker"
|
||||||
|
+ // sources="a2dp output"/>
|
||||||
|
+ if(true) {
|
||||||
|
+ auto newRoute = new AudioRoute(AUDIO_ROUTE_MIX);
|
||||||
|
+ auto sink = module->findPortByTagName(String8("BT A2DP Speaker"));
|
||||||
|
+ auto source = module->findPortByTagName(String8("a2dp output"));
|
||||||
|
+ newRoute->setSink(sink);
|
||||||
|
+ AudioPortVector sources;
|
||||||
|
+ sources.add(source);
|
||||||
|
+
|
||||||
|
+ sink->addRoute(newRoute);
|
||||||
|
+ source->addRoute(newRoute);
|
||||||
|
+ newRoute->setSources(sources);
|
||||||
|
+ routes.add(newRoute);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ ALOGE("Good morning");
|
||||||
|
fixupQualcommBtScoRoute(routes, devicePorts, module.get());
|
||||||
|
+ ALOGE("Good morning2");
|
||||||
|
module->setRoutes(routes);
|
||||||
|
|
||||||
|
for (const xmlNode *children = cur->xmlChildrenNode; children != NULL;
|
||||||
|
@@ -922,6 +1099,7 @@ status_t PolicySerializer::deserialize(const char *configFile, AudioPolicyConfig
|
||||||
|
status_t deserializeAudioPolicyFile(const char *fileName, AudioPolicyConfig *config)
|
||||||
|
{
|
||||||
|
PolicySerializer serializer;
|
||||||
|
+ forceDisableA2dpOffload = property_get_bool("persist.sys.phh.disable_a2dp_offload", false);
|
||||||
|
return serializer.deserialize(fileName, config);
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
|
||||||
|
index a984b10c03..5b7750b437 100644
|
||||||
|
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
|
||||||
|
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
|
||||||
|
@@ -76,6 +76,8 @@ static const std::vector<audio_channel_mask_t> surroundChannelMasksOrder = {{
|
||||||
|
AUDIO_CHANNEL_OUT_2POINT1POINT2, AUDIO_CHANNEL_OUT_2POINT0POINT2,
|
||||||
|
AUDIO_CHANNEL_OUT_5POINT1, AUDIO_CHANNEL_OUT_STEREO }};
|
||||||
|
|
||||||
|
+static bool forceDisableA2dpOffload = false;
|
||||||
|
+
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// AudioPolicyInterface implementation
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
@@ -4256,6 +4258,7 @@ static status_t deserializeAudioPolicyXmlConfig(AudioPolicyConfig &config) {
|
||||||
|
} else if (property_get_bool("persist.bluetooth.bluetooth_audio_hal.disabled", false)) {
|
||||||
|
fileNames.push_back(AUDIO_POLICY_BLUETOOTH_LEGACY_HAL_XML_CONFIG_FILE_NAME);
|
||||||
|
}
|
||||||
|
+ forceDisableA2dpOffload = property_get_bool("persist.sys.phh.disable_a2dp_offload", false);
|
||||||
|
fileNames.push_back(AUDIO_POLICY_XML_CONFIG_FILE_NAME);
|
||||||
|
|
||||||
|
for (const char* fileName : fileNames) {
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -8,7 +8,7 @@ Subject: [PATCH 13/36] Show APN Settings for CDMA carriers
|
|||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
|
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
|
||||||
index 19f8203f750..4e0fcbb7358 100755
|
index 19f8203f750..4e0fcbb7358 100644
|
||||||
--- a/telephony/java/android/telephony/CarrierConfigManager.java
|
--- a/telephony/java/android/telephony/CarrierConfigManager.java
|
||||||
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
|
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
|
||||||
@@ -3073,7 +3073,7 @@ public class CarrierConfigManager {
|
@@ -3073,7 +3073,7 @@ public class CarrierConfigManager {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
From 8049bd5138e52042ed47b8b0700753cb77b57641 Mon Sep 17 00:00:00 2001
|
From 66452f7948361f504cb2d41249c04d53f56ca7d6 Mon Sep 17 00:00:00 2001
|
||||||
From: Pierre-Hugues Husson <phh@phh.me>
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
Date: Sun, 24 Mar 2019 23:05:14 +0100
|
Date: Sun, 24 Mar 2019 23:05:14 +0100
|
||||||
Subject: [PATCH] Support new samsung light hal
|
Subject: [PATCH] Support new samsung light hal
|
||||||
@ -22,7 +22,7 @@ index fdcefd42316..d8645012e24 100644
|
|||||||
|
|
||||||
static_libs: [
|
static_libs: [
|
||||||
diff --git a/services/core/jni/com_android_server_lights_LightsService.cpp b/services/core/jni/com_android_server_lights_LightsService.cpp
|
diff --git a/services/core/jni/com_android_server_lights_LightsService.cpp b/services/core/jni/com_android_server_lights_LightsService.cpp
|
||||||
index 35d8219651d..20de7985d1d 100644
|
index 35d8219651d..2f77726d5bd 100644
|
||||||
--- a/services/core/jni/com_android_server_lights_LightsService.cpp
|
--- a/services/core/jni/com_android_server_lights_LightsService.cpp
|
||||||
+++ b/services/core/jni/com_android_server_lights_LightsService.cpp
|
+++ b/services/core/jni/com_android_server_lights_LightsService.cpp
|
||||||
@@ -23,6 +23,8 @@
|
@@ -23,6 +23,8 @@
|
||||||
@ -43,11 +43,10 @@ index 35d8219651d..20de7985d1d 100644
|
|||||||
static bool sLightSupported = true;
|
static bool sLightSupported = true;
|
||||||
|
|
||||||
static bool validate(jint light, jint flash, jint brightness) {
|
static bool validate(jint light, jint flash, jint brightness) {
|
||||||
@@ -151,6 +155,21 @@ static void setLight_native(
|
@@ -152,6 +156,21 @@ static void setLight_native(
|
||||||
colorAlpha = (colorAlpha * brightnessLevel) / 0xFF;
|
|
||||||
colorARGB = (colorAlpha << 24) + (colorARGB & 0x00FFFFFF);
|
colorARGB = (colorAlpha << 24) + (colorARGB & 0x00FFFFFF);
|
||||||
}
|
}
|
||||||
+
|
|
||||||
+ sp<ISecLight> secHal = ISecLight::getService();
|
+ sp<ISecLight> secHal = ISecLight::getService();
|
||||||
+
|
+
|
||||||
+ if(secHal != nullptr) {
|
+ if(secHal != nullptr) {
|
||||||
@ -62,9 +61,10 @@ index 35d8219651d..20de7985d1d 100644
|
|||||||
+ if (t.duration() > 50ms) ALOGD("Excessive delay setting light");
|
+ if (t.duration() > 50ms) ALOGD("Excessive delay setting light");
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
|
+
|
||||||
Type type = static_cast<Type>(light);
|
Type type = static_cast<Type>(light);
|
||||||
LightState state = constructState(
|
LightState state = constructState(
|
||||||
|
colorARGB, flashMode, onMS, offMS, brightnessMode);
|
||||||
--
|
--
|
||||||
2.17.1
|
2.17.1
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
From b15c825ccb48260a85695db41aff138787d1817f Mon Sep 17 00:00:00 2001
|
From ad26b4fe426344371cd018050025d7ca4d47bec2 Mon Sep 17 00:00:00 2001
|
||||||
From: Pierre-Hugues Husson <phh@phh.me>
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
Date: Sun, 24 Mar 2019 22:48:39 +0100
|
Date: Sun, 24 Mar 2019 22:48:39 +0100
|
||||||
Subject: [PATCH] wip
|
Subject: [PATCH] wip
|
||||||
@ -11,15 +11,15 @@ Change-Id: I50fa9a7a670cef5b93fc4a3a027f1587b1214831
|
|||||||
.../fingerprint/FingerprintService.java | 26 ++-
|
.../fingerprint/FingerprintService.java | 26 ++-
|
||||||
.../testharness/TestHarnessModeService.java | 7 +-
|
.../testharness/TestHarnessModeService.java | 7 +-
|
||||||
.../com/android/server/wm/ActivityRecord.java | 6 -
|
.../com/android/server/wm/ActivityRecord.java | 6 -
|
||||||
...om_android_server_lights_LightsService.cpp | 15 +-
|
...om_android_server_lights_LightsService.cpp | 13 +-
|
||||||
7 files changed, 255 insertions(+), 12 deletions(-)
|
7 files changed, 254 insertions(+), 11 deletions(-)
|
||||||
create mode 100644 services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
create mode 100644 services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||||
|
|
||||||
diff --git a/Android.bp b/Android.bp
|
diff --git a/Android.bp b/Android.bp
|
||||||
index 16abdbf79de..d01dc639c8f 100644
|
index bdd88034655..5e79350ac5c 100644
|
||||||
--- a/Android.bp
|
--- a/Android.bp
|
||||||
+++ b/Android.bp
|
+++ b/Android.bp
|
||||||
@@ -777,6 +777,8 @@ java_defaults {
|
@@ -779,6 +779,8 @@ java_defaults {
|
||||||
"android.hardware.vibrator-V1.2-java",
|
"android.hardware.vibrator-V1.2-java",
|
||||||
"android.hardware.vibrator-V1.3-java",
|
"android.hardware.vibrator-V1.3-java",
|
||||||
"android.hardware.wifi-V1.0-java-constants",
|
"android.hardware.wifi-V1.0-java-constants",
|
||||||
@ -257,7 +257,7 @@ index 00000000000..8829bcb7e48
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
|
diff --git a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
|
||||||
index 19593e7e047..c7de87126e8 100644
|
index f6e0742aa67..92c0cc5dc85 100644
|
||||||
--- a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
|
--- a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
|
||||||
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
|
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
|
||||||
@@ -120,8 +120,10 @@ public class FingerprintService extends BiometricServiceBase {
|
@@ -120,8 +120,10 @@ public class FingerprintService extends BiometricServiceBase {
|
||||||
@ -298,7 +298,7 @@ index 19593e7e047..c7de87126e8 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -180,7 +202,6 @@ public class FingerprintService extends BiometricServiceBase {
|
@@ -181,7 +203,6 @@ public class FingerprintService extends BiometricServiceBase {
|
||||||
/**
|
/**
|
||||||
* The following methods contain common code which is shared in biometrics/common.
|
* The following methods contain common code which is shared in biometrics/common.
|
||||||
*/
|
*/
|
||||||
@ -306,7 +306,7 @@ index 19593e7e047..c7de87126e8 100644
|
|||||||
@Override // Binder call
|
@Override // Binder call
|
||||||
public long preEnroll(IBinder token) {
|
public long preEnroll(IBinder token) {
|
||||||
checkPermission(MANAGE_FINGERPRINT);
|
checkPermission(MANAGE_FINGERPRINT);
|
||||||
@@ -725,6 +746,7 @@ public class FingerprintService extends BiometricServiceBase {
|
@@ -727,6 +748,7 @@ public class FingerprintService extends BiometricServiceBase {
|
||||||
mAlarmManager = context.getSystemService(AlarmManager.class);
|
mAlarmManager = context.getSystemService(AlarmManager.class);
|
||||||
context.registerReceiver(mLockoutReceiver, new IntentFilter(getLockoutResetIntent()),
|
context.registerReceiver(mLockoutReceiver, new IntentFilter(getLockoutResetIntent()),
|
||||||
getLockoutBroadcastPermission(), null /* handler */);
|
getLockoutBroadcastPermission(), null /* handler */);
|
||||||
@ -314,7 +314,7 @@ index 19593e7e047..c7de87126e8 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -952,6 +974,7 @@ public class FingerprintService extends BiometricServiceBase {
|
@@ -954,6 +976,7 @@ public class FingerprintService extends BiometricServiceBase {
|
||||||
Slog.w(TAG, "startPreEnroll: no fingerprint HAL!");
|
Slog.w(TAG, "startPreEnroll: no fingerprint HAL!");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -322,7 +322,7 @@ index 19593e7e047..c7de87126e8 100644
|
|||||||
try {
|
try {
|
||||||
return daemon.preEnroll();
|
return daemon.preEnroll();
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
@@ -966,6 +989,7 @@ public class FingerprintService extends BiometricServiceBase {
|
@@ -968,6 +991,7 @@ public class FingerprintService extends BiometricServiceBase {
|
||||||
Slog.w(TAG, "startPostEnroll: no fingerprint HAL!");
|
Slog.w(TAG, "startPostEnroll: no fingerprint HAL!");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -349,10 +349,10 @@ index fcf87ee2a4b..0aa948417c1 100644
|
|||||||
// There's no data to apply, so leave it as-is.
|
// There's no data to apply, so leave it as-is.
|
||||||
return null;
|
return null;
|
||||||
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
|
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
|
||||||
index 479babc4c7d..1f972dd4918 100644
|
index d9c85c0ca50..0740f70bbf4 100644
|
||||||
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
|
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
|
||||||
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
|
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
|
||||||
@@ -2833,12 +2833,6 @@ final class ActivityRecord extends ConfigurationContainer {
|
@@ -2835,12 +2835,6 @@ final class ActivityRecord extends ConfigurationContainer {
|
||||||
// TODO(b/36505427): Consider moving this method and similar ones to ConfigurationContainer.
|
// TODO(b/36505427): Consider moving this method and similar ones to ConfigurationContainer.
|
||||||
private void updateOverrideConfiguration() {
|
private void updateOverrideConfiguration() {
|
||||||
final Configuration overrideConfig = mTmpConfig;
|
final Configuration overrideConfig = mTmpConfig;
|
||||||
@ -366,7 +366,7 @@ index 479babc4c7d..1f972dd4918 100644
|
|||||||
if (mCompatDisplayInsets != null) {
|
if (mCompatDisplayInsets != null) {
|
||||||
// The override configuration is set only once in size compatibility mode.
|
// The override configuration is set only once in size compatibility mode.
|
||||||
diff --git a/services/core/jni/com_android_server_lights_LightsService.cpp b/services/core/jni/com_android_server_lights_LightsService.cpp
|
diff --git a/services/core/jni/com_android_server_lights_LightsService.cpp b/services/core/jni/com_android_server_lights_LightsService.cpp
|
||||||
index 20de7985d1d..2b50d04233e 100644
|
index 2f77726d5bd..2b50d04233e 100644
|
||||||
--- a/services/core/jni/com_android_server_lights_LightsService.cpp
|
--- a/services/core/jni/com_android_server_lights_LightsService.cpp
|
||||||
+++ b/services/core/jni/com_android_server_lights_LightsService.cpp
|
+++ b/services/core/jni/com_android_server_lights_LightsService.cpp
|
||||||
@@ -46,6 +46,9 @@ using ISecLight = ::vendor::samsung::hardware::light::V2_0::ISecLight;
|
@@ -46,6 +46,9 @@ using ISecLight = ::vendor::samsung::hardware::light::V2_0::ISecLight;
|
||||||
@ -379,19 +379,17 @@ index 20de7985d1d..2b50d04233e 100644
|
|||||||
static bool validate(jint light, jint flash, jint brightness) {
|
static bool validate(jint light, jint flash, jint brightness) {
|
||||||
bool valid = true;
|
bool valid = true;
|
||||||
|
|
||||||
@@ -155,20 +158,24 @@ static void setLight_native(
|
@@ -156,19 +159,23 @@ static void setLight_native(
|
||||||
colorAlpha = (colorAlpha * brightnessLevel) / 0xFF;
|
|
||||||
colorARGB = (colorAlpha << 24) + (colorARGB & 0x00FFFFFF);
|
colorARGB = (colorAlpha << 24) + (colorARGB & 0x00FFFFFF);
|
||||||
}
|
}
|
||||||
-
|
|
||||||
- sp<ISecLight> secHal = ISecLight::getService();
|
|
||||||
|
|
||||||
- if(secHal != nullptr) {
|
- sp<ISecLight> secHal = ISecLight::getService();
|
||||||
+ if(!sSecTried) {
|
+ if(!sSecTried) {
|
||||||
+ sSecHal = ISecLight::getService();
|
+ sSecHal = ISecLight::getService();
|
||||||
+ sSecTried = true;
|
+ sSecTried = true;
|
||||||
+ }
|
+ }
|
||||||
+
|
|
||||||
|
- if(secHal != nullptr) {
|
||||||
+ if(sSecHal != nullptr) {
|
+ if(sSecHal != nullptr) {
|
||||||
SecType type = static_cast<SecType>(light);
|
SecType type = static_cast<SecType>(light);
|
||||||
LightState state = constructState(
|
LightState state = constructState(
|
||||||
|
@ -1,21 +1,23 @@
|
|||||||
From b5ed01a87952a16e928390aec2aaa531c2bd623d Mon Sep 17 00:00:00 2001
|
From 1026ff090a11633027dd62fcff8fe91e2cdea732 Mon Sep 17 00:00:00 2001
|
||||||
From: Peter Cai <peter@typeblog.net>
|
From: Peter Cai <peter@typeblog.net>
|
||||||
Date: Thu, 2 Jan 2020 10:16:49 +0800
|
Date: Thu, 2 Jan 2020 10:16:49 +0800
|
||||||
Subject: [PATCH 46/46] fix crashing on devices with higher aspect ratio down
|
Subject: [PATCH] fix crashing on devices with higher aspect ratio down to
|
||||||
to sw288dp
|
sw288dp
|
||||||
|
|
||||||
* This is what the Qin 2 (Pro) is.
|
* This is what the Qin 2 (Pro) is.
|
||||||
|
|
||||||
|
Change-Id: I2289a23b706b512a99a541221576960407c098e7
|
||||||
---
|
---
|
||||||
.../SystemUI/res/values-sw288dp/dimens.xml | 34 +++++++++++++++++++
|
.../SystemUI/res/values-sw288dp/dimens.xml | 33 +++++++++++++++++++
|
||||||
1 file changed, 34 insertions(+)
|
1 file changed, 33 insertions(+)
|
||||||
create mode 100644 packages/SystemUI/res/values-sw288dp/dimens.xml
|
create mode 100644 packages/SystemUI/res/values-sw288dp/dimens.xml
|
||||||
|
|
||||||
diff --git a/packages/SystemUI/res/values-sw288dp/dimens.xml b/packages/SystemUI/res/values-sw288dp/dimens.xml
|
diff --git a/packages/SystemUI/res/values-sw288dp/dimens.xml b/packages/SystemUI/res/values-sw288dp/dimens.xml
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 00000000000..2774554ec64
|
index 00000000000..40adc2e6879
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/packages/SystemUI/res/values-sw288dp/dimens.xml
|
+++ b/packages/SystemUI/res/values-sw288dp/dimens.xml
|
||||||
@@ -0,0 +1,34 @@
|
@@ -0,0 +1,33 @@
|
||||||
+<?xml version="1.0" encoding="utf-8"?>
|
+<?xml version="1.0" encoding="utf-8"?>
|
||||||
+<!--
|
+<!--
|
||||||
+ ~ Copyright (C) 2019 The Android Open Source Project
|
+ ~ Copyright (C) 2019 The Android Open Source Project
|
||||||
@ -49,7 +51,6 @@ index 00000000000..2774554ec64
|
|||||||
+ <dimen name="global_actions_grid_item_icon_bottom_margin">4dp</dimen>
|
+ <dimen name="global_actions_grid_item_icon_bottom_margin">4dp</dimen>
|
||||||
+
|
+
|
||||||
+</resources>
|
+</resources>
|
||||||
+
|
|
||||||
--
|
--
|
||||||
2.17.1
|
2.17.1
|
||||||
|
|
||||||
|
@ -1,63 +0,0 @@
|
|||||||
From 1f986fdcdbf2788cc1df26c032a08bce89b1427d Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Chris.CC Lee" <chriscclee@google.com>
|
|
||||||
Date: Mon, 3 Feb 2020 17:33:19 +0800
|
|
||||||
Subject: [PATCH 47/49] Fix AoD front scrim being opaque at DOZE_PULSING.
|
|
||||||
|
|
||||||
When doze state changed from DOZE to DOZE_PULSING on devices not
|
|
||||||
supporting doze_brightness_sensor_type sensor, there would be no
|
|
||||||
sensor events to update the AoD front scrim. And due to the scrim was
|
|
||||||
set to opaque at DOZE state, most views on the statusbar will be
|
|
||||||
invisible. This patch change the scrim to transparent again at leaving
|
|
||||||
DOZE state.
|
|
||||||
|
|
||||||
Bug: 148129743
|
|
||||||
Test: atest DozeScreenBrightnessTest
|
|
||||||
Change-Id: I2c079d081b04f00a929ae5c4475639685f9f7e69
|
|
||||||
---
|
|
||||||
.../systemui/doze/DozeScreenBrightness.java | 4 ++++
|
|
||||||
.../systemui/doze/DozeScreenBrightnessTest.java | 14 ++++++++++++++
|
|
||||||
2 files changed, 18 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java b/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java
|
|
||||||
index bd6882c01bb..c27e633f2a9 100644
|
|
||||||
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java
|
|
||||||
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java
|
|
||||||
@@ -161,6 +161,10 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi
|
|
||||||
// again, it will only show after the brightness sensor has stabilized,
|
|
||||||
// avoiding a potential flicker.
|
|
||||||
scrimOpacity = 255;
|
|
||||||
+ } else if (!mScreenOff && mLightSensor == null) {
|
|
||||||
+ // No light sensor but previous state turned the screen black. Make the scrim
|
|
||||||
+ // transparent and below views visible.
|
|
||||||
+ scrimOpacity = 0;
|
|
||||||
} else if (brightnessReady) {
|
|
||||||
// Only unblank scrim once brightness is ready.
|
|
||||||
scrimOpacity = computeScrimOpacity(sensorValue);
|
|
||||||
diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java
|
|
||||||
index 392c677b982..1347175c7d3 100644
|
|
||||||
--- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java
|
|
||||||
+++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java
|
|
||||||
@@ -170,6 +170,20 @@ public class DozeScreenBrightnessTest extends SysuiTestCase {
|
|
||||||
assertEquals(DEFAULT_BRIGHTNESS, mServiceFake.screenBrightness);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ @Test
|
|
||||||
+ public void testPulsing_withoutLightSensor_setsAoDDimmingScrimTransparent() throws Exception {
|
|
||||||
+ mScreen = new DozeScreenBrightness(mContext, mServiceFake, mSensorManager,
|
|
||||||
+ null /* sensor */, mHostFake, null /* handler */,
|
|
||||||
+ DEFAULT_BRIGHTNESS, SENSOR_TO_BRIGHTNESS, SENSOR_TO_OPACITY,
|
|
||||||
+ true /* debuggable */);
|
|
||||||
+ mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
|
|
||||||
+ mScreen.transitionTo(INITIALIZED, DOZE);
|
|
||||||
+
|
|
||||||
+ mScreen.transitionTo(DOZE, DOZE_REQUEST_PULSE);
|
|
||||||
+
|
|
||||||
+ assertEquals(0f, mHostFake.aodDimmingScrimOpacity, 0.001f /* delta */);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
@Test
|
|
||||||
public void testNullSensor() throws Exception {
|
|
||||||
mScreen = new DozeScreenBrightness(mContext, mServiceFake, mSensorManager,
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -0,0 +1,40 @@
|
|||||||
|
From 5d0e8590f692a4cc868310dbc61d502f204cfbaa Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Wed, 20 May 2020 17:28:26 +0200
|
||||||
|
Subject: [PATCH 59/65] Add a backlight listener, to be used by FOD to properly
|
||||||
|
set dim
|
||||||
|
|
||||||
|
---
|
||||||
|
.../core/java/com/android/server/lights/LightsService.java | 5 +++++
|
||||||
|
1 file changed, 5 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
|
||||||
|
index 777a00daf31..9d7975d63b4 100644
|
||||||
|
--- a/services/core/java/com/android/server/lights/LightsService.java
|
||||||
|
+++ b/services/core/java/com/android/server/lights/LightsService.java
|
||||||
|
@@ -30,10 +30,14 @@ import android.view.SurfaceControl;
|
||||||
|
import com.android.server.SystemService;
|
||||||
|
|
||||||
|
public class LightsService extends SystemService {
|
||||||
|
+ public interface OnBacklightChange {
|
||||||
|
+ void onBacklightChange(int newBacklight);
|
||||||
|
+ }
|
||||||
|
static final String TAG = "LightsService";
|
||||||
|
static final boolean DEBUG = false;
|
||||||
|
|
||||||
|
final LightImpl mLights[] = new LightImpl[LightsManager.LIGHT_ID_COUNT];
|
||||||
|
+ public static OnBacklightChange backlightChangeListener;
|
||||||
|
|
||||||
|
private final class LightImpl extends Light {
|
||||||
|
|
||||||
|
@@ -90,6 +94,7 @@ public class LightsService extends SystemService {
|
||||||
|
(float) brightness / mSurfaceControlMaximumBrightness);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
+ if(mId == 0 && backlightChangeListener != null) backlightChangeListener.onBacklightChange(brightness);
|
||||||
|
|
||||||
|
if(mId == 0) {
|
||||||
|
String fp = SystemProperties.get("ro.vendor.build.fingerprint", "hello");
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,48 @@
|
|||||||
|
From 7e7cdc92f9f23fa9ea1fb1b6d7cea37f0301f899 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Wed, 20 May 2020 17:39:50 +0200
|
||||||
|
Subject: [PATCH 60/65] Don't show facola on preenroll, wait for enroll
|
||||||
|
|
||||||
|
---
|
||||||
|
.../server/biometrics/fingerprint/FingerprintService.java | 4 +---
|
||||||
|
1 file changed, 1 insertion(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
|
||||||
|
index 1323c5ec0dd..c53607786df 100644
|
||||||
|
--- a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
|
||||||
|
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
|
||||||
|
@@ -176,7 +176,6 @@ public class FingerprintService extends BiometricServiceBase {
|
||||||
|
@Override
|
||||||
|
public boolean onAcquired(int acquiredInfo, int vendorCode) {
|
||||||
|
boolean result = super.onAcquired(acquiredInfo, vendorCode);
|
||||||
|
- android.util.Log.d("PHH-Enroll", "acquired ret " + result);
|
||||||
|
if(result) mFacola.hide();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
@@ -185,7 +184,6 @@ public class FingerprintService extends BiometricServiceBase {
|
||||||
|
public boolean onAuthenticated(BiometricAuthenticator.Identifier identifier,
|
||||||
|
boolean authenticated, ArrayList<Byte> token) {
|
||||||
|
boolean result = super.onAuthenticated(identifier, authenticated, token);
|
||||||
|
- android.util.Log.d("PHH-Enroll", "auth-ed ret " + result);
|
||||||
|
if(result) mFacola.hide();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
@@ -744,6 +742,7 @@ public class FingerprintService extends BiometricServiceBase {
|
||||||
|
Slog.w(TAG, "enroll(): no fingerprint HAL!");
|
||||||
|
return ERROR_ESRCH;
|
||||||
|
}
|
||||||
|
+ mFacola.show();
|
||||||
|
return daemon.enroll(cryptoToken, groupId, timeout);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -990,7 +989,6 @@ public class FingerprintService extends BiometricServiceBase {
|
||||||
|
Slog.w(TAG, "startPreEnroll: no fingerprint HAL!");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
- mFacola.show();
|
||||||
|
try {
|
||||||
|
return daemon.preEnroll();
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,531 @@
|
|||||||
|
From 5624ce8b0cadf9cc588aadc8f216073a1eb8385f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Wed, 20 May 2020 21:17:58 +0200
|
||||||
|
Subject: [PATCH 61/65] Add support for new Goodix, Samsung, Xiaomi FODs
|
||||||
|
|
||||||
|
- Xiaomi on MIUI12 has new magical Z to trigger HBM, and trigger feedback. Dim layer is done by kernel, but we need to set alpha
|
||||||
|
- Samsung has usageBits to trigger HBM and trigger feedback
|
||||||
|
- Goodix has nothing specific just send events
|
||||||
|
---
|
||||||
|
services/core/Android.bp | 2 +
|
||||||
|
.../biometrics/fingerprint/FacolaView.java | 323 +++++++++++++++---
|
||||||
|
2 files changed, 285 insertions(+), 40 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/services/core/Android.bp b/services/core/Android.bp
|
||||||
|
index dd0575c0b02..910e2fcf64c 100644
|
||||||
|
--- a/services/core/Android.bp
|
||||||
|
+++ b/services/core/Android.bp
|
||||||
|
@@ -55,7 +55,9 @@ java_library_static {
|
||||||
|
"netd_aidl_interface-V2-java",
|
||||||
|
"netd_event_listener_interface-java",
|
||||||
|
"vendor.goodix.extend.service-V2.0-java",
|
||||||
|
+ "vendor.goodix.hardware.biometrics.fingerprint-V2.1-java",
|
||||||
|
"vendor.samsung.hardware.biometrics.fingerprint-V2.1-java",
|
||||||
|
+ "vendor.samsung.hardware.biometrics.fingerprint-V3.0-java",
|
||||||
|
"vendor.oppo.hardware.biometrics.fingerprint-V2.1-java",
|
||||||
|
"vendor.xiaomi.hardware.fingerprintextension-V1.0-java",
|
||||||
|
],
|
||||||
|
diff --git a/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java b/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||||
|
index a87f7e78af4..d3d58aff6c0 100644
|
||||||
|
--- a/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||||
|
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||||
|
@@ -35,30 +35,38 @@ import java.io.BufferedReader;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
+import java.util.Arrays;
|
||||||
|
|
||||||
|
import vendor.xiaomi.hardware.fingerprintextension.V1_0.IXiaomiFingerprint;
|
||||||
|
import vendor.goodix.extend.service.V2_0.IGoodixFPExtendService;
|
||||||
|
import vendor.samsung.hardware.biometrics.fingerprint.V2_1.ISecBiometricsFingerprint;
|
||||||
|
+import vendor.samsung.hardware.biometrics.fingerprint.V3_0.ISehBiometricsFingerprint;
|
||||||
|
|
||||||
|
import android.hardware.display.DisplayManager;
|
||||||
|
|
||||||
|
+import android.os.Build;
|
||||||
|
+import android.os.FileObserver;
|
||||||
|
import android.os.Handler;
|
||||||
|
import android.os.HandlerThread;
|
||||||
|
import android.os.ServiceManager;
|
||||||
|
|
||||||
|
+import android.util.DisplayMetrics;
|
||||||
|
+
|
||||||
|
public class FacolaView extends ImageView implements OnTouchListener {
|
||||||
|
private int mX, mY, mW, mH;
|
||||||
|
private final Paint mPaintFingerprint = new Paint();
|
||||||
|
private final Paint mPaintShow = new Paint();
|
||||||
|
private IXiaomiFingerprint mXiaomiFingerprint = null;
|
||||||
|
private IGoodixFPExtendService mGoodixFingerprint = null;
|
||||||
|
+ private vendor.goodix.hardware.biometrics.fingerprint.V2_1.IGoodixFingerprintDaemon mGoodixFingerprintV2_1 = null;
|
||||||
|
private ISecBiometricsFingerprint mSamsungFingerprint = null;
|
||||||
|
+ private ISehBiometricsFingerprint mSamsungFingerprint3_0 = null;
|
||||||
|
private vendor.oppo.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint mOppoFingerprint = null;
|
||||||
|
private boolean mInsideCircle = false;
|
||||||
|
private final WindowManager.LayoutParams mParams = new WindowManager.LayoutParams();
|
||||||
|
private final WindowManager.LayoutParams mParamsTouched = new WindowManager.LayoutParams();
|
||||||
|
|
||||||
|
- private final static float UNTOUCHED_DIM = .1f;
|
||||||
|
+ private final static float UNTOUCHED_DIM = .0f;
|
||||||
|
private final static float TOUCHED_DIM = .9f;
|
||||||
|
|
||||||
|
private final HandlerThread mHandlerThread;
|
||||||
|
@@ -68,10 +76,17 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||||
|
private final DisplayManager mDM;
|
||||||
|
private final boolean samsungFod = samsungHasCmd("fod_enable");
|
||||||
|
private boolean noDim;
|
||||||
|
+ private boolean bypassedBrightness;
|
||||||
|
+ private boolean isDown = false;
|
||||||
|
+
|
||||||
|
+ private java.util.ArrayList<Object> objectsToKeep = new java.util.ArrayList();
|
||||||
|
+
|
||||||
|
+ private static boolean doneCalibrationOnce = true;
|
||||||
|
|
||||||
|
private boolean mFullGreenDisplayed = false;
|
||||||
|
private final View mFullGreen;
|
||||||
|
private boolean mHidden = true;
|
||||||
|
+ private boolean xiaomiAsynchronous = false;
|
||||||
|
FacolaView(Context context) {
|
||||||
|
super(context);
|
||||||
|
|
||||||
|
@@ -86,13 +101,18 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||||
|
mWM = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
|
||||||
|
mDM = (DisplayManager) getContext().getSystemService(Context.DISPLAY_SERVICE);
|
||||||
|
|
||||||
|
+ Point displayRealSize = new Point();
|
||||||
|
+ DisplayMetrics displayMetrics = new DisplayMetrics();
|
||||||
|
+ mDM.getDisplay(0).getRealSize(displayRealSize);
|
||||||
|
+ mDM.getDisplay(0).getMetrics(displayMetrics);
|
||||||
|
+
|
||||||
|
android.util.Log.d("PHH", "Samsung FOD " + samsungFod);
|
||||||
|
|
||||||
|
mHandlerThread = new HandlerThread("FacolaThread");
|
||||||
|
mHandlerThread.start();
|
||||||
|
mHandler = new Handler(mHandlerThread.getLooper());
|
||||||
|
|
||||||
|
- noDim = android.os.SystemProperties.getBoolean("persist.sys.phh.nodim", true);
|
||||||
|
+ noDim = android.os.SystemProperties.getBoolean("persist.sys.phh.nodim", false);
|
||||||
|
String[] location = android.os.SystemProperties.get("persist.vendor.sys.fp.fod.location.X_Y", "").split(",");
|
||||||
|
if(location.length != 2)
|
||||||
|
location = android.os.SystemProperties.get("persist.sys.fp.fod.location.X_Y", "").split(",");
|
||||||
|
@@ -107,12 +127,25 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||||
|
mW = Integer.parseInt(size[0]);
|
||||||
|
mH = Integer.parseInt(size[1]);
|
||||||
|
} else {
|
||||||
|
+ //a50
|
||||||
|
+ //mX = -1;//443;// - 190/2;
|
||||||
|
+ //mY = -1;// 1972;// - 190 / 2;
|
||||||
|
+ //mW = -1;//190;
|
||||||
|
+ //mH = -1;//190;
|
||||||
|
+
|
||||||
|
+ //x2 pro
|
||||||
|
+ //mX = 445;// - 190/2;
|
||||||
|
+ //mY = 1988;// - 190/2;
|
||||||
|
+ //mW = 190;
|
||||||
|
+ //mH = 190;
|
||||||
|
mX = -1;
|
||||||
|
mY = -1;
|
||||||
|
mW = -1;
|
||||||
|
mH = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ mParamsTouched.dimAmount = 0;
|
||||||
|
+
|
||||||
|
int oppoSize = android.os.SystemProperties.getInt("persist.vendor.fingerprint.optical.iconsize", 0);
|
||||||
|
if(oppoSize > 0) {
|
||||||
|
mW = oppoSize;
|
||||||
|
@@ -121,15 +154,16 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||||
|
int oppoLocation = android.os.SystemProperties.getInt("persist.vendor.fingerprint.optical.iconlocation", 0);
|
||||||
|
if(oppoLocation > 0) {
|
||||||
|
Slog.d("PHH-Enroll", "Got Oppo icon location " + oppoLocation);
|
||||||
|
- Point p = new Point();
|
||||||
|
- mDM.getDisplay(0).getRealSize(p);
|
||||||
|
- Slog.d("PHH-Enroll", "\tscreen size " + p.x + ", " + p.y);
|
||||||
|
- mX = p.x/2 - mW/2;
|
||||||
|
- mY = p.y - mH/2 - oppoLocation;
|
||||||
|
+ Slog.d("PHH-Enroll", "\tscreen size " + displayRealSize.x + ", " + displayRealSize.y);
|
||||||
|
+ mX = displayRealSize.x/2 - mW/2;
|
||||||
|
+ mY = displayRealSize.y - mH/2 - oppoLocation;
|
||||||
|
Slog.d("PHH-Enroll", "\tfacola at " + mX + ", " + mY);
|
||||||
|
noDim = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ String gammaStr = android.os.SystemProperties.get("persist.sys.phh.fod.gamma", "2.2");
|
||||||
|
+ float gamma = Float.parseFloat(gammaStr);
|
||||||
|
+
|
||||||
|
mPaintFingerprint.setAntiAlias(true);
|
||||||
|
mPaintFingerprint.setColor(Color.GREEN);
|
||||||
|
|
||||||
|
@@ -148,11 +182,21 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||||
|
} catch(Exception e) {
|
||||||
|
Slog.d("PHH-Enroll", "Failed getting goodix fingerprint service", e);
|
||||||
|
}
|
||||||
|
+ try {
|
||||||
|
+ mGoodixFingerprintV2_1 = vendor.goodix.hardware.biometrics.fingerprint.V2_1.IGoodixFingerprintDaemon.getService();
|
||||||
|
+ } catch(Exception e) {
|
||||||
|
+ Slog.d("PHH-Enroll", "Failed getting goodix2 fingerprint service", e);
|
||||||
|
+ }
|
||||||
|
try {
|
||||||
|
mSamsungFingerprint = ISecBiometricsFingerprint.getService();
|
||||||
|
} catch(Exception e) {
|
||||||
|
Slog.d("PHH-Enroll", "Failed getting samsung fingerprint service", e);
|
||||||
|
}
|
||||||
|
+ try {
|
||||||
|
+ mSamsungFingerprint3_0 = ISehBiometricsFingerprint.getService();
|
||||||
|
+ } catch(Exception e) {
|
||||||
|
+ Slog.d("PHH-Enroll", "Failed getting samsung 3.0 fingerprint service", e);
|
||||||
|
+ }
|
||||||
|
try {
|
||||||
|
mOppoFingerprint = vendor.oppo.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint.getService();
|
||||||
|
} catch(Exception e) {
|
||||||
|
@@ -160,13 +204,154 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if(mSamsungFingerprint3_0 != null || mSamsungFingerprint != null) {
|
||||||
|
+ noDim = true;
|
||||||
|
+ bypassedBrightness = true;
|
||||||
|
+
|
||||||
|
+ String fodPositionString = readFile("/sys/class/fingerprint/fingerprint/position");
|
||||||
|
+ final String brightnessFile;
|
||||||
|
+ if("qcom".equals(Build.HARDWARE))
|
||||||
|
+ brightnessFile = "/sys/class/backlight/panel0-backlight/brightness";
|
||||||
|
+ else
|
||||||
|
+ brightnessFile = "/sys/class/lcd/panel/device/backlight/panel/brightness";
|
||||||
|
+
|
||||||
|
+ String maskBrightnessStr = readFile("/sys/class/lcd/panel/mask_brightness");
|
||||||
|
+ String actualMaskBrightnessPath = "/sys/class/lcd/panel/actual_mask_brightness";
|
||||||
|
+
|
||||||
|
+ if(fodPositionString != null && maskBrightnessStr != null) {
|
||||||
|
+ double maskBrightness = Double.parseDouble(maskBrightnessStr);
|
||||||
|
+ String[] fodPositionArray = readFile("/sys/class/fingerprint/fingerprint/position").split(",");
|
||||||
|
+ float bottomMM = Float.parseFloat(fodPositionArray[0]);
|
||||||
|
+ float areaSizeMM = Float.parseFloat(fodPositionArray[5]);
|
||||||
|
+
|
||||||
|
+ float bottomInch = bottomMM * 0.0393700787f;
|
||||||
|
+ float areaSizeInch = areaSizeMM * 0.0393700787f;
|
||||||
|
+
|
||||||
|
+ int bottomPx = (int)(bottomInch * displayMetrics.ydpi);
|
||||||
|
+ int areaSizePx = (int)(areaSizeInch * displayMetrics.ydpi);
|
||||||
|
+ mW = areaSizePx;
|
||||||
|
+ mH = areaSizePx;
|
||||||
|
+ mX = displayRealSize.x/2 - mW/2;
|
||||||
|
+ mY = displayRealSize.y - bottomPx - mH;
|
||||||
|
+ Slog.d("PHH-Enroll", "Samsung computed " + mX + "," + mY + "; " + mW + "x" + mH);
|
||||||
|
+
|
||||||
|
+ String cmd = String.format("fod_rect,%d,%d,%d,%d", mX, mY, mX+mW, mY+mH);
|
||||||
|
+ samsungCmd(cmd);
|
||||||
|
+
|
||||||
|
+ Slog.d("PHH-Enroll", "Reading brightness file gives " + readFile(brightnessFile));
|
||||||
|
+ FileObserver samsungCallback = new FileObserver(brightnessFile, FileObserver.MODIFY) {
|
||||||
|
+ //Don't use LightsService' observer, because Samsung's brightness file is in nits, which makes for much more accurate computation
|
||||||
|
+ @Override
|
||||||
|
+ public void onEvent(int event, String path) {
|
||||||
|
+ String currentBrightnessStr = readFile(brightnessFile);
|
||||||
|
+ Slog.d("PHH-Enroll", "New brightness is " + currentBrightnessStr);
|
||||||
|
+ int currentBrightness = Integer.parseInt(currentBrightnessStr);
|
||||||
|
+
|
||||||
|
+ mHandler.post( () -> {
|
||||||
|
+ double dim = 1.0d - Math.pow( (currentBrightness / maskBrightness), 1/gamma);
|
||||||
|
+ Slog.d("PHH-Enroll", "Setting dim to " + dim);
|
||||||
|
+ mParamsTouched.dimAmount = (float)dim;
|
||||||
|
+ if(!mHidden) {
|
||||||
|
+ Slog.d("PHH-Enroll", "++Setting dim to " + dim);
|
||||||
|
+ if(mFullGreenDisplayed && !mHidden) {
|
||||||
|
+ mWM.updateViewLayout(mFullGreen, mParamsTouched);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ });
|
||||||
|
+ }
|
||||||
|
+ };
|
||||||
|
+ samsungCallback.startWatching();
|
||||||
|
+ objectsToKeep.add(samsungCallback);
|
||||||
|
+
|
||||||
|
+ Slog.d("PHH-Enroll", "Reading actual brightness file gives " + readFile(actualMaskBrightnessPath));
|
||||||
|
+ FileObserver actualMaskObserver = new FileObserver(actualMaskBrightnessPath, FileObserver.MODIFY) {
|
||||||
|
+ @Override
|
||||||
|
+ public void onEvent(int event, String path) {
|
||||||
|
+ String actualMask = readFile(actualMaskBrightnessPath);
|
||||||
|
+ Slog.d("PHH-Enroll", "New actual mask brightness is " + actualMask);
|
||||||
|
+ try {
|
||||||
|
+ int eventReq = 0;
|
||||||
|
+ if("0".equals(actualMask)) {
|
||||||
|
+ eventReq = 1; //released
|
||||||
|
+ } else {
|
||||||
|
+ eventReq = 2; //pressed
|
||||||
|
+ }
|
||||||
|
+ if(mSamsungFingerprint != null) {
|
||||||
|
+ mSamsungFingerprint.request(22 /* SEM_FINGER_STATE */, 0, eventReq, new java.util.ArrayList<Byte>(),
|
||||||
|
+ (int retval, java.util.ArrayList<Byte> out) -> {} );
|
||||||
|
+ } else if(mSamsungFingerprint3_0 != null) {
|
||||||
|
+ mSamsungFingerprint3_0.sehRequest(22 /* SEM_FINGER_STATE */, eventReq, new java.util.ArrayList<Byte>(),
|
||||||
|
+ (int retval, java.util.ArrayList<Byte> out) -> {} );
|
||||||
|
+ }
|
||||||
|
+ } catch(Exception e) {
|
||||||
|
+ Slog.d("PHH-Enroll", "Failed setting samsung event for mask observer", e);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ };
|
||||||
|
+ actualMaskObserver.startWatching();
|
||||||
|
+ objectsToKeep.add(actualMaskObserver);
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ String xiaomiFodReadyPath = "/sys/class/drm/card0-DSI-1/fod_ui_ready";
|
||||||
|
+ if(new File(xiaomiFodReadyPath).exists()) {
|
||||||
|
+ xiaomiAsynchronous = true;
|
||||||
|
+ FileObserver xiaomiUiReadyCb = new FileObserver(xiaomiFodReadyPath, FileObserver.MODIFY) {
|
||||||
|
+ @Override
|
||||||
|
+ public void onEvent(int event, String path) {
|
||||||
|
+ String currentUiReady = readFile(xiaomiFodReadyPath);
|
||||||
|
+ Slog.d("PHH-Enroll", "New fod ready is " + currentUiReady);
|
||||||
|
+
|
||||||
|
+ mHandler.post( () -> {
|
||||||
|
+ try {
|
||||||
|
+ if("0".equals(currentUiReady)) {
|
||||||
|
+ mXiaomiFingerprint.extCmd(0xa, 0);
|
||||||
|
+ } else if("1".equals(currentUiReady)) {
|
||||||
|
+ mXiaomiFingerprint.extCmd(0xa, 1);
|
||||||
|
+ }
|
||||||
|
+ } catch(Exception e) {
|
||||||
|
+ Slog.d("PHH-Enroll", "Failed Xiaomi async extcmd", e);
|
||||||
|
+ }
|
||||||
|
+ });
|
||||||
|
+ }
|
||||||
|
+ };
|
||||||
|
+ xiaomiUiReadyCb.startWatching();
|
||||||
|
+ objectsToKeep.add(xiaomiUiReadyCb);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if(mX != -1) {
|
||||||
|
android.os.SystemProperties.set("persist.sys.phh.has_fod", "true");
|
||||||
|
} else {
|
||||||
|
android.os.SystemProperties.set("persist.sys.phh.has_fod", "false");
|
||||||
|
}
|
||||||
|
+ com.android.server.lights.LightsService.backlightChangeListener = new com.android.server.lights.LightsService.OnBacklightChange() {
|
||||||
|
+ public void onBacklightChange(int brightness) {
|
||||||
|
+ //Simple (but wrong) math assuming 255 is max brightness with 2.2 screen gamma and linear backlight
|
||||||
|
+ double dim = (1.0 - Math.pow(brightness/255.0, 1/gamma));
|
||||||
|
+
|
||||||
|
+ int alpha = (int)(255.0*dim);
|
||||||
|
+ Slog.d("PHH-Enroll", "Setting Xiaomi dim alpha to " + alpha + ", from " + brightness);
|
||||||
|
+ writeFile("/sys/class/drm/card0-DSI-1/dim_alpha", Integer.toString(alpha));
|
||||||
|
+
|
||||||
|
+ mHandler.post( () -> {
|
||||||
|
+ if(!noDim) {
|
||||||
|
+ Slog.d("PHH-Enroll", "Setting dim to " + dim);
|
||||||
|
+ mParams.dimAmount = (float)dim;
|
||||||
|
+ if(!mHidden) {
|
||||||
|
+ Slog.d("PHH-Enroll", "++Setting dim to " + dim);
|
||||||
|
+ mWM.updateViewLayout(FacolaView.this, mParams);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ });
|
||||||
|
+ }
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ bypassedBrightness = hbmCtrl1.exists() || noDim;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ private final File hbmCtrl1 = new File("/proc/leds/hbm_mode");
|
||||||
|
+
|
||||||
|
private final File oppoFod = new File("/sys/kernel/oppo_display/notify_fppress");
|
||||||
|
private void oppoPress(boolean pressed) {
|
||||||
|
if(!oppoFod.exists()) return;
|
||||||
|
@@ -199,11 +384,14 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||||
|
mParamsTouched.type = WindowManager.LayoutParams.TYPE_VOLUME_OVERLAY;
|
||||||
|
mParamsTouched.setTitle("Fingerprint on display.touched");
|
||||||
|
mParamsTouched.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
|
||||||
|
- WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
|
||||||
|
- mParamsTouched.dimAmount = UNTOUCHED_DIM;
|
||||||
|
+ WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN |
|
||||||
|
+ WindowManager.LayoutParams.FLAG_DIM_BEHIND;
|
||||||
|
+ writeFile(hbmCtrl1, "1");
|
||||||
|
if(!noDim) {
|
||||||
|
- mParamsTouched.dimAmount = TOUCHED_DIM;
|
||||||
|
mParamsTouched.screenBrightness = 1.0f;
|
||||||
|
+ if(!bypassedBrightness) {
|
||||||
|
+ mParamsTouched.screenBrightness = 1.0f;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
mParamsTouched.packageName = "android";
|
||||||
|
@@ -216,39 +404,52 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||||
|
mWM.addView(mFullGreen, mParamsTouched);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
-
|
||||||
|
- int nitValue = 2;
|
||||||
|
- mHandler.postDelayed( () -> {
|
||||||
|
- try {
|
||||||
|
- if(mXiaomiFingerprint != null) {
|
||||||
|
+ if(!isDown) {
|
||||||
|
+ isDown = true;
|
||||||
|
+ int nitValue = 2;
|
||||||
|
+ mHandler.postDelayed( () -> {
|
||||||
|
+ try {
|
||||||
|
+ if(mXiaomiFingerprint != null && !xiaomiAsynchronous) {
|
||||||
|
mXiaomiFingerprint.extCmd(0xa, nitValue);
|
||||||
|
- } else if(mGoodixFingerprint != null) {
|
||||||
|
+ } else if(mGoodixFingerprint != null) {
|
||||||
|
mGoodixFingerprint.goodixExtendCommand(10, 1);
|
||||||
|
- } else if(mSamsungFingerprint != null) {
|
||||||
|
- mSamsungFingerprint.request(22 /* SEM_FINGER_STATE */, 0, 2 /* pressed */, new java.util.ArrayList<Byte>(),
|
||||||
|
+ } else if(mGoodixFingerprintV2_1 != null) {
|
||||||
|
+ mGoodixFingerprintV2_1.sendCommand(0x600, new java.util.ArrayList<Byte>(),
|
||||||
|
(int retval, java.util.ArrayList<Byte> out) -> {} );
|
||||||
|
- }
|
||||||
|
- } catch(Exception e) {
|
||||||
|
- Slog.d("PHH-Enroll", "Failed calling late fp extcmd", e);
|
||||||
|
- }
|
||||||
|
- }, 200);
|
||||||
|
+ }
|
||||||
|
+ } catch(Exception e) {
|
||||||
|
+ Slog.d("PHH-Enroll", "Failed calling late fp extcmd", e);
|
||||||
|
+ }
|
||||||
|
+ }, 200);
|
||||||
|
+ }
|
||||||
|
} catch(Exception e) {
|
||||||
|
Slog.d("PHH-Enroll", "Failed calling fp extcmd", e);
|
||||||
|
}
|
||||||
|
oppoPress(true);
|
||||||
|
} else {
|
||||||
|
+ writeFile(hbmCtrl1, "1");
|
||||||
|
oppoPress(false);
|
||||||
|
- try {
|
||||||
|
- if(mXiaomiFingerprint != null) {
|
||||||
|
- mXiaomiFingerprint.extCmd(0xa, 0);
|
||||||
|
- } else if(mGoodixFingerprint != null) {
|
||||||
|
- mGoodixFingerprint.goodixExtendCommand(10, 0);
|
||||||
|
- } else if(mSamsungFingerprint != null) {
|
||||||
|
- mSamsungFingerprint.request(22 /* SEM_FINGER_STATE */, 0, 1 /* released */, new java.util.ArrayList<Byte>(),
|
||||||
|
- (int retval, java.util.ArrayList<Byte> out) -> {} );
|
||||||
|
+ if(isDown) {
|
||||||
|
+ isDown = false;
|
||||||
|
+ try {
|
||||||
|
+ if(mXiaomiFingerprint != null && !xiaomiAsynchronous) {
|
||||||
|
+ mXiaomiFingerprint.extCmd(0xa, 0);
|
||||||
|
+ } else if(mGoodixFingerprint != null) {
|
||||||
|
+ mGoodixFingerprint.goodixExtendCommand(10, 0);
|
||||||
|
+ } else if(mGoodixFingerprintV2_1 != null) {
|
||||||
|
+ mGoodixFingerprintV2_1.sendCommand(0x601, new java.util.ArrayList<Byte>(),
|
||||||
|
+ (int retval, java.util.ArrayList<Byte> out) -> {});
|
||||||
|
+ } else if(mSamsungFingerprint != null) {
|
||||||
|
+ mSamsungFingerprint.request(22 /* SEM_FINGER_STATE */, 0, 1 /* released */, new java.util.ArrayList<Byte>(),
|
||||||
|
+ (int retval, java.util.ArrayList<Byte> out) -> {} );
|
||||||
|
+ } else if(mSamsungFingerprint3_0 != null) {
|
||||||
|
+ mSamsungFingerprint3_0.sehRequest(22 /* SEM_FINGER_STATE */, 1 /* released */, new java.util.ArrayList<Byte>(),
|
||||||
|
+ (int retval, java.util.ArrayList<Byte> out) -> {} );
|
||||||
|
+ }
|
||||||
|
+ } catch(Exception e) {
|
||||||
|
+ Slog.d("PHH-Enroll", "Failed calling fp extcmd", e);
|
||||||
|
}
|
||||||
|
- } catch(Exception e) {
|
||||||
|
- Slog.d("PHH-Enroll", "Failed calling fp extcmd", e);
|
||||||
|
+
|
||||||
|
}
|
||||||
|
if(mFullGreenDisplayed) {
|
||||||
|
mHandler.post( () -> {
|
||||||
|
@@ -278,7 +479,9 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||||
|
|
||||||
|
if(!mInsideCircle) {
|
||||||
|
mParams.screenBrightness = .0f;
|
||||||
|
- mParams.dimAmount = UNTOUCHED_DIM;
|
||||||
|
+ if(!noDim) {
|
||||||
|
+ mParams.dimAmount = UNTOUCHED_DIM;
|
||||||
|
+ }
|
||||||
|
mWM.updateViewLayout(this, mParams);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
@@ -296,6 +499,34 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||||
|
Slog.d("PHH-Enroll", "Show", new Exception());
|
||||||
|
if(!mHidden) return;
|
||||||
|
mHidden = false;
|
||||||
|
+ try {
|
||||||
|
+ mSamsungFingerprint = ISecBiometricsFingerprint.getService();
|
||||||
|
+ mSamsungFingerprint.request(20 /* SEM_FINGER_STATE */, 0, 0 /* released */, new java.util.ArrayList<Byte>(),
|
||||||
|
+ (int retval, java.util.ArrayList<Byte> out) -> {} );
|
||||||
|
+ } catch(Exception e) {
|
||||||
|
+ Slog.d("PHH-Enroll", "Failed setting fast fingerprint recognition");
|
||||||
|
+ }
|
||||||
|
+ try {
|
||||||
|
+ mSamsungFingerprint3_0 = ISehBiometricsFingerprint.getService();
|
||||||
|
+ Slog.d("PHH-Enroll", "Samsung ask for sensor status");
|
||||||
|
+ mSamsungFingerprint3_0.sehRequest(6, 0, new java.util.ArrayList(), (int retval, java.util.ArrayList<Byte> out) -> {
|
||||||
|
+ Slog.d("PHH-Enroll", "Result is " + retval);
|
||||||
|
+ for(int i=0; i<out.size(); i++) {
|
||||||
|
+ Slog.d("PHH-Enroll", "\t" + i + ":" + out.get(i));
|
||||||
|
+ }
|
||||||
|
+ } );
|
||||||
|
+ Slog.d("PHH-Enroll", "Samsung ask for sensor brightness value");
|
||||||
|
+ mSamsungFingerprint3_0.sehRequest(32, 0, new java.util.ArrayList(), (int retval, java.util.ArrayList<Byte> out) -> {
|
||||||
|
+ Slog.d("PHH-Enroll", "Result is " + retval);
|
||||||
|
+ for(int i=0; i<out.size(); i++) {
|
||||||
|
+ Slog.d("PHH-Enroll", "\t" + i + ":" + out.get(i));
|
||||||
|
+ }
|
||||||
|
+ } );
|
||||||
|
+
|
||||||
|
+ } catch(Exception e) {
|
||||||
|
+ Slog.d("PHH-Enroll", "Failed setting samsung3.0 fingerprint recognition", e);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if(mOppoFingerprint != null) {
|
||||||
|
try {
|
||||||
|
mOppoFingerprint.setScreenState(vendor.oppo.hardware.biometrics.fingerprint.V2_1.FingerprintScreenState.FINGERPRINT_SCREEN_ON);
|
||||||
|
@@ -327,13 +558,17 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||||
|
mParams.format = PixelFormat.TRANSLUCENT;
|
||||||
|
|
||||||
|
mParams.type = WindowManager.LayoutParams.TYPE_VOLUME_OVERLAY;
|
||||||
|
- mParams.setTitle("Fingerprint on display");
|
||||||
|
+ mParams.setTitle("Fingerprint on display.untouched");
|
||||||
|
mParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
|
||||||
|
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH |
|
||||||
|
WindowManager.LayoutParams.FLAG_DIM_BEHIND |
|
||||||
|
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
|
||||||
|
- mParams.dimAmount = UNTOUCHED_DIM;
|
||||||
|
- mParams.screenBrightness = .0f;
|
||||||
|
+ if(!noDim) {
|
||||||
|
+ mParams.dimAmount = UNTOUCHED_DIM;
|
||||||
|
+ mParams.screenBrightness = .0f;
|
||||||
|
+ } else {
|
||||||
|
+ mParams.dimAmount = 0;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
mParams.packageName = "android";
|
||||||
|
|
||||||
|
@@ -370,8 +605,6 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||||
|
try {
|
||||||
|
if(mXiaomiFingerprint != null) {
|
||||||
|
mXiaomiFingerprint.extCmd(0xa, 0);
|
||||||
|
- } else if(mGoodixFingerprint != null) {
|
||||||
|
- mXiaomiFingerprint.extCmd(10, 0);
|
||||||
|
}
|
||||||
|
} catch(Exception e) {
|
||||||
|
Slog.d("PHH-Enroll", "Failed calling xiaomi fp extcmd");
|
||||||
|
@@ -417,7 +650,7 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- private static void samsungCmd(String cmd) {
|
||||||
|
+ public static void samsungCmd(String cmd) {
|
||||||
|
try {
|
||||||
|
PrintWriter writer = new PrintWriter("/sys/devices/virtual/sec/tsp/cmd", "UTF-8");
|
||||||
|
writer.println(cmd);
|
||||||
|
@@ -442,4 +675,14 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ private static void writeFile(File file, String value) {
|
||||||
|
+ try {
|
||||||
|
+ PrintWriter writer = new PrintWriter(file, "UTF-8");
|
||||||
|
+ writer.println(value);
|
||||||
|
+ writer.close();
|
||||||
|
+ } catch(Exception e) {
|
||||||
|
+ android.util.Log.d("PHH", "Failed writing to " + file + ": " + value);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,33 @@
|
|||||||
|
From 80751a02c586e3280e41dc457b6ba3aa3404f5a4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Thu, 21 May 2020 16:12:42 +0200
|
||||||
|
Subject: [PATCH 62/65] On MIUI12 vendor, we don't want our own diming
|
||||||
|
|
||||||
|
---
|
||||||
|
.../com/android/server/biometrics/fingerprint/FacolaView.java | 3 +--
|
||||||
|
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java b/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||||
|
index d3d58aff6c0..8afbbc0dce0 100644
|
||||||
|
--- a/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||||
|
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||||
|
@@ -81,8 +81,6 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||||
|
|
||||||
|
private java.util.ArrayList<Object> objectsToKeep = new java.util.ArrayList();
|
||||||
|
|
||||||
|
- private static boolean doneCalibrationOnce = true;
|
||||||
|
-
|
||||||
|
private boolean mFullGreenDisplayed = false;
|
||||||
|
private final View mFullGreen;
|
||||||
|
private boolean mHidden = true;
|
||||||
|
@@ -297,6 +295,7 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||||
|
String xiaomiFodReadyPath = "/sys/class/drm/card0-DSI-1/fod_ui_ready";
|
||||||
|
if(new File(xiaomiFodReadyPath).exists()) {
|
||||||
|
xiaomiAsynchronous = true;
|
||||||
|
+ noDim = true;
|
||||||
|
FileObserver xiaomiUiReadyCb = new FileObserver(xiaomiFodReadyPath, FileObserver.MODIFY) {
|
||||||
|
@Override
|
||||||
|
public void onEvent(int event, String path) {
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,59 @@
|
|||||||
|
From a788201da61532891201d3dddcbdfb9a97d0a089 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Thu, 21 May 2020 18:41:57 +0200
|
||||||
|
Subject: [PATCH 63/65] Add mUiHidden which is guarded by Handler. This is
|
||||||
|
needed because backlight listener might intervene at the wrong time
|
||||||
|
|
||||||
|
---
|
||||||
|
.../android/server/biometrics/fingerprint/FacolaView.java | 7 ++++++-
|
||||||
|
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java b/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||||
|
index 8afbbc0dce0..aeb81f5b7c9 100644
|
||||||
|
--- a/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||||
|
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||||
|
@@ -84,6 +84,7 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||||
|
private boolean mFullGreenDisplayed = false;
|
||||||
|
private final View mFullGreen;
|
||||||
|
private boolean mHidden = true;
|
||||||
|
+ private boolean mUiHidden = true;
|
||||||
|
private boolean xiaomiAsynchronous = false;
|
||||||
|
FacolaView(Context context) {
|
||||||
|
super(context);
|
||||||
|
@@ -216,6 +217,8 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||||
|
String maskBrightnessStr = readFile("/sys/class/lcd/panel/mask_brightness");
|
||||||
|
String actualMaskBrightnessPath = "/sys/class/lcd/panel/actual_mask_brightness";
|
||||||
|
|
||||||
|
+ Slog.d("PHH-Enroll", "Got fod position, mask brightness " + fodPositionString + ", " + maskBrightnessStr);
|
||||||
|
+
|
||||||
|
if(fodPositionString != null && maskBrightnessStr != null) {
|
||||||
|
double maskBrightness = Double.parseDouble(maskBrightnessStr);
|
||||||
|
String[] fodPositionArray = readFile("/sys/class/fingerprint/fingerprint/position").split(",");
|
||||||
|
@@ -337,7 +340,7 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||||
|
if(!noDim) {
|
||||||
|
Slog.d("PHH-Enroll", "Setting dim to " + dim);
|
||||||
|
mParams.dimAmount = (float)dim;
|
||||||
|
- if(!mHidden) {
|
||||||
|
+ if(!mUiHidden) {
|
||||||
|
Slog.d("PHH-Enroll", "++Setting dim to " + dim);
|
||||||
|
mWM.updateViewLayout(FacolaView.this, mParams);
|
||||||
|
}
|
||||||
|
@@ -573,6 +576,7 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||||
|
|
||||||
|
mParams.gravity = Gravity.TOP | Gravity.LEFT;
|
||||||
|
mHandler.post( () -> {
|
||||||
|
+ mUiHidden = false;
|
||||||
|
mWM.addView(this, mParams);
|
||||||
|
});
|
||||||
|
|
||||||
|
@@ -618,6 +622,7 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||||
|
|
||||||
|
Slog.d("PHH-Enroll", "Removed facola");
|
||||||
|
mHandler.post( () -> {
|
||||||
|
+ mUiHidden = true;
|
||||||
|
mWM.removeView(this);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,84 @@
|
|||||||
|
From f2c5806a14c89a6f029e7d27117749df4210bf10 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Thu, 21 May 2020 18:42:20 +0200
|
||||||
|
Subject: [PATCH 64/65] Always try to get FOD HALs, because we check samsung
|
||||||
|
HAL later to compute width
|
||||||
|
|
||||||
|
---
|
||||||
|
.../biometrics/fingerprint/FacolaView.java | 60 +++++++++----------
|
||||||
|
1 file changed, 29 insertions(+), 31 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java b/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||||
|
index aeb81f5b7c9..3536093a4ee 100644
|
||||||
|
--- a/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||||
|
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||||
|
@@ -170,37 +170,35 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||||
|
mPaintShow.setColor(Color.argb(0x18, 0x00, 0xff, 0x00));
|
||||||
|
setOnTouchListener(this);
|
||||||
|
Slog.d("PHH-Enroll", "Created facola...");
|
||||||
|
- if(mW != -1) {
|
||||||
|
- try {
|
||||||
|
- mXiaomiFingerprint = IXiaomiFingerprint.getService();
|
||||||
|
- } catch(Exception e) {
|
||||||
|
- Slog.d("PHH-Enroll", "Failed getting xiaomi fingerprint service", e);
|
||||||
|
- }
|
||||||
|
- try {
|
||||||
|
- mGoodixFingerprint = IGoodixFPExtendService.getService();
|
||||||
|
- } catch(Exception e) {
|
||||||
|
- Slog.d("PHH-Enroll", "Failed getting goodix fingerprint service", e);
|
||||||
|
- }
|
||||||
|
- try {
|
||||||
|
- mGoodixFingerprintV2_1 = vendor.goodix.hardware.biometrics.fingerprint.V2_1.IGoodixFingerprintDaemon.getService();
|
||||||
|
- } catch(Exception e) {
|
||||||
|
- Slog.d("PHH-Enroll", "Failed getting goodix2 fingerprint service", e);
|
||||||
|
- }
|
||||||
|
- try {
|
||||||
|
- mSamsungFingerprint = ISecBiometricsFingerprint.getService();
|
||||||
|
- } catch(Exception e) {
|
||||||
|
- Slog.d("PHH-Enroll", "Failed getting samsung fingerprint service", e);
|
||||||
|
- }
|
||||||
|
- try {
|
||||||
|
- mSamsungFingerprint3_0 = ISehBiometricsFingerprint.getService();
|
||||||
|
- } catch(Exception e) {
|
||||||
|
- Slog.d("PHH-Enroll", "Failed getting samsung 3.0 fingerprint service", e);
|
||||||
|
- }
|
||||||
|
- try {
|
||||||
|
- mOppoFingerprint = vendor.oppo.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint.getService();
|
||||||
|
- } catch(Exception e) {
|
||||||
|
- Slog.d("PHH-Enroll", "Failed getting oppo fingerprint service", e);
|
||||||
|
- }
|
||||||
|
+ try {
|
||||||
|
+ mXiaomiFingerprint = IXiaomiFingerprint.getService();
|
||||||
|
+ } catch(Exception e) {
|
||||||
|
+ Slog.d("PHH-Enroll", "Failed getting xiaomi fingerprint service", e);
|
||||||
|
+ }
|
||||||
|
+ try {
|
||||||
|
+ mGoodixFingerprint = IGoodixFPExtendService.getService();
|
||||||
|
+ } catch(Exception e) {
|
||||||
|
+ Slog.d("PHH-Enroll", "Failed getting goodix fingerprint service", e);
|
||||||
|
+ }
|
||||||
|
+ try {
|
||||||
|
+ mGoodixFingerprintV2_1 = vendor.goodix.hardware.biometrics.fingerprint.V2_1.IGoodixFingerprintDaemon.getService();
|
||||||
|
+ } catch(Exception e) {
|
||||||
|
+ Slog.d("PHH-Enroll", "Failed getting goodix2 fingerprint service", e);
|
||||||
|
+ }
|
||||||
|
+ try {
|
||||||
|
+ mSamsungFingerprint = ISecBiometricsFingerprint.getService();
|
||||||
|
+ } catch(Exception e) {
|
||||||
|
+ Slog.d("PHH-Enroll", "Failed getting samsung fingerprint service", e);
|
||||||
|
+ }
|
||||||
|
+ try {
|
||||||
|
+ mSamsungFingerprint3_0 = ISehBiometricsFingerprint.getService();
|
||||||
|
+ } catch(Exception e) {
|
||||||
|
+ Slog.d("PHH-Enroll", "Failed getting samsung 3.0 fingerprint service", e);
|
||||||
|
+ }
|
||||||
|
+ try {
|
||||||
|
+ mOppoFingerprint = vendor.oppo.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint.getService();
|
||||||
|
+ } catch(Exception e) {
|
||||||
|
+ Slog.d("PHH-Enroll", "Failed getting oppo fingerprint service", e);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(mSamsungFingerprint3_0 != null || mSamsungFingerprint != null) {
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,125 @@
|
|||||||
|
From 8502ea88bf1ac84ceaa6495c6831a55c733212ad Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Wed, 20 May 2020 21:16:56 +0200
|
||||||
|
Subject: [PATCH 8/8] Samsung + Xiaomi new FOD HBM controls
|
||||||
|
|
||||||
|
---
|
||||||
|
services/surfaceflinger/BufferQueueLayer.cpp | 22 ++++++++++++++++--
|
||||||
|
.../CompositionEngine/src/OutputLayer.cpp | 23 +++++++++++++++++--
|
||||||
|
2 files changed, 41 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/services/surfaceflinger/BufferQueueLayer.cpp b/services/surfaceflinger/BufferQueueLayer.cpp
|
||||||
|
index af5fe6246..13c32fb72 100644
|
||||||
|
--- a/services/surfaceflinger/BufferQueueLayer.cpp
|
||||||
|
+++ b/services/surfaceflinger/BufferQueueLayer.cpp
|
||||||
|
@@ -24,6 +24,7 @@
|
||||||
|
#include <compositionengine/impl/OutputLayerCompositionState.h>
|
||||||
|
#include <gui/BufferQueueConsumer.h>
|
||||||
|
#include <system/window.h>
|
||||||
|
+#include <cutils/properties.h>
|
||||||
|
|
||||||
|
#include "BufferQueueLayer.h"
|
||||||
|
#include "LayerRejecter.h"
|
||||||
|
@@ -31,6 +32,14 @@
|
||||||
|
|
||||||
|
#include "TimeStats/TimeStats.h"
|
||||||
|
|
||||||
|
+static bool sCheckedProps = false;
|
||||||
|
+static bool sSamsungFod = false;
|
||||||
|
+static void init_fod_props() {
|
||||||
|
+ if(sCheckedProps) return;
|
||||||
|
+ sCheckedProps = true;
|
||||||
|
+ sSamsungFod = property_get_bool("persist.sys.phh.fod.samsung", false);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
namespace android {
|
||||||
|
|
||||||
|
BufferQueueLayer::BufferQueueLayer(const LayerCreationArgs& args) : BufferLayer(args) {}
|
||||||
|
@@ -538,7 +547,10 @@ void BufferQueueLayer::onFirstRef() {
|
||||||
|
mConsumer =
|
||||||
|
new BufferLayerConsumer(consumer, mFlinger->getRenderEngine(), mTextureName, this);
|
||||||
|
}
|
||||||
|
- mConsumer->setConsumerUsageBits(getEffectiveUsage(0));
|
||||||
|
+ init_fod_props();
|
||||||
|
+
|
||||||
|
+ uint64_t usageBits = getEffectiveUsage(0);
|
||||||
|
+ mConsumer->setConsumerUsageBits(usageBits);
|
||||||
|
mConsumer->setContentsChangedListener(this);
|
||||||
|
mConsumer->setName(mName);
|
||||||
|
|
||||||
|
@@ -564,10 +576,16 @@ status_t BufferQueueLayer::setDefaultBufferProperties(uint32_t w, uint32_t h, Pi
|
||||||
|
}
|
||||||
|
|
||||||
|
mFormat = format;
|
||||||
|
+ init_fod_props();
|
||||||
|
|
||||||
|
setDefaultBufferSize(w, h);
|
||||||
|
mConsumer->setDefaultBufferFormat(format);
|
||||||
|
- mConsumer->setConsumerUsageBits(getEffectiveUsage(0));
|
||||||
|
+ uint64_t usageBits = getEffectiveUsage(0);
|
||||||
|
+ if(sSamsungFod && strstr(mName.c_str(), "Fingerprint on display.touched") != nullptr) {
|
||||||
|
+ ALOGE("Found on touched layer!");
|
||||||
|
+ usageBits |= 0x400000000LL;
|
||||||
|
+ }
|
||||||
|
+ mConsumer->setConsumerUsageBits(usageBits);
|
||||||
|
|
||||||
|
return NO_ERROR;
|
||||||
|
}
|
||||||
|
diff --git a/services/surfaceflinger/CompositionEngine/src/OutputLayer.cpp b/services/surfaceflinger/CompositionEngine/src/OutputLayer.cpp
|
||||||
|
index 23b29d6fd..0d7c9897a 100644
|
||||||
|
--- a/services/surfaceflinger/CompositionEngine/src/OutputLayer.cpp
|
||||||
|
+++ b/services/surfaceflinger/CompositionEngine/src/OutputLayer.cpp
|
||||||
|
@@ -23,9 +23,14 @@
|
||||||
|
#include <compositionengine/impl/OutputCompositionState.h>
|
||||||
|
#include <compositionengine/impl/OutputLayer.h>
|
||||||
|
#include <compositionengine/impl/OutputLayerCompositionState.h>
|
||||||
|
+#include <cutils/properties.h>
|
||||||
|
|
||||||
|
#include "DisplayHardware/HWComposer.h"
|
||||||
|
|
||||||
|
+static bool sCheckedProps = false;
|
||||||
|
+static bool sBBKFod = false;
|
||||||
|
+static bool sXiaomiFod = false;
|
||||||
|
+
|
||||||
|
namespace android::compositionengine {
|
||||||
|
|
||||||
|
OutputLayer::~OutputLayer() = default;
|
||||||
|
@@ -316,6 +321,12 @@ void OutputLayer::writeStateToHWC(bool includeGeometry) const {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if(!sCheckedProps) {
|
||||||
|
+ sCheckedProps = true;
|
||||||
|
+ sBBKFod = property_get_bool("persist.sys.phh.fod.bbk", false);
|
||||||
|
+ sXiaomiFod = property_get_bool("persist.sys.phh.fod.xiaomi", false);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (includeGeometry) {
|
||||||
|
// Output dependent state
|
||||||
|
|
||||||
|
@@ -338,12 +349,20 @@ void OutputLayer::writeStateToHWC(bool includeGeometry) const {
|
||||||
|
int z = mState.z;
|
||||||
|
if(strstr(mLayerFE->getDebugName(), "Fingerprint on display") != nullptr) {
|
||||||
|
ALOGE("Found fingerprint on display!");
|
||||||
|
- z = 0x41000031;
|
||||||
|
+ if(sBBKFod) {
|
||||||
|
+ z = 0x41000031;
|
||||||
|
+ } else if(sXiaomiFod) {
|
||||||
|
+ z |= 0x1000000;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
if(strstr(mLayerFE->getDebugName(), "Fingerprint on display.touched") != nullptr) {
|
||||||
|
ALOGE("Found fingerprint on display touched!");
|
||||||
|
- z = 0x41000033;
|
||||||
|
+ if(sBBKFod) {
|
||||||
|
+ z = 0x41000033;
|
||||||
|
+ } else if(sXiaomiFod) {
|
||||||
|
+ z |= 0x2000000;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
if (auto error = hwcLayer->setZOrder(z); error != HWC2::Error::None) {
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,58 @@
|
|||||||
|
From c43fc9cdeb2a41da244279ec86473e9504f4311b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Mon, 25 May 2020 21:25:12 +0200
|
||||||
|
Subject: [PATCH 3/3] Add persist.sys.phh.disable_a2dp_offload property to
|
||||||
|
force a2dp offload
|
||||||
|
|
||||||
|
---
|
||||||
|
btif/src/btif_av.cc | 7 ++++++-
|
||||||
|
stack/a2dp/a2dp_codec_config.cc | 7 ++++++-
|
||||||
|
2 files changed, 12 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/btif/src/btif_av.cc b/btif/src/btif_av.cc
|
||||||
|
index 24e32ec10..fa537ba4e 100644
|
||||||
|
--- a/btif/src/btif_av.cc
|
||||||
|
+++ b/btif/src/btif_av.cc
|
||||||
|
@@ -959,9 +959,14 @@ bt_status_t BtifAvSource::Init(
|
||||||
|
osi_property_get("ro.bluetooth.a2dp_offload.supported", value_sup, "false");
|
||||||
|
osi_property_get("persist.bluetooth.a2dp_offload.disabled", value_dis,
|
||||||
|
"false");
|
||||||
|
+ char value_phh[PROPERTY_VALUE_MAX] = {'\0'};
|
||||||
|
+ osi_property_get("persist.sys.phh.disable_a2dp_offload", value_phh, "false");
|
||||||
|
a2dp_offload_enabled_ =
|
||||||
|
(strcmp(value_sup, "true") == 0) && (strcmp(value_dis, "false") == 0);
|
||||||
|
- BTIF_TRACE_DEBUG("a2dp_offload.enable = %d", a2dp_offload_enabled_);
|
||||||
|
+ if(strcmp(value_phh, "true") == 0)
|
||||||
|
+ a2dp_offload_enabled_ = false;
|
||||||
|
+
|
||||||
|
+ LOG_ERROR(LOG_TAG, "a2dp_offload.enable = %s", a2dp_offload_enabled_ ? "on" : "off");
|
||||||
|
|
||||||
|
callbacks_ = callbacks;
|
||||||
|
bta_av_co_init(codec_priorities);
|
||||||
|
diff --git a/stack/a2dp/a2dp_codec_config.cc b/stack/a2dp/a2dp_codec_config.cc
|
||||||
|
index edf7e0c46..143eed7a3 100644
|
||||||
|
--- a/stack/a2dp/a2dp_codec_config.cc
|
||||||
|
+++ b/stack/a2dp/a2dp_codec_config.cc
|
||||||
|
@@ -560,13 +560,18 @@ bool A2dpCodecs::init() {
|
||||||
|
char* tok = NULL;
|
||||||
|
char* tmp_token = NULL;
|
||||||
|
bool offload_codec_support[BTAV_A2DP_CODEC_INDEX_MAX] = {false};
|
||||||
|
- char value_sup[PROPERTY_VALUE_MAX], value_dis[PROPERTY_VALUE_MAX];
|
||||||
|
+ char value_sup[PROPERTY_VALUE_MAX], value_dis[PROPERTY_VALUE_MAX], value_phh[PROPERTY_VALUE_MAX];
|
||||||
|
|
||||||
|
osi_property_get("ro.bluetooth.a2dp_offload.supported", value_sup, "false");
|
||||||
|
osi_property_get("persist.bluetooth.a2dp_offload.disabled", value_dis,
|
||||||
|
"false");
|
||||||
|
+ osi_property_get("persist.sys.phh.disable_a2dp_offload", value_phh, "false");
|
||||||
|
a2dp_offload_status =
|
||||||
|
(strcmp(value_sup, "true") == 0) && (strcmp(value_dis, "false") == 0);
|
||||||
|
+ if(strcmp(value_phh, "true") == 0)
|
||||||
|
+ a2dp_offload_status = false;
|
||||||
|
+
|
||||||
|
+ LOG_ERROR(LOG_TAG, "Got a2dp offload status %s", a2dp_offload_status ? "on" : "off");
|
||||||
|
|
||||||
|
if (a2dp_offload_status) {
|
||||||
|
char value_cap[PROPERTY_VALUE_MAX];
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -1,34 +0,0 @@
|
|||||||
From 51a0a2ece994b4a5feddf1f080c51ff57028b2c9 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Pierre-Hugues Husson <phh@phh.me>
|
|
||||||
Date: Fri, 6 Sep 2019 15:09:45 +0200
|
|
||||||
Subject: [PATCH 06/12] HACK XXX Never check adb key
|
|
||||||
|
|
||||||
Change-Id: Ic933023724c80f4a30725bb23de03fba9c5fbd12
|
|
||||||
---
|
|
||||||
adb/daemon/main.cpp | 3 +++
|
|
||||||
1 file changed, 3 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/adb/daemon/main.cpp b/adb/daemon/main.cpp
|
|
||||||
index e5a49171b..90fefc901 100644
|
|
||||||
--- a/adb/daemon/main.cpp
|
|
||||||
+++ b/adb/daemon/main.cpp
|
|
||||||
@@ -205,6 +205,7 @@ int adbd_main(int server_port) {
|
|
||||||
// descriptor will always be open.
|
|
||||||
adbd_cloexec_auth_socket();
|
|
||||||
|
|
||||||
+#if 0
|
|
||||||
#if defined(ALLOW_ADBD_NO_AUTH)
|
|
||||||
// If ro.adb.secure is unset, default to no authentication required.
|
|
||||||
auth_required = android::base::GetBoolProperty("ro.adb.secure", false);
|
|
||||||
@@ -213,6 +214,8 @@ int adbd_main(int server_port) {
|
|
||||||
auth_required = android::base::GetBoolProperty("ro.adb.secure", false);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
+#endif
|
|
||||||
+ auth_required = false;
|
|
||||||
|
|
||||||
adbd_auth_init();
|
|
||||||
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
|||||||
From 1d7724b6731f8f430b993fd92f34924597c7fed6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Pierre-Hugues Husson <phh@phh.me>
|
|
||||||
Date: Thu, 5 Dec 2019 16:01:26 +0100
|
|
||||||
Subject: [PATCH 16/16] Revert "HACK XXX Never check adb key"
|
|
||||||
|
|
||||||
This reverts commit 52e211961f89e2b83bad61a4c017697214e80f01.
|
|
||||||
---
|
|
||||||
adb/daemon/main.cpp | 3 ---
|
|
||||||
1 file changed, 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/adb/daemon/main.cpp b/adb/daemon/main.cpp
|
|
||||||
index 90fefc901..e5a49171b 100644
|
|
||||||
--- a/adb/daemon/main.cpp
|
|
||||||
+++ b/adb/daemon/main.cpp
|
|
||||||
@@ -205,7 +205,6 @@ int adbd_main(int server_port) {
|
|
||||||
// descriptor will always be open.
|
|
||||||
adbd_cloexec_auth_socket();
|
|
||||||
|
|
||||||
-#if 0
|
|
||||||
#if defined(ALLOW_ADBD_NO_AUTH)
|
|
||||||
// If ro.adb.secure is unset, default to no authentication required.
|
|
||||||
auth_required = android::base::GetBoolProperty("ro.adb.secure", false);
|
|
||||||
@@ -214,8 +213,6 @@ int adbd_main(int server_port) {
|
|
||||||
auth_required = android::base::GetBoolProperty("ro.adb.secure", false);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
-#endif
|
|
||||||
- auth_required = false;
|
|
||||||
|
|
||||||
adbd_auth_init();
|
|
||||||
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -0,0 +1,73 @@
|
|||||||
|
From 190246ee8a6cd75b3f414eae7489e83843b9e6bf Mon Sep 17 00:00:00 2001
|
||||||
|
From: Pierre-Hugues Husson <phh@phh.me>
|
||||||
|
Date: Sun, 24 May 2020 16:55:00 +0200
|
||||||
|
Subject: [PATCH 3/3] Revert "Don't set esdfs or exfat genfscon. Assume OEM
|
||||||
|
does"
|
||||||
|
|
||||||
|
This reverts commit dd26ec1f5e1deb0626e12efc2ee966509da0f4fc.
|
||||||
|
---
|
||||||
|
prebuilts/api/28.0/private/genfs_contexts | 4 ++--
|
||||||
|
prebuilts/api/29.0/private/genfs_contexts | 4 ++--
|
||||||
|
private/genfs_contexts | 4 ++--
|
||||||
|
3 files changed, 6 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/prebuilts/api/28.0/private/genfs_contexts b/prebuilts/api/28.0/private/genfs_contexts
|
||||||
|
index 56cd92da9..7e2ea5092 100644
|
||||||
|
--- a/prebuilts/api/28.0/private/genfs_contexts
|
||||||
|
+++ b/prebuilts/api/28.0/private/genfs_contexts
|
||||||
|
@@ -231,12 +231,12 @@ genfscon debugfs /tracing/events/fence/
|
||||||
|
|
||||||
|
genfscon inotifyfs / u:object_r:inotify:s0
|
||||||
|
genfscon vfat / u:object_r:vfat:s0
|
||||||
|
-#genfscon exfat / u:object_r:exfat:s0
|
||||||
|
+genfscon exfat / u:object_r:exfat:s0
|
||||||
|
genfscon debugfs / u:object_r:debugfs:s0
|
||||||
|
genfscon fuse / u:object_r:fuse:s0
|
||||||
|
genfscon configfs / u:object_r:configfs:s0
|
||||||
|
genfscon sdcardfs / u:object_r:sdcardfs:s0
|
||||||
|
-#genfscon esdfs / u:object_r:sdcardfs:s0
|
||||||
|
+genfscon esdfs / u:object_r:sdcardfs:s0
|
||||||
|
genfscon pstore / u:object_r:pstorefs:s0
|
||||||
|
genfscon functionfs / u:object_r:functionfs:s0
|
||||||
|
genfscon usbfs / u:object_r:usbfs:s0
|
||||||
|
diff --git a/prebuilts/api/29.0/private/genfs_contexts b/prebuilts/api/29.0/private/genfs_contexts
|
||||||
|
index 71f982413..d2819b194 100644
|
||||||
|
--- a/prebuilts/api/29.0/private/genfs_contexts
|
||||||
|
+++ b/prebuilts/api/29.0/private/genfs_contexts
|
||||||
|
@@ -287,12 +287,12 @@ genfscon debugfs /kcov u:object_r:debugfs_kcov:s0
|
||||||
|
|
||||||
|
genfscon inotifyfs / u:object_r:inotify:s0
|
||||||
|
genfscon vfat / u:object_r:vfat:s0
|
||||||
|
-#genfscon exfat / u:object_r:exfat:s0
|
||||||
|
+genfscon exfat / u:object_r:exfat:s0
|
||||||
|
genfscon debugfs / u:object_r:debugfs:s0
|
||||||
|
genfscon fuse / u:object_r:fuse:s0
|
||||||
|
genfscon configfs / u:object_r:configfs:s0
|
||||||
|
genfscon sdcardfs / u:object_r:sdcardfs:s0
|
||||||
|
-#genfscon esdfs / u:object_r:sdcardfs:s0
|
||||||
|
+genfscon esdfs / u:object_r:sdcardfs:s0
|
||||||
|
genfscon pstore / u:object_r:pstorefs:s0
|
||||||
|
genfscon functionfs / u:object_r:functionfs:s0
|
||||||
|
genfscon usbfs / u:object_r:usbfs:s0
|
||||||
|
diff --git a/private/genfs_contexts b/private/genfs_contexts
|
||||||
|
index 71f982413..d2819b194 100644
|
||||||
|
--- a/private/genfs_contexts
|
||||||
|
+++ b/private/genfs_contexts
|
||||||
|
@@ -287,12 +287,12 @@ genfscon debugfs /kcov u:object_r:debugfs_kcov:s0
|
||||||
|
|
||||||
|
genfscon inotifyfs / u:object_r:inotify:s0
|
||||||
|
genfscon vfat / u:object_r:vfat:s0
|
||||||
|
-#genfscon exfat / u:object_r:exfat:s0
|
||||||
|
+genfscon exfat / u:object_r:exfat:s0
|
||||||
|
genfscon debugfs / u:object_r:debugfs:s0
|
||||||
|
genfscon fuse / u:object_r:fuse:s0
|
||||||
|
genfscon configfs / u:object_r:configfs:s0
|
||||||
|
genfscon sdcardfs / u:object_r:sdcardfs:s0
|
||||||
|
-#genfscon esdfs / u:object_r:sdcardfs:s0
|
||||||
|
+genfscon esdfs / u:object_r:sdcardfs:s0
|
||||||
|
genfscon pstore / u:object_r:pstorefs:s0
|
||||||
|
genfscon functionfs / u:object_r:functionfs:s0
|
||||||
|
genfscon usbfs / u:object_r:usbfs:s0
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user