diff options
author | Jorim Jaggi <jjaggi@google.com> | 2021-05-31 17:57:50 +0200 |
---|---|---|
committer | Jorim Jaggi <jjaggi@google.com> | 2021-05-31 17:57:50 +0200 |
commit | e4a52711e7771767a10e9209d29b64179615a348 (patch) | |
tree | 02ea185a757d3c19b214e9239bb9e62916c838e2 /libs/hwui/renderthread/CanvasContext.h | |
parent | 63a50896d83ba30bc637175e1c98b1dc997ed85d (diff) |
Ensure reportFrameMetrics not being called on deleted instance
Since onSurfaceStatsAvailable gets called on binder-thread, we
need to ensure that instance doesn't get released while
onSurfaceStatsAvailable is calling reportFrameMetrics.
Test: Boots
Bug: 188934435
Change-Id: Iafe582d6fe4087a3c4274ee39a2803abaa363fd2
Diffstat (limited to 'libs/hwui/renderthread/CanvasContext.h')
-rw-r--r-- | libs/hwui/renderthread/CanvasContext.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/libs/hwui/renderthread/CanvasContext.h b/libs/hwui/renderthread/CanvasContext.h index 4f8e4ca7f23a..6f90e81e51b0 100644 --- a/libs/hwui/renderthread/CanvasContext.h +++ b/libs/hwui/renderthread/CanvasContext.h @@ -170,6 +170,7 @@ public: if (mFrameMetricsReporter.get() != nullptr) { mFrameMetricsReporter->removeObserver(observer); if (!mFrameMetricsReporter->hasObservers()) { + std::lock_guard lock(mFrameMetricsReporterMutex); mFrameMetricsReporter.reset(nullptr); } } @@ -295,6 +296,7 @@ private: JankTracker mJankTracker; FrameInfoVisualizer mProfiler; std::unique_ptr<FrameMetricsReporter> mFrameMetricsReporter; + std::mutex mFrameMetricsReporterMutex; std::set<RenderNode*> mPrefetchedLayers; |