Index: remoting/client/jni/chromoting_jni_instance.cc |
diff --git a/remoting/client/jni/chromoting_jni_instance.cc b/remoting/client/jni/chromoting_jni_instance.cc |
index fd19deaaffea633450de5fa3468facf96cf809fb..a30c2f464eab6fac907fe7db0f032a49483f6182 100644 |
--- a/remoting/client/jni/chromoting_jni_instance.cc |
+++ b/remoting/client/jni/chromoting_jni_instance.cc |
@@ -387,28 +387,28 @@ void ChromotingJniInstance::ConnectToHostOnDisplayThread() { |
view_.reset(new JniFrameConsumer(jni_runtime_, this)); |
view_weak_factory_.reset(new base::WeakPtrFactory<JniFrameConsumer>( |
view_.get())); |
- frame_consumer_ = new FrameConsumerProxy(jni_runtime_->display_task_runner(), |
- view_weak_factory_->GetWeakPtr()); |
+ scoped_ptr<FrameConsumerProxy> frame_consumer = |
+ make_scoped_ptr(new FrameConsumerProxy(view_weak_factory_->GetWeakPtr())); |
jni_runtime_->network_task_runner()->PostTask( |
FROM_HERE, |
- base::Bind(&ChromotingJniInstance::ConnectToHostOnNetworkThread, |
- this)); |
+ base::Bind(&ChromotingJniInstance::ConnectToHostOnNetworkThread, this, |
+ base::Passed(&frame_consumer))); |
} |
-void ChromotingJniInstance::ConnectToHostOnNetworkThread() { |
+void ChromotingJniInstance::ConnectToHostOnNetworkThread( |
+ scoped_ptr<FrameConsumerProxy> frame_consumer) { |
DCHECK(jni_runtime_->network_task_runner()->BelongsToCurrentThread()); |
+ DCHECK(frame_consumer); |
jingle_glue::JingleThreadWrapper::EnsureForCurrentMessageLoop(); |
- client_context_.reset(new ClientContext( |
- jni_runtime_->network_task_runner().get())); |
+ client_context_.reset(new ClientContext(jni_runtime_->network_task_runner())); |
client_context_->Start(); |
- SoftwareVideoRenderer* renderer = |
- new SoftwareVideoRenderer(client_context_->main_task_runner(), |
- client_context_->decode_task_runner(), |
- frame_consumer_); |
+ SoftwareVideoRenderer* renderer = new SoftwareVideoRenderer( |
+ client_context_->main_task_runner(), |
+ client_context_->decode_task_runner(), frame_consumer.Pass()); |
view_->set_frame_producer(renderer); |
video_renderer_.reset(renderer); |