From 179b46b5ae12eaceaf94b7f6e58c755803468a52 Mon Sep 17 00:00:00 2001 From: Mirko Bonadei Date: Sat, 24 Jul 2021 21:50:24 +0200 Subject: [PATCH] Add ScopedMessageData::Release. This CL removes an unused ScopedMessageData ctor and introduces ScopedMessageData::Release which is the first step in order to remove the data() methods that return a reference to a std::unique_ptr (which is an anti-pattern). Bug: None Change-Id: I8f3c3fcfebd127c07fe0b667ca3442a20f458f0c Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/226870 Reviewed-by: Harald Alvestrand Commit-Queue: Mirko Bonadei Cr-Commit-Position: refs/heads/master@{#34563} --- rtc_base/thread.cc | 2 +- rtc_base/thread_message.h | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/rtc_base/thread.cc b/rtc_base/thread.cc index b54cdedf50..c3a83af442 100644 --- a/rtc_base/thread.cc +++ b/rtc_base/thread.cc @@ -1032,7 +1032,7 @@ void Thread::ClearCurrentTaskQueue() { void Thread::QueuedTaskHandler::OnMessage(Message* msg) { RTC_DCHECK(msg); auto* data = static_cast*>(msg->pdata); - std::unique_ptr task = std::move(data->data()); + std::unique_ptr task(data->Release()); // Thread expects handler to own Message::pdata when OnMessage is called // Since MessageData is no longer needed, delete it. delete data; diff --git a/rtc_base/thread_message.h b/rtc_base/thread_message.h index 80824e29e5..e44ad7a48d 100644 --- a/rtc_base/thread_message.h +++ b/rtc_base/thread_message.h @@ -47,9 +47,6 @@ class ScopedMessageData : public MessageData { explicit ScopedMessageData(std::unique_ptr data) : data_(std::move(data)) {} // Deprecated. - // TODO(deadbeef): Remove this once downstream applications stop using it. - explicit ScopedMessageData(T* data) : data_(data) {} - // Deprecated. // TODO(deadbeef): Returning a reference to a unique ptr? Why. Get rid of // this once downstream applications stop using it, then rename inner_data to // just data. @@ -59,6 +56,8 @@ class ScopedMessageData : public MessageData { const T& inner_data() const { return *data_; } T& inner_data() { return *data_; } + T* Release() { return data_.release(); } + private: std::unique_ptr data_; };