Merge "Ensure reportFrameMetrics not being called on deleted instance" into sc-dev
This commit is contained in:
@@ -680,6 +680,7 @@ void CanvasContext::onSurfaceStatsAvailable(void* context, ASurfaceControl* cont
|
|||||||
frameInfo->set(FrameInfoIndex::FrameCompleted) = std::max(gpuCompleteTime,
|
frameInfo->set(FrameInfoIndex::FrameCompleted) = std::max(gpuCompleteTime,
|
||||||
frameInfo->get(FrameInfoIndex::SwapBuffersCompleted));
|
frameInfo->get(FrameInfoIndex::SwapBuffersCompleted));
|
||||||
frameInfo->set(FrameInfoIndex::GpuCompleted) = gpuCompleteTime;
|
frameInfo->set(FrameInfoIndex::GpuCompleted) = gpuCompleteTime;
|
||||||
|
std::lock_guard(instance->mFrameMetricsReporterMutex);
|
||||||
instance->mJankTracker.finishFrame(*frameInfo, instance->mFrameMetricsReporter);
|
instance->mJankTracker.finishFrame(*frameInfo, instance->mFrameMetricsReporter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -170,6 +170,7 @@ public:
|
|||||||
if (mFrameMetricsReporter.get() != nullptr) {
|
if (mFrameMetricsReporter.get() != nullptr) {
|
||||||
mFrameMetricsReporter->removeObserver(observer);
|
mFrameMetricsReporter->removeObserver(observer);
|
||||||
if (!mFrameMetricsReporter->hasObservers()) {
|
if (!mFrameMetricsReporter->hasObservers()) {
|
||||||
|
std::lock_guard lock(mFrameMetricsReporterMutex);
|
||||||
mFrameMetricsReporter.reset(nullptr);
|
mFrameMetricsReporter.reset(nullptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -295,6 +296,7 @@ private:
|
|||||||
JankTracker mJankTracker;
|
JankTracker mJankTracker;
|
||||||
FrameInfoVisualizer mProfiler;
|
FrameInfoVisualizer mProfiler;
|
||||||
std::unique_ptr<FrameMetricsReporter> mFrameMetricsReporter;
|
std::unique_ptr<FrameMetricsReporter> mFrameMetricsReporter;
|
||||||
|
std::mutex mFrameMetricsReporterMutex;
|
||||||
|
|
||||||
std::set<RenderNode*> mPrefetchedLayers;
|
std::set<RenderNode*> mPrefetchedLayers;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user