OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "chromecast/media/cma/ipc/media_message_fifo.h" | 5 #include "chromecast/media/cma/ipc/media_message_fifo.h" |
6 | 6 |
7 #include "base/atomicops.h" | 7 #include "base/atomicops.h" |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/location.h" | 9 #include "base/location.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
11 #include "base/message_loop/message_loop_proxy.h" | 11 #include "base/single_thread_task_runner.h" |
| 12 #include "base/thread_task_runner_handle.h" |
12 #include "chromecast/media/cma/base/cma_logging.h" | 13 #include "chromecast/media/cma/base/cma_logging.h" |
13 #include "chromecast/media/cma/ipc/media_memory_chunk.h" | 14 #include "chromecast/media/cma/ipc/media_memory_chunk.h" |
14 #include "chromecast/media/cma/ipc/media_message.h" | 15 #include "chromecast/media/cma/ipc/media_message.h" |
15 #include "chromecast/media/cma/ipc/media_message_type.h" | 16 #include "chromecast/media/cma/ipc/media_message_type.h" |
16 | 17 |
17 namespace chromecast { | 18 namespace chromecast { |
18 namespace media { | 19 namespace media { |
19 | 20 |
20 class MediaMessageFlag | 21 class MediaMessageFlag |
21 : public base::RefCountedThreadSafe<MediaMessageFlag> { | 22 : public base::RefCountedThreadSafe<MediaMessageFlag> { |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; | 72 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |
72 base::Closure release_msg_cb_; | 73 base::Closure release_msg_cb_; |
73 | 74 |
74 void* const data_; | 75 void* const data_; |
75 const size_t size_; | 76 const size_t size_; |
76 scoped_refptr<MediaMessageFlag> flag_; | 77 scoped_refptr<MediaMessageFlag> flag_; |
77 | 78 |
78 DISALLOW_COPY_AND_ASSIGN(FifoOwnedMemory); | 79 DISALLOW_COPY_AND_ASSIGN(FifoOwnedMemory); |
79 }; | 80 }; |
80 | 81 |
81 FifoOwnedMemory::FifoOwnedMemory( | 82 FifoOwnedMemory::FifoOwnedMemory(void* data, |
82 void* data, size_t size, | 83 size_t size, |
83 const scoped_refptr<MediaMessageFlag>& flag, | 84 const scoped_refptr<MediaMessageFlag>& flag, |
84 const base::Closure& release_msg_cb) | 85 const base::Closure& release_msg_cb) |
85 : task_runner_(base::MessageLoopProxy::current()), | 86 : task_runner_(base::ThreadTaskRunnerHandle::Get()), |
86 release_msg_cb_(release_msg_cb), | 87 release_msg_cb_(release_msg_cb), |
87 data_(data), | 88 data_(data), |
88 size_(size), | 89 size_(size), |
89 flag_(flag) { | 90 flag_(flag) { |
90 } | 91 } |
91 | 92 |
92 FifoOwnedMemory::~FifoOwnedMemory() { | 93 FifoOwnedMemory::~FifoOwnedMemory() { |
93 // Release the flag before notifying that the message has been released. | 94 // Release the flag before notifying that the message has been released. |
94 flag_ = scoped_refptr<MediaMessageFlag>(); | 95 flag_ = scoped_refptr<MediaMessageFlag>(); |
95 if (!release_msg_cb_.is_null()) { | 96 if (!release_msg_cb_.is_null()) { |
96 if (task_runner_->BelongsToCurrentThread()) { | 97 if (task_runner_->BelongsToCurrentThread()) { |
97 release_msg_cb_.Run(); | 98 release_msg_cb_.Run(); |
98 } else { | 99 } else { |
99 task_runner_->PostTask(FROM_HERE, release_msg_cb_); | 100 task_runner_->PostTask(FROM_HERE, release_msg_cb_); |
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
394 void MediaMessageFifo::CommitInternalRead(size_t new_rd_offset) { | 395 void MediaMessageFifo::CommitInternalRead(size_t new_rd_offset) { |
395 internal_rd_offset_ = new_rd_offset; | 396 internal_rd_offset_ = new_rd_offset; |
396 } | 397 } |
397 | 398 |
398 void MediaMessageFifo::CommitInternalWrite(size_t new_wr_offset) { | 399 void MediaMessageFifo::CommitInternalWrite(size_t new_wr_offset) { |
399 internal_wr_offset_ = new_wr_offset; | 400 internal_wr_offset_ = new_wr_offset; |
400 } | 401 } |
401 | 402 |
402 } // namespace media | 403 } // namespace media |
403 } // namespace chromecast | 404 } // namespace chromecast |
OLD | NEW |