void SharedBufferManagerParent::DropGrallocBufferImpl(mozilla::layers::SurfaceDescriptor aDesc) { MutexAutoLock lock(mLock); if (mDestroyed) { return; } #ifdef MOZ_HAVE_SURFACEDESCRIPTORGRALLOC int64_t key = -1; MaybeMagicGrallocBufferHandle handle; if (aDesc.type() == SurfaceDescriptor::TSurfaceDescriptorGralloc) { handle = aDesc.get_SurfaceDescriptorGralloc().buffer(); } else { return; } if (handle.type() == MaybeMagicGrallocBufferHandle::TGrallocBufferRef) { key = handle.get_GrallocBufferRef().mKey; } else if (handle.type() == MaybeMagicGrallocBufferHandle::TMagicGrallocBufferHandle) { key = handle.get_MagicGrallocBufferHandle().mRef.mKey; } NS_ASSERTION(key != -1, "Invalid buffer key"); NS_ASSERTION(mBuffers.count(key) == 1, "No such buffer"); mBuffers.erase(key); mozilla::Unused << SendDropGrallocBuffer(handle); #endif }