diff options
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 |