| 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 |