OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "media/gpu/ipc/service/gpu_jpeg_decode_accelerator.h" | 5 #include "media/gpu/ipc/service/gpu_jpeg_decode_accelerator.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 #include <utility> | 10 #include <utility> |
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
244 Client* client = client_map_[*route_id]; | 244 Client* client = client_map_[*route_id]; |
245 client->Decode(params.input_buffer, frame); | 245 client->Decode(params.input_buffer, frame); |
246 } | 246 } |
247 | 247 |
248 protected: | 248 protected: |
249 ~MessageFilter() override { | 249 ~MessageFilter() override { |
250 if (client_map_.empty()) | 250 if (client_map_.empty()) |
251 return; | 251 return; |
252 | 252 |
253 if (child_task_runner_->BelongsToCurrentThread()) { | 253 if (child_task_runner_->BelongsToCurrentThread()) { |
254 STLDeleteValues(&client_map_); | 254 base::STLDeleteValues(&client_map_); |
255 } else { | 255 } else { |
256 // Make sure |Client| are deleted on child thread. | 256 // Make sure |Client| are deleted on child thread. |
257 std::unique_ptr<ClientMap> client_map(new ClientMap); | 257 std::unique_ptr<ClientMap> client_map(new ClientMap); |
258 client_map->swap(client_map_); | 258 client_map->swap(client_map_); |
259 | 259 |
260 child_task_runner_->PostTask( | 260 child_task_runner_->PostTask( |
261 FROM_HERE, | 261 FROM_HERE, |
262 base::Bind(&DeleteClientMapOnChildThread, base::Passed(&client_map))); | 262 base::Bind(&DeleteClientMapOnChildThread, base::Passed(&client_map))); |
263 } | 263 } |
264 } | 264 } |
265 | 265 |
266 private: | 266 private: |
267 using ClientMap = base::hash_map<int32_t, Client*>; | 267 using ClientMap = base::hash_map<int32_t, Client*>; |
268 | 268 |
269 // Must be static because this method runs after destructor. | 269 // Must be static because this method runs after destructor. |
270 static void DeleteClientMapOnChildThread( | 270 static void DeleteClientMapOnChildThread( |
271 std::unique_ptr<ClientMap> client_map) { | 271 std::unique_ptr<ClientMap> client_map) { |
272 STLDeleteValues(client_map.get()); | 272 base::STLDeleteValues(client_map.get()); |
273 } | 273 } |
274 | 274 |
275 base::WeakPtr<GpuJpegDecodeAccelerator> owner_; | 275 base::WeakPtr<GpuJpegDecodeAccelerator> owner_; |
276 | 276 |
277 // GPU child task runner. | 277 // GPU child task runner. |
278 scoped_refptr<base::SingleThreadTaskRunner> child_task_runner_; | 278 scoped_refptr<base::SingleThreadTaskRunner> child_task_runner_; |
279 | 279 |
280 // GPU IO task runner. | 280 // GPU IO task runner. |
281 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_; | 281 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_; |
282 | 282 |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
409 for (const auto& create_jda_function : create_jda_fps) { | 409 for (const auto& create_jda_function : create_jda_fps) { |
410 std::unique_ptr<JpegDecodeAccelerator> accelerator = | 410 std::unique_ptr<JpegDecodeAccelerator> accelerator = |
411 (*create_jda_function)(base::ThreadTaskRunnerHandle::Get()); | 411 (*create_jda_function)(base::ThreadTaskRunnerHandle::Get()); |
412 if (accelerator && accelerator->IsSupported()) | 412 if (accelerator && accelerator->IsSupported()) |
413 return true; | 413 return true; |
414 } | 414 } |
415 return false; | 415 return false; |
416 } | 416 } |
417 | 417 |
418 } // namespace media | 418 } // namespace media |
OLD | NEW |