summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-08-30 18:22:09 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-08-30 18:22:09 +0000
commit917c7b6611e005af62aacb9f93089b1ad7b4b8fe (patch)
tree5a31a5cf1e5522c80d8e58102aa0fe9513bbb45e
parentd30ea6a3a03c872085142c62b95af2c591fa5c88 (diff)
parent299fe6f5d6fc6f1af7c3411dcf4e5efdf7217368 (diff)
downloadbase-917c7b6611e005af62aacb9f93089b1ad7b4b8fe.tar.gz
Merge cherrypicks of ['googleplex-android-review.googlesource.com/24592263'] into udc-release. am: 299fe6f5d6
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/24603001 Change-Id: Id2217d07481f79208695b2e482c75fdfbea2754b Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--libs/hwui/renderthread/CanvasContext.cpp1
-rw-r--r--libs/hwui/renderthread/HintSessionWrapper.cpp9
-rw-r--r--libs/hwui/renderthread/HintSessionWrapper.h1
3 files changed, 11 insertions, 0 deletions
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp
index 16b35ffcabac..504dfaa2a1f5 100644
--- a/libs/hwui/renderthread/CanvasContext.cpp
+++ b/libs/hwui/renderthread/CanvasContext.cpp
@@ -193,6 +193,7 @@ void CanvasContext::setHardwareBuffer(AHardwareBuffer* buffer) {
void CanvasContext::setSurface(ANativeWindow* window, bool enableTimeout) {
ATRACE_CALL();
+ startHintSession();
if (window) {
mNativeSurface = std::make_unique<ReliableSurface>(window);
mNativeSurface->init();
diff --git a/libs/hwui/renderthread/HintSessionWrapper.cpp b/libs/hwui/renderthread/HintSessionWrapper.cpp
index 814ac4d90028..1f338ee523eb 100644
--- a/libs/hwui/renderthread/HintSessionWrapper.cpp
+++ b/libs/hwui/renderthread/HintSessionWrapper.cpp
@@ -93,8 +93,17 @@ HintSessionWrapper::HintSessionWrapper(pid_t uiThreadId, pid_t renderThreadId)
: mUiThreadId(uiThreadId), mRenderThreadId(renderThreadId) {}
HintSessionWrapper::~HintSessionWrapper() {
+ destroy();
+}
+
+void HintSessionWrapper::destroy() {
+ if (mHintSessionFuture.valid()) {
+ mHintSession = mHintSessionFuture.get();
+ }
if (mHintSession) {
gAPH_closeSessionFn(mHintSession);
+ mSessionValid = true;
+ mHintSession = nullptr;
}
}
diff --git a/libs/hwui/renderthread/HintSessionWrapper.h b/libs/hwui/renderthread/HintSessionWrapper.h
index 24b8150dd489..bdb9959b1ca7 100644
--- a/libs/hwui/renderthread/HintSessionWrapper.h
+++ b/libs/hwui/renderthread/HintSessionWrapper.h
@@ -37,6 +37,7 @@ public:
void sendLoadResetHint();
void sendLoadIncreaseHint();
bool init();
+ void destroy();
private:
APerformanceHintSession* mHintSession = nullptr;