diff --git a/gfx/webrender_bindings/WebRenderAPI.cpp b/gfx/webrender_bindings/WebRenderAPI.cpp index e93a80070596..f7f4597ef7ce 100644 --- a/gfx/webrender_bindings/WebRenderAPI.cpp +++ b/gfx/webrender_bindings/WebRenderAPI.cpp @@ -435,9 +435,25 @@ ResourceUpdateQueue::ResourceUpdateQueue() mUpdates = wr_resource_updates_new(); } +ResourceUpdateQueue::ResourceUpdateQueue(ResourceUpdateQueue&& aFrom) +{ + mUpdates = aFrom.mUpdates; + aFrom.mUpdates = nullptr; +} + +ResourceUpdateQueue& +ResourceUpdateQueue::operator=(ResourceUpdateQueue&& aFrom) +{ + mUpdates = aFrom.mUpdates; + aFrom.mUpdates = nullptr; + return *this; +} + ResourceUpdateQueue::~ResourceUpdateQueue() { - wr_resource_updates_delete(mUpdates); + if (mUpdates) { + wr_resource_updates_delete(mUpdates); + } } void diff --git a/gfx/webrender_bindings/WebRenderAPI.h b/gfx/webrender_bindings/WebRenderAPI.h index bb6a1857a814..4a916074e678 100644 --- a/gfx/webrender_bindings/WebRenderAPI.h +++ b/gfx/webrender_bindings/WebRenderAPI.h @@ -53,8 +53,13 @@ struct Line { class ResourceUpdateQueue { public: ResourceUpdateQueue(); - ~ResourceUpdateQueue(); + ResourceUpdateQueue(ResourceUpdateQueue&&); + ResourceUpdateQueue(ResourceUpdateQueue&) = delete; + ResourceUpdateQueue(const ResourceUpdateQueue&) = delete; + ResourceUpdateQueue& operator=(ResourceUpdateQueue&&); + ResourceUpdateQueue& operator=(ResourceUpdateQueue&) = delete; + ResourceUpdateQueue& operator=(const ResourceUpdateQueue&) = delete; void AddImage(wr::ImageKey aKey, const ImageDescriptor& aDescriptor,