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_; };