summaryrefslogtreecommitdiffstats
path: root/remoting
diff options
context:
space:
mode:
authorhclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-01 20:36:24 +0000
committerhclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-01 20:36:24 +0000
commitc46ae304f8dc98e34b994b37ba63d60ab6601f63 (patch)
treed63943cb41372be6f556b51d2c9a5a490deeca23 /remoting
parente0e6c420a65454c411336d7d95f3dc57773b673f (diff)
downloadchromium_src-c46ae304f8dc98e34b994b37ba63d60ab6601f63.zip
chromium_src-c46ae304f8dc98e34b994b37ba63d60ab6601f63.tar.gz
chromium_src-c46ae304f8dc98e34b994b37ba63d60ab6601f63.tar.bz2
Send a small empty video packet when capturer returns no dirty rect
This keeps the network active for the video channel, otherwise PseudoTcp will reset the value of congestion window and the next transmission would suck. After this change chromoting from a remote site with 100+ ms latency works way better. BUG=None TEST=None Review URL: http://codereview.chromium.org/7544020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@94972 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'remoting')
-rw-r--r--remoting/host/screen_recorder.cc9
1 files changed, 7 insertions, 2 deletions
diff --git a/remoting/host/screen_recorder.cc b/remoting/host/screen_recorder.cc
index adeb1a1..0b1d1d1 100644
--- a/remoting/host/screen_recorder.cc
+++ b/remoting/host/screen_recorder.cc
@@ -365,9 +365,14 @@ void ScreenRecorder::DoEncode(
// Early out if there's nothing to encode.
if (!capture_data || !capture_data->dirty_rects().size()) {
- capture_loop_->PostTask(
+ // Send an empty video packet to keep network active.
+ VideoPacket* packet = new VideoPacket();
+ packet->set_flags(VideoPacket::LAST_PARTITION);
+ network_loop_->PostTask(
FROM_HERE,
- NewTracedMethod(this, &ScreenRecorder::DoFinishOneRecording));
+ NewTracedMethod(this,
+ &ScreenRecorder::DoSendVideoPacket,
+ packet));
return;
}