diff options
| author | 2019-01-11 02:49:01 +0000 | |
|---|---|---|
| committer | 2019-01-11 02:49:01 +0000 | |
| commit | a26b9b940a9480c7264e4da40e1a510ab6b4959f (patch) | |
| tree | 0526ac93c75e4724d0de85bf4e17de8f5e00e91b /libs/hwui/HardwareBitmapUploader.cpp | |
| parent | 18d6d788473548671558e807ea9eda0415d42cfc (diff) | |
| parent | 6104cea3fb0bddd766f390f9f4e2db9fc00b410e (diff) | |
Merge "Fix leak/crash in exit"
Diffstat (limited to 'libs/hwui/HardwareBitmapUploader.cpp')
| -rw-r--r-- | libs/hwui/HardwareBitmapUploader.cpp | 13 |
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 |