Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(617)

Unified Diff: media/gpu/ipc/service/gpu_jpeg_decode_accelerator.cc

Issue 2371783002: Remove stl_util's deletion functions from media/. (Closed)
Patch Set: wolenetz Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/formats/webm/webm_content_encodings_client.cc ('k') | media/gpu/video_decode_accelerator_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/gpu/ipc/service/gpu_jpeg_decode_accelerator.cc
diff --git a/media/gpu/ipc/service/gpu_jpeg_decode_accelerator.cc b/media/gpu/ipc/service/gpu_jpeg_decode_accelerator.cc
index eabded5d1d7d8652d8b63d49f33815a6a22dd7d1..432c9921e0bc5964491ca330e1ad76dd8eaca99f 100644
--- a/media/gpu/ipc/service/gpu_jpeg_decode_accelerator.cc
+++ b/media/gpu/ipc/service/gpu_jpeg_decode_accelerator.cc
@@ -12,9 +12,9 @@
#include "base/bind.h"
#include "base/containers/hash_tables.h"
#include "base/logging.h"
+#include "base/memory/ptr_util.h"
#include "base/memory/shared_memory.h"
#include "base/single_thread_task_runner.h"
-#include "base/stl_util.h"
#include "base/threading/thread_task_runner_handle.h"
#include "base/trace_event/trace_event.h"
#include "build/build_config.h"
@@ -39,7 +39,7 @@ namespace {
void DecodeFinished(std::unique_ptr<base::SharedMemory> shm) {
// Do nothing. Because VideoFrame is backed by |shm|, the purpose of this
- // function is to just keep reference of |shm| to make sure it lives util
+ // function is to just keep reference of |shm| to make sure it lives until
// decode finishes.
}
@@ -158,7 +158,8 @@ class GpuJpegDecodeAccelerator::MessageFilter : public IPC::MessageFilter {
DCHECK(io_task_runner_->BelongsToCurrentThread());
DCHECK(client_map_.count(route_id) == 0);
- client_map_[route_id] = client;
+ // See the comment on GpuJpegDecodeAccelerator::AddClient.
+ client_map_[route_id] = base::WrapUnique(client);
response.Run(true);
}
@@ -166,19 +167,20 @@ class GpuJpegDecodeAccelerator::MessageFilter : public IPC::MessageFilter {
DCHECK(io_task_runner_->BelongsToCurrentThread());
const auto& it = client_map_.find(*route_id);
DCHECK(it != client_map_.end());
- Client* client = it->second;
+ std::unique_ptr<Client> client = std::move(it->second);
DCHECK(client);
client_map_.erase(it);
child_task_runner_->PostTask(
- FROM_HERE, base::Bind(&MessageFilter::DestroyClient, this, client));
+ FROM_HERE,
+ base::Bind(&MessageFilter::DestroyClient, this, base::Passed(&client)));
}
- void DestroyClient(Client* client) {
+ void DestroyClient(std::unique_ptr<Client> client) {
DCHECK(child_task_runner_->BelongsToCurrentThread());
- delete client;
if (owner_)
owner_->ClientRemoved();
+ // |client| is destroyed when the scope of this function is left.
}
void NotifyDecodeStatusOnIOThread(int32_t route_id,
@@ -241,7 +243,7 @@ class GpuJpegDecodeAccelerator::MessageFilter : public IPC::MessageFilter {
base::Bind(DecodeFinished, base::Passed(&output_shm)));
DCHECK_GT(client_map_.count(*route_id), 0u);
- Client* client = client_map_[*route_id];
+ Client* client = client_map_[*route_id].get();
client->Decode(params.input_buffer, frame);
}
@@ -251,7 +253,7 @@ class GpuJpegDecodeAccelerator::MessageFilter : public IPC::MessageFilter {
return;
if (child_task_runner_->BelongsToCurrentThread()) {
- base::STLDeleteValues(&client_map_);
+ client_map_.clear();
} else {
// Make sure |Client| are deleted on child thread.
std::unique_ptr<ClientMap> client_map(new ClientMap);
@@ -264,12 +266,12 @@ class GpuJpegDecodeAccelerator::MessageFilter : public IPC::MessageFilter {
}
private:
- using ClientMap = base::hash_map<int32_t, Client*>;
+ using ClientMap = base::hash_map<int32_t, std::unique_ptr<Client>>;
// Must be static because this method runs after destructor.
static void DeleteClientMapOnChildThread(
std::unique_ptr<ClientMap> client_map) {
- base::STLDeleteValues(client_map.get());
+ // |client_map| is cleared when the scope of this function is left.
}
base::WeakPtr<GpuJpegDecodeAccelerator> owner_;
@@ -348,7 +350,7 @@ void GpuJpegDecodeAccelerator::AddClient(int32_t route_id,
// to protect it because |client| can only be deleted on child thread. The IO
// thread is destroyed at termination, at which point it's ok to leak since
// we're going to tear down the process anyway. So we just crossed fingers
- // here instead of making the code unnecessary complicated.
+ // here instead of making the code unnecessarily complicated.
io_task_runner_->PostTask(
FROM_HERE, base::Bind(&MessageFilter::AddClientOnIOThread, filter_,
route_id, client.release(), response));
« no previous file with comments | « media/formats/webm/webm_content_encodings_client.cc ('k') | media/gpu/video_decode_accelerator_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698