SurfaceFlinger: check for nullptr on setFrameTimelineVsync
Make sure that the layer still exists before trying to set
the vsync id for it.
Bug: 169577113
Test: manual
Change-Id: I4a0661adb7fc42476bfaf9d1c9f43999763d4c40
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 6a0f24a..59a2ea4 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -6189,6 +6189,11 @@
}
sp<Layer> layer = (static_cast<MonitoredProducer*>(surface.get()))->getLayer();
+ if (layer == nullptr) {
+ ALOGE("Attempt to set frame timeline vsync on a layer that no longer exists");
+ return BAD_VALUE;
+ }
+
layer->setFrameTimelineVsync(frameTimelineVsyncId);
return NO_ERROR;
}