Compare commits
11 Commits
lineage-17
...
lineage-17
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
79b5b414a7 | ||
|
|
85c08ba1de | ||
|
|
7003515879 | ||
|
|
133b4799cc | ||
|
|
23b58fa57f | ||
|
|
d1718561d3 | ||
|
|
80a47a7f4f | ||
|
|
90d7ed3178 | ||
|
|
9fe4d8ccf3 | ||
|
|
5a4c7737ee | ||
|
|
4af677c28b |
@@ -1,39 +0,0 @@
|
||||
From efbdeeea6ac6ac7e6a33ba9034d0d26a2da2c92e Mon Sep 17 00:00:00 2001
|
||||
From: Danny Baumann <dannybaumann@web.de>
|
||||
Date: Wed, 29 Aug 2018 11:21:52 +0200
|
||||
Subject: [PATCH 1/6] Implement per-process target SDK version override.
|
||||
|
||||
Change-Id: I65bbdbe96541d8aacdd4de125cdb9c1435129413
|
||||
|
||||
This is only partial cherry-pick. Value won't be set via Android.bp
|
||||
---
|
||||
linker/linker.cpp | 13 ++++++++++++-
|
||||
1 file changed, 12 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/linker/linker.cpp b/linker/linker.cpp
|
||||
index b59df7302..ccdb131ca 100644
|
||||
--- a/linker/linker.cpp
|
||||
+++ b/linker/linker.cpp
|
||||
@@ -4217,7 +4217,18 @@ std::vector<android_namespace_t*> init_default_namespaces(const char* executable
|
||||
// somain and ld_preloads are added to these namespaces after LD_PRELOAD libs are linked
|
||||
}
|
||||
|
||||
- set_application_target_sdk_version(config->target_sdk_version());
|
||||
+ uint32_t target_sdk = config->target_sdk_version();
|
||||
+#ifdef SDK_VERSION_OVERRIDES
|
||||
+ for (const auto& entry : android::base::Split(SDK_VERSION_OVERRIDES, " ")) {
|
||||
+ auto splitted = android::base::Split(entry, "=");
|
||||
+ if (splitted.size() == 2 && splitted[0] == executable_path) {
|
||||
+ target_sdk = static_cast<uint32_t>(std::stoul(splitted[1]));
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ DEBUG("Target SDK for %s = %d", executable_path, target_sdk);
|
||||
+#endif
|
||||
+ set_application_target_sdk_version(target_sdk);
|
||||
|
||||
std::vector<android_namespace_t*> created_namespaces;
|
||||
created_namespaces.reserve(namespaces.size());
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From e77d8ff8326def1d6b457bfd4c8b232dc58dd7cb Mon Sep 17 00:00:00 2001
|
||||
From 3e18df7a3462d3b81ac4cbc23b1e8721f2f3722c Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Thu, 3 Jan 2019 17:50:03 +0100
|
||||
Subject: [PATCH 4/6] Read SDK version override from property
|
||||
Subject: [PATCH 1/2] Read SDK version override from property
|
||||
|
||||
Change-Id: I88ca5d0bde15ee4f2b2bd1255e98f9592973dbf9
|
||||
---
|
||||
@@ -9,10 +9,10 @@ Change-Id: I88ca5d0bde15ee4f2b2bd1255e98f9592973dbf9
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/linker/linker.cpp b/linker/linker.cpp
|
||||
index ccdb131ca..f45a40b9d 100644
|
||||
index 6941fde20..c4730ec20 100644
|
||||
--- a/linker/linker.cpp
|
||||
+++ b/linker/linker.cpp
|
||||
@@ -4218,7 +4218,9 @@ std::vector<android_namespace_t*> init_default_namespaces(const char* executable
|
||||
@@ -4296,7 +4296,9 @@ std::vector<android_namespace_t*> init_default_namespaces(const char* executable
|
||||
}
|
||||
|
||||
uint32_t target_sdk = config->target_sdk_version();
|
||||
@@ -23,7 +23,7 @@ index ccdb131ca..f45a40b9d 100644
|
||||
for (const auto& entry : android::base::Split(SDK_VERSION_OVERRIDES, " ")) {
|
||||
auto splitted = android::base::Split(entry, "=");
|
||||
if (splitted.size() == 2 && splitted[0] == executable_path) {
|
||||
@@ -4227,7 +4229,7 @@ std::vector<android_namespace_t*> init_default_namespaces(const char* executable
|
||||
@@ -4305,7 +4307,7 @@ std::vector<android_namespace_t*> init_default_namespaces(const char* executable
|
||||
}
|
||||
}
|
||||
DEBUG("Target SDK for %s = %d", executable_path, target_sdk);
|
||||
@@ -33,5 +33,5 @@ index ccdb131ca..f45a40b9d 100644
|
||||
|
||||
std::vector<android_namespace_t*> created_namespaces;
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From f32750cc994642f6ba792051f20c3f930f3007d2 Mon Sep 17 00:00:00 2001
|
||||
From 1823be14501a6c116f6d5e87570dea1af2c68413 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Thu, 12 Sep 2019 12:54:23 +0200
|
||||
Subject: [PATCH 5/6] Use vndk_lite ld.config only on same-version vendor
|
||||
Subject: [PATCH 2/2] Use vndk_lite ld.config only on same-version vendor
|
||||
|
||||
When running Q over P lite, there is currently absolutely no chance the
|
||||
device boots, because it will be using Q vndk.
|
||||
@@ -16,10 +16,10 @@ Change-Id: I55257cd7c738b1d20582e198e1d5621e1c87a03e
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/linker/linker.cpp b/linker/linker.cpp
|
||||
index f45a40b9d..9082fde53 100644
|
||||
index c4730ec20..337811951 100644
|
||||
--- a/linker/linker.cpp
|
||||
+++ b/linker/linker.cpp
|
||||
@@ -4069,7 +4069,10 @@ static std::string get_ld_config_file_apex_path(const char* executable_path) {
|
||||
@@ -4147,7 +4147,10 @@ static std::string get_ld_config_file_apex_path(const char* executable_path) {
|
||||
}
|
||||
|
||||
static std::string get_ld_config_file_vndk_path() {
|
||||
@@ -32,5 +32,5 @@ index f45a40b9d..9082fde53 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
From 13acd597e0dd22c5fa462007b20fe4f2398db297 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Thu, 12 Sep 2019 13:00:55 +0200
|
||||
Subject: [PATCH 6/6] fixup! Actually restore pre-P mutex behavior
|
||||
|
||||
---
|
||||
libc/bionic/pthread_mutex.cpp | 8 +-------
|
||||
1 file changed, 1 insertion(+), 7 deletions(-)
|
||||
|
||||
diff --git a/libc/bionic/pthread_mutex.cpp b/libc/bionic/pthread_mutex.cpp
|
||||
index 969feb43c..bd9fabdb6 100644
|
||||
--- a/libc/bionic/pthread_mutex.cpp
|
||||
+++ b/libc/bionic/pthread_mutex.cpp
|
||||
@@ -528,7 +528,7 @@ int pthread_mutex_init(pthread_mutex_t* mutex_interface, const pthread_mutexattr
|
||||
}
|
||||
|
||||
if (((*attr & MUTEXATTR_PROTOCOL_MASK) >> MUTEXATTR_PROTOCOL_SHIFT) == PTHREAD_PRIO_INHERIT
|
||||
- && bionic_get_application_target_sdk_version() >= __ANDROID_API_P__) {
|
||||
+ && android_get_application_target_sdk_version() >= __ANDROID_API_P__) {
|
||||
#if !defined(__LP64__)
|
||||
if (state & MUTEX_SHARED_MASK) {
|
||||
return EINVAL;
|
||||
@@ -798,12 +798,6 @@ static int __attribute__((noinline)) HandleUsingDestroyedMutex(pthread_mutex_t*
|
||||
return EBUSY;
|
||||
}
|
||||
|
||||
-static int __always_inline HandleUsingDestroyedMutex(pthread_mutex_t* mutex,
|
||||
- const char* function_name) {
|
||||
- __fortify_fatal("%s called on a destroyed mutex (%p)", function_name, mutex);
|
||||
- return EBUSY;
|
||||
-}
|
||||
-
|
||||
int pthread_mutex_lock(pthread_mutex_t* mutex_interface) {
|
||||
#if !defined(__LP64__)
|
||||
// Some apps depend on being able to pass NULL as a mutex and get EINVAL
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From 58a98bd24e41cdacdbd472aaed2ab994400fe68c Mon Sep 17 00:00:00 2001
|
||||
From a1b739f4631bfaa8a15cdc70081819b1d9360332 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Thu, 12 Sep 2019 20:31:07 +0200
|
||||
Subject: [PATCH] Don't reboot if we couldn't get bootctrl
|
||||
@@ -22,5 +22,5 @@ index d04c455d..27e9f616 100644
|
||||
|
||||
uint32_t current_slot = module->getCurrentSlot();
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From 5529a224373874a11d77fd31e25428cc10fbc1a4 Mon Sep 17 00:00:00 2001
|
||||
From 5b235ab7e686c58433d623fe5355125d9c9fdd35 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Fri, 6 Sep 2019 15:10:28 +0200
|
||||
Subject: [PATCH] Whitelist radio HALs (needed because they need to e in
|
||||
@@ -10,16 +10,16 @@ Change-Id: If1ccbedde92955bb86f4c6db6d68502784de1d8d
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/core/tasks/check_boot_jars/package_whitelist.txt b/core/tasks/check_boot_jars/package_whitelist.txt
|
||||
index 7e2e56c4c..daa23ddbd 100644
|
||||
index a2ebd491d..3545bbd88 100644
|
||||
--- a/core/tasks/check_boot_jars/package_whitelist.txt
|
||||
+++ b/core/tasks/check_boot_jars/package_whitelist.txt
|
||||
@@ -247,3 +247,6 @@ org\.chromium\.arc\..*
|
||||
# LineageOS
|
||||
lineageos\.platform
|
||||
org\.lineageos\.platform\.internal
|
||||
@@ -264,3 +264,6 @@ org\.ifaa\.android\.manager.*
|
||||
com\.nvidia\.*
|
||||
com\.nvidia\.profilemanager\.*
|
||||
com\.nvidia\.NvCPLSvc\.*
|
||||
+
|
||||
+vendor\.samsung\.hardware\.radio\.V1_2
|
||||
+vendor\.mediatek\.hardware\.radio\.V2_0
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 1c3ecb1fd46c76111d44f600532068f307ccacbc Mon Sep 17 00:00:00 2001
|
||||
From 8387b818fb3d921f718d7088a78db0842f8e5d41 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sat, 14 Sep 2019 21:25:07 +0200
|
||||
Subject: [PATCH 2/2] Add BOARD_SYSTEMIMAGE_AS_SYSTEM parameter to build SaS
|
||||
Subject: [PATCH 2/3] Add BOARD_SYSTEMIMAGE_AS_SYSTEM parameter to build SaS
|
||||
GSI
|
||||
|
||||
Change-Id: I764f0ef4e3be9a338fbe93944445cedc29d2bb81
|
||||
@@ -11,10 +11,10 @@ Change-Id: I764f0ef4e3be9a338fbe93944445cedc29d2bb81
|
||||
2 files changed, 5 insertions(+)
|
||||
|
||||
diff --git a/core/Makefile b/core/Makefile
|
||||
index 4611fb388..9ab207c6d 100644
|
||||
index a5eef489f..1d0c63e23 100644
|
||||
--- a/core/Makefile
|
||||
+++ b/core/Makefile
|
||||
@@ -1345,6 +1345,7 @@ endif # PRODUCT_USE_DYNAMIC_PARTITIONS
|
||||
@@ -1378,6 +1378,7 @@ endif # PRODUCT_USE_DYNAMIC_PARTITIONS
|
||||
# $(3): additional "key=value" pairs to append to the dictionary file.
|
||||
define generate-image-prop-dictionary
|
||||
$(if $(filter $(2),system),\
|
||||
@@ -23,7 +23,7 @@ index 4611fb388..9ab207c6d 100644
|
||||
$(if $(INTERNAL_SYSTEM_OTHER_PARTITION_SIZE),$(hide) echo "system_other_size=$(INTERNAL_SYSTEM_OTHER_PARTITION_SIZE)" >> $(1))
|
||||
$(if $(BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE),$(hide) echo "system_fs_type=$(BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE)" >> $(1))
|
||||
diff --git a/tools/releasetools/build_image.py b/tools/releasetools/build_image.py
|
||||
index 4136ed432..96f7ddcb0 100755
|
||||
index 641a6e19f..7d4f1c328 100755
|
||||
--- a/tools/releasetools/build_image.py
|
||||
+++ b/tools/releasetools/build_image.py
|
||||
@@ -157,6 +157,8 @@ def SetUpInDirAndFsConfig(origin_in, prop_dict):
|
||||
@@ -45,5 +45,5 @@ index 4136ed432..96f7ddcb0 100755
|
||||
# We inherit the selinux policies of /system since we contain some of its
|
||||
# files.
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
From 9434797f88d439d3dff8c7af733dcea2cdfed7ab Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sun, 22 Mar 2020 18:09:04 +0100
|
||||
Subject: [PATCH 3/3] Skip mounting /oem, because if it exists, it includes
|
||||
framework-level stuff we dont want
|
||||
|
||||
---
|
||||
target/product/gsi/skip_mount.cfg | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/target/product/gsi/skip_mount.cfg b/target/product/gsi/skip_mount.cfg
|
||||
index 549767edf..327676384 100644
|
||||
--- a/target/product/gsi/skip_mount.cfg
|
||||
+++ b/target/product/gsi/skip_mount.cfg
|
||||
@@ -1,2 +1,3 @@
|
||||
/product
|
||||
/product_services
|
||||
+/oem
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 2357a8f50b6ec8e1ed4d863c4b18aaed8af6a3db Mon Sep 17 00:00:00 2001
|
||||
From 0fcb4cf13bf9b59218267fa54f4334c397da96f4 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Fri, 2 Mar 2018 22:49:55 +0100
|
||||
Subject: [PATCH 1/6] Enable multipl_decls by default. This is needed because
|
||||
Subject: [PATCH 1/8] Enable multipl_decls by default. This is needed because
|
||||
8.0 init doesn't add -m
|
||||
|
||||
Change-Id: I43dc661d519f7b8576d72a828d8cbd444592bf5e
|
||||
@@ -23,5 +23,5 @@ index ad6862ba..8799e99a 100644
|
||||
int preserve_tunables = 0;
|
||||
int handle_unknown = -1;
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 04ac55163d403dba2d986cb41805663ea5fa465a Mon Sep 17 00:00:00 2001
|
||||
From 59e09675460e91cb989bc04886edb9aed738c63a Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 9 Apr 2018 00:19:49 +0200
|
||||
Subject: [PATCH 2/6] Increase default log_level to get actual selinux error in
|
||||
Subject: [PATCH 2/8] Increase default log_level to get actual selinux error in
|
||||
kmsg
|
||||
|
||||
---
|
||||
@@ -22,5 +22,5 @@ index 8799e99a..631b4b0a 100644
|
||||
{"help", no_argument, 0, 'h'},
|
||||
{"verbose", no_argument, 0, 'v'},
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
From 0883dddcc377f9c8c271b4ee1b5796cca6b9938c Mon Sep 17 00:00:00 2001
|
||||
From bb0fa90347c9acd0a4b215b9f2244d2761667bdc Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 3 Dec 2018 20:54:54 +0100
|
||||
Subject: [PATCH 3/6] ::Kirin:: Workaround some conflicting Kirin tether
|
||||
SELinux context
|
||||
Subject: [PATCH 3/8] Kirin:: Workaround some conflicting Kirin tether SELinux
|
||||
context
|
||||
|
||||
Some Kirin devices declared some android.hardware.tetheroffload HALs,
|
||||
but they didn't use AOSP contexts.
|
||||
@@ -36,5 +36,5 @@ index eaca5947..ab92985b 100644
|
||||
errno = EINVAL;
|
||||
selinux_log
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From fac785e80fa91a71c29c95817110154e4c60464d Mon Sep 17 00:00:00 2001
|
||||
From 8d23d9c14cc95edd2f3fc31433357e6249af1a11 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Fri, 6 Sep 2019 15:07:25 +0200
|
||||
Subject: [PATCH 4/6] Allow /devices/virtual/block/ genfscon conflict (seen on
|
||||
Subject: [PATCH 4/8] Allow /devices/virtual/block/ genfscon conflict (seen on
|
||||
Xiaomi Mi 9)
|
||||
|
||||
Change-Id: I06e4e9d5b82d61a8aeab595b47e2589249675895
|
||||
@@ -39,5 +39,5 @@ index 0b09cecc..255c9e12 100644
|
||||
|
||||
int cil_post_netifcon_context_compare(const void *a, const void *b)
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From c741063fdd7cbb01dda51737db457e4043af0d04 Mon Sep 17 00:00:00 2001
|
||||
From 2613e4dd6fe7b351581799e11980104b25e443f1 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Thu, 12 Sep 2019 20:34:28 +0200
|
||||
Subject: [PATCH 5/6] Most horrific: Remove ramdisk's zygote init scripts
|
||||
Subject: [PATCH 5/8] Most horrific: Remove ramdisk's zygote init scripts
|
||||
|
||||
This is needed because:
|
||||
- only secilc is run soon enough in /system to
|
||||
@@ -40,5 +40,5 @@ index 631b4b0a..3dd6e7ce 100644
|
||||
opt_char = getopt_long(argc, argv, "o:f:U:hvt:M:PDmNc:GX:", long_opts, &opt_index);
|
||||
if (opt_char == -1) {
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 80f7a20f831e6d2028678899c39fe779024433f1 Mon Sep 17 00:00:00 2001
|
||||
From 0646089ab1c663e04dd7ba364c6e06db3fb67695 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Thu, 12 Sep 2019 20:37:04 +0200
|
||||
Subject: [PATCH 6/6] if service is "rcs", accept conflict. Seen on Moto E5
|
||||
Subject: [PATCH 6/8] if service is "rcs", accept conflict. Seen on Moto E5
|
||||
|
||||
Change-Id: I0cc2d0fad83f403f2b5d7458039b1564ce5ed9dd
|
||||
---
|
||||
@@ -40,5 +40,5 @@ index ab92985b..ca16327c 100644
|
||||
selinux_log
|
||||
(SELINUX_WARNING,
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 477ef41ac3a639f4c34c8ecf323d25ed2d3e8e8e Mon Sep 17 00:00:00 2001
|
||||
From 619185d4d8d3af1b86a2aba200659ad6ae09b44a Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Fri, 25 Oct 2019 13:29:20 +0200
|
||||
Subject: [PATCH 7/7] Fix boot on Moto devices using unknown class
|
||||
Subject: [PATCH 7/8] Fix boot on Moto devices using unknown class
|
||||
|
||||
vendor sepolicy never contains new class or classorder, and are not
|
||||
allowed to.
|
||||
@@ -80,5 +80,5 @@ index b90b0f60..6f391940 100644
|
||||
if (rc != SEPOL_OK) {
|
||||
goto exit;
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
From 6e9400a75c7193ba7e4d5050e3a0e71627d38ce8 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.25.1
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From ba695ca22d256bb8a27f699c0759162a48999cf7 Mon Sep 17 00:00:00 2001
|
||||
From fd42c051ba56676ce593d5313ae2d72d85133a6a Mon Sep 17 00:00:00 2001
|
||||
From: Peter Cai <peter@typeblog.net>
|
||||
Date: Tue, 22 Oct 2019 20:54:25 +0800
|
||||
Subject: [PATCH] GrGLCaps: allow ignoring vendor-supplied texture swizzle flag
|
||||
@@ -55,5 +55,5 @@ index 4a97e84cf8..aee7a5509e 100644
|
||||
bool mipMapLevelAndLodControlSupport() const { return fMipMapLevelAndLodControlSupport; }
|
||||
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 5286da2b7f598de0566d1ad1a5e070bdb5d698d1 Mon Sep 17 00:00:00 2001
|
||||
From 9873f460d3a40ca739e4c069068b32990dc2fff8 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Tue, 24 Apr 2018 00:14:28 +0200
|
||||
Subject: [PATCH 01/11] FIH devices: Fix "Earpiece" audio output
|
||||
Subject: [PATCH 01/17] FIH devices: Fix "Earpiece" audio output
|
||||
|
||||
On some FIH devices (confirmed on Razer, and probably on Aquos SS2),
|
||||
Earpiece is not listed in attachedDevices, and devicePort's profile
|
||||
@@ -77,5 +77,5 @@ index 5f820c214..0b561320b 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From ddf773c1e301c5bc37fe156676ad6deb55fb7e8e Mon Sep 17 00:00:00 2001
|
||||
From 09e90d056e41e8ef6d0527e7e34a54053c607b3a Mon Sep 17 00:00:00 2001
|
||||
From: Alexander Pohl <pohl199885@gmail.com>
|
||||
Date: Fri, 15 Jun 2018 19:58:07 +0200
|
||||
Subject: [PATCH 02/11] Fix WiFi-Display on Huawei devices (EMUI 8.0)
|
||||
Subject: [PATCH 02/17] Fix WiFi-Display on Huawei devices (EMUI 8.0)
|
||||
|
||||
Huaweis media stack doesn't handle intra-refresh-mode, so skip the error instead.
|
||||
|
||||
@@ -11,10 +11,10 @@ Thanks to Chris Vandomelen for pointing that out.
|
||||
1 file changed, 2 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/media/libstagefright/ACodec.cpp b/media/libstagefright/ACodec.cpp
|
||||
index 3d67c911a..007b84cea 100644
|
||||
index 55e8130e4..e8b493183 100644
|
||||
--- a/media/libstagefright/ACodec.cpp
|
||||
+++ b/media/libstagefright/ACodec.cpp
|
||||
@@ -4358,9 +4358,8 @@ status_t ACodec::setupAVCEncoderParameters(const sp<AMessage> &msg) {
|
||||
@@ -4366,9 +4366,8 @@ status_t ACodec::setupAVCEncoderParameters(const sp<AMessage> &msg) {
|
||||
if (msg->findInt32("intra-refresh-mode", &intraRefreshMode)) {
|
||||
err = setCyclicIntraMacroblockRefresh(msg, intraRefreshMode);
|
||||
if (err != OK) {
|
||||
@@ -27,5 +27,5 @@ index 3d67c911a..007b84cea 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 6e5e5dbc804ef1aa686731d588bdb959919de29e Mon Sep 17 00:00:00 2001
|
||||
From 90390678c846d34aae136aa1557643619c524830 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sun, 19 Aug 2018 22:59:06 +0200
|
||||
Subject: [PATCH 03/11] ::Kirin:: Remove lock to prevent self-lock
|
||||
Subject: [PATCH 03/17] Kirin:: Remove lock to prevent self-lock
|
||||
|
||||
With Huawei Camera HAL, we get the following call order:
|
||||
cameraserver CameraService::enumerateProviders (*)
|
||||
@@ -17,10 +17,10 @@ Hence the safe-lock
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp
|
||||
index 3e6210294..3736a9e24 100644
|
||||
index 95e4e6eb7..077e3b238 100644
|
||||
--- a/services/camera/libcameraservice/CameraService.cpp
|
||||
+++ b/services/camera/libcameraservice/CameraService.cpp
|
||||
@@ -254,7 +254,7 @@ void CameraService::onNewProviderRegistered() {
|
||||
@@ -271,7 +271,7 @@ bool CameraService::isPublicallyHiddenSecureCamera(const String8& cameraId) {
|
||||
}
|
||||
|
||||
void CameraService::updateCameraNumAndIds() {
|
||||
@@ -30,5 +30,5 @@ index 3e6210294..3736a9e24 100644
|
||||
mNormalDeviceIds =
|
||||
mCameraProviderManager->getAPI1CompatibleCameraDeviceIds();
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,19 +1,20 @@
|
||||
From d76a1c23cb4a61bac8e1cdc33bca4201b5c1972f Mon Sep 17 00:00:00 2001
|
||||
From 1fe92753746f4410f5ac97abcef083276940cfee Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sun, 19 Aug 2018 23:05:26 +0200
|
||||
Subject: [PATCH 04/11] We might not have a mFlashlight at this state, but
|
||||
Subject: [PATCH 04/17] We might not have a mFlashlight at this state, but
|
||||
that's ok
|
||||
|
||||
Change-Id: I0ae65c0be4931b4e3cbda2d0cc64acc4f5018a73
|
||||
---
|
||||
services/camera/libcameraservice/CameraService.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp
|
||||
index 3736a9e24..12ab2f47e 100644
|
||||
index 077e3b238..bbfd90a28 100644
|
||||
--- a/services/camera/libcameraservice/CameraService.cpp
|
||||
+++ b/services/camera/libcameraservice/CameraService.cpp
|
||||
@@ -279,7 +279,7 @@ void CameraService::addStates(const String8 id) {
|
||||
conflicting));
|
||||
@@ -299,7 +299,7 @@ void CameraService::addStates(const String8 id) {
|
||||
isPublicallyHiddenSecureCamera));
|
||||
}
|
||||
|
||||
- if (mFlashlight->hasFlashUnit(id)) {
|
||||
@@ -22,5 +23,5 @@ index 3736a9e24..12ab2f47e 100644
|
||||
mTorchStatusMap.add(id, TorchModeStatus::AVAILABLE_OFF);
|
||||
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From a5bc47c2602ae78b0471e8f55538a4cca083decf Mon Sep 17 00:00:00 2001
|
||||
From 669ad001302e6e6d749ae0f66026c8ce00d259fe Mon Sep 17 00:00:00 2001
|
||||
From: Artem Borisov <dedsa2002@gmail.com>
|
||||
Date: Tue, 25 Sep 2018 12:39:22 +0300
|
||||
Subject: [PATCH 05/11] CameraService: Support calling addStates in
|
||||
Subject: [PATCH 05/17] CameraService: Support calling addStates in
|
||||
enumerateProviders
|
||||
|
||||
Some pre-P camera HALs trigger onDeviceStatusChange callback during HAL init.
|
||||
@@ -22,10 +22,10 @@ Change-Id: Ife25b9753fdb679ab0c77f385e1b8527551a4711
|
||||
1 file changed, 16 insertions(+)
|
||||
|
||||
diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp
|
||||
index 12ab2f47e..d208a36a9 100644
|
||||
index bbfd90a28..7046384b3 100644
|
||||
--- a/services/camera/libcameraservice/CameraService.cpp
|
||||
+++ b/services/camera/libcameraservice/CameraService.cpp
|
||||
@@ -204,6 +204,20 @@ status_t CameraService::enumerateProviders() {
|
||||
@@ -212,6 +212,20 @@ status_t CameraService::enumerateProviders() {
|
||||
|
||||
for (auto& cameraId : deviceIds) {
|
||||
String8 id8 = String8(cameraId.c_str());
|
||||
@@ -46,7 +46,7 @@ index 12ab2f47e..d208a36a9 100644
|
||||
if (getCameraState(id8) == nullptr) {
|
||||
onDeviceStatusChanged(id8, CameraDeviceStatus::PRESENT);
|
||||
}
|
||||
@@ -317,8 +331,10 @@ void CameraService::onDeviceStatusChanged(const String8& id,
|
||||
@@ -337,8 +351,10 @@ void CameraService::onDeviceStatusChanged(const String8& id,
|
||||
ALOGI("%s: Unknown camera ID %s, a new camera is added",
|
||||
__FUNCTION__, id.string());
|
||||
|
||||
@@ -58,5 +58,5 @@ index 12ab2f47e..d208a36a9 100644
|
||||
updateStatus(newStatus, id);
|
||||
} else {
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 04e7317ef801f4124f4a074519d7a077dac14702 Mon Sep 17 00:00:00 2001
|
||||
From 8ad118d1fcfba6e9911aa099f354594787ad264b Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sun, 9 Dec 2018 15:56:59 +0100
|
||||
Subject: [PATCH 06/11] Revert "Set rlimit rtprio for cameraserver"
|
||||
Subject: [PATCH 06/17] Revert "Set rlimit rtprio for cameraserver"
|
||||
|
||||
This reverts commit 4ae244cab4fe715fc2729e906b7dda3075fbbac3.
|
||||
|
||||
@@ -21,5 +21,5 @@ index a9aae0b15..fea5a1d5c 100644
|
||||
writepid /dev/cpuset/camera-daemon/tasks /dev/stune/top-app/tasks
|
||||
- rlimit rtprio 10 10
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From bb6f508a514d09fdab79583886f7953dd42bfa0c Mon Sep 17 00:00:00 2001
|
||||
From 293b2fb176c081a4e3db518009864c1a4c4053fd Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Wed, 4 Sep 2019 22:28:56 +0200
|
||||
Subject: [PATCH 07/11] fixup! FIH devices: Fix "Earpiece" audio output
|
||||
Subject: [PATCH 07/17] fixup! FIH devices: Fix "Earpiece" audio output
|
||||
|
||||
---
|
||||
.../audiopolicy/common/managerdefinitions/src/Serializer.cpp | 3 ++-
|
||||
@@ -29,5 +29,5 @@ index 0b561320b..c8cb54b5f 100644
|
||||
status = deserializeCollection<AudioProfileTraits>(cur, &profiles, NULL);
|
||||
if (status != NO_ERROR) {
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 582695245e6ce2bafaf3b11b9d3b69dcf88d0037 Mon Sep 17 00:00:00 2001
|
||||
From 6f4e7e032ca73db15cb01737c24de543780718da Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 5 Aug 2019 17:27:47 +0200
|
||||
Subject: [PATCH 08/11] Fix use-after-free (object on stack)
|
||||
Subject: [PATCH 08/17] Fix use-after-free (object on stack)
|
||||
|
||||
Change-Id: I9ae666b10873eac4e7a55032071e7b15b0de058a
|
||||
---
|
||||
@@ -22,5 +22,5 @@ index c8cb54b5f..9f2bdc4b3 100644
|
||||
std::string address = getXmlAttribute(cur, Attributes::address);
|
||||
if (!address.empty()) {
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From c02350cbd42543fdfac9bd61b630182a0da1ecf9 Mon Sep 17 00:00:00 2001
|
||||
From f303633bdac9176d45ca8a9073f2f9850406ebf8 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 5 Aug 2019 18:09:50 +0200
|
||||
Subject: [PATCH 09/11] Fix BT in-call on CAF devices
|
||||
Subject: [PATCH 09/17] Fix BT in-call on CAF devices
|
||||
|
||||
See https://github.com/phhusson/treble_experimentations/issues/374
|
||||
|
||||
@@ -125,5 +125,5 @@ index 9f2bdc4b3..9c7e5c49d 100644
|
||||
|
||||
for (const xmlNode *children = cur->xmlChildrenNode; children != NULL;
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From a71fbad371842877a92190204450b5c6753b3509 Mon Sep 17 00:00:00 2001
|
||||
From 7125c20e64937da5ee8134baae39e2136629b307 Mon Sep 17 00:00:00 2001
|
||||
From: Vincent Vidal <vincent.vidal@onera.fr>
|
||||
Date: Thu, 12 Sep 2019 14:17:14 +0200
|
||||
Subject: [PATCH 10/11] Fix null pointer for unknown audio sources in "Fix BT
|
||||
Subject: [PATCH 10/17] Fix null pointer for unknown audio sources in "Fix BT
|
||||
in-call on CAF devices"
|
||||
|
||||
Some audio sources may not exist on some devices (e.g. Axon 7), leading to a segmentation fault.
|
||||
@@ -27,5 +27,5 @@ index 9c7e5c49d..8bfdb5b0a 100644
|
||||
|
||||
newRoute->setSources(sources);
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 92aac43c368e3123ac419ad2c293de3abf0f0b3b Mon Sep 17 00:00:00 2001
|
||||
From 53e025a518a6a662f533e2e08b50ebaed223957c Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Tue, 1 Oct 2019 13:35:49 +0200
|
||||
Subject: [PATCH 11/11] Add (partial, cam id is hardcoded) support for Asus ZF6
|
||||
Subject: [PATCH 11/17] Add (partial, cam id is hardcoded) support for Asus ZF6
|
||||
motor camera
|
||||
|
||||
Change-Id: Iea6e1370780a1d16f728748d1d948d092532d8fe
|
||||
@@ -11,7 +11,7 @@ Change-Id: Iea6e1370780a1d16f728748d1d948d092532d8fe
|
||||
2 files changed, 29 insertions(+)
|
||||
|
||||
diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp
|
||||
index d208a36a9..37752becd 100644
|
||||
index 7046384b3..100db9e3c 100644
|
||||
--- a/services/camera/libcameraservice/CameraService.cpp
|
||||
+++ b/services/camera/libcameraservice/CameraService.cpp
|
||||
@@ -25,6 +25,7 @@
|
||||
@@ -22,7 +22,7 @@ index d208a36a9..37752becd 100644
|
||||
#include <inttypes.h>
|
||||
#include <pthread.h>
|
||||
|
||||
@@ -128,6 +129,7 @@ Mutex CameraService::sProxyMutex;
|
||||
@@ -133,6 +134,7 @@ Mutex CameraService::sProxyMutex;
|
||||
sp<hardware::ICameraServiceProxy> CameraService::sCameraServiceProxy;
|
||||
|
||||
CameraService::CameraService() :
|
||||
@@ -30,15 +30,15 @@ index d208a36a9..37752becd 100644
|
||||
mEventLog(DEFAULT_EVENT_LOG_LENGTH),
|
||||
mNumberOfCameras(0),
|
||||
mSoundRef(0), mInitialized(false) {
|
||||
@@ -1538,6 +1540,7 @@ Status CameraService::connectHelper(const sp<CALLBACK>& cameraCb, const String8&
|
||||
@@ -1579,6 +1581,7 @@ Status CameraService::connectHelper(const sp<CALLBACK>& cameraCb, const String8&
|
||||
mServiceLock.lock();
|
||||
} else {
|
||||
// Otherwise, add client to active clients list
|
||||
+ physicalFrontCam(cameraId == "1");
|
||||
finishConnectLocked(client, partial);
|
||||
}
|
||||
} // lock is destroyed, allow further connect calls
|
||||
@@ -1548,6 +1551,27 @@ Status CameraService::connectHelper(const sp<CALLBACK>& cameraCb, const String8&
|
||||
|
||||
sp<ICameraMotor> cameraMotor = ICameraMotor::getService();
|
||||
@@ -1594,6 +1597,27 @@ Status CameraService::connectHelper(const sp<CALLBACK>& cameraCb, const String8&
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -66,9 +66,9 @@ index d208a36a9..37752becd 100644
|
||||
Status CameraService::setTorchMode(const String16& cameraId, bool enabled,
|
||||
const sp<IBinder>& clientBinder) {
|
||||
Mutex::Autolock lock(mServiceLock);
|
||||
@@ -2405,6 +2429,8 @@ binder::Status CameraService::BasicClient::disconnect() {
|
||||
@@ -2466,6 +2490,8 @@ binder::Status CameraService::BasicClient::disconnect() {
|
||||
cameraMotor->onDisconnect(mCameraIdStr.string());
|
||||
}
|
||||
mDisconnected = true;
|
||||
|
||||
+ sCameraService->physicalFrontCam(false);
|
||||
+
|
||||
@@ -76,7 +76,7 @@ index d208a36a9..37752becd 100644
|
||||
sCameraService->logDisconnected(mCameraIdStr, mClientPid, String8(mClientPackageName));
|
||||
sCameraService->mCameraProviderManager->removeRef(CameraProviderManager::DeviceMode::CAMERA,
|
||||
diff --git a/services/camera/libcameraservice/CameraService.h b/services/camera/libcameraservice/CameraService.h
|
||||
index 065157dad..6d22da619 100644
|
||||
index bcaca9ffc..2607bc257 100644
|
||||
--- a/services/camera/libcameraservice/CameraService.h
|
||||
+++ b/services/camera/libcameraservice/CameraService.h
|
||||
@@ -182,6 +182,9 @@ public:
|
||||
@@ -90,5 +90,5 @@ index 065157dad..6d22da619 100644
|
||||
// Client functionality
|
||||
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
From 922e144d1ceba361f0a92372e3fda5161249fc74 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Tue, 3 Dec 2019 14:04:17 +0100
|
||||
Subject: [PATCH 12/17] Fix for some Huawei camera (that's not ideal because it
|
||||
is a revert, it needs to be further investigated and cleaned)
|
||||
|
||||
---
|
||||
services/camera/libcameraservice/CameraService.cpp | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp
|
||||
index 100db9e3c..6a68a40b9 100644
|
||||
--- a/services/camera/libcameraservice/CameraService.cpp
|
||||
+++ b/services/camera/libcameraservice/CameraService.cpp
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
#define LOG_TAG "CameraService"
|
||||
#define ATRACE_TAG ATRACE_TAG_CAMERA
|
||||
-//#define LOG_NDEBUG 0
|
||||
+#define LOG_NDEBUG 0
|
||||
|
||||
#include <algorithm>
|
||||
#include <climits>
|
||||
@@ -228,9 +228,9 @@ status_t CameraService::enumerateProviders() {
|
||||
}
|
||||
}
|
||||
|
||||
- if (getCameraState(id8) == nullptr) {
|
||||
+ //if (getCameraState(id8) == nullptr) {
|
||||
onDeviceStatusChanged(id8, CameraDeviceStatus::PRESENT);
|
||||
- }
|
||||
+ //}
|
||||
}
|
||||
|
||||
return OK;
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
From 00a797e23bf88d6cd28f32155a02c40b4f9b91cb Mon Sep 17 00:00:00 2001
|
||||
From: Peter Cai <peter@typeblog.net>
|
||||
Date: Thu, 23 Jan 2020 11:13:43 +0800
|
||||
Subject: [PATCH 13/17] audiopolicy: try again with trimmed audio port name if
|
||||
not found
|
||||
|
||||
* In Spreadtrum BSP, some audio routes may contain ports with extra
|
||||
spaces at the beginning and the end, causing audiopolicy to refuse to
|
||||
load and leading to broken audio.
|
||||
|
||||
* Fix this by retrying with trimmed port name when not found. Do not
|
||||
use trimmed name all the time because a white space is a valid
|
||||
character in port name, and we cannot be sure nobody is using it for
|
||||
legitimite purposes.
|
||||
---
|
||||
.../managerdefinitions/src/Serializer.cpp | 18 ++++++++++++++++--
|
||||
1 file changed, 16 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||
index 8bfdb5b0a..4bdb082ba 100644
|
||||
--- a/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||
+++ b/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
|
||||
@@ -550,6 +550,17 @@ Return<DevicePortTraits::Element> DevicePortTraits::deserialize(const xmlNode *c
|
||||
return deviceDesc;
|
||||
}
|
||||
|
||||
+char* trim(char * s) {
|
||||
+ int l = strlen(s);
|
||||
+
|
||||
+ if (l > 0) {
|
||||
+ while (isspace(s[l - 1])) --l;
|
||||
+ while (*s && isspace(*s)) ++s, --l;
|
||||
+ }
|
||||
+
|
||||
+ return strndup(s, l);
|
||||
+}
|
||||
+
|
||||
Return<RouteTraits::Element> RouteTraits::deserialize(const xmlNode *cur, PtrSerializingCtx ctx)
|
||||
{
|
||||
std::string type = getXmlAttribute(cur, Attributes::type);
|
||||
@@ -590,8 +601,11 @@ Return<RouteTraits::Element> RouteTraits::deserialize(const xmlNode *cur, PtrSer
|
||||
if (strlen(devTag) != 0) {
|
||||
sp<AudioPort> source = ctx->findPortByTagName(String8(devTag));
|
||||
if (source == NULL) {
|
||||
- ALOGE("%s: no source found with name=%s", __func__, devTag);
|
||||
- return Status::fromStatusT(BAD_VALUE);
|
||||
+ source = ctx->findPortByTagName(String8(trim(devTag)));
|
||||
+ if (source == NULL) {
|
||||
+ ALOGE("%s: no source found with name=%s", __func__, devTag);
|
||||
+ return Status::fromStatusT(BAD_VALUE);
|
||||
+ }
|
||||
}
|
||||
sources.add(source);
|
||||
}
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
From e17862fc2b519ccddf7d578968a89f35ceaacfb1 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 13 Apr 2020 21:01:16 +0200
|
||||
Subject: [PATCH 14/17] There are three SCO devices. Fallback from one to the
|
||||
others if needed
|
||||
|
||||
---
|
||||
.../managerdefinitions/src/HwModule.cpp | 21 +++++++++++++++++++
|
||||
1 file changed, 21 insertions(+)
|
||||
|
||||
diff --git a/services/audiopolicy/common/managerdefinitions/src/HwModule.cpp b/services/audiopolicy/common/managerdefinitions/src/HwModule.cpp
|
||||
index 1f9b725a2..ecba6023d 100644
|
||||
--- a/services/audiopolicy/common/managerdefinitions/src/HwModule.cpp
|
||||
+++ b/services/audiopolicy/common/managerdefinitions/src/HwModule.cpp
|
||||
@@ -294,6 +294,27 @@ sp <HwModule> HwModuleCollection::getModuleForDeviceTypes(audio_devices_t type,
|
||||
}
|
||||
}
|
||||
}
|
||||
+ //We didn't find one? Ok but all SCOs are equivalent surely?
|
||||
+ if(type == AUDIO_DEVICE_OUT_BLUETOOTH_SCO ||
|
||||
+ type == AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET ||
|
||||
+ type == AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT) {
|
||||
+ ALOGE("Fallback SCO");
|
||||
+ if(type != AUDIO_DEVICE_OUT_BLUETOOTH_SCO) {
|
||||
+ auto ret = getModuleForDeviceTypes(AUDIO_DEVICE_OUT_BLUETOOTH_SCO, encodedFormat);
|
||||
+ ALOGE("Fallback SCO simple? %s", (ret != nullptr) ? "yes" : "no");
|
||||
+ if(ret != nullptr) return ret;
|
||||
+ }
|
||||
+ if(type != AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET) {
|
||||
+ auto ret = getModuleForDeviceTypes(AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET, encodedFormat);
|
||||
+ ALOGE("Fallback SCO headset? %s", (ret != nullptr) ? "yes" : "no");
|
||||
+ if(ret != nullptr) return ret;
|
||||
+ }
|
||||
+ if(type != AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT) {
|
||||
+ auto ret = getModuleForDeviceTypes(AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT, encodedFormat);
|
||||
+ ALOGE("Fallback SCO carkit? %s", (ret != nullptr) ? "yes" : "no");
|
||||
+ if(ret != nullptr) return ret;
|
||||
+ }
|
||||
+ }
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
From 9fef86bc540a7fa95432d5bc8da3fc18b07ae843 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 15/17] 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.25.1
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
From b629b586c808f6e8e3415b578f10fe02b63b1631 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 16/17] 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 93e18cfee..9cc44f1ec 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.25.1
|
||||
|
||||
@@ -0,0 +1,325 @@
|
||||
From 95e61a23a96f0274d222e4ef84ee8583fc36baab 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 17/17] 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 e8b493183..310740ab5 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 4bdb082ba..d144f8991 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 642559089..c5fad0d6c 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.25.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 9f8c77fea17968dd20e76b83b28f2fce2630a087 Mon Sep 17 00:00:00 2001
|
||||
From 005da321c7023c10bb9eb637b9bde2c9bff065d1 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sat, 24 Mar 2018 08:01:48 +0100
|
||||
Subject: [PATCH 01/36] Fix backlight control on Galaxy S9(+)
|
||||
Subject: [PATCH 01/58] Fix backlight control on Galaxy S9(+)
|
||||
|
||||
Change-Id: I1fbbb47939c377597ef8ad6b88b2acea5f4acaa6
|
||||
---
|
||||
@@ -9,10 +9,10 @@ Change-Id: I1fbbb47939c377597ef8ad6b88b2acea5f4acaa6
|
||||
1 file changed, 13 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
|
||||
index ac906bb23d3..e23e2cd3c4d 100644
|
||||
index 0a308846181..347543584e4 100644
|
||||
--- a/services/core/java/com/android/server/lights/LightsService.java
|
||||
+++ b/services/core/java/com/android/server/lights/LightsService.java
|
||||
@@ -21,6 +21,7 @@ import android.os.Handler;
|
||||
@@ -22,6 +22,7 @@ import android.os.Handler;
|
||||
import android.os.IBinder;
|
||||
import android.os.Message;
|
||||
import android.os.PowerManager;
|
||||
@@ -20,7 +20,7 @@ index ac906bb23d3..e23e2cd3c4d 100644
|
||||
import android.os.Trace;
|
||||
import android.provider.Settings;
|
||||
import android.util.Slog;
|
||||
@@ -71,6 +72,7 @@ public class LightsService extends SystemService {
|
||||
@@ -72,6 +73,7 @@ public class LightsService extends SystemService {
|
||||
": brightness=0x" + Integer.toHexString(brightness));
|
||||
return;
|
||||
}
|
||||
@@ -28,7 +28,7 @@ index ac906bb23d3..e23e2cd3c4d 100644
|
||||
// Ideally, we'd like to set the brightness mode through the SF/HWC as well, but
|
||||
// right now we just fall back to the old path through Lights brightessMode is
|
||||
// anything but USER or the device shouldBeInLowPersistenceMode().
|
||||
@@ -86,11 +88,18 @@ public class LightsService extends SystemService {
|
||||
@@ -88,11 +90,18 @@ public class LightsService extends SystemService {
|
||||
}
|
||||
SurfaceControl.setDisplayBrightness(mDisplayToken,
|
||||
(float) brightness / mSurfaceControlMaximumBrightness);
|
||||
@@ -52,5 +52,5 @@ index ac906bb23d3..e23e2cd3c4d 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From ae073ba9abbd86e82d06261ad260ea27fbc04f14 Mon Sep 17 00:00:00 2001
|
||||
From 318cda922fc2b2ed25519fc92bb58da4dc349db6 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Tue, 28 Nov 2017 18:28:04 +0100
|
||||
Subject: [PATCH] Relax requirement for visible flag to sdcards
|
||||
Subject: [PATCH 02/58] Relax requirement for visible flag to sdcards
|
||||
|
||||
The vast majority of sdcard readers are stable enough to be declared by
|
||||
the API. (I see no counter-example)
|
||||
@@ -13,10 +13,10 @@ Change-Id: Ia616671c03562d1eadaff5531a5c708a62d7ad3a
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java
|
||||
index 72f40cc0351..20ffd687e89 100644
|
||||
index 263efacb097..39a60e1778f 100644
|
||||
--- a/services/core/java/com/android/server/StorageManagerService.java
|
||||
+++ b/services/core/java/com/android/server/StorageManagerService.java
|
||||
@@ -1282,7 +1282,8 @@ class StorageManagerService extends IStorageManager.Stub
|
||||
@@ -1283,7 +1283,8 @@ class StorageManagerService extends IStorageManager.Stub
|
||||
|
||||
// Adoptable public disks are visible to apps, since they meet
|
||||
// public API requirement of being in a stable location.
|
||||
@@ -27,5 +27,5 @@ index 72f40cc0351..20ffd687e89 100644
|
||||
} else if (vol.disk.isSd()) {
|
||||
vol.mountFlags |= VolumeInfo.MOUNT_FLAG_VISIBLE;
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 78dcdf304f0baa325fe8d39e2e7cb64b46b9a089 Mon Sep 17 00:00:00 2001
|
||||
From cc8745759acea40bb31f384b4fb70d33c4dd6a00 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Tue, 1 May 2018 17:47:36 +0200
|
||||
Subject: [PATCH 03/36] Also scan /system/overlay
|
||||
Subject: [PATCH 03/58] Also scan /system/overlay
|
||||
|
||||
Change-Id: Ib0223560606b80cdaaa986b159b34b4db0154589
|
||||
---
|
||||
@@ -34,10 +34,10 @@ index 2b471fec9c8..4518c7e66a5 100644
|
||||
if (argc > 5) {
|
||||
execv(AssetManager::IDMAP_BIN, (char* const*)argv);
|
||||
diff --git a/core/jni/fd_utils.cpp b/core/jni/fd_utils.cpp
|
||||
index fa5f931470b..488c2f8e9e8 100644
|
||||
index 8ba2559ec2e..45b3c6a909d 100644
|
||||
--- a/core/jni/fd_utils.cpp
|
||||
+++ b/core/jni/fd_utils.cpp
|
||||
@@ -118,7 +118,8 @@ bool FileDescriptorWhitelist::IsAllowed(const std::string& path) const {
|
||||
@@ -119,7 +119,8 @@ bool FileDescriptorWhitelist::IsAllowed(const std::string& path) const {
|
||||
|| android::base::StartsWith(path, kSystemOdmOverlayDir)
|
||||
|| android::base::StartsWith(path, kOdmOverlayDir)
|
||||
|| android::base::StartsWith(path, kSystemOemOverlayDir)
|
||||
@@ -48,5 +48,5 @@ index fa5f931470b..488c2f8e9e8 100644
|
||||
&& path.find("/../") == std::string::npos) {
|
||||
return true;
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
From e1a57d1f38bb45e69c9a2178ab34fd08adafe810 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Thu, 17 May 2018 20:28:35 +0200
|
||||
Subject: [PATCH 04/36] Don't crash if there is IR HAL is not declared
|
||||
|
||||
---
|
||||
services/core/java/com/android/server/ConsumerIrService.java | 2 --
|
||||
1 file changed, 2 deletions(-)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/ConsumerIrService.java b/services/core/java/com/android/server/ConsumerIrService.java
|
||||
index 2ed6c77baa0..c574a03c9a3 100644
|
||||
--- a/services/core/java/com/android/server/ConsumerIrService.java
|
||||
+++ b/services/core/java/com/android/server/ConsumerIrService.java
|
||||
@@ -50,8 +50,6 @@ public class ConsumerIrService extends IConsumerIrService.Stub {
|
||||
if (!mHasNativeHal) {
|
||||
throw new RuntimeException("FEATURE_CONSUMER_IR present, but no IR HAL loaded!");
|
||||
}
|
||||
- } else if (mHasNativeHal) {
|
||||
- throw new RuntimeException("IR HAL present, but FEATURE_CONSUMER_IR is not set!");
|
||||
}
|
||||
}
|
||||
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
From c318f6086d6c12bb92de652440ee985256fd60c2 Mon Sep 17 00:00:00 2001
|
||||
From cd2464e7cfe3b9effe431e66a06fd1a8f42fe04d Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Wed, 30 May 2018 14:05:30 +0200
|
||||
Subject: [PATCH 05/36] Fix(?) #62
|
||||
Subject: [PATCH 04/58] Fix(?) #62
|
||||
|
||||
---
|
||||
.../src/com/android/keyguard/KeyguardUpdateMonitor.java | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
|
||||
index 6a4dbc8d722..39535c32860 100644
|
||||
index 98323908c8d..5b69c434f46 100644
|
||||
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
|
||||
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
|
||||
@@ -1117,7 +1117,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
|
||||
@@ -1214,7 +1214,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
|
||||
|
||||
@Override
|
||||
public void onAuthenticationError(int errMsgId, CharSequence errString) {
|
||||
@@ -24,5 +24,5 @@ index 6a4dbc8d722..39535c32860 100644
|
||||
|
||||
@Override
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 6556ccbc704c6cb4a3bae5e9411082f6e1e1ff71 Mon Sep 17 00:00:00 2001
|
||||
From 21dbb7af9d7f40b7f28a763a7498326e18d1f6d1 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <pierre-hugues.husson@softathome.com>
|
||||
Date: Thu, 7 Jun 2018 13:36:51 +0200
|
||||
Subject: [PATCH 06/36] S9 brightness override only for screen
|
||||
Subject: [PATCH 05/58] S9 brightness override only for screen
|
||||
|
||||
Change-Id: Ie16a46336fa64850014b962429f7a20ff569222f
|
||||
---
|
||||
@@ -9,10 +9,10 @@ Change-Id: Ie16a46336fa64850014b962429f7a20ff569222f
|
||||
1 file changed, 7 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
|
||||
index e23e2cd3c4d..327979166c2 100644
|
||||
index 347543584e4..bc424682a86 100644
|
||||
--- a/services/core/java/com/android/server/lights/LightsService.java
|
||||
+++ b/services/core/java/com/android/server/lights/LightsService.java
|
||||
@@ -91,11 +91,13 @@ public class LightsService extends SystemService {
|
||||
@@ -93,11 +93,13 @@ public class LightsService extends SystemService {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -32,5 +32,5 @@ index e23e2cd3c4d..327979166c2 100644
|
||||
int color = brightness & 0x000000ff;
|
||||
color = 0xff000000 | (color << 16) | (color << 8) | color;
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
From 21d4fc3b58aa737f78378c0df4987604bf4e32e0 Mon Sep 17 00:00:00 2001
|
||||
From 464f2398bb33b5d9e3e9ea0ec150e8c180e2a808 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <pierre-hugues.husson@softathome.com>
|
||||
Date: Thu, 7 Jun 2018 13:42:02 +0200
|
||||
Subject: [PATCH 07/36] [WIP] Fix OP6 brightness
|
||||
Subject: [PATCH 06/58] Fix OP6 brightness
|
||||
|
||||
---
|
||||
.../com/android/server/lights/LightsService.java | 12 ++++++++++++
|
||||
1 file changed, 12 insertions(+)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
|
||||
index 327979166c2..f0035c67f4a 100644
|
||||
index bc424682a86..c33a9c6cb1b 100644
|
||||
--- a/services/core/java/com/android/server/lights/LightsService.java
|
||||
+++ b/services/core/java/com/android/server/lights/LightsService.java
|
||||
@@ -97,6 +97,18 @@ public class LightsService extends SystemService {
|
||||
@@ -99,6 +99,18 @@ public class LightsService extends SystemService {
|
||||
setLightLocked(brightness*100, LIGHT_FLASH_HARDWARE, 0, 0, brightnessMode);
|
||||
return;
|
||||
}
|
||||
@@ -31,5 +31,5 @@ index 327979166c2..f0035c67f4a 100644
|
||||
|
||||
int color = brightness & 0x000000ff;
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 7235d15f8ba322a1806a8736751cac88cecb9b53 Mon Sep 17 00:00:00 2001
|
||||
From f61186905bf0425fe8a56c966fb87adbefea61f4 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sun, 10 Jun 2018 22:54:55 +0200
|
||||
Subject: [PATCH 08/36] Try to make brightness more generic using property set
|
||||
Subject: [PATCH 07/58] Try to make brightness more generic using property set
|
||||
by rw-system
|
||||
|
||||
---
|
||||
@@ -9,10 +9,10 @@ Subject: [PATCH 08/36] Try to make brightness more generic using property set
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
|
||||
index f0035c67f4a..529026a1e7c 100644
|
||||
index c33a9c6cb1b..b2f444f00e1 100644
|
||||
--- a/services/core/java/com/android/server/lights/LightsService.java
|
||||
+++ b/services/core/java/com/android/server/lights/LightsService.java
|
||||
@@ -100,9 +100,11 @@ public class LightsService extends SystemService {
|
||||
@@ -102,9 +102,11 @@ public class LightsService extends SystemService {
|
||||
|
||||
boolean qcomExtendBrightness = SystemProperties.getBoolean("persist.extend.brightness", false);
|
||||
int scale = SystemProperties.getInt("persist.display.max_brightness", 1023);
|
||||
@@ -27,5 +27,5 @@ index f0035c67f4a..529026a1e7c 100644
|
||||
|
||||
if(qcomExtendBrightness) {
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 5d557f64f712c73d97669f10532b5a2867c6f1d3 Mon Sep 17 00:00:00 2001
|
||||
From 397240e75f8a5e80280f9f0cd8fb0133a509ef94 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Tue, 12 Jun 2018 22:55:32 +0200
|
||||
Subject: [PATCH 09/36] property-matching RROs: allow to prefix the value with
|
||||
Subject: [PATCH 08/58] property-matching RROs: allow to prefix the value with
|
||||
+ to do glob match instead of exact match
|
||||
|
||||
---
|
||||
@@ -31,5 +31,5 @@ index d69dd79555a..2be6d23ac78 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From a95da9d8c3508280233a42dcbfc6440fbc95c563 Mon Sep 17 00:00:00 2001
|
||||
From 2d5671a1241bcb8cdee11180de11a04c4f184a2d Mon Sep 17 00:00:00 2001
|
||||
From: Song Fuchang <song.fc@gmail.com>
|
||||
Date: Sun, 17 Jun 2018 22:39:37 +0800
|
||||
Subject: [PATCH 10/36] Fix typo on fnmatch return value check
|
||||
Subject: [PATCH 09/58] Fix typo on fnmatch return value check
|
||||
|
||||
---
|
||||
cmds/idmap/scan.cpp | 2 +-
|
||||
@@ -21,5 +21,5 @@ index 2be6d23ac78..0acff23d031 100644
|
||||
|
||||
return (strcmp(propBuf, val) == 0);
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
From 695e8613f1bcee3f03269eb7f28ed9a91b41e2ad Mon Sep 17 00:00:00 2001
|
||||
From 506721861c7d8844885e03d0115272d643eb148d Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 25 Jun 2018 22:43:32 +0200
|
||||
Subject: [PATCH 11/36] Add Qualcomm starlte
|
||||
Subject: [PATCH 10/58] Add Qualcomm starlte
|
||||
|
||||
---
|
||||
.../core/java/com/android/server/lights/LightsService.java | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
|
||||
index 529026a1e7c..65f9ea87ae5 100644
|
||||
index b2f444f00e1..939437f82a4 100644
|
||||
--- a/services/core/java/com/android/server/lights/LightsService.java
|
||||
+++ b/services/core/java/com/android/server/lights/LightsService.java
|
||||
@@ -93,7 +93,9 @@ public class LightsService extends SystemService {
|
||||
@@ -95,7 +95,9 @@ public class LightsService extends SystemService {
|
||||
|
||||
if(mId == 0) {
|
||||
String fp = SystemProperties.get("ro.vendor.build.fingerprint", "hello");
|
||||
@@ -23,5 +23,5 @@ index 529026a1e7c..65f9ea87ae5 100644
|
||||
return;
|
||||
}
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
From f1176c850abc148002e5986db5ccecac116b91c9 Mon Sep 17 00:00:00 2001
|
||||
From df349c13c31ac523ac0e054338f9270049a428bd Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 2 Jul 2018 23:36:39 +0200
|
||||
Subject: [PATCH 12/36] [Galaxy S9] "remaining" of HAL onEnroll is actually a
|
||||
percent of progress
|
||||
Subject: [PATCH 11/58] "remaining" of HAL onEnroll is actually a percent of
|
||||
progress
|
||||
|
||||
Change-Id: I8a586163eca93ae3c5bd968d1e7ddbf994ddcc91
|
||||
---
|
||||
@@ -10,10 +10,10 @@ Change-Id: I8a586163eca93ae3c5bd968d1e7ddbf994ddcc91
|
||||
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
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 24fd1b7a6da..dc56a95217c 100644
|
||||
index 320e1022873..9789c49f069 100644
|
||||
--- a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
|
||||
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
|
||||
@@ -588,7 +588,13 @@ public class FingerprintService extends BiometricServiceBase {
|
||||
@@ -590,7 +590,13 @@ public class FingerprintService extends BiometricServiceBase {
|
||||
final Fingerprint fingerprint =
|
||||
new Fingerprint(getBiometricUtils().getUniqueName(getContext(), groupId),
|
||||
groupId, fingerId, deviceId);
|
||||
@@ -29,5 +29,5 @@ index 24fd1b7a6da..dc56a95217c 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
From ca9cc0e485753ac43ea8fba76638b00495669f39 Mon Sep 17 00:00:00 2001
|
||||
From 5727db8ca1ca71a847443b2d37a2ab4ed45b01ed Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 6 Aug 2018 12:49:00 +0200
|
||||
Subject: [PATCH 13/36] Show APN Settings for CDMA carriers
|
||||
Subject: [PATCH 12/58] Show APN Settings for CDMA carriers
|
||||
|
||||
---
|
||||
telephony/java/android/telephony/CarrierConfigManager.java | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
|
||||
index 19f8203f750..4e0fcbb7358 100755
|
||||
index e209a42c4ba..7f19121d78c 100644
|
||||
--- a/telephony/java/android/telephony/CarrierConfigManager.java
|
||||
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
|
||||
@@ -3073,7 +3073,7 @@ public class CarrierConfigManager {
|
||||
@@ -3333,7 +3333,7 @@ public class CarrierConfigManager {
|
||||
sDefaults.putBoolean(KEY_MDN_IS_ADDITIONAL_VOICEMAIL_NUMBER_BOOL, false);
|
||||
sDefaults.putBoolean(KEY_OPERATOR_SELECTION_EXPAND_BOOL, true);
|
||||
sDefaults.putBoolean(KEY_PREFER_2G_BOOL, true);
|
||||
@@ -21,5 +21,5 @@ index 19f8203f750..4e0fcbb7358 100755
|
||||
sDefaults.putBoolean(KEY_SMS_REQUIRES_DESTINATION_NUMBER_CONVERSION_BOOL, false);
|
||||
sDefaults.putBoolean(KEY_SUPPORT_EMERGENCY_SMS_OVER_IMS_BOOL, false);
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 1597769b8c2d3faabd76ba20368409293709a2d5 Mon Sep 17 00:00:00 2001
|
||||
From 8ad9065fbaa02e368be5ba5576fe98ff1f4be856 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sun, 19 Aug 2018 10:51:06 +0200
|
||||
Subject: [PATCH 14/36] idmap: Don't silently ignore RROs with same priority
|
||||
Subject: [PATCH 13/58] idmap: Don't silently ignore RROs with same priority
|
||||
|
||||
Change-Id: I64a6899f1b30e0cd9e9a872b7ca83d831f038cbe
|
||||
---
|
||||
@@ -22,5 +22,5 @@ index 0acff23d031..d1dde52732f 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From d7a6847541ff67793487d581067ca724b3144c60 Mon Sep 17 00:00:00 2001
|
||||
From 238fc8c9b0297df0205b988a4fcccc4dc8b620bc Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Tue, 21 Aug 2018 22:24:02 +0200
|
||||
Subject: [PATCH] Don't wake IR HAL to the infinity and beyond
|
||||
Subject: [PATCH 14/58] Don't wake IR HAL to the infinity and beyond
|
||||
|
||||
---
|
||||
.../core/java/com/android/server/ConsumerIrService.java | 7 -------
|
||||
@@ -40,5 +40,5 @@ index 2ca348b3ae4..148fba9a688 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 410c6135bef8bc83e49b182f7d3408c46ca47584 Mon Sep 17 00:00:00 2001
|
||||
From eb32a6fa5aebe2e021ba998ddf3970275b4da9a9 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Thu, 23 Aug 2018 23:39:16 +0200
|
||||
Subject: [PATCH 18/36] Switch samsung light fingerprint match to regexp, to
|
||||
Subject: [PATCH 15/58] Switch samsung light fingerprint match to regexp, to
|
||||
include Note9
|
||||
|
||||
---
|
||||
@@ -9,10 +9,10 @@ Subject: [PATCH 18/36] Switch samsung light fingerprint match to regexp, to
|
||||
1 file changed, 1 insertion(+), 3 deletions(-)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
|
||||
index 65f9ea87ae5..aa014bf9ff4 100644
|
||||
index 939437f82a4..f7c07044d66 100644
|
||||
--- a/services/core/java/com/android/server/lights/LightsService.java
|
||||
+++ b/services/core/java/com/android/server/lights/LightsService.java
|
||||
@@ -93,9 +93,7 @@ public class LightsService extends SystemService {
|
||||
@@ -95,9 +95,7 @@ public class LightsService extends SystemService {
|
||||
|
||||
if(mId == 0) {
|
||||
String fp = SystemProperties.get("ro.vendor.build.fingerprint", "hello");
|
||||
@@ -24,5 +24,5 @@ index 65f9ea87ae5..aa014bf9ff4 100644
|
||||
return;
|
||||
}
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 378df1aac9a2b439e20dcc60d216f8c15974fdca Mon Sep 17 00:00:00 2001
|
||||
From 2b4b81841941cad4f0b0a3cccbf023a9c819b30e Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 27 Aug 2018 00:47:13 +0200
|
||||
Subject: [PATCH 19/36] Add a property toggle to enable high brightness range
|
||||
Subject: [PATCH 16/58] Add a property toggle to enable high brightness range
|
||||
on samsung device
|
||||
|
||||
---
|
||||
@@ -9,10 +9,10 @@ Subject: [PATCH 19/36] Add a property toggle to enable high brightness range
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
|
||||
index aa014bf9ff4..a18ae0d6159 100644
|
||||
index f7c07044d66..f1a22ee2dc4 100644
|
||||
--- a/services/core/java/com/android/server/lights/LightsService.java
|
||||
+++ b/services/core/java/com/android/server/lights/LightsService.java
|
||||
@@ -94,7 +94,11 @@ public class LightsService extends SystemService {
|
||||
@@ -96,7 +96,11 @@ public class LightsService extends SystemService {
|
||||
if(mId == 0) {
|
||||
String fp = SystemProperties.get("ro.vendor.build.fingerprint", "hello");
|
||||
if(fp.matches(".*(crown|star)[q2]*lte.*")) {
|
||||
@@ -26,5 +26,5 @@ index aa014bf9ff4..a18ae0d6159 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
From 807d3807f81b4893cd5186c60cfcf94920281a41 Mon Sep 17 00:00:00 2001
|
||||
From: Steve Kondik <steve@cyngn.com>
|
||||
Date: Sat, 3 Jan 2015 05:13:26 -0800
|
||||
Subject: [PATCH 16/36] power: Disable keyboard/button lights while
|
||||
dozing/dreaming
|
||||
|
||||
* With hardkeys and doze mode enabled, entering suspend results in
|
||||
an epic battle over the lights. It's a bad situation. Disable
|
||||
them when we're sleepy.
|
||||
|
||||
Change-Id: I7f1fc35a1573717d1ea101a07c4171d6f66d1553
|
||||
---
|
||||
.../core/java/com/android/server/power/PowerManagerService.java | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
|
||||
index 5cccc77ac53..e7d5315a2b9 100644
|
||||
--- a/services/core/java/com/android/server/power/PowerManagerService.java
|
||||
+++ b/services/core/java/com/android/server/power/PowerManagerService.java
|
||||
@@ -2040,7 +2040,7 @@ public final class PowerManagerService extends SystemService
|
||||
final long nextProfileTimeout = getNextProfileTimeoutLocked(now);
|
||||
|
||||
mUserActivitySummary = 0;
|
||||
- if (mLastUserActivityTime >= mLastWakeTime) {
|
||||
+ if (mWakefulness == WAKEFULNESS_AWAKE && mLastUserActivityTime >= mLastWakeTime) {
|
||||
nextTimeout = mLastUserActivityTime
|
||||
+ screenOffTimeout - screenDimDuration;
|
||||
if (now < nextTimeout) {
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 6c3996a1e42192a481ac029932fc1c4eade50488 Mon Sep 17 00:00:00 2001
|
||||
From d4633552f1162cdacd769291a1ee08493a3b8816 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Wed, 29 Aug 2018 11:05:54 +0200
|
||||
Subject: [PATCH 20/36] Add a property to override pre-o max aspect ratio
|
||||
Subject: [PATCH 17/58] Add a property to override pre-o max aspect ratio
|
||||
|
||||
Change-Id: Id001a19fab7680feda841202b6e91c490d0d5ffa
|
||||
---
|
||||
@@ -9,10 +9,10 @@ Change-Id: Id001a19fab7680feda841202b6e91c490d0d5ffa
|
||||
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
|
||||
index 371a9435643..5b61f215f3f 100644
|
||||
index 55e8e19fd27..7107bba3292 100644
|
||||
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
|
||||
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
|
||||
@@ -2837,6 +2837,12 @@ final class ActivityRecord extends ConfigurationContainer {
|
||||
@@ -2835,6 +2835,12 @@ final class ActivityRecord extends ConfigurationContainer {
|
||||
// TODO(b/36505427): Consider moving this method and similar ones to ConfigurationContainer.
|
||||
private void updateOverrideConfiguration() {
|
||||
final Configuration overrideConfig = mTmpConfig;
|
||||
@@ -25,7 +25,7 @@ index 371a9435643..5b61f215f3f 100644
|
||||
if (shouldUseSizeCompatMode()) {
|
||||
if (mCompatDisplayInsets != null) {
|
||||
// The override configuration is set only once in size compatibility mode.
|
||||
@@ -3070,7 +3076,7 @@ final class ActivityRecord extends ConfigurationContainer {
|
||||
@@ -3068,7 +3074,7 @@ final class ActivityRecord extends ConfigurationContainer {
|
||||
// TODO(b/36505427): Consider moving this method and similar ones to ConfigurationContainer.
|
||||
private void computeBounds(Rect outBounds, Rect containingAppBounds) {
|
||||
outBounds.setEmpty();
|
||||
@@ -35,5 +35,5 @@ index 371a9435643..5b61f215f3f 100644
|
||||
final float minAspectRatio = info.minAspectRatio;
|
||||
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
From 05ed3ef7fba2ae7fc012ca296c60af4238c91550 Mon Sep 17 00:00:00 2001
|
||||
From 7cf02f6a837cbba31bc214a8716be7e0d1055762 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Tue, 28 Aug 2018 20:39:26 +0200
|
||||
Subject: [PATCH 21/36] Add japanese S9
|
||||
Subject: [PATCH 18/58] Add japanese S9
|
||||
|
||||
---
|
||||
.../core/java/com/android/server/lights/LightsService.java | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
|
||||
index a18ae0d6159..37e03880f1e 100644
|
||||
index f1a22ee2dc4..15ab8cecfb5 100644
|
||||
--- a/services/core/java/com/android/server/lights/LightsService.java
|
||||
+++ b/services/core/java/com/android/server/lights/LightsService.java
|
||||
@@ -93,7 +93,8 @@ public class LightsService extends SystemService {
|
||||
@@ -95,7 +95,8 @@ public class LightsService extends SystemService {
|
||||
|
||||
if(mId == 0) {
|
||||
String fp = SystemProperties.get("ro.vendor.build.fingerprint", "hello");
|
||||
@@ -22,5 +22,5 @@ index a18ae0d6159..37e03880f1e 100644
|
||||
if(SystemProperties.getBoolean("persist.sys.samsung.full_brightness", false)) {
|
||||
newBrightness = (int) (brightness * 40960.0 / 255.0);
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
From 089eae49049ea602363949e8593acfd5447530c6 Mon Sep 17 00:00:00 2001
|
||||
From d2029feef32f7e15327013c7c58db5616ed8235c Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Thu, 8 Nov 2018 23:04:03 +0100
|
||||
Subject: [PATCH 22/36] Re-order services so that it works even without qtaguid
|
||||
Subject: [PATCH 19/58] Re-order services so that it works even without qtaguid
|
||||
|
||||
---
|
||||
.../com/android/server/net/NetworkPolicyManagerService.java | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
|
||||
index 6c34e1313f7..337b22c3587 100644
|
||||
index 11c1632b00f..3c8bee02ca1 100644
|
||||
--- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
|
||||
+++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
|
||||
@@ -725,6 +725,9 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
|
||||
@@ -734,6 +734,9 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
|
||||
Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "systemReady");
|
||||
final int oldPriority = Process.getThreadPriority(Process.myTid());
|
||||
try {
|
||||
@@ -21,7 +21,7 @@ index 6c34e1313f7..337b22c3587 100644
|
||||
// Boost thread's priority during system server init
|
||||
Process.setThreadPriority(Process.THREAD_PRIORITY_FOREGROUND);
|
||||
if (!isBandwidthControlEnabled()) {
|
||||
@@ -732,9 +735,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
|
||||
@@ -741,9 +744,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -32,5 +32,5 @@ index 6c34e1313f7..337b22c3587 100644
|
||||
synchronized (mNetworkPoliciesSecondLock) {
|
||||
updatePowerSaveWhitelistUL();
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 1fa1945234225aa9d6201a7da2990fd17b544dc7 Mon Sep 17 00:00:00 2001
|
||||
From e29eb86fe7f515b84816c824fc9e342e03f67df8 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sun, 10 Mar 2019 19:35:06 +0100
|
||||
Subject: [PATCH 23/36] Different value for astarqlte. Probably more devices to
|
||||
Subject: [PATCH 20/58] Different value for astarqlte. Probably more devices to
|
||||
add later
|
||||
|
||||
---
|
||||
@@ -9,10 +9,10 @@ Subject: [PATCH 23/36] Different value for astarqlte. Probably more devices to
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
|
||||
index 37e03880f1e..993483c342b 100644
|
||||
index 15ab8cecfb5..31033d57616 100644
|
||||
--- a/services/core/java/com/android/server/lights/LightsService.java
|
||||
+++ b/services/core/java/com/android/server/lights/LightsService.java
|
||||
@@ -93,6 +93,15 @@ public class LightsService extends SystemService {
|
||||
@@ -95,6 +95,15 @@ public class LightsService extends SystemService {
|
||||
|
||||
if(mId == 0) {
|
||||
String fp = SystemProperties.get("ro.vendor.build.fingerprint", "hello");
|
||||
@@ -29,5 +29,5 @@ index 37e03880f1e..993483c342b 100644
|
||||
fp.matches(".*(SC-0[23]K|SCV3[89]).*")) {
|
||||
int newBrightness = brightness * 100;
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 8049bd5138e52042ed47b8b0700753cb77b57641 Mon Sep 17 00:00:00 2001
|
||||
From 587b2c2d290643b0280f139141e9dd774c8edbca Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sun, 24 Mar 2019 23:05:14 +0100
|
||||
Subject: [PATCH] Support new samsung light hal
|
||||
Subject: [PATCH 21/58] Support new samsung light hal
|
||||
|
||||
Change-Id: I88ca834894320129737b4e31fa8f7e5ee918889a
|
||||
---
|
||||
@@ -22,7 +22,7 @@ index fdcefd42316..d8645012e24 100644
|
||||
|
||||
static_libs: [
|
||||
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
|
||||
+++ b/services/core/jni/com_android_server_lights_LightsService.cpp
|
||||
@@ -23,6 +23,8 @@
|
||||
@@ -43,11 +43,10 @@ index 35d8219651d..20de7985d1d 100644
|
||||
static bool sLightSupported = true;
|
||||
|
||||
static bool validate(jint light, jint flash, jint brightness) {
|
||||
@@ -151,6 +155,21 @@ static void setLight_native(
|
||||
colorAlpha = (colorAlpha * brightnessLevel) / 0xFF;
|
||||
@@ -152,6 +156,21 @@ static void setLight_native(
|
||||
colorARGB = (colorAlpha << 24) + (colorARGB & 0x00FFFFFF);
|
||||
}
|
||||
+
|
||||
|
||||
+ sp<ISecLight> secHal = ISecLight::getService();
|
||||
+
|
||||
+ if(secHal != nullptr) {
|
||||
@@ -62,9 +61,10 @@ index 35d8219651d..20de7985d1d 100644
|
||||
+ if (t.duration() > 50ms) ALOGD("Excessive delay setting light");
|
||||
+ }
|
||||
+ }
|
||||
|
||||
+
|
||||
Type type = static_cast<Type>(light);
|
||||
LightState state = constructState(
|
||||
colorARGB, flashMode, onMS, offMS, brightnessMode);
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 454a0898504d1af98f687ebdbc8bc7b13a3d3ff5 Mon Sep 17 00:00:00 2001
|
||||
From f7297b9796d2d01dabf58256af529999977e74f5 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Wed, 24 Apr 2019 20:09:53 +0200
|
||||
Subject: [PATCH 25/36] Fix backlight on S10*. Add an additional property to
|
||||
Subject: [PATCH 22/58] Fix backlight on S10*. Add an additional property to
|
||||
check, so testers can try it more easily
|
||||
|
||||
---
|
||||
@@ -9,10 +9,10 @@ Subject: [PATCH 25/36] Fix backlight on S10*. Add an additional property to
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
|
||||
index 993483c342b..a578ed894c4 100644
|
||||
index 31033d57616..feba6bf8205 100644
|
||||
--- a/services/core/java/com/android/server/lights/LightsService.java
|
||||
+++ b/services/core/java/com/android/server/lights/LightsService.java
|
||||
@@ -102,7 +102,9 @@ public class LightsService extends SystemService {
|
||||
@@ -104,7 +104,9 @@ public class LightsService extends SystemService {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -24,5 +24,5 @@ index 993483c342b..a578ed894c4 100644
|
||||
int newBrightness = brightness * 100;
|
||||
if(SystemProperties.getBoolean("persist.sys.samsung.full_brightness", false)) {
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
From 571bf63da97814631982b28b41f96781a13848a8 Mon Sep 17 00:00:00 2001
|
||||
From 63685ef6795e3b47f227ae5770c063969072644b Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Tue, 2 Jul 2019 21:15:07 +0200
|
||||
Subject: [PATCH 26/36] Make samsung light HAL more overridable
|
||||
Subject: [PATCH 23/58] Make samsung light HAL more overridable
|
||||
|
||||
---
|
||||
.../android/server/lights/LightsService.java | 24 ++++++++++++-------
|
||||
1 file changed, 15 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
|
||||
index a578ed894c4..ac102c94770 100644
|
||||
index feba6bf8205..f9ac8db09ea 100644
|
||||
--- a/services/core/java/com/android/server/lights/LightsService.java
|
||||
+++ b/services/core/java/com/android/server/lights/LightsService.java
|
||||
@@ -102,16 +102,22 @@ public class LightsService extends SystemService {
|
||||
@@ -104,16 +104,22 @@ public class LightsService extends SystemService {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -44,5 +44,5 @@ index a578ed894c4..ac102c94770 100644
|
||||
|
||||
boolean qcomExtendBrightness = SystemProperties.getBoolean("persist.extend.brightness", false);
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From d02ed45de2a9ad381a735ae0649f61dbca1f1d41 Mon Sep 17 00:00:00 2001
|
||||
From 350739eec1738cebf50a64d4ae19fb61c3db769c Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Tue, 2 Jul 2019 21:19:29 +0200
|
||||
Subject: [PATCH 27/36] Make Samsung fingerprint broken HAL overridable
|
||||
Subject: [PATCH 24/58] Make Samsung fingerprint broken HAL overridable
|
||||
|
||||
Change-Id: I8be38daa7c80fdb61e9209f12215e6daea171d03
|
||||
---
|
||||
@@ -9,10 +9,10 @@ Change-Id: I8be38daa7c80fdb61e9209f12215e6daea171d03
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
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 dc56a95217c..19593e7e047 100644
|
||||
index 9789c49f069..f6e0742aa67 100644
|
||||
--- a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
|
||||
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
|
||||
@@ -590,8 +590,10 @@ public class FingerprintService extends BiometricServiceBase {
|
||||
@@ -592,8 +592,10 @@ public class FingerprintService extends BiometricServiceBase {
|
||||
groupId, fingerId, deviceId);
|
||||
|
||||
int remaining2 = remaining;
|
||||
@@ -25,5 +25,5 @@ index dc56a95217c..19593e7e047 100644
|
||||
|
||||
FingerprintService.super.handleEnrollResult(fingerprint, remaining2);
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 677389d4f112ca9368d55e1eb661727e5974eeb1 Mon Sep 17 00:00:00 2001
|
||||
From 376f6e380451b51ded4e34403016a528ed62157b Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sun, 11 Aug 2019 10:30:37 +0200
|
||||
Subject: [PATCH 29/36] Add property to use linear brightness slider
|
||||
Subject: [PATCH 25/58] Add property to use linear brightness slider
|
||||
|
||||
---
|
||||
.../com/android/settingslib/display/BrightnessUtils.java | 6 ++++++
|
||||
@@ -33,5 +33,5 @@ index 55723f9d8ed..da8ce4a67e9 100644
|
||||
final float normalizedVal = MathUtils.norm(min, max, val) * 12;
|
||||
final float ret;
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From f93124e38386cc549fa02126c776098923f73ed7 Mon Sep 17 00:00:00 2001
|
||||
From 4d1a24a3ea96184572bc741647b5cd43d4eae032 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 12 Aug 2019 23:08:26 +0200
|
||||
Subject: [PATCH 30/36] Add support for samsung touch proximity sensor as
|
||||
Subject: [PATCH 26/58] Add support for samsung touch proximity sensor as
|
||||
fallback to real proximity sensor
|
||||
|
||||
---
|
||||
@@ -9,10 +9,10 @@ Subject: [PATCH 30/36] Add support for samsung touch proximity sensor as
|
||||
1 file changed, 14 insertions(+)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java
|
||||
index fb381c33cbc..a262c86b7c7 100644
|
||||
index e546534eb4c..6ac1589aab0 100644
|
||||
--- a/services/core/java/com/android/server/display/DisplayPowerController.java
|
||||
+++ b/services/core/java/com/android/server/display/DisplayPowerController.java
|
||||
@@ -529,6 +529,13 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
@@ -522,6 +522,13 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
|
||||
if (!DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT) {
|
||||
mProximitySensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
|
||||
@@ -26,7 +26,7 @@ index fb381c33cbc..a262c86b7c7 100644
|
||||
if (mProximitySensor != null) {
|
||||
mProximityThreshold = Math.min(mProximitySensor.getMaximumRange(),
|
||||
TYPICAL_PROXIMITY_THRESHOLD);
|
||||
@@ -1944,6 +1951,13 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
@@ -1936,6 +1943,13 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
public void onSensorChanged(SensorEvent event) {
|
||||
if (mProximitySensorEnabled) {
|
||||
final long time = SystemClock.uptimeMillis();
|
||||
@@ -41,5 +41,5 @@ index fb381c33cbc..a262c86b7c7 100644
|
||||
boolean positive = distance >= 0.0f && distance < mProximityThreshold;
|
||||
handleProximitySensorEvent(time, positive);
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From f852fefd22c754345767a7c3d3024f4f93791a3d Mon Sep 17 00:00:00 2001
|
||||
From 231fd535554b81a5ef85aca4783da05bdbd330ec Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Wed, 14 Aug 2019 08:50:47 +0200
|
||||
Subject: [PATCH 31/36] Use Samsung power HAL
|
||||
Subject: [PATCH 27/58] Use Samsung power HAL
|
||||
|
||||
Samsung likes to have two android.hardware.power@1.0 implementation
|
||||
side-by-side, one that works, one that doesn't.
|
||||
@@ -11,10 +11,10 @@ Pick the one that works.
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/services/core/jni/com_android_server_power_PowerManagerService.cpp b/services/core/jni/com_android_server_power_PowerManagerService.cpp
|
||||
index 73bb579bd27..a211eef3d24 100644
|
||||
index 523f802141e..211ea50ddc9 100644
|
||||
--- a/services/core/jni/com_android_server_power_PowerManagerService.cpp
|
||||
+++ b/services/core/jni/com_android_server_power_PowerManagerService.cpp
|
||||
@@ -92,7 +92,9 @@ static bool checkAndClearExceptionFromCallback(JNIEnv* env, const char* methodNa
|
||||
@@ -98,7 +98,9 @@ static bool checkAndClearExceptionFromCallback(JNIEnv* env, const char* methodNa
|
||||
// The caller must be holding gPowerHalMutex.
|
||||
static void connectPowerHalLocked() {
|
||||
if (gPowerHalExists && gPowerHalV1_0_ == nullptr) {
|
||||
@@ -26,5 +26,5 @@ index 73bb579bd27..a211eef3d24 100644
|
||||
ALOGI("Loaded power HAL 1.0 service");
|
||||
// Try cast to powerHAL V1_1
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 32ce2b67710daf2e8b81f99a3660210f96d04f3a Mon Sep 17 00:00:00 2001
|
||||
From 792cdc6603531eca7a91e3111ca3fd11b3711994 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Wed, 14 Aug 2019 23:36:45 +0200
|
||||
Subject: [PATCH 32/36] Also add com.samsung.sensor.physical_proximity (if
|
||||
Subject: [PATCH 28/58] Also add com.samsung.sensor.physical_proximity (if
|
||||
available, it is more a true proximity sensor than touch proximity sensor)
|
||||
|
||||
---
|
||||
@@ -9,10 +9,10 @@ Subject: [PATCH 32/36] Also add com.samsung.sensor.physical_proximity (if
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java
|
||||
index a262c86b7c7..7c38f62b256 100644
|
||||
index 6ac1589aab0..84f16c4af23 100644
|
||||
--- a/services/core/java/com/android/server/display/DisplayPowerController.java
|
||||
+++ b/services/core/java/com/android/server/display/DisplayPowerController.java
|
||||
@@ -529,6 +529,13 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
@@ -522,6 +522,13 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
|
||||
if (!DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT) {
|
||||
mProximitySensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
|
||||
@@ -27,5 +27,5 @@ index a262c86b7c7..7c38f62b256 100644
|
||||
List<Sensor> sensors = mSensorManager.getSensorList(Sensor.TYPE_ALL);
|
||||
for(Sensor sensor: sensors) {
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From b15c825ccb48260a85695db41aff138787d1817f Mon Sep 17 00:00:00 2001
|
||||
From 67d493c638ff4c901a5ca76f91141b8b6b6a7b57 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sun, 24 Mar 2019 22:48:39 +0100
|
||||
Subject: [PATCH] wip
|
||||
Subject: [PATCH 29/58] wip
|
||||
|
||||
Change-Id: I50fa9a7a670cef5b93fc4a3a027f1587b1214831
|
||||
---
|
||||
@@ -11,15 +11,15 @@ Change-Id: I50fa9a7a670cef5b93fc4a3a027f1587b1214831
|
||||
.../fingerprint/FingerprintService.java | 26 ++-
|
||||
.../testharness/TestHarnessModeService.java | 7 +-
|
||||
.../com/android/server/wm/ActivityRecord.java | 6 -
|
||||
...om_android_server_lights_LightsService.cpp | 15 +-
|
||||
7 files changed, 255 insertions(+), 12 deletions(-)
|
||||
...om_android_server_lights_LightsService.cpp | 13 +-
|
||||
7 files changed, 254 insertions(+), 11 deletions(-)
|
||||
create mode 100644 services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||
|
||||
diff --git a/Android.bp b/Android.bp
|
||||
index 16abdbf79de..d01dc639c8f 100644
|
||||
index bdd88034655..5e79350ac5c 100644
|
||||
--- a/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.3-java",
|
||||
"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
|
||||
index 19593e7e047..c7de87126e8 100644
|
||||
index f6e0742aa67..92c0cc5dc85 100644
|
||||
--- a/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 {
|
||||
@@ -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.
|
||||
*/
|
||||
@@ -306,7 +306,7 @@ index 19593e7e047..c7de87126e8 100644
|
||||
@Override // Binder call
|
||||
public long preEnroll(IBinder token) {
|
||||
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);
|
||||
context.registerReceiver(mLockoutReceiver, new IntentFilter(getLockoutResetIntent()),
|
||||
getLockoutBroadcastPermission(), null /* handler */);
|
||||
@@ -314,7 +314,7 @@ index 19593e7e047..c7de87126e8 100644
|
||||
}
|
||||
|
||||
@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!");
|
||||
return 0;
|
||||
}
|
||||
@@ -322,7 +322,7 @@ index 19593e7e047..c7de87126e8 100644
|
||||
try {
|
||||
return daemon.preEnroll();
|
||||
} 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!");
|
||||
return 0;
|
||||
}
|
||||
@@ -349,10 +349,10 @@ index fcf87ee2a4b..0aa948417c1 100644
|
||||
// There's no data to apply, so leave it as-is.
|
||||
return null;
|
||||
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 7107bba3292..8d2badb825a 100644
|
||||
--- a/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.
|
||||
private void updateOverrideConfiguration() {
|
||||
final Configuration overrideConfig = mTmpConfig;
|
||||
@@ -366,7 +366,7 @@ index 479babc4c7d..1f972dd4918 100644
|
||||
if (mCompatDisplayInsets != null) {
|
||||
// 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
|
||||
index 20de7985d1d..2b50d04233e 100644
|
||||
index 2f77726d5bd..2b50d04233e 100644
|
||||
--- a/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;
|
||||
@@ -379,19 +379,17 @@ index 20de7985d1d..2b50d04233e 100644
|
||||
static bool validate(jint light, jint flash, jint brightness) {
|
||||
bool valid = true;
|
||||
|
||||
@@ -155,20 +158,24 @@ static void setLight_native(
|
||||
colorAlpha = (colorAlpha * brightnessLevel) / 0xFF;
|
||||
@@ -156,19 +159,23 @@ static void setLight_native(
|
||||
colorARGB = (colorAlpha << 24) + (colorARGB & 0x00FFFFFF);
|
||||
}
|
||||
-
|
||||
- sp<ISecLight> secHal = ISecLight::getService();
|
||||
|
||||
- if(secHal != nullptr) {
|
||||
- sp<ISecLight> secHal = ISecLight::getService();
|
||||
+ if(!sSecTried) {
|
||||
+ sSecHal = ISecLight::getService();
|
||||
+ sSecTried = true;
|
||||
+ }
|
||||
+
|
||||
|
||||
- if(secHal != nullptr) {
|
||||
+ if(sSecHal != nullptr) {
|
||||
SecType type = static_cast<SecType>(light);
|
||||
LightState state = constructState(
|
||||
@@ -409,5 +407,5 @@ index 20de7985d1d..2b50d04233e 100644
|
||||
|
||||
Type type = static_cast<Type>(light);
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 8167bee50010c872b82a2183e0ac17779b6b565e Mon Sep 17 00:00:00 2001
|
||||
From 12eee8e8f124d017db9265d587d3eabdcfe50803 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 12 Aug 2019 23:10:21 +0200
|
||||
Subject: [PATCH 34/36] User statsd/incidentd arent known to init 8.0. disable
|
||||
Subject: [PATCH 30/58] User statsd/incidentd arent known to init 8.0. disable
|
||||
those services
|
||||
|
||||
Change-Id: I074654e194f764ffbc6961ff0ae304e36a9b5d1e
|
||||
@@ -61,5 +61,5 @@ index a98ecd586b4..564cf98d0a9 100644
|
||||
on post-fs-data
|
||||
# Create directory for statsd
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From e73eb752f04a301bb4195a40ef3d73be5bb705d6 Mon Sep 17 00:00:00 2001
|
||||
From 3c029d1d6858aaa232e9706f847c390addf0fd96 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Thu, 12 Sep 2019 20:38:08 +0200
|
||||
Subject: [PATCH 35/36] Check for samsung light service everytime
|
||||
Subject: [PATCH 31/58] Check for samsung light service everytime
|
||||
|
||||
This is needed because it is possible sec light service isn't ready at
|
||||
that time.
|
||||
@@ -14,10 +14,10 @@ Change-Id: I30f049f3b06f83c455301b589b3558ff384ec300
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/services/core/jni/com_android_server_lights_LightsService.cpp b/services/core/jni/com_android_server_lights_LightsService.cpp
|
||||
index bea321da890..75793a7c0f2 100644
|
||||
index 2b50d04233e..a21c6e2c8ef 100644
|
||||
--- a/services/core/jni/com_android_server_lights_LightsService.cpp
|
||||
+++ b/services/core/jni/com_android_server_lights_LightsService.cpp
|
||||
@@ -150,7 +150,7 @@ static void setLight_native(
|
||||
@@ -161,7 +161,7 @@ static void setLight_native(
|
||||
|
||||
if(!sSecTried) {
|
||||
sSecHal = ISecLight::getService();
|
||||
@@ -27,5 +27,5 @@ index bea321da890..75793a7c0f2 100644
|
||||
|
||||
if(sSecHal != nullptr) {
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From f2c2a6a4707dde7f62d29aa5b204d96f9693e0e0 Mon Sep 17 00:00:00 2001
|
||||
From 6f450d9a22c3155a1732dbc1bcbcaed2a5a8d052 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Thu, 12 Sep 2019 20:39:50 +0200
|
||||
Subject: [PATCH 36/36] Forawrdport Samsung "fod" support for ultrasound fp
|
||||
Subject: [PATCH 32/58] Forawrdport Samsung "fod" support for ultrasound fp
|
||||
|
||||
Change-Id: I9f787a01dab922cd94f9e552a6f3f53a00ca8448
|
||||
---
|
||||
@@ -117,5 +117,5 @@ index 8829bcb7e48..f61582990cf 100644
|
||||
+
|
||||
}
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From f1e202e71f6ab47a1870aa91e65d8c777770b88d Mon Sep 17 00:00:00 2001
|
||||
From c37bc2054b6e8e8d7e5d469e082e423f56d092fc Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 14 Oct 2019 23:50:46 +0200
|
||||
Subject: [PATCH 37/38] Scan /system/overlay and fix support for properties in
|
||||
Subject: [PATCH 33/58] Scan /system/overlay and fix support for properties in
|
||||
idmap2
|
||||
|
||||
Change-Id: Ic04b5b1cc7b5d8cee67b1e2fdaa8aa793546b6d6
|
||||
@@ -97,10 +97,10 @@ index 71ba3f0f1ac..7fda402b80f 100644
|
||||
if (iter != tag->end()) {
|
||||
info.is_static = std::stoul(iter->second) != 0U;
|
||||
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
|
||||
index b3776787cc2..2147cc61728 100644
|
||||
index 535a8bc9db7..a164cb186a9 100644
|
||||
--- a/core/java/android/content/pm/PackageParser.java
|
||||
+++ b/core/java/android/content/pm/PackageParser.java
|
||||
@@ -1353,6 +1353,7 @@ public class PackageParser {
|
||||
@@ -1355,6 +1355,7 @@ public class PackageParser {
|
||||
} catch (PackageParserException e) {
|
||||
throw e;
|
||||
} catch (Exception e) {
|
||||
@@ -108,7 +108,7 @@ index b3776787cc2..2147cc61728 100644
|
||||
throw new PackageParserException(INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION,
|
||||
"Failed to read manifest from " + apkPath, e);
|
||||
} finally {
|
||||
@@ -1392,6 +1393,7 @@ public class PackageParser {
|
||||
@@ -1394,6 +1395,7 @@ public class PackageParser {
|
||||
} catch (PackageParserException e) {
|
||||
throw e;
|
||||
} catch (Exception e) {
|
||||
@@ -116,7 +116,7 @@ index b3776787cc2..2147cc61728 100644
|
||||
throw new PackageParserException(INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION,
|
||||
"Failed to read manifest from " + apkPath, e);
|
||||
} finally {
|
||||
@@ -2556,7 +2558,12 @@ public class PackageParser {
|
||||
@@ -2574,7 +2576,12 @@ public class PackageParser {
|
||||
|
||||
// check property value - make sure it is both set and equal to expected value
|
||||
final String currValue = SystemProperties.get(propName);
|
||||
@@ -145,10 +145,10 @@ index 4518c7e66a5..9e1b6db9ad9 100644
|
||||
input_dirs.push_back(AssetManager::VENDOR_OVERLAY_DIR);
|
||||
}
|
||||
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
|
||||
index 7469e099421..203eb793610 100644
|
||||
index 179abe958b1..264e85d8eca 100644
|
||||
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
|
||||
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
|
||||
@@ -2608,6 +2608,12 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
@@ -2668,6 +2668,12 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
// any apps.)
|
||||
// For security and version matching reason, only consider overlay packages if they
|
||||
// reside in the right directory.
|
||||
@@ -162,5 +162,5 @@ index 7469e099421..203eb793610 100644
|
||||
mDefParseFlags
|
||||
| PackageParser.PARSE_IS_SYSTEM_DIR,
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 9bba3cbb885f9917c120bfc7f072002f9e8cd4ed Mon Sep 17 00:00:00 2001
|
||||
From a950589b497f0e635205591b358aaa18e45e74c3 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Tue, 22 Oct 2019 00:33:23 +0200
|
||||
Subject: [PATCH 38/38] Improve FacolaView life cycle, though it is still
|
||||
Subject: [PATCH 34/58] Improve FacolaView life cycle, though it is still
|
||||
missing few cases. It might require to change BiometricServiceBase for actual
|
||||
fix
|
||||
|
||||
@@ -54,7 +54,7 @@ index f61582990cf..4ff373a108d 100644
|
||||
samsungCmd("fod_enable,0");
|
||||
}
|
||||
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 c7de87126e8..972b4703860 100644
|
||||
index 92c0cc5dc85..1323c5ec0dd 100644
|
||||
--- a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
|
||||
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
|
||||
@@ -181,6 +181,16 @@ public class FingerprintService extends BiometricServiceBase {
|
||||
@@ -74,7 +74,7 @@ index c7de87126e8..972b4703860 100644
|
||||
@Override
|
||||
public int start() {
|
||||
mFacola.show();
|
||||
@@ -219,6 +229,7 @@ public class FingerprintService extends BiometricServiceBase {
|
||||
@@ -220,6 +230,7 @@ public class FingerprintService extends BiometricServiceBase {
|
||||
final IFingerprintServiceReceiver receiver, final int flags,
|
||||
final String opPackageName) {
|
||||
checkPermission(MANAGE_FINGERPRINT);
|
||||
@@ -82,7 +82,7 @@ index c7de87126e8..972b4703860 100644
|
||||
|
||||
final boolean restricted = isRestricted();
|
||||
final int groupId = userId; // default group for fingerprint enrollment
|
||||
@@ -641,6 +652,9 @@ public class FingerprintService extends BiometricServiceBase {
|
||||
@@ -643,6 +654,9 @@ public class FingerprintService extends BiometricServiceBase {
|
||||
public void onError(final long deviceId, final int error, final int vendorCode) {
|
||||
mHandler.post(() -> {
|
||||
FingerprintService.super.handleError(deviceId, error, vendorCode);
|
||||
@@ -93,5 +93,5 @@ index c7de87126e8..972b4703860 100644
|
||||
if (error == BiometricConstants.BIOMETRIC_ERROR_HW_UNAVAILABLE) {
|
||||
// If we get HW_UNAVAILABLE, try to connect again later...
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 12005c0b0a7f7e9c33bd8cf79ffaee609c43dafb Mon Sep 17 00:00:00 2001
|
||||
From 9cd57490c483e5a5b94d32d8fda5cc095734734d Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Tue, 22 Oct 2019 15:31:54 +0200
|
||||
Subject: [PATCH 39/39] Link hwui with libbase, because of updated skia
|
||||
Subject: [PATCH 35/58] Link hwui with libbase, because of updated skia
|
||||
dependency
|
||||
|
||||
Change-Id: I201df2cd8f66674948b56fb6d5be5e8c3cb48bd1
|
||||
@@ -22,5 +22,5 @@ index ebba4cb79df..b9808751130 100644
|
||||
static_libs: [
|
||||
"libEGL_blobCache",
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 1573fc903e5c874b7a4fa78284801aa67a9f1ff7 Mon Sep 17 00:00:00 2001
|
||||
From 6806da584a014aa51429e4779f999f83a0e826be Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sun, 27 Oct 2019 16:27:55 +0100
|
||||
Subject: [PATCH 40/40] Fix crash on some devices by checking for null client
|
||||
Subject: [PATCH 36/58] Fix crash on some devices by checking for null client
|
||||
|
||||
Some device get the following system_server crash:
|
||||
*** FATAL EXCEPTION IN SYSTEM PROCESS: main
|
||||
@@ -19,10 +19,10 @@ Change-Id: If39d8c1b26c8c0a44b3d9292b646cb71ff258a95
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/biometrics/BiometricServiceBase.java b/services/core/java/com/android/server/biometrics/BiometricServiceBase.java
|
||||
index d3c62bed7b5..b6710992a6e 100644
|
||||
index 37a08de62fc..292798721c6 100644
|
||||
--- a/services/core/java/com/android/server/biometrics/BiometricServiceBase.java
|
||||
+++ b/services/core/java/com/android/server/biometrics/BiometricServiceBase.java
|
||||
@@ -774,6 +774,7 @@ public abstract class BiometricServiceBase extends SystemService
|
||||
@@ -792,6 +792,7 @@ public abstract class BiometricServiceBase extends SystemService
|
||||
protected void handleEnumerate(BiometricAuthenticator.Identifier identifier, int remaining) {
|
||||
ClientMonitor client = getCurrentClient();
|
||||
|
||||
@@ -31,5 +31,5 @@ index d3c62bed7b5..b6710992a6e 100644
|
||||
|
||||
// All templates in the HAL for this user were enumerated
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,475 @@
|
||||
From ca4db4fe51356d20bf26142c188b6a691075c123 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sun, 15 Dec 2019 16:38:44 +0100
|
||||
Subject: [PATCH 37/58] Support Samsung Q Light HAL
|
||||
|
||||
Change-Id: Ic5745eb115a14de348391e69ed6bf3c2a24b157e
|
||||
---
|
||||
services/core/jni/Android.bp | 1 +
|
||||
services/core/jni/Android.bp.orig | 165 ++++++++++++++
|
||||
...om_android_server_lights_LightsService.cpp | 26 +++
|
||||
...droid_server_lights_LightsService.cpp.orig | 207 ++++++++++++++++++
|
||||
4 files changed, 399 insertions(+)
|
||||
create mode 100644 services/core/jni/Android.bp.orig
|
||||
create mode 100644 services/core/jni/com_android_server_lights_LightsService.cpp.orig
|
||||
|
||||
diff --git a/services/core/jni/Android.bp b/services/core/jni/Android.bp
|
||||
index d8645012e24..3ffa7561028 100644
|
||||
--- a/services/core/jni/Android.bp
|
||||
+++ b/services/core/jni/Android.bp
|
||||
@@ -136,6 +136,7 @@ cc_defaults {
|
||||
"suspend_control_aidl_interface-cpp",
|
||||
"vendor.lineage.power@1.0",
|
||||
"vendor.samsung.hardware.light@2.0",
|
||||
+ "vendor.samsung.hardware.light@3.0",
|
||||
],
|
||||
|
||||
static_libs: [
|
||||
diff --git a/services/core/jni/Android.bp.orig b/services/core/jni/Android.bp.orig
|
||||
new file mode 100644
|
||||
index 00000000000..d8645012e24
|
||||
--- /dev/null
|
||||
+++ b/services/core/jni/Android.bp.orig
|
||||
@@ -0,0 +1,165 @@
|
||||
+cc_library_static {
|
||||
+ name: "libservices.core",
|
||||
+ defaults: ["libservices.core-libs"],
|
||||
+
|
||||
+ cflags: [
|
||||
+ "-Wall",
|
||||
+ "-Werror",
|
||||
+ "-Wno-unused-parameter",
|
||||
+ "-Wthread-safety",
|
||||
+
|
||||
+ "-DEGL_EGLEXT_PROTOTYPES",
|
||||
+ "-DGL_GLEXT_PROTOTYPES",
|
||||
+ ],
|
||||
+
|
||||
+ srcs: [
|
||||
+ "BroadcastRadio/JavaRef.cpp",
|
||||
+ "BroadcastRadio/NativeCallbackThread.cpp",
|
||||
+ "BroadcastRadio/BroadcastRadioService.cpp",
|
||||
+ "BroadcastRadio/Tuner.cpp",
|
||||
+ "BroadcastRadio/TunerCallback.cpp",
|
||||
+ "BroadcastRadio/convert.cpp",
|
||||
+ "BroadcastRadio/regions.cpp",
|
||||
+ "com_android_server_AlarmManagerService.cpp",
|
||||
+ "com_android_server_am_BatteryStatsService.cpp",
|
||||
+ "com_android_server_connectivity_Vpn.cpp",
|
||||
+ "com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp",
|
||||
+ "com_android_server_ConsumerIrService.cpp",
|
||||
+ "com_android_server_devicepolicy_CryptoTestHelper.cpp",
|
||||
+ "com_android_server_HardwarePropertiesManagerService.cpp",
|
||||
+ "com_android_server_hdmi_HdmiCecController.cpp",
|
||||
+ "com_android_server_input_InputManagerService.cpp",
|
||||
+ "com_android_server_lights_LightsService.cpp",
|
||||
+ "com_android_server_location_GnssLocationProvider.cpp",
|
||||
+ "com_android_server_locksettings_SyntheticPasswordManager.cpp",
|
||||
+ "com_android_server_net_NetworkStatsService.cpp",
|
||||
+ "com_android_server_power_PowerManagerService.cpp",
|
||||
+ "com_android_server_security_VerityUtils.cpp",
|
||||
+ "com_android_server_SerialService.cpp",
|
||||
+ "com_android_server_storage_AppFuseBridge.cpp",
|
||||
+ "com_android_server_SystemServer.cpp",
|
||||
+ "com_android_server_TestNetworkService.cpp",
|
||||
+ "com_android_server_tv_TvUinputBridge.cpp",
|
||||
+ "com_android_server_tv_TvInputHal.cpp",
|
||||
+ "com_android_server_vr_VrManagerService.cpp",
|
||||
+ "com_android_server_UsbAlsaJackDetector.cpp",
|
||||
+ "com_android_server_UsbDeviceManager.cpp",
|
||||
+ "com_android_server_UsbDescriptorParser.cpp",
|
||||
+ "com_android_server_UsbMidiDevice.cpp",
|
||||
+ "com_android_server_UsbHostManager.cpp",
|
||||
+ "com_android_server_VibratorService.cpp",
|
||||
+ "com_android_server_PersistentDataBlockService.cpp",
|
||||
+ "com_android_server_GraphicsStatsService.cpp",
|
||||
+ "com_android_server_am_AppCompactor.cpp",
|
||||
+ "com_android_server_am_LowMemDetector.cpp",
|
||||
+ "onload.cpp",
|
||||
+ ":lib_networkStatsFactory_native",
|
||||
+ ],
|
||||
+
|
||||
+ include_dirs: [
|
||||
+ "bionic/libc/private",
|
||||
+ "frameworks/base/libs",
|
||||
+ "frameworks/native/services",
|
||||
+ "system/gatekeeper/include",
|
||||
+ ],
|
||||
+}
|
||||
+
|
||||
+cc_defaults {
|
||||
+ name: "libservices.core-libs",
|
||||
+ shared_libs: [
|
||||
+ "libandroid_runtime",
|
||||
+ "libandroidfw",
|
||||
+ "libaudioclient",
|
||||
+ "libbase",
|
||||
+ "libappfuse",
|
||||
+ "libbinder",
|
||||
+ "libcutils",
|
||||
+ "libcrypto",
|
||||
+ "liblog",
|
||||
+ "libhardware",
|
||||
+ "libhardware_legacy",
|
||||
+ "libhidlbase",
|
||||
+ "libkeystore_binder",
|
||||
+ "libmtp",
|
||||
+ "libnativehelper",
|
||||
+ "libutils",
|
||||
+ "libui",
|
||||
+ "libinput",
|
||||
+ "libinputflinger",
|
||||
+ "libinputflinger_base",
|
||||
+ "libinputservice",
|
||||
+ "libschedulerservicehidl",
|
||||
+ "libsensorservice",
|
||||
+ "libsensorservicehidl",
|
||||
+ "libgui",
|
||||
+ "libusbhost",
|
||||
+ "libtinyalsa",
|
||||
+ "libEGL",
|
||||
+ "libGLESv2",
|
||||
+ "libnetutils",
|
||||
+ "libhidlbase",
|
||||
+ "libhidltransport",
|
||||
+ "libhwbinder",
|
||||
+ "libutils",
|
||||
+ "libhwui",
|
||||
+ "libbpf_android",
|
||||
+ "libnetdbpf",
|
||||
+ "libnetdutils",
|
||||
+ "libpsi",
|
||||
+ "android.hardware.audio.common@2.0",
|
||||
+ "android.hardware.broadcastradio@1.0",
|
||||
+ "android.hardware.broadcastradio@1.1",
|
||||
+ "android.hardware.contexthub@1.0",
|
||||
+ "android.hardware.gnss@1.0",
|
||||
+ "android.hardware.gnss@1.1",
|
||||
+ "android.hardware.gnss@2.0",
|
||||
+ "android.hardware.gnss.measurement_corrections@1.0",
|
||||
+ "android.hardware.gnss.visibility_control@1.0",
|
||||
+ "android.hardware.input.classifier@1.0",
|
||||
+ "android.hardware.ir@1.0",
|
||||
+ "android.hardware.light@2.0",
|
||||
+ "android.hardware.power@1.0",
|
||||
+ "android.hardware.power@1.1",
|
||||
+ "android.hardware.power.stats@1.0",
|
||||
+ "android.hardware.tetheroffload.config@1.0",
|
||||
+ "android.hardware.thermal@1.0",
|
||||
+ "android.hardware.tv.cec@1.0",
|
||||
+ "android.hardware.tv.input@1.0",
|
||||
+ "android.hardware.vibrator@1.0",
|
||||
+ "android.hardware.vibrator@1.1",
|
||||
+ "android.hardware.vibrator@1.2",
|
||||
+ "android.hardware.vibrator@1.3",
|
||||
+ "android.hardware.vr@1.0",
|
||||
+ "android.frameworks.schedulerservice@1.0",
|
||||
+ "android.frameworks.sensorservice@1.0",
|
||||
+ "android.system.suspend@1.0",
|
||||
+ "suspend_control_aidl_interface-cpp",
|
||||
+ "vendor.lineage.power@1.0",
|
||||
+ "vendor.samsung.hardware.light@2.0",
|
||||
+ ],
|
||||
+
|
||||
+ static_libs: [
|
||||
+ "android.hardware.broadcastradio@common-utils-1x-lib",
|
||||
+ ],
|
||||
+
|
||||
+ product_variables: {
|
||||
+ arc: {
|
||||
+ shared_libs: [
|
||||
+ "libarcbridge",
|
||||
+ "libarcbridgeservice",
|
||||
+ "libarctimer",
|
||||
+ "libbase",
|
||||
+ "libcap",
|
||||
+ "libchrome",
|
||||
+ "libmojo",
|
||||
+ ],
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+filegroup {
|
||||
+ name: "lib_networkStatsFactory_native",
|
||||
+ srcs: [
|
||||
+ "com_android_server_net_NetworkStatsFactory.cpp",
|
||||
+ ],
|
||||
+}
|
||||
diff --git a/services/core/jni/com_android_server_lights_LightsService.cpp b/services/core/jni/com_android_server_lights_LightsService.cpp
|
||||
index a21c6e2c8ef..dedc7734131 100644
|
||||
--- a/services/core/jni/com_android_server_lights_LightsService.cpp
|
||||
+++ b/services/core/jni/com_android_server_lights_LightsService.cpp
|
||||
@@ -25,6 +25,8 @@
|
||||
#include <android/hardware/light/2.0/types.h>
|
||||
#include <vendor/samsung/hardware/light/2.0/ISecLight.h>
|
||||
#include <vendor/samsung/hardware/light/2.0/types.h>
|
||||
+#include <vendor/samsung/hardware/light/3.0/ISehLight.h>
|
||||
+#include <vendor/samsung/hardware/light/3.0/types.h>
|
||||
#include <android-base/chrono_utils.h>
|
||||
#include <utils/misc.h>
|
||||
#include <utils/Log.h>
|
||||
@@ -44,9 +46,13 @@ using Return = ::android::hardware::Return<T>;
|
||||
|
||||
using ISecLight = ::vendor::samsung::hardware::light::V2_0::ISecLight;
|
||||
using SecType = ::vendor::samsung::hardware::light::V2_0::SecType;
|
||||
+using ISehLight = ::vendor::samsung::hardware::light::V3_0::ISehLight;
|
||||
+using SehType = ::vendor::samsung::hardware::light::V3_0::SehType;
|
||||
+using SehLightState = ::vendor::samsung::hardware::light::V3_0::SehLightState;
|
||||
static bool sLightSupported = true;
|
||||
|
||||
static sp<ISecLight> sSecHal;
|
||||
+static sp<ISehLight> sSehHal;
|
||||
static bool sSecTried = false;
|
||||
|
||||
static bool validate(jint light, jint flash, jint brightness) {
|
||||
@@ -161,6 +167,7 @@ static void setLight_native(
|
||||
|
||||
if(!sSecTried) {
|
||||
sSecHal = ISecLight::getService();
|
||||
+ sSehHal = ISehLight::getService();
|
||||
//sSecTried = true;
|
||||
}
|
||||
|
||||
@@ -178,6 +185,25 @@ static void setLight_native(
|
||||
return;
|
||||
}
|
||||
|
||||
+ if(sSehHal != nullptr && light == 0 && flashMode == static_cast<jint>(Flash::HARDWARE)) {
|
||||
+ SehType type = static_cast<SehType>(light);
|
||||
+ SehLightState state {};
|
||||
+ state.flashMode = Flash::NONE;
|
||||
+ Brightness brightness = static_cast<Brightness>(brightnessMode);
|
||||
+ state.brightnessMode = brightness;
|
||||
+ state.extendedBrightness = colorARGB;
|
||||
+
|
||||
+ {
|
||||
+ android::base::Timer t;
|
||||
+ Return<Status> ret = sSehHal->sehSetLight(type, state);
|
||||
+ if(!ret.isOk()) {
|
||||
+ ALOGE("Failed to issue set light command.");
|
||||
+ }
|
||||
+ if (t.duration() > 50ms) ALOGD("Excessive delay setting light");
|
||||
+ }
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
Type type = static_cast<Type>(light);
|
||||
LightState state = constructState(
|
||||
colorARGB, flashMode, onMS, offMS, brightnessMode);
|
||||
diff --git a/services/core/jni/com_android_server_lights_LightsService.cpp.orig b/services/core/jni/com_android_server_lights_LightsService.cpp.orig
|
||||
new file mode 100644
|
||||
index 00000000000..a21c6e2c8ef
|
||||
--- /dev/null
|
||||
+++ b/services/core/jni/com_android_server_lights_LightsService.cpp.orig
|
||||
@@ -0,0 +1,207 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2009 The Android Open Source Project
|
||||
+ * Copyright (C) 2015 The CyanogenMod Project
|
||||
+ *
|
||||
+ * Licensed under the Apache License, Version 2.0 (the "License");
|
||||
+ * you may not use this file except in compliance with the License.
|
||||
+ * You may obtain a copy of the License at
|
||||
+ *
|
||||
+ * http://www.apache.org/licenses/LICENSE-2.0
|
||||
+ *
|
||||
+ * Unless required by applicable law or agreed to in writing, software
|
||||
+ * distributed under the License is distributed on an "AS IS" BASIS,
|
||||
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
+ * See the License for the specific language governing permissions and
|
||||
+ * limitations under the License.
|
||||
+ */
|
||||
+
|
||||
+#define LOG_TAG "LightsService"
|
||||
+
|
||||
+#include "jni.h"
|
||||
+#include <nativehelper/JNIHelp.h>
|
||||
+#include "android_runtime/AndroidRuntime.h"
|
||||
+
|
||||
+#include <android/hardware/light/2.0/ILight.h>
|
||||
+#include <android/hardware/light/2.0/types.h>
|
||||
+#include <vendor/samsung/hardware/light/2.0/ISecLight.h>
|
||||
+#include <vendor/samsung/hardware/light/2.0/types.h>
|
||||
+#include <android-base/chrono_utils.h>
|
||||
+#include <utils/misc.h>
|
||||
+#include <utils/Log.h>
|
||||
+#include <map>
|
||||
+#include <stdio.h>
|
||||
+
|
||||
+namespace android {
|
||||
+
|
||||
+using Brightness = ::android::hardware::light::V2_0::Brightness;
|
||||
+using Flash = ::android::hardware::light::V2_0::Flash;
|
||||
+using ILight = ::android::hardware::light::V2_0::ILight;
|
||||
+using LightState = ::android::hardware::light::V2_0::LightState;
|
||||
+using Status = ::android::hardware::light::V2_0::Status;
|
||||
+using Type = ::android::hardware::light::V2_0::Type;
|
||||
+template<typename T>
|
||||
+using Return = ::android::hardware::Return<T>;
|
||||
+
|
||||
+using ISecLight = ::vendor::samsung::hardware::light::V2_0::ISecLight;
|
||||
+using SecType = ::vendor::samsung::hardware::light::V2_0::SecType;
|
||||
+static bool sLightSupported = true;
|
||||
+
|
||||
+static sp<ISecLight> sSecHal;
|
||||
+static bool sSecTried = false;
|
||||
+
|
||||
+static bool validate(jint light, jint flash, jint brightness) {
|
||||
+ bool valid = true;
|
||||
+
|
||||
+ if (light < 0 || light >= static_cast<jint>(Type::COUNT)) {
|
||||
+ ALOGE("Invalid light parameter %d.", light);
|
||||
+ valid = false;
|
||||
+ }
|
||||
+
|
||||
+ if (flash != static_cast<jint>(Flash::NONE) &&
|
||||
+ flash != static_cast<jint>(Flash::TIMED) &&
|
||||
+ flash != static_cast<jint>(Flash::HARDWARE)) {
|
||||
+ ALOGE("Invalid flash parameter %d.", flash);
|
||||
+ valid = false;
|
||||
+ }
|
||||
+
|
||||
+ if (brightness != static_cast<jint>(Brightness::USER) &&
|
||||
+ brightness != static_cast<jint>(Brightness::SENSOR) &&
|
||||
+ brightness != static_cast<jint>(Brightness::LOW_PERSISTENCE)) {
|
||||
+ ALOGE("Invalid brightness parameter %d.", brightness);
|
||||
+ valid = false;
|
||||
+ }
|
||||
+
|
||||
+ if (brightness == static_cast<jint>(Brightness::LOW_PERSISTENCE) &&
|
||||
+ light != static_cast<jint>(Type::BACKLIGHT)) {
|
||||
+ ALOGE("Cannot set low-persistence mode for non-backlight device.");
|
||||
+ valid = false;
|
||||
+ }
|
||||
+
|
||||
+ return valid;
|
||||
+}
|
||||
+
|
||||
+static LightState constructState(
|
||||
+ jint colorARGB,
|
||||
+ jint flashMode,
|
||||
+ jint onMS,
|
||||
+ jint offMS,
|
||||
+ jint brightnessMode){
|
||||
+ Flash flash = static_cast<Flash>(flashMode);
|
||||
+ Brightness brightness = static_cast<Brightness>(brightnessMode);
|
||||
+
|
||||
+ LightState state{};
|
||||
+
|
||||
+ if (brightness == Brightness::LOW_PERSISTENCE) {
|
||||
+ state.flashMode = Flash::NONE;
|
||||
+ } else {
|
||||
+ // Only set non-brightness settings when not in low-persistence mode
|
||||
+ state.flashMode = flash;
|
||||
+ state.flashOnMs = onMS;
|
||||
+ state.flashOffMs = offMS;
|
||||
+ }
|
||||
+
|
||||
+ state.color = colorARGB;
|
||||
+ state.brightnessMode = brightness;
|
||||
+
|
||||
+ return state;
|
||||
+}
|
||||
+
|
||||
+static void processReturn(
|
||||
+ const Return<Status> &ret,
|
||||
+ Type type,
|
||||
+ const LightState &state) {
|
||||
+ if (!ret.isOk()) {
|
||||
+ ALOGE("Failed to issue set light command.");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ switch (static_cast<Status>(ret)) {
|
||||
+ case Status::SUCCESS:
|
||||
+ break;
|
||||
+ case Status::LIGHT_NOT_SUPPORTED:
|
||||
+ ALOGE("Light requested not available on this device. %d", type);
|
||||
+ break;
|
||||
+ case Status::BRIGHTNESS_NOT_SUPPORTED:
|
||||
+ ALOGE("Brightness parameter not supported on this device: %d",
|
||||
+ state.brightnessMode);
|
||||
+ break;
|
||||
+ case Status::UNKNOWN:
|
||||
+ default:
|
||||
+ ALOGE("Unknown error setting light.");
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static void setLight_native(
|
||||
+ JNIEnv* /* env */,
|
||||
+ jobject /* clazz */,
|
||||
+ jint light,
|
||||
+ jint colorARGB,
|
||||
+ jint flashMode,
|
||||
+ jint onMS,
|
||||
+ jint offMS,
|
||||
+ jint brightnessMode,
|
||||
+ jint brightnessLevel) {
|
||||
+
|
||||
+ if (!sLightSupported) {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (!validate(light, flashMode, brightnessMode)) {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (brightnessLevel > 0 && brightnessLevel <= 0xFF) {
|
||||
+ int colorAlpha = (colorARGB & 0xFF000000) >> 24;
|
||||
+ if (colorAlpha == 0x00) {
|
||||
+ colorAlpha = 0xFF;
|
||||
+ }
|
||||
+ colorAlpha = (colorAlpha * brightnessLevel) / 0xFF;
|
||||
+ colorARGB = (colorAlpha << 24) + (colorARGB & 0x00FFFFFF);
|
||||
+ }
|
||||
+
|
||||
+ if(!sSecTried) {
|
||||
+ sSecHal = ISecLight::getService();
|
||||
+ //sSecTried = true;
|
||||
+ }
|
||||
+
|
||||
+ if(sSecHal != nullptr) {
|
||||
+ SecType type = static_cast<SecType>(light);
|
||||
+ LightState state = constructState(
|
||||
+ colorARGB, flashMode, onMS, offMS, brightnessMode);
|
||||
+
|
||||
+ {
|
||||
+ android::base::Timer t;
|
||||
+ Return<Status> ret = sSecHal->setLightSec(type, state);
|
||||
+ processReturn(ret, static_cast<Type>(light), state);
|
||||
+ if (t.duration() > 50ms) ALOGD("Excessive delay setting light");
|
||||
+ }
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ Type type = static_cast<Type>(light);
|
||||
+ LightState state = constructState(
|
||||
+ colorARGB, flashMode, onMS, offMS, brightnessMode);
|
||||
+
|
||||
+ {
|
||||
+ android::base::Timer t;
|
||||
+ sp<ILight> hal = ILight::getService();
|
||||
+ if (hal == nullptr) {
|
||||
+ sLightSupported = false;
|
||||
+ return;
|
||||
+ }
|
||||
+ Return<Status> ret = hal->setLight(type, state);
|
||||
+ processReturn(ret, type, state);
|
||||
+ if (t.duration() > 50ms) ALOGD("Excessive delay setting light");
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static const JNINativeMethod method_table[] = {
|
||||
+ { "setLight_native", "(IIIIIII)V", (void*)setLight_native },
|
||||
+};
|
||||
+
|
||||
+int register_android_server_LightsService(JNIEnv *env) {
|
||||
+ return jniRegisterNativeMethods(env, "com/android/server/lights/LightsService",
|
||||
+ method_table, NELEM(method_table));
|
||||
+}
|
||||
+
|
||||
+};
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
From 47c5660af8f54286d6c525e211077c05f9689ca8 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sun, 15 Dec 2019 16:58:38 +0100
|
||||
Subject: [PATCH 38/58] Add a nodim property for FacolaView
|
||||
|
||||
Set persist.sys.phh.nodim to true to remove diming/full brightness
|
||||
---
|
||||
.../android/server/biometrics/fingerprint/FacolaView.java | 8 ++++++--
|
||||
1 file changed, 6 insertions(+), 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 4ff373a108d..08436019bc9 100644
|
||||
--- a/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||
@@ -57,6 +57,7 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
|
||||
private final WindowManager mWM;
|
||||
private final boolean samsungFod = samsungHasCmd("fod_enable");
|
||||
+ private final boolean noDim;
|
||||
|
||||
private boolean mHidden = true;
|
||||
FacolaView(Context context) {
|
||||
@@ -68,6 +69,7 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
mHandlerThread.start();
|
||||
mHandler = new Handler(mHandlerThread.getLooper());
|
||||
|
||||
+ 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(",");
|
||||
String[] size = android.os.SystemProperties.get("persist.vendor.sys.fp.fod.size.width_height", "").split(",");
|
||||
Slog.d("PHH-Enroll", "FacolaView hello");
|
||||
@@ -149,8 +151,10 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
return false;
|
||||
}
|
||||
|
||||
- mParams.dimAmount = TOUCHED_DIM;
|
||||
- mParams.screenBrightness = 1.0f;
|
||||
+ if(!noDim) {
|
||||
+ mParams.dimAmount = TOUCHED_DIM;
|
||||
+ mParams.screenBrightness = 1.0f;
|
||||
+ }
|
||||
mWM.updateViewLayout(this, mParams);
|
||||
|
||||
return true;
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
From fffb6c1f4bf48d2bdc1a1b3c24b97d32bdaa4cca Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sun, 15 Dec 2019 22:14:12 +0100
|
||||
Subject: [PATCH 39/58] Add Samsung's Q power HAL to fix suspend
|
||||
|
||||
Change-Id: I1edd4de9932ab089b7051f1329f60c15b9d99aaa
|
||||
---
|
||||
services/core/jni/Android.bp | 1 +
|
||||
...ndroid_server_power_PowerManagerService.cpp | 18 ++++++++++++++++++
|
||||
2 files changed, 19 insertions(+)
|
||||
|
||||
diff --git a/services/core/jni/Android.bp b/services/core/jni/Android.bp
|
||||
index 3ffa7561028..8f44be480c9 100644
|
||||
--- a/services/core/jni/Android.bp
|
||||
+++ b/services/core/jni/Android.bp
|
||||
@@ -135,6 +135,7 @@ cc_defaults {
|
||||
"android.system.suspend@1.0",
|
||||
"suspend_control_aidl_interface-cpp",
|
||||
"vendor.lineage.power@1.0",
|
||||
+ "vendor.samsung.hardware.miscpower@2.0",
|
||||
"vendor.samsung.hardware.light@2.0",
|
||||
"vendor.samsung.hardware.light@3.0",
|
||||
],
|
||||
diff --git a/services/core/jni/com_android_server_power_PowerManagerService.cpp b/services/core/jni/com_android_server_power_PowerManagerService.cpp
|
||||
index 211ea50ddc9..bf0599fe18a 100644
|
||||
--- a/services/core/jni/com_android_server_power_PowerManagerService.cpp
|
||||
+++ b/services/core/jni/com_android_server_power_PowerManagerService.cpp
|
||||
@@ -21,6 +21,7 @@
|
||||
#include <android/hardware/power/1.1/IPower.h>
|
||||
#include <android/system/suspend/1.0/ISystemSuspend.h>
|
||||
#include <android/system/suspend/ISuspendControlService.h>
|
||||
+#include <vendor/samsung/hardware/miscpower/2.0/ISehMiscPower.h>
|
||||
#include <nativehelper/JNIHelp.h>
|
||||
#include <vendor/lineage/power/1.0/ILineagePower.h>
|
||||
#include "jni.h"
|
||||
@@ -58,6 +59,7 @@ using IPowerV1_1 = android::hardware::power::V1_1::IPower;
|
||||
using IPowerV1_0 = android::hardware::power::V1_0::IPower;
|
||||
using ILineagePowerV1_0 = vendor::lineage::power::V1_0::ILineagePower;
|
||||
using vendor::lineage::power::V1_0::LineageFeature;
|
||||
+using ISehMiscPower = vendor::samsung::hardware::miscpower::V2_0::ISehMiscPower;
|
||||
|
||||
namespace android {
|
||||
|
||||
@@ -74,6 +76,7 @@ static jobject gPowerManagerServiceObj;
|
||||
static sp<IPowerV1_0> gPowerHalV1_0_ = nullptr;
|
||||
static sp<IPowerV1_1> gPowerHalV1_1_ = nullptr;
|
||||
static sp<ILineagePowerV1_0> gLineagePowerHalV1_0_ = nullptr;
|
||||
+static sp<ISehMiscPower> gSehMiscPower = nullptr;
|
||||
static bool gPowerHalExists = true;
|
||||
static bool gLineagePowerHalExists = true;
|
||||
static std::mutex gPowerHalMutex;
|
||||
@@ -98,6 +101,7 @@ static bool checkAndClearExceptionFromCallback(JNIEnv* env, const char* methodNa
|
||||
// The caller must be holding gPowerHalMutex.
|
||||
static void connectPowerHalLocked() {
|
||||
if (gPowerHalExists && gPowerHalV1_0_ == nullptr) {
|
||||
+ gSehMiscPower = ISehMiscPower::getService();
|
||||
gPowerHalV1_0_ = IPowerV1_0::getService("miscpower");
|
||||
if(gPowerHalV1_0_ == nullptr)
|
||||
gPowerHalV1_0_ = IPowerV1_0::getService();
|
||||
@@ -130,6 +134,12 @@ void connectLineagePowerHalLocked() {
|
||||
}
|
||||
}
|
||||
|
||||
+sp<ISehMiscPower> getSehMiscPower() {
|
||||
+ std::lock_guard<std::mutex> lock(gPowerHalMutex);
|
||||
+ connectPowerHalLocked();
|
||||
+ return gSehMiscPower;
|
||||
+}
|
||||
+
|
||||
// Retrieve a copy of PowerHAL V1_0
|
||||
sp<IPowerV1_0> getPowerHalV1_0() {
|
||||
std::lock_guard<std::mutex> lock(gPowerHalMutex);
|
||||
@@ -314,6 +324,14 @@ static void nativeSetInteractive(JNIEnv* /* env */, jclass /* clazz */, jboolean
|
||||
enable ? "true" : "false", enable ? "on" : "off");
|
||||
}
|
||||
}
|
||||
+ sp<ISehMiscPower> sehMiscPower = getSehMiscPower();
|
||||
+ if(sehMiscPower != nullptr) {
|
||||
+ android::base::Timer t;
|
||||
+ Return<void> ret = sehMiscPower->setInteractiveAsync(enable, 0);
|
||||
+ if(!ret.isOk()) {
|
||||
+ ALOGE("set interactive async() failed: seh misc setInteractiveAsync");
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
static void nativeSetAutoSuspend(JNIEnv* /* env */, jclass /* clazz */, jboolean enable) {
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,117 @@
|
||||
From 2edb7c4d383365654a4e650041e0d85fd8fa2f9c Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sun, 15 Dec 2019 23:19:32 +0100
|
||||
Subject: [PATCH 40/58] FacolaView: Support goodix ext and fix wrong forced
|
||||
brightness
|
||||
|
||||
---
|
||||
services/core/Android.bp | 1 +
|
||||
.../biometrics/fingerprint/FacolaView.java | 30 ++++++++++++++-----
|
||||
2 files changed, 23 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/services/core/Android.bp b/services/core/Android.bp
|
||||
index 2e7118da1c0..ccf1ca99b54 100644
|
||||
--- a/services/core/Android.bp
|
||||
+++ b/services/core/Android.bp
|
||||
@@ -55,6 +55,7 @@ java_library_static {
|
||||
"dnsresolver_aidl_interface-V2-java",
|
||||
"netd_aidl_interface-V2-java",
|
||||
"netd_event_listener_interface-java",
|
||||
+ "vendor.goodix.extend.service-V2.0-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 08436019bc9..651cc97be39 100644
|
||||
--- a/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||
@@ -36,6 +36,7 @@ import java.io.FileReader;
|
||||
import java.io.PrintWriter;
|
||||
|
||||
import vendor.xiaomi.hardware.fingerprintextension.V1_0.IXiaomiFingerprint;
|
||||
+import vendor.goodix.extend.service.V2_0.IGoodixFPExtendService;
|
||||
|
||||
import android.os.Handler;
|
||||
import android.os.HandlerThread;
|
||||
@@ -46,6 +47,7 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
private final Paint mPaintFingerprint = new Paint();
|
||||
private final Paint mPaintShow = new Paint();
|
||||
private IXiaomiFingerprint mXiaomiFingerprint = null;
|
||||
+ private IGoodixFPExtendService mGoodixFingerprint = null;
|
||||
private boolean mInsideCircle = false;
|
||||
private final WindowManager.LayoutParams mParams = new WindowManager.LayoutParams();
|
||||
|
||||
@@ -94,11 +96,17 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
setOnTouchListener(this);
|
||||
mWM = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
|
||||
Slog.d("PHH-Enroll", "Created facola...");
|
||||
- try {
|
||||
- if(mW != -1)
|
||||
+ if(mW != -1) {
|
||||
+ try {
|
||||
mXiaomiFingerprint = IXiaomiFingerprint.getService();
|
||||
- } catch(Exception e) {
|
||||
- Slog.d("PHH-Enroll", "Failed getting xiaomi fingerprint service", e);
|
||||
+ } 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);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,6 +121,8 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
int nitValue = 2;
|
||||
if(mXiaomiFingerprint != null)
|
||||
mXiaomiFingerprint.extCmd(0xa, nitValue);
|
||||
+ if(mGoodixFingerprint != null)
|
||||
+ mXiaomiFingerprint.extCmd(10, 1);
|
||||
} catch(Exception e) {
|
||||
Slog.d("PHH-Enroll", "Failed calling xiaomi fp extcmd");
|
||||
}
|
||||
@@ -122,6 +132,8 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
try {
|
||||
if(mXiaomiFingerprint != null)
|
||||
mXiaomiFingerprint.extCmd(0xa, 0);
|
||||
+ if(mGoodixFingerprint != null)
|
||||
+ mXiaomiFingerprint.extCmd(10, 0);
|
||||
} catch(Exception e) {
|
||||
Slog.d("PHH-Enroll", "Failed calling xiaomi fp extcmd");
|
||||
}
|
||||
@@ -151,10 +163,10 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
return false;
|
||||
}
|
||||
|
||||
- if(!noDim) {
|
||||
- mParams.dimAmount = TOUCHED_DIM;
|
||||
- mParams.screenBrightness = 1.0f;
|
||||
- }
|
||||
+ if(!noDim) {
|
||||
+ mParams.dimAmount = TOUCHED_DIM;
|
||||
+ mParams.screenBrightness = 1.0f;
|
||||
+ }
|
||||
mWM.updateViewLayout(this, mParams);
|
||||
|
||||
return true;
|
||||
@@ -164,6 +176,7 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
Slog.d("PHH-Enroll", "Show", new Exception());
|
||||
if(!mHidden) return;
|
||||
mHidden = false;
|
||||
+ mInsideCircle = false;
|
||||
if(samsungFod) {
|
||||
samsungCmd("fod_enable,1,1");
|
||||
}
|
||||
@@ -191,6 +204,7 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
WindowManager.LayoutParams.FLAG_DIM_BEHIND |
|
||||
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
|
||||
mParams.dimAmount = UNTOUCHED_DIM;
|
||||
+ mParams.screenBrightness = .0f;
|
||||
|
||||
mParams.packageName = "android";
|
||||
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
From 6963785c01498fcb54b697bb2530ecd7a8297f56 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 16 Dec 2019 19:31:12 +0100
|
||||
Subject: [PATCH 41/58] Fix (big) goodix integration mistakes
|
||||
|
||||
---
|
||||
.../biometrics/fingerprint/FacolaView.java | 19 ++++++++++++-------
|
||||
1 file changed, 12 insertions(+), 7 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 651cc97be39..b8ca25a48d2 100644
|
||||
--- a/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||
@@ -119,10 +119,11 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
if(mInsideCircle) {
|
||||
try {
|
||||
int nitValue = 2;
|
||||
- if(mXiaomiFingerprint != null)
|
||||
+ if(mXiaomiFingerprint != null) {
|
||||
mXiaomiFingerprint.extCmd(0xa, nitValue);
|
||||
- if(mGoodixFingerprint != null)
|
||||
- mXiaomiFingerprint.extCmd(10, 1);
|
||||
+ } else if(mGoodixFingerprint != null) {
|
||||
+ mGoodixFingerprint.goodixExtendCommand(10, 1);
|
||||
+ }
|
||||
} catch(Exception e) {
|
||||
Slog.d("PHH-Enroll", "Failed calling xiaomi fp extcmd");
|
||||
}
|
||||
@@ -130,10 +131,11 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
canvas.drawCircle(mW/2, mH/2, (float) (mW/2.0f), this.mPaintFingerprint);
|
||||
} else {
|
||||
try {
|
||||
- if(mXiaomiFingerprint != null)
|
||||
+ if(mXiaomiFingerprint != null) {
|
||||
mXiaomiFingerprint.extCmd(0xa, 0);
|
||||
- if(mGoodixFingerprint != null)
|
||||
- mXiaomiFingerprint.extCmd(10, 0);
|
||||
+ } else if(mGoodixFingerprint != null) {
|
||||
+ mGoodixFingerprint.goodixExtendCommand(10, 0);
|
||||
+ }
|
||||
} catch(Exception e) {
|
||||
Slog.d("PHH-Enroll", "Failed calling xiaomi fp extcmd");
|
||||
}
|
||||
@@ -226,8 +228,11 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
if(mX == -1 || mY == -1 || mW == -1 || mH == -1) return;
|
||||
|
||||
try {
|
||||
- if(mXiaomiFingerprint != null)
|
||||
+ 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");
|
||||
}
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
From 7117854a66e39ec6db3deb5caa02bb7008ed3650 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Cai <peter@typeblog.net>
|
||||
Date: Thu, 2 Jan 2020 10:16:49 +0800
|
||||
Subject: [PATCH 42/58] fix crashing on devices with higher aspect ratio down
|
||||
to sw288dp
|
||||
|
||||
* This is what the Qin 2 (Pro) is.
|
||||
|
||||
Change-Id: I2289a23b706b512a99a541221576960407c098e7
|
||||
---
|
||||
.../SystemUI/res/values-sw288dp/dimens.xml | 33 +++++++++++++++++++
|
||||
1 file changed, 33 insertions(+)
|
||||
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
|
||||
new file mode 100644
|
||||
index 00000000000..40adc2e6879
|
||||
--- /dev/null
|
||||
+++ b/packages/SystemUI/res/values-sw288dp/dimens.xml
|
||||
@@ -0,0 +1,33 @@
|
||||
+<?xml version="1.0" encoding="utf-8"?>
|
||||
+<!--
|
||||
+ ~ Copyright (C) 2019 The Android Open Source Project
|
||||
+ ~
|
||||
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
+ ~ you may not use this file except in compliance with the License.
|
||||
+ ~ You may obtain a copy of the License at
|
||||
+ ~
|
||||
+ ~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
+ ~
|
||||
+ ~ Unless required by applicable law or agreed to in writing, software
|
||||
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
+ ~ See the License for the specific language governing permissions and
|
||||
+ ~ limitations under the License
|
||||
+ -->
|
||||
+<resources>
|
||||
+ <!-- Global actions grid -->
|
||||
+ <dimen name="global_actions_grid_vertical_padding">3dp</dimen>
|
||||
+ <dimen name="global_actions_grid_horizontal_padding">3dp</dimen>
|
||||
+
|
||||
+ <dimen name="global_actions_grid_item_side_margin">5dp</dimen>
|
||||
+ <dimen name="global_actions_grid_item_vertical_margin">4dp</dimen>
|
||||
+ <dimen name="global_actions_grid_item_width">64dp</dimen>
|
||||
+ <dimen name="global_actions_grid_item_height">64dp</dimen>
|
||||
+
|
||||
+ <dimen name="global_actions_grid_item_icon_width">20dp</dimen>
|
||||
+ <dimen name="global_actions_grid_item_icon_height">20dp</dimen>
|
||||
+ <dimen name="global_actions_grid_item_icon_top_margin">12dp</dimen>
|
||||
+ <dimen name="global_actions_grid_item_icon_side_margin">22dp</dimen>
|
||||
+ <dimen name="global_actions_grid_item_icon_bottom_margin">4dp</dimen>
|
||||
+
|
||||
+</resources>
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
From 1269ddf783c8d092c5eb51324ea9bb53230789af Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sat, 22 Feb 2020 23:25:51 +0100
|
||||
Subject: [PATCH 43/58] FacolaView] Allow system-side properties (vendor-side
|
||||
works only with proper selinux)
|
||||
|
||||
---
|
||||
.../com/android/server/biometrics/fingerprint/FacolaView.java | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
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 b8ca25a48d2..f77e8282689 100644
|
||||
--- a/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||
@@ -73,7 +73,11 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
|
||||
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 == 0)
|
||||
+ location = android.os.SystemProperties.get("persist.sys.fp.fod.location.X_Y", "").split(",");
|
||||
String[] size = android.os.SystemProperties.get("persist.vendor.sys.fp.fod.size.width_height", "").split(",");
|
||||
+ if(size.length == 0)
|
||||
+ size = android.os.SystemProperties.get("persist.sys.fp.fod.size.width_height", "").split(",");
|
||||
Slog.d("PHH-Enroll", "FacolaView hello");
|
||||
if(size.length == 2 && location.length == 2) {
|
||||
Slog.d("PHH-Enroll", "Got real values");
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
From d829818f8aaf25aaa6ae99f8220a73a2717342a5 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sat, 22 Feb 2020 23:45:54 +0100
|
||||
Subject: [PATCH 44/58] report press events to oppo fingerprint sensor
|
||||
|
||||
---
|
||||
.../biometrics/fingerprint/FacolaView.java | 16 ++++++++++++++++
|
||||
1 file changed, 16 insertions(+)
|
||||
|
||||
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 f77e8282689..0fb4254eb60 100644
|
||||
--- a/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||
@@ -114,6 +114,20 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
}
|
||||
}
|
||||
|
||||
+ private final File oppoFod = new File("/sys/kernel/oppo_display/notify_fppress");
|
||||
+ private void oppoPress(boolean pressed) {
|
||||
+ if(!oppoFod.exists()) return;
|
||||
+ try {
|
||||
+ String v = "0";
|
||||
+ if(pressed) v = "1";
|
||||
+ PrintWriter writer = new PrintWriter(oppoFod, "UTF-8");
|
||||
+ writer.println(v);
|
||||
+ writer.close();
|
||||
+ } catch(Exception e) {
|
||||
+ Slog.d("PHH", "Failed to notify oppo fp press", e);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
@Override
|
||||
protected void onDraw(Canvas canvas) {
|
||||
super.onDraw(canvas);
|
||||
@@ -131,9 +145,11 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
} catch(Exception e) {
|
||||
Slog.d("PHH-Enroll", "Failed calling xiaomi fp extcmd");
|
||||
}
|
||||
+ oppoPress(true);
|
||||
|
||||
canvas.drawCircle(mW/2, mH/2, (float) (mW/2.0f), this.mPaintFingerprint);
|
||||
} else {
|
||||
+ oppoPress(false);
|
||||
try {
|
||||
if(mXiaomiFingerprint != null) {
|
||||
mXiaomiFingerprint.extCmd(0xa, 0);
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
From 89f7440821343b3a55e75be79e4a58305f0bd660 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 2 Mar 2020 21:13:36 +0100
|
||||
Subject: [PATCH 45/58] Add support for samsung optical under-display
|
||||
fingerprint
|
||||
|
||||
---
|
||||
services/core/Android.bp | 1 +
|
||||
.../biometrics/fingerprint/FacolaView.java | 17 +++++++++++++++--
|
||||
2 files changed, 16 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/services/core/Android.bp b/services/core/Android.bp
|
||||
index ccf1ca99b54..ba6c5fcf7ee 100644
|
||||
--- a/services/core/Android.bp
|
||||
+++ b/services/core/Android.bp
|
||||
@@ -56,6 +56,7 @@ java_library_static {
|
||||
"netd_aidl_interface-V2-java",
|
||||
"netd_event_listener_interface-java",
|
||||
"vendor.goodix.extend.service-V2.0-java",
|
||||
+ "vendor.samsung.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 0fb4254eb60..edd13988e49 100644
|
||||
--- a/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||
@@ -37,6 +37,7 @@ import java.io.PrintWriter;
|
||||
|
||||
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 android.os.Handler;
|
||||
import android.os.HandlerThread;
|
||||
@@ -48,6 +49,7 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
private final Paint mPaintShow = new Paint();
|
||||
private IXiaomiFingerprint mXiaomiFingerprint = null;
|
||||
private IGoodixFPExtendService mGoodixFingerprint = null;
|
||||
+ private ISecBiometricsFingerprint mSamsungFingerprint = null;
|
||||
private boolean mInsideCircle = false;
|
||||
private final WindowManager.LayoutParams mParams = new WindowManager.LayoutParams();
|
||||
|
||||
@@ -111,6 +113,11 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
} catch(Exception e) {
|
||||
Slog.d("PHH-Enroll", "Failed getting goodix fingerprint service", e);
|
||||
}
|
||||
+ try {
|
||||
+ mSamsungFingerprint = ISecBiometricsFingerprint.getService();
|
||||
+ } catch(Exception e) {
|
||||
+ Slog.d("PHH-Enroll", "Failed getting samsung fingerprint service", e);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -141,9 +148,12 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
mXiaomiFingerprint.extCmd(0xa, nitValue);
|
||||
} 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>(),
|
||||
+ (int retval, java.util.ArrayList<Byte> out) -> {} );
|
||||
}
|
||||
} catch(Exception e) {
|
||||
- Slog.d("PHH-Enroll", "Failed calling xiaomi fp extcmd");
|
||||
+ Slog.d("PHH-Enroll", "Failed calling fp extcmd", e);
|
||||
}
|
||||
oppoPress(true);
|
||||
|
||||
@@ -155,9 +165,12 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
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) -> {} );
|
||||
}
|
||||
} catch(Exception e) {
|
||||
- Slog.d("PHH-Enroll", "Failed calling xiaomi fp extcmd");
|
||||
+ Slog.d("PHH-Enroll", "Failed calling fp extcmd", e);
|
||||
}
|
||||
canvas.drawCircle(mW/2, mH/2, (float) (mW/2.0f), this.mPaintShow);
|
||||
}
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
From 5c0dc33ebcbb06c0a1408f651c408afca1b606cc Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 2 Mar 2020 21:13:47 +0100
|
||||
Subject: [PATCH 46/58] Fix persist.sys.fp.fod override
|
||||
|
||||
---
|
||||
.../com/android/server/biometrics/fingerprint/FacolaView.java | 4 ++--
|
||||
1 file changed, 2 insertions(+), 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 edd13988e49..2c1ba76f529 100644
|
||||
--- a/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||
@@ -75,10 +75,10 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
|
||||
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 == 0)
|
||||
+ if(location.length != 2)
|
||||
location = android.os.SystemProperties.get("persist.sys.fp.fod.location.X_Y", "").split(",");
|
||||
String[] size = android.os.SystemProperties.get("persist.vendor.sys.fp.fod.size.width_height", "").split(",");
|
||||
- if(size.length == 0)
|
||||
+ if(size.length != 2)
|
||||
size = android.os.SystemProperties.get("persist.sys.fp.fod.size.width_height", "").split(",");
|
||||
Slog.d("PHH-Enroll", "FacolaView hello");
|
||||
if(size.length == 2 && location.length == 2) {
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
From c9cc25cbfb382cbfad7f0694118e1791719c8f87 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Tue, 10 Mar 2020 23:30:17 +0100
|
||||
Subject: [PATCH 47/58] Allow disabling of fingerprint cleanups, needed on some
|
||||
Realme devices that cant enumerate
|
||||
|
||||
---
|
||||
.../android/server/biometrics/BiometricServiceBase.java | 9 ++++++---
|
||||
1 file changed, 6 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/biometrics/BiometricServiceBase.java b/services/core/java/com/android/server/biometrics/BiometricServiceBase.java
|
||||
index 292798721c6..aa94e2e2d40 100644
|
||||
--- a/services/core/java/com/android/server/biometrics/BiometricServiceBase.java
|
||||
+++ b/services/core/java/com/android/server/biometrics/BiometricServiceBase.java
|
||||
@@ -326,6 +326,7 @@ public abstract class BiometricServiceBase extends SystemService
|
||||
private List<? extends BiometricAuthenticator.Identifier> mEnrolledList;
|
||||
// List of templates to remove from the HAL
|
||||
private List<BiometricAuthenticator.Identifier> mUnknownHALTemplates = new ArrayList<>();
|
||||
+ final boolean mNocleanup = android.os.SystemProperties.getBoolean("persist.sys.phh.fingerprint.nocleanup", false);
|
||||
|
||||
InternalEnumerateClient(Context context,
|
||||
DaemonWrapper daemon, long halDeviceId, IBinder token,
|
||||
@@ -370,9 +371,11 @@ public abstract class BiometricServiceBase extends SystemService
|
||||
BiometricAuthenticator.Identifier identifier = mEnrolledList.get(i);
|
||||
Slog.e(getTag(), "doTemplateCleanup(): Removing dangling template from framework: "
|
||||
+ identifier.getBiometricId() + " "
|
||||
- + identifier.getName());
|
||||
- mUtils.removeBiometricForUser(getContext(),
|
||||
- getTargetUserId(), identifier.getBiometricId());
|
||||
+ + identifier.getName() + " /// " + mNocleanup);
|
||||
+ if(!mNocleanup) {
|
||||
+ mUtils.removeBiometricForUser(getContext(),
|
||||
+ getTargetUserId(), identifier.getBiometricId());
|
||||
+ }
|
||||
StatsLog.write(StatsLog.BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED,
|
||||
statsModality(),
|
||||
BiometricsProtoEnums.ISSUE_UNKNOWN_TEMPLATE_ENROLLED_FRAMEWORK);
|
||||
--
|
||||
2.25.1
|
||||
|
||||
293
patches/platform_frameworks_base/0048-Support-Realme-FOD.patch
Normal file
293
patches/platform_frameworks_base/0048-Support-Realme-FOD.patch
Normal file
@@ -0,0 +1,293 @@
|
||||
From 8bec1b57d67df8b2d14b41f91ab909246e655ad0 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Tue, 10 Mar 2020 23:32:00 +0100
|
||||
Subject: [PATCH 48/58] Support Realme FOD
|
||||
|
||||
List of changes:
|
||||
- Enable dimlayer_hbm. This dims the framebuffer, while putting screen
|
||||
into HBM. From user's POV, brightness didn't change, but this enables
|
||||
HBM facola.
|
||||
- Have two separate FOD layers
|
||||
This is needed because hwcomposer is expecting two FOD layers to tell
|
||||
fingerprint HAL that UI is ready.
|
||||
Also, using the second magical layer makes this second layer OVER the
|
||||
dim, so it is running at full brightness.
|
||||
- All devices are now moved to two layers.
|
||||
- Sending events to other HALs have been delayed by 200ms, to account
|
||||
for slow brightness change
|
||||
---
|
||||
services/core/Android.bp | 1 +
|
||||
.../biometrics/fingerprint/FacolaView.java | 146 ++++++++++++++++--
|
||||
2 files changed, 132 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/services/core/Android.bp b/services/core/Android.bp
|
||||
index ba6c5fcf7ee..334d0d04067 100644
|
||||
--- a/services/core/Android.bp
|
||||
+++ b/services/core/Android.bp
|
||||
@@ -57,6 +57,7 @@ java_library_static {
|
||||
"netd_event_listener_interface-java",
|
||||
"vendor.goodix.extend.service-V2.0-java",
|
||||
"vendor.samsung.hardware.biometrics.fingerprint-V2.1-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 2c1ba76f529..42f21d63430 100644
|
||||
--- a/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||
@@ -19,6 +19,7 @@ package com.android.server.biometrics.fingerprint;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Paint;
|
||||
+import android.graphics.Point;
|
||||
import android.content.Context;
|
||||
import android.view.View.OnTouchListener;
|
||||
import android.view.View;
|
||||
@@ -39,19 +40,23 @@ 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 android.hardware.display.DisplayManager;
|
||||
+
|
||||
import android.os.Handler;
|
||||
import android.os.HandlerThread;
|
||||
import android.os.ServiceManager;
|
||||
|
||||
public class FacolaView extends ImageView implements OnTouchListener {
|
||||
- private final int mX, mY, mW, mH;
|
||||
+ 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 ISecBiometricsFingerprint mSamsungFingerprint = 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 TOUCHED_DIM = .9f;
|
||||
@@ -60,20 +65,34 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
private final Handler mHandler;
|
||||
|
||||
private final WindowManager mWM;
|
||||
+ private final DisplayManager mDM;
|
||||
private final boolean samsungFod = samsungHasCmd("fod_enable");
|
||||
- private final boolean noDim;
|
||||
+ private boolean noDim;
|
||||
|
||||
+ private boolean mFullGreenDisplayed = false;
|
||||
+ private final View mFullGreen;
|
||||
private boolean mHidden = true;
|
||||
FacolaView(Context context) {
|
||||
super(context);
|
||||
|
||||
+ mFullGreen = new ImageView(context) {
|
||||
+ @Override
|
||||
+ protected void onDraw(Canvas canvas) {
|
||||
+ super.onDraw(canvas);
|
||||
+ canvas.drawCircle(mW/2, mH/2, (float) (mW/2.0f), mPaintFingerprint);
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ mWM = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
|
||||
+ mDM = (DisplayManager) getContext().getSystemService(Context.DISPLAY_SERVICE);
|
||||
+
|
||||
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", false);
|
||||
+ noDim = android.os.SystemProperties.getBoolean("persist.sys.phh.nodim", true);
|
||||
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(",");
|
||||
@@ -94,13 +113,29 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
mH = -1;
|
||||
}
|
||||
|
||||
+ int oppoSize = android.os.SystemProperties.getInt("persist.vendor.fingerprint.optical.iconsize", 0);
|
||||
+ if(oppoSize > 0) {
|
||||
+ mW = oppoSize;
|
||||
+ mH = oppoSize;
|
||||
+ }
|
||||
+ 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", "\tfacola at " + mX + ", " + mY);
|
||||
+ noDim = true;
|
||||
+ }
|
||||
+
|
||||
mPaintFingerprint.setAntiAlias(true);
|
||||
mPaintFingerprint.setColor(Color.GREEN);
|
||||
|
||||
mPaintShow.setAntiAlias(true);
|
||||
mPaintShow.setColor(Color.argb(0x18, 0x00, 0xff, 0x00));
|
||||
setOnTouchListener(this);
|
||||
- mWM = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
|
||||
Slog.d("PHH-Enroll", "Created facola...");
|
||||
if(mW != -1) {
|
||||
try {
|
||||
@@ -118,6 +153,17 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
} catch(Exception e) {
|
||||
Slog.d("PHH-Enroll", "Failed getting samsung 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(mX != -1) {
|
||||
+ android.os.SystemProperties.set("persist.sys.phh.has_fod", "true");
|
||||
+ } else {
|
||||
+ android.os.SystemProperties.set("persist.sys.phh.has_fod", "false");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -143,21 +189,53 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
//TODO w!=h?
|
||||
if(mInsideCircle) {
|
||||
try {
|
||||
- int nitValue = 2;
|
||||
- if(mXiaomiFingerprint != null) {
|
||||
- mXiaomiFingerprint.extCmd(0xa, nitValue);
|
||||
- } 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>(),
|
||||
- (int retval, java.util.ArrayList<Byte> out) -> {} );
|
||||
+ mParamsTouched.x = mX;
|
||||
+ mParamsTouched.y = mY;
|
||||
+
|
||||
+ mParamsTouched.height = mW;
|
||||
+ mParamsTouched.width = mH;
|
||||
+ mParamsTouched.format = PixelFormat.TRANSLUCENT;
|
||||
+
|
||||
+ 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;
|
||||
+ if(!noDim) {
|
||||
+ mParamsTouched.dimAmount = TOUCHED_DIM;
|
||||
+ mParamsTouched.screenBrightness = 1.0f;
|
||||
}
|
||||
+
|
||||
+ mParamsTouched.packageName = "android";
|
||||
+
|
||||
+ mParamsTouched.gravity = Gravity.TOP | Gravity.LEFT;
|
||||
+ if(!mFullGreenDisplayed && !mHidden) {
|
||||
+ mHandler.post( () -> {
|
||||
+ Slog.d("PHH-Enroll", "Adding full green because of finger pressed");
|
||||
+ mFullGreenDisplayed = true;
|
||||
+ mWM.addView(mFullGreen, mParamsTouched);
|
||||
+ });
|
||||
+ }
|
||||
+
|
||||
+ int nitValue = 2;
|
||||
+ mHandler.postDelayed( () -> {
|
||||
+ try {
|
||||
+ if(mXiaomiFingerprint != null) {
|
||||
+ mXiaomiFingerprint.extCmd(0xa, nitValue);
|
||||
+ } 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>(),
|
||||
+ (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 fp extcmd", e);
|
||||
}
|
||||
oppoPress(true);
|
||||
-
|
||||
- canvas.drawCircle(mW/2, mH/2, (float) (mW/2.0f), this.mPaintFingerprint);
|
||||
} else {
|
||||
oppoPress(false);
|
||||
try {
|
||||
@@ -172,8 +250,15 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
} catch(Exception e) {
|
||||
Slog.d("PHH-Enroll", "Failed calling fp extcmd", e);
|
||||
}
|
||||
- canvas.drawCircle(mW/2, mH/2, (float) (mW/2.0f), this.mPaintShow);
|
||||
+ if(mFullGreenDisplayed) {
|
||||
+ mHandler.post( () -> {
|
||||
+ Slog.d("PHH-Enroll", "Removing full green because of finger released");
|
||||
+ mFullGreenDisplayed = false;
|
||||
+ mWM.removeView(mFullGreen);
|
||||
+ });
|
||||
+ }
|
||||
}
|
||||
+ canvas.drawCircle(mW/2, mH/2, (float) (mW/2.0f), this.mPaintShow);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -211,7 +296,15 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
Slog.d("PHH-Enroll", "Show", new Exception());
|
||||
if(!mHidden) return;
|
||||
mHidden = false;
|
||||
+ if(mOppoFingerprint != null) {
|
||||
+ try {
|
||||
+ mOppoFingerprint.setScreenState(vendor.oppo.hardware.biometrics.fingerprint.V2_1.FingerprintScreenState.FINGERPRINT_SCREEN_ON);
|
||||
+ } catch(Exception e) {
|
||||
+ Slog.d("PHH-Enroll", "Failed setting oppo screen state", e);
|
||||
+ }
|
||||
+ }
|
||||
mInsideCircle = false;
|
||||
+ writeFile("/sys/kernel/oppo_display/dimlayer_hbm", "1");
|
||||
if(samsungFod) {
|
||||
samsungCmd("fod_enable,1,1");
|
||||
}
|
||||
@@ -254,7 +347,20 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
mInsideCircle = false;
|
||||
Slog.d("PHH-Enroll", "Hide", new Exception());
|
||||
if(mHidden) return;
|
||||
+ if(mOppoFingerprint != null) {
|
||||
+ try {
|
||||
+ mOppoFingerprint.setScreenState(vendor.oppo.hardware.biometrics.fingerprint.V2_1.FingerprintScreenState.FINGERPRINT_SCREEN_ON);
|
||||
+ } catch(Exception e) {
|
||||
+ Slog.d("PHH-Enroll", "Failed setting oppo screen state", e);
|
||||
+ }
|
||||
+ }
|
||||
+ writeFile("/sys/kernel/oppo_display/dimlayer_hbm", "0");
|
||||
mHidden = true;
|
||||
+ if(mFullGreenDisplayed) {
|
||||
+ Slog.d("PHH-Enroll", "Removing full green because of hide");
|
||||
+ mFullGreenDisplayed = false;
|
||||
+ mWM.removeView(mFullGreen);
|
||||
+ }
|
||||
if(samsungFod) {
|
||||
samsungCmd("fod_enable,0");
|
||||
}
|
||||
@@ -325,4 +431,14 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
}
|
||||
}
|
||||
|
||||
+ private static void writeFile(String path, String value) {
|
||||
+ try {
|
||||
+ PrintWriter writer = new PrintWriter(path, "UTF-8");
|
||||
+ writer.println(value);
|
||||
+ writer.close();
|
||||
+ } catch(Exception e) {
|
||||
+ android.util.Log.d("PHH", "Failed writing to " + path + ": " + value);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
}
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,88 @@
|
||||
From b071b7633f20b176aee53cbf8baed331a2483019 Mon Sep 17 00:00:00 2001
|
||||
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||
Date: Mon, 30 Mar 2020 10:07:00 +0000
|
||||
Subject: [PATCH 49/58] Support Huawei light HAL
|
||||
|
||||
For https://github.com/phhusson/treble_experimentations/issues/1204
|
||||
|
||||
Change-Id: I719a13eb66a46703b7ff0e00113f9b98b3244996
|
||||
---
|
||||
services/core/jni/Android.bp | 1 +
|
||||
...om_android_server_lights_LightsService.cpp | 30 +++++++++++++++++++
|
||||
2 files changed, 31 insertions(+)
|
||||
|
||||
diff --git a/services/core/jni/Android.bp b/services/core/jni/Android.bp
|
||||
index 8f44be480c9..2bc6a15129f 100644
|
||||
--- a/services/core/jni/Android.bp
|
||||
+++ b/services/core/jni/Android.bp
|
||||
@@ -138,6 +138,7 @@ cc_defaults {
|
||||
"vendor.samsung.hardware.miscpower@2.0",
|
||||
"vendor.samsung.hardware.light@2.0",
|
||||
"vendor.samsung.hardware.light@3.0",
|
||||
+ "vendor.huawei.hardware.light@2.0",
|
||||
],
|
||||
|
||||
static_libs: [
|
||||
diff --git a/services/core/jni/com_android_server_lights_LightsService.cpp b/services/core/jni/com_android_server_lights_LightsService.cpp
|
||||
index dedc7734131..7c2a0b6203d 100644
|
||||
--- a/services/core/jni/com_android_server_lights_LightsService.cpp
|
||||
+++ b/services/core/jni/com_android_server_lights_LightsService.cpp
|
||||
@@ -27,6 +27,7 @@
|
||||
#include <vendor/samsung/hardware/light/2.0/types.h>
|
||||
#include <vendor/samsung/hardware/light/3.0/ISehLight.h>
|
||||
#include <vendor/samsung/hardware/light/3.0/types.h>
|
||||
+#include <vendor/huawei/hardware/light/2.0/ILight.h>
|
||||
#include <android-base/chrono_utils.h>
|
||||
#include <utils/misc.h>
|
||||
#include <utils/Log.h>
|
||||
@@ -49,11 +50,15 @@ using SecType = ::vendor::samsung::hardware::light::V2_0::SecType;
|
||||
using ISehLight = ::vendor::samsung::hardware::light::V3_0::ISehLight;
|
||||
using SehType = ::vendor::samsung::hardware::light::V3_0::SehType;
|
||||
using SehLightState = ::vendor::samsung::hardware::light::V3_0::SehLightState;
|
||||
+using ILightHw = ::vendor::huawei::hardware::light::V2_0::ILight;
|
||||
+using LightStateHw = ::android::hardware::light::V2_0::LightState;
|
||||
static bool sLightSupported = true;
|
||||
|
||||
static sp<ISecLight> sSecHal;
|
||||
static sp<ISehLight> sSehHal;
|
||||
static bool sSecTried = false;
|
||||
+static sp<ILightHw> sHwHal;
|
||||
+static bool sHwTried = false;
|
||||
|
||||
static bool validate(jint light, jint flash, jint brightness) {
|
||||
bool valid = true;
|
||||
@@ -204,6 +209,31 @@ static void setLight_native(
|
||||
return;
|
||||
}
|
||||
|
||||
+ if (!sHwTried) {
|
||||
+ sHwHal = ILightHw::getService();
|
||||
+ //sHwTried = true;
|
||||
+ }
|
||||
+
|
||||
+ if (sHwHal != nullptr && light == 0) {
|
||||
+ ALOGE("sHwHal triggered!");
|
||||
+ int brightness = colorARGB & 0xff;
|
||||
+ int hwBrightness = brightness << 4;
|
||||
+ LightState state = constructState(hwBrightness, flashMode, onMS, offMS, brightnessMode);
|
||||
+ bool got260 = false;
|
||||
+ sHwHal->HWgetSupportedTypes([&](auto types) {
|
||||
+ for (const auto& type: types) {
|
||||
+ if (type == 260) {
|
||||
+ ALOGE("sHwHal reports 260 as a supported type");
|
||||
+ got260 = true;
|
||||
+ }
|
||||
+ }
|
||||
+ });
|
||||
+ if (got260) {
|
||||
+ sHwHal->HWsetLight(260, state);
|
||||
+ return;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
Type type = static_cast<Type>(light);
|
||||
LightState state = constructState(
|
||||
colorARGB, flashMode, onMS, offMS, brightnessMode);
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
From fe62d8d4d08605687312ca28f722978191e4ac41 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sun, 5 Apr 2020 16:32:46 +0200
|
||||
Subject: [PATCH 50/58] Always allow overriding the number of work profiles
|
||||
|
||||
---
|
||||
.../java/com/android/server/pm/UserManagerService.java | 10 ++--------
|
||||
1 file changed, 2 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
|
||||
index 82bc41fcdcd..4a3da73cf42 100644
|
||||
--- a/services/core/java/com/android/server/pm/UserManagerService.java
|
||||
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
|
||||
@@ -4438,14 +4438,8 @@ public class UserManagerService extends IUserManager.Stub {
|
||||
|
||||
@VisibleForTesting
|
||||
static int getMaxManagedProfiles() {
|
||||
- // Allow overriding max managed profiles on debuggable builds for testing
|
||||
- // of multiple profiles.
|
||||
- if (!Build.IS_DEBUGGABLE) {
|
||||
- return MAX_MANAGED_PROFILES;
|
||||
- } else {
|
||||
- return SystemProperties.getInt("persist.sys.max_profiles",
|
||||
- MAX_MANAGED_PROFILES);
|
||||
- }
|
||||
+ return SystemProperties.getInt("persist.sys.max_profiles",
|
||||
+ MAX_MANAGED_PROFILES);
|
||||
}
|
||||
|
||||
@GuardedBy("mUsersLock")
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
From 7a5d752d18a11b7a64e13879cdf42235bcd54237 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Thu, 9 Apr 2020 22:57:47 +0200
|
||||
Subject: [PATCH 51/58] Additional fod command for non-optical samsung devices
|
||||
running Q vendor
|
||||
|
||||
---
|
||||
.../com/android/server/biometrics/fingerprint/FacolaView.java | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
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 42f21d63430..a87f7e78af4 100644
|
||||
--- a/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||
@@ -307,6 +307,7 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
writeFile("/sys/kernel/oppo_display/dimlayer_hbm", "1");
|
||||
if(samsungFod) {
|
||||
samsungCmd("fod_enable,1,1");
|
||||
+ samsungCmd("fod_enable,1,1,0");
|
||||
}
|
||||
if(mX == -1 || mY == -1 || mW == -1 || mH == -1) return;
|
||||
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
From d12f98cc2bde44b689cd4be62ba6e7d1b9fc8d9e 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 52/58] 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 f9ac8db09ea..6b0dbc336bb 100644
|
||||
--- a/services/core/java/com/android/server/lights/LightsService.java
|
||||
+++ b/services/core/java/com/android/server/lights/LightsService.java
|
||||
@@ -31,10 +31,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 {
|
||||
|
||||
@@ -92,6 +96,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.25.1
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
From 84c844aca01d2a838ae19be6b7961811852fa31f 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 53/58] 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.25.1
|
||||
|
||||
@@ -0,0 +1,531 @@
|
||||
From 5528cf273e0e2e4b33ad5202a494ebc4018216ae 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 54/58] 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 334d0d04067..8dcb4396953 100644
|
||||
--- a/services/core/Android.bp
|
||||
+++ b/services/core/Android.bp
|
||||
@@ -56,7 +56,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.25.1
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
From 5bc5806b8570dcd25aae6bcb27926037a48855de 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 55/58] 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.25.1
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
From 2f5a9ff1301647e242dc37d25387dff5ed652207 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 56/58] 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.25.1
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
From ce6a18178130952fd1238d2fa66aceef1c114ed1 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 57/58] 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.25.1
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
From cb07b8475b5b0c9da86012d4c260a404a2e5c640 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sat, 6 Jun 2020 18:21:56 +0200
|
||||
Subject: [PATCH 58/58] HOME deserves to wake-up devices just as well as back
|
||||
and menu
|
||||
|
||||
---
|
||||
core/java/android/view/KeyEvent.java | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/core/java/android/view/KeyEvent.java b/core/java/android/view/KeyEvent.java
|
||||
index fee2503ccad..7bdeaa6e83e 100644
|
||||
--- a/core/java/android/view/KeyEvent.java
|
||||
+++ b/core/java/android/view/KeyEvent.java
|
||||
@@ -1935,6 +1935,7 @@ public class KeyEvent extends InputEvent implements Parcelable {
|
||||
switch (keyCode) {
|
||||
case KeyEvent.KEYCODE_BACK:
|
||||
case KeyEvent.KEYCODE_MENU:
|
||||
+ case KeyEvent.KEYCODE_HOME:
|
||||
case KeyEvent.KEYCODE_WAKEUP:
|
||||
case KeyEvent.KEYCODE_PAIRING:
|
||||
case KeyEvent.KEYCODE_STEM_1:
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 0ce8e40182af9c1955a862f8bba608b90e6a0524 Mon Sep 17 00:00:00 2001
|
||||
From 0b98498b3b9768fabd4b9a45e6ce23c6bcbc93a1 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Tue, 14 Aug 2018 21:01:35 +0200
|
||||
Subject: [PATCH 1/5] AOSP 8.0/8.1 didn't use presentOrValidate, so it's
|
||||
Subject: [PATCH 1/8] AOSP 8.0/8.1 didn't use presentOrValidate, so it's
|
||||
broken. Don't use it
|
||||
|
||||
Change-Id: If86793dba3738680280f9dc0f7e7c802c0836690
|
||||
@@ -23,5 +23,5 @@ index 1099041b4..2021c26b0 100644
|
||||
uint32_t state = UINT32_MAX;
|
||||
error = hwcDisplay->presentOrValidate(&numTypes, &numRequests, &outPresentFence , &state);
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From d51e5d5a041f8404b5d62cfca5f5765588ded4fb Mon Sep 17 00:00:00 2001
|
||||
From f4a49874650b6192a821a6e755f600745b34210a Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sun, 19 Aug 2018 23:07:24 +0200
|
||||
Subject: [PATCH 2/5] Ignore usage bits verification
|
||||
Subject: [PATCH 2/8] Ignore usage bits verification
|
||||
|
||||
This didn't ignore as of 8.1, so we're ""safe""
|
||||
|
||||
@@ -11,10 +11,10 @@ Change-Id: I40c1d588c1fa104d844322b469f76e52bee1495a
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libs/ui/Gralloc2.cpp b/libs/ui/Gralloc2.cpp
|
||||
index 5dc453005..90dc90f39 100644
|
||||
index 2dd11b141..3ebf9808d 100644
|
||||
--- a/libs/ui/Gralloc2.cpp
|
||||
+++ b/libs/ui/Gralloc2.cpp
|
||||
@@ -108,7 +108,7 @@ status_t Gralloc2Mapper::validateBufferDescriptorInfo(
|
||||
@@ -115,7 +115,7 @@ status_t Gralloc2Mapper::validateBufferDescriptorInfo(
|
||||
if (descriptorInfo->usage & ~validUsageBits) {
|
||||
ALOGE("buffer descriptor contains invalid usage bits 0x%" PRIx64,
|
||||
descriptorInfo->usage & ~validUsageBits);
|
||||
@@ -24,5 +24,5 @@ index 5dc453005..90dc90f39 100644
|
||||
return NO_ERROR;
|
||||
}
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 8db7e963f05ebc59298cf8e9b74f98d670ec5742 Mon Sep 17 00:00:00 2001
|
||||
From 66d21d061b9c9f745c5cb199c29268f519425d71 Mon Sep 17 00:00:00 2001
|
||||
From: phh <phh@phh.me>
|
||||
Date: Wed, 22 Aug 2018 08:57:52 +0000
|
||||
Subject: [PATCH 3/5] Enable fallback to old ro.sf.hwrotation property
|
||||
Subject: [PATCH 3/8] Enable fallback to old ro.sf.hwrotation property
|
||||
|
||||
Change-Id: I46b75a15b85fc5bda31357a4beeb7dab77bd6fe1
|
||||
---
|
||||
@@ -9,10 +9,10 @@ Change-Id: I46b75a15b85fc5bda31357a4beeb7dab77bd6fe1
|
||||
1 file changed, 18 insertions(+)
|
||||
|
||||
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
|
||||
index 6166789fc..14ca4729c 100644
|
||||
index e2ba4de6d..d66c8a8f5 100644
|
||||
--- a/services/surfaceflinger/SurfaceFlinger.cpp
|
||||
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
|
||||
@@ -329,7 +329,25 @@ SurfaceFlinger::SurfaceFlinger(Factory& factory) : SurfaceFlinger(factory, SkipI
|
||||
@@ -339,7 +339,25 @@ SurfaceFlinger::SurfaceFlinger(Factory& factory) : SurfaceFlinger(factory, SkipI
|
||||
SurfaceFlinger::primaryDisplayOrientation = DisplayState::eOrientationDefault;
|
||||
break;
|
||||
}
|
||||
@@ -39,5 +39,5 @@ index 6166789fc..14ca4729c 100644
|
||||
mInternalDisplayPrimaries = sysprop::getDisplayNativePrimaries();
|
||||
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From c554242731125a5e6a3f7d31d4f4af9049d8c7f4 Mon Sep 17 00:00:00 2001
|
||||
From 1a0eb93d4e59e5857cd0afd3560647258955c6ed Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 12 Aug 2019 23:48:37 +0200
|
||||
Subject: [PATCH 4/5] Some Samsung devices requires lying colorspace
|
||||
Subject: [PATCH 4/8] Some Samsung devices requires lying colorspace
|
||||
|
||||
Change-Id: I4153b8e7abc10c519565e4e4386c6388621477b2
|
||||
---
|
||||
@@ -9,10 +9,10 @@ Change-Id: I4153b8e7abc10c519565e4e4386c6388621477b2
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/opengl/libs/EGL/egl_platform_entries.cpp b/opengl/libs/EGL/egl_platform_entries.cpp
|
||||
index e996be685..57ca592a7 100644
|
||||
index a3bb6debe..bfa4a9bb2 100644
|
||||
--- a/opengl/libs/EGL/egl_platform_entries.cpp
|
||||
+++ b/opengl/libs/EGL/egl_platform_entries.cpp
|
||||
@@ -458,8 +458,14 @@ EGLBoolean eglGetConfigAttribImpl(EGLDisplay dpy, EGLConfig config,
|
||||
@@ -459,8 +459,14 @@ EGLBoolean eglGetConfigAttribImpl(EGLDisplay dpy, EGLConfig config,
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// Translates EGL color spaces to Android data spaces.
|
||||
@@ -28,5 +28,5 @@ index e996be685..57ca592a7 100644
|
||||
} else if (colorspace == EGL_GL_COLORSPACE_SRGB_KHR) {
|
||||
return HAL_DATASPACE_V0_SRGB;
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From fd7365352954e1ab647fca2eefeaa2707d47f7fa Mon Sep 17 00:00:00 2001
|
||||
From c1f0158346aace39261b787854e10d58e9d905fe Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Wed, 14 Aug 2019 23:37:10 +0200
|
||||
Subject: [PATCH 5/5] On Samsung, we need to send a hack-message to HAL to get
|
||||
Subject: [PATCH 5/8] On Samsung, we need to send a hack-message to HAL to get
|
||||
all Sensors
|
||||
|
||||
Change-Id: Id6a1fa48340de61c418493668e9abd22c2599376
|
||||
@@ -33,5 +33,5 @@ index 717f31769..45d6c679b 100644
|
||||
[&](const auto &list) {
|
||||
const size_t count = list.size();
|
||||
--
|
||||
2.17.1
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
From a92fa788759b5b4550bf4d2778077af78dbc3af7 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre Couillaud <pierre.couillaud@broadcom.com>
|
||||
Date: Tue, 27 Aug 2019 13:43:22 -0700
|
||||
Subject: [PATCH 6/8] SurfaceFlinger: retain the sideband layer information for
|
||||
composition
|
||||
|
||||
when present, the sideband layer stream information is not saved into
|
||||
the BufferQueueLayer::mSidebandStream, during "latchSidebandStream".
|
||||
|
||||
this subsequently leads to such layer being marked as non visible in the
|
||||
composition stack and to be drop from advertisement to hardware composer
|
||||
even though a sideband layer is defined in the rest of the framework.
|
||||
|
||||
this seems to be a regression introduced during android 9 to android 10
|
||||
revamp of the SurfaceFlinger for buffer latching. latching a sideband layer is actually harmless since there is no buffer associated with it that need to be waited on from the gpu side.
|
||||
|
||||
the fix proposed here allows to maintain the knowledge of the sideband
|
||||
layer and make it visible in the composition stack for hardware composer to handle adequately.
|
||||
|
||||
for illustration purposes, the relevant snippet of the layer composition
|
||||
stack are posted here from "dumpsys SurfaceFlinger", highlighting the
|
||||
issue with ">>>".
|
||||
|
||||
[before]:
|
||||
|
||||
* compositionengine::Layer 0xa959b34c (SurfaceView - <truncated>)
|
||||
frontend:
|
||||
isSecure=false geomUsesSourceCrop=false geomBufferUsesDisplayInverseTransform=false
|
||||
geomLayerTransform 0x00000000 (ROT_0 ) 0x00 (IDENTITY )
|
||||
1.0000 0.0000 0.0000
|
||||
0.0000 1.0000 0.0000
|
||||
0.0000 0.0000 1.0000
|
||||
|
||||
geomBufferSize=[0 0 -1 -1] geomContentCrop=[0 0 -1 -1] geomCrop=[0 0 -1 -1] geomBufferTransform=0
|
||||
Region geomActiveTransparentRegion (this=0xa959b3f8, count=1)
|
||||
[ 0, 0, 0, 0]
|
||||
geomLayerBounds=[0.000000 0.000000 0.000000 0.000000]
|
||||
blend=INVALID (0) alpha=1.000000
|
||||
>>> type=0 appId=0 composition type=INVALID (0)
|
||||
buffer: buffer=0x0 slot=-1
|
||||
>>> sideband stream=0x9b509900
|
||||
color=[0 0 0]
|
||||
dataspace=UNKNOWN (0) hdr metadata types=0 colorTransform=<truncated>
|
||||
|
||||
[after]:
|
||||
|
||||
* compositionengine::Layer 0xa9a5034c (SurfaceView - <truncated>)
|
||||
frontend:
|
||||
isSecure=false geomUsesSourceCrop=true geomBufferUsesDisplayInverseTransform=false
|
||||
geomLayerTransform 0x00000000 (ROT_0 ) 0x00 (IDENTITY )
|
||||
1.0000 0.0000 0.0000
|
||||
0.0000 1.0000 0.0000
|
||||
0.0000 0.0000 1.0000
|
||||
|
||||
geomBufferSize=[0 0 -1 -1] geomContentCrop=[0 0 -1 -1] geomCrop=[0 0 1920 1080] geomBufferTransform=0
|
||||
Region geomActiveTransparentRegion (this=0xa9a503f8, count=1)
|
||||
[ 0, 0, 0, 0]
|
||||
geomLayerBounds=[0.000000 0.000000 1920.000000 1080.000000]
|
||||
blend=NONE (1) alpha=1.000000
|
||||
>>> type=1 appId=10064 composition type=SIDEBAND (5)
|
||||
buffer: buffer=0x0 slot=-1
|
||||
>>> sideband stream=0x9a1472b0
|
||||
color=[0 0 0]
|
||||
dataspace=UNKNOWN (0) hdr metadata types=0 colorTransform=<truncated>
|
||||
|
||||
Bug: 140128098
|
||||
refs #SWANDROID-6178
|
||||
|
||||
Signed-off-by: Pierre Couillaud <pierre.couillaud@broadcom.com>
|
||||
---
|
||||
services/surfaceflinger/BufferQueueLayer.cpp | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/services/surfaceflinger/BufferQueueLayer.cpp b/services/surfaceflinger/BufferQueueLayer.cpp
|
||||
index eb1bf66cd..af5fe6246 100644
|
||||
--- a/services/surfaceflinger/BufferQueueLayer.cpp
|
||||
+++ b/services/surfaceflinger/BufferQueueLayer.cpp
|
||||
@@ -243,8 +243,9 @@ bool BufferQueueLayer::latchSidebandStream(bool& recomputeVisibleRegions) {
|
||||
bool sidebandStreamChanged = true;
|
||||
if (mSidebandStreamChanged.compare_exchange_strong(sidebandStreamChanged, false)) {
|
||||
// mSidebandStreamChanged was changed to false
|
||||
+ mSidebandStream = mConsumer->getSidebandStream();
|
||||
auto& layerCompositionState = getCompositionLayer()->editState().frontEnd;
|
||||
- layerCompositionState.sidebandStream = mConsumer->getSidebandStream();
|
||||
+ layerCompositionState.sidebandStream = mSidebandStream;
|
||||
if (layerCompositionState.sidebandStream != nullptr) {
|
||||
setTransactionFlags(eTransactionNeeded);
|
||||
mFlinger->setTransactionFlags(eTraversalNeeded);
|
||||
--
|
||||
2.25.1
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user