summaryrefslogtreecommitdiff
path: root/libs/hwui/renderthread/CanvasContext.h
diff options
context:
space:
mode:
authorJorim Jaggi <jjaggi@google.com>2021-05-31 17:57:50 +0200
committerJorim Jaggi <jjaggi@google.com>2021-05-31 17:57:50 +0200
commite4a52711e7771767a10e9209d29b64179615a348 (patch)
tree02ea185a757d3c19b214e9239bb9e62916c838e2 /libs/hwui/renderthread/CanvasContext.h
parent63a50896d83ba30bc637175e1c98b1dc997ed85d (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.h2
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;