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

Side by Side Diff: chromecast/media/cma/ipc/media_message_fifo_unittest.cc

Issue 1142513004: Chromecast: MessageLoopProxy cleanup --> SingleThreadTaskRunner. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 7 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 unified diff | Download patch
OLDNEW
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 "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/bind.h" 6 #include "base/bind.h"
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/synchronization/waitable_event.h" 8 #include "base/synchronization/waitable_event.h"
9 #include "base/threading/thread.h" 9 #include "base/threading/thread.h"
10 #include "chromecast/media/cma/ipc/media_memory_chunk.h" 10 #include "chromecast/media/cma/ipc/media_memory_chunk.h"
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 scoped_ptr<MediaMessageFifo> producer_fifo(new MediaMessageFifo( 128 scoped_ptr<MediaMessageFifo> producer_fifo(new MediaMessageFifo(
129 scoped_ptr<MediaMemoryChunk>( 129 scoped_ptr<MediaMemoryChunk>(
130 new FifoMemoryChunk(&buffer[0], buffer_size)), 130 new FifoMemoryChunk(&buffer[0], buffer_size)),
131 true)); 131 true));
132 scoped_ptr<MediaMessageFifo> consumer_fifo(new MediaMessageFifo( 132 scoped_ptr<MediaMessageFifo> consumer_fifo(new MediaMessageFifo(
133 scoped_ptr<MediaMemoryChunk>( 133 scoped_ptr<MediaMemoryChunk>(
134 new FifoMemoryChunk(&buffer[0], buffer_size)), 134 new FifoMemoryChunk(&buffer[0], buffer_size)),
135 false)); 135 false));
136 136
137 base::WaitableEvent event(false, false); 137 base::WaitableEvent event(false, false);
138 thread->message_loop_proxy()->PostTask( 138 thread->task_runner()->PostTask(
139 FROM_HERE, 139 FROM_HERE, base::Bind(&MsgProducerConsumer, base::Passed(&producer_fifo),
140 base::Bind(&MsgProducerConsumer, 140 base::Passed(&consumer_fifo), &event));
141 base::Passed(&producer_fifo),
142 base::Passed(&consumer_fifo),
143 &event));
144 event.Wait(); 141 event.Wait();
145 142
146 thread.reset(); 143 thread.reset();
147 } 144 }
148 145
149 TEST(MediaMessageFifoTest, MultiThreaded) { 146 TEST(MediaMessageFifoTest, MultiThreaded) {
150 size_t buffer_size = 64 * 1024; 147 size_t buffer_size = 64 * 1024;
151 scoped_ptr<uint64[]> buffer(new uint64[buffer_size / sizeof(uint64)]); 148 scoped_ptr<uint64[]> buffer(new uint64[buffer_size / sizeof(uint64)]);
152 149
153 scoped_ptr<base::Thread> producer_thread( 150 scoped_ptr<base::Thread> producer_thread(
154 new base::Thread("FeederThread")); 151 new base::Thread("FeederThread"));
155 scoped_ptr<base::Thread> consumer_thread( 152 scoped_ptr<base::Thread> consumer_thread(
156 new base::Thread("ConsumerThread")); 153 new base::Thread("ConsumerThread"));
157 producer_thread->Start(); 154 producer_thread->Start();
158 consumer_thread->Start(); 155 consumer_thread->Start();
159 156
160 scoped_ptr<MediaMessageFifo> producer_fifo(new MediaMessageFifo( 157 scoped_ptr<MediaMessageFifo> producer_fifo(new MediaMessageFifo(
161 scoped_ptr<MediaMemoryChunk>( 158 scoped_ptr<MediaMemoryChunk>(
162 new FifoMemoryChunk(&buffer[0], buffer_size)), 159 new FifoMemoryChunk(&buffer[0], buffer_size)),
163 true)); 160 true));
164 scoped_ptr<MediaMessageFifo> consumer_fifo(new MediaMessageFifo( 161 scoped_ptr<MediaMessageFifo> consumer_fifo(new MediaMessageFifo(
165 scoped_ptr<MediaMemoryChunk>( 162 scoped_ptr<MediaMemoryChunk>(
166 new FifoMemoryChunk(&buffer[0], buffer_size)), 163 new FifoMemoryChunk(&buffer[0], buffer_size)),
167 false)); 164 false));
168 165
169 base::WaitableEvent producer_event_done(false, false); 166 base::WaitableEvent producer_event_done(false, false);
170 base::WaitableEvent consumer_event_done(false, false); 167 base::WaitableEvent consumer_event_done(false, false);
171 168
172 const int msg_count = 2048; 169 const int msg_count = 2048;
173 producer_thread->message_loop_proxy()->PostTask( 170 producer_thread->task_runner()->PostTask(
174 FROM_HERE, 171 FROM_HERE, base::Bind(&MsgProducer, base::Passed(&producer_fifo),
175 base::Bind(&MsgProducer, 172 msg_count, &producer_event_done));
176 base::Passed(&producer_fifo), 173 consumer_thread->task_runner()->PostTask(
177 msg_count, 174 FROM_HERE, base::Bind(&MsgConsumer, base::Passed(&consumer_fifo),
178 &producer_event_done)); 175 msg_count, &consumer_event_done));
179 consumer_thread->message_loop_proxy()->PostTask(
180 FROM_HERE,
181 base::Bind(&MsgConsumer,
182 base::Passed(&consumer_fifo),
183 msg_count,
184 &consumer_event_done));
185 176
186 producer_event_done.Wait(); 177 producer_event_done.Wait();
187 consumer_event_done.Wait(); 178 consumer_event_done.Wait();
188 179
189 producer_thread.reset(); 180 producer_thread.reset();
190 consumer_thread.reset(); 181 consumer_thread.reset();
191 } 182 }
192 183
193 } // namespace media 184 } // namespace media
194 } // namespace chromecast 185 } // namespace chromecast
195 186
OLDNEW
« no previous file with comments | « chromecast/media/cma/ipc/media_message_fifo.cc ('k') | chromecast/media/cma/ipc_streamer/av_streamer_proxy.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698