diff options
-rw-r--r-- | services/surfaceflinger/RegionSamplingThread.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/services/surfaceflinger/RegionSamplingThread.cpp b/services/surfaceflinger/RegionSamplingThread.cpp index 07fdead310..80da154278 100644 --- a/services/surfaceflinger/RegionSamplingThread.cpp +++ b/services/surfaceflinger/RegionSamplingThread.cpp @@ -200,9 +200,10 @@ RegionSamplingThread::~RegionSamplingThread() { void RegionSamplingThread::addListener(const Rect& samplingArea, const sp<IBinder>& stopLayerHandle, const sp<IRegionSamplingListener>& listener) { - wp<Layer> stopLayer = stopLayerHandle != nullptr - ? static_cast<Layer::Handle*>(stopLayerHandle.get())->owner - : nullptr; + wp<Layer> stopLayer; + if (stopLayerHandle != nullptr && stopLayerHandle->localBinder() != nullptr) { + stopLayer = static_cast<Layer::Handle*>(stopLayerHandle.get())->owner; + } sp<IBinder> asBinder = IInterface::asBinder(listener); asBinder->linkToDeath(this); |