summaryrefslogtreecommitdiff
path: root/libs/hwui/HardwareBitmapUploader.cpp
diff options
context:
space:
mode:
author John Reck <jreck@google.com> 2019-01-10 14:37:17 -0800
committer John Reck <jreck@google.com> 2019-01-10 15:34:49 -0800
commit6104cea3fb0bddd766f390f9f4e2db9fc00b410e (patch)
tree3493ab6e3dc09dd9ffd027bc1fa85cc84abb2635 /libs/hwui/HardwareBitmapUploader.cpp
parent8b9351ba04eef507d4ff97a84d0c13df60507daf (diff)
Fix leak/crash in exit
Bug: 120440607 Test: hwuimacro32 doesn't crash Change-Id: I35b7a924e338efb314f07b923ba22ffcf98f75ee
Diffstat (limited to 'libs/hwui/HardwareBitmapUploader.cpp')
-rw-r--r--libs/hwui/HardwareBitmapUploader.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/libs/hwui/HardwareBitmapUploader.cpp b/libs/hwui/HardwareBitmapUploader.cpp
index b9860ada18fc..635d0ec66673 100644
--- a/libs/hwui/HardwareBitmapUploader.cpp
+++ b/libs/hwui/HardwareBitmapUploader.cpp
@@ -34,7 +34,7 @@
namespace android::uirenderer {
static std::mutex sLock{};
-static ThreadBase* sUploadThread = nullptr;
+static sp<ThreadBase> sUploadThread = nullptr;
static renderthread::EglManager sEglManager;
static int sPendingUploads = 0;
static nsecs_t sLastUpload = 0;
@@ -257,4 +257,15 @@ sk_sp<Bitmap> HardwareBitmapUploader::allocateHardwareBitmap(const SkBitmap& sou
Bitmap::computePalette(bitmap));
}
+void HardwareBitmapUploader::terminate() {
+ std::lock_guard _lock{sLock};
+ LOG_ALWAYS_FATAL_IF(sPendingUploads, "terminate called while uploads in progress");
+ if (sUploadThread) {
+ sUploadThread->requestExit();
+ sUploadThread->join();
+ sUploadThread = nullptr;
+ }
+ sEglManager.destroy();
+}
+
} // namespace android::uirenderer