summaryrefslogtreecommitdiffstats
path: root/remoting/host/client_session.cc
diff options
context:
space:
mode:
authorwez@chromium.org <wez@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-08 03:39:24 +0000
committerwez@chromium.org <wez@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-08 03:39:24 +0000
commitc18ad894cab96cc4d308b4c6fadbea0d31c097c2 (patch)
tree62dbd99a9e4b7a7824ed7206f2cfe83a4f540254 /remoting/host/client_session.cc
parent68d01e87583a5dee2cd294f9fe7d1fe04f5c378e (diff)
downloadchromium_src-c18ad894cab96cc4d308b4c6fadbea0d31c097c2.zip
chromium_src-c18ad894cab96cc4d308b4c6fadbea0d31c097c2.tar.gz
chromium_src-c18ad894cab96cc4d308b4c6fadbea0d31c097c2.tar.bz2
Fix AudioScheduler and VideoScheduler creation.
The schedulers post startup tasks to a secondary thread, running the risk that the secondary thread will them down before the caller has had a chance to take a reference to them. BUG=164795 Review URL: https://chromiumcodereview.appspot.com/11474015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@171925 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'remoting/host/client_session.cc')
-rw-r--r--remoting/host/client_session.cc17
1 files changed, 9 insertions, 8 deletions
diff --git a/remoting/host/client_session.cc b/remoting/host/client_session.cc
index c4fdecd..9a8f108 100644
--- a/remoting/host/client_session.cc
+++ b/remoting/host/client_session.cc
@@ -134,20 +134,21 @@ void ClientSession::OnConnectionChannelsConnected(
CreateVideoEncoder(connection_->session()->config());
// Create a VideoScheduler to pump frames from the capturer to the client.
- video_scheduler_ = new VideoScheduler(video_capture_task_runner_,
- video_encode_task_runner_,
- network_task_runner_,
- desktop_environment_->video_capturer(),
- video_encoder.Pass(),
- connection_->client_stub(),
- connection_->video_stub());
+ video_scheduler_ = VideoScheduler::Create(
+ video_capture_task_runner_,
+ video_encode_task_runner_,
+ network_task_runner_,
+ desktop_environment_->video_capturer(),
+ video_encoder.Pass(),
+ connection_->client_stub(),
+ connection_->video_stub());
++active_recorders_;
// Create an AudioScheduler if audio is enabled, to pump audio samples.
if (connection_->session()->config().is_audio_enabled()) {
scoped_ptr<AudioEncoder> audio_encoder =
CreateAudioEncoder(connection_->session()->config());
- audio_scheduler_ = new AudioScheduler(
+ audio_scheduler_ = AudioScheduler::Create(
audio_task_runner_,
network_task_runner_,
desktop_environment_->audio_capturer(),