diff options
Diffstat (limited to 'libs')
| -rw-r--r-- | libs/hwui/renderthread/CanvasContext.cpp | 1 | ||||
| -rw-r--r-- | libs/hwui/renderthread/CanvasContext.h | 2 |
2 files changed, 3 insertions, 0 deletions
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp index d3173056065c..a0d93e928876 100644 --- a/libs/hwui/renderthread/CanvasContext.cpp +++ b/libs/hwui/renderthread/CanvasContext.cpp @@ -680,6 +680,7 @@ void CanvasContext::onSurfaceStatsAvailable(void* context, ASurfaceControl* cont frameInfo->set(FrameInfoIndex::FrameCompleted) = std::max(gpuCompleteTime, frameInfo->get(FrameInfoIndex::SwapBuffersCompleted)); frameInfo->set(FrameInfoIndex::GpuCompleted) = gpuCompleteTime; + std::lock_guard(instance->mFrameMetricsReporterMutex); instance->mJankTracker.finishFrame(*frameInfo, instance->mFrameMetricsReporter); } } 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; |