Loading libs/hwui/HardwareBitmapUploader.cpp +12 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 libs/hwui/HardwareBitmapUploader.h +1 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ namespace android::uirenderer { class HardwareBitmapUploader { public: static sk_sp<Bitmap> allocateHardwareBitmap(const SkBitmap& sourceBitmap); static void terminate(); }; } // namespace android::uirenderer libs/hwui/renderthread/EglManager.cpp +3 −1 Original line number Diff line number Diff line Loading @@ -93,7 +93,9 @@ EglManager::EglManager() , mHasWideColorGamutSupport(false) {} EglManager::~EglManager() { destroy(); if (hasEglContext()) { ALOGW("~EglManager() leaked an EGL context"); } } void EglManager::initialize() { Loading libs/hwui/tests/macrobench/main.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ #include "Properties.h" #include "hwui/Typeface.h" #include "HardwareBitmapUploader.h" #include "renderthread/RenderProxy.h" #include <benchmark/benchmark.h> #include <getopt.h> Loading Loading @@ -353,6 +355,9 @@ int main(int argc, char* argv[]) { gBenchmarkReporter->Finalize(); } renderthread::RenderProxy::trimMemory(100); HardwareBitmapUploader::terminate(); LeakChecker::checkForLeaks(); return 0; } libs/hwui/thread/ThreadBase.h +1 −1 Original line number Diff line number Diff line Loading @@ -27,7 +27,7 @@ namespace android::uirenderer { class ThreadBase : protected Thread { class ThreadBase : public Thread { PREVENT_COPY_AND_ASSIGN(ThreadBase); public: Loading Loading
libs/hwui/HardwareBitmapUploader.cpp +12 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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
libs/hwui/HardwareBitmapUploader.h +1 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ namespace android::uirenderer { class HardwareBitmapUploader { public: static sk_sp<Bitmap> allocateHardwareBitmap(const SkBitmap& sourceBitmap); static void terminate(); }; } // namespace android::uirenderer
libs/hwui/renderthread/EglManager.cpp +3 −1 Original line number Diff line number Diff line Loading @@ -93,7 +93,9 @@ EglManager::EglManager() , mHasWideColorGamutSupport(false) {} EglManager::~EglManager() { destroy(); if (hasEglContext()) { ALOGW("~EglManager() leaked an EGL context"); } } void EglManager::initialize() { Loading
libs/hwui/tests/macrobench/main.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ #include "Properties.h" #include "hwui/Typeface.h" #include "HardwareBitmapUploader.h" #include "renderthread/RenderProxy.h" #include <benchmark/benchmark.h> #include <getopt.h> Loading Loading @@ -353,6 +355,9 @@ int main(int argc, char* argv[]) { gBenchmarkReporter->Finalize(); } renderthread::RenderProxy::trimMemory(100); HardwareBitmapUploader::terminate(); LeakChecker::checkForLeaks(); return 0; }
libs/hwui/thread/ThreadBase.h +1 −1 Original line number Diff line number Diff line Loading @@ -27,7 +27,7 @@ namespace android::uirenderer { class ThreadBase : protected Thread { class ThreadBase : public Thread { PREVENT_COPY_AND_ASSIGN(ThreadBase); public: Loading