summaryrefslogtreecommitdiffstats
path: root/remoting/client/rectangle_update_decoder.cc
diff options
context:
space:
mode:
authorwez@chromium.org <wez@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-08 03:30:17 +0000
committerwez@chromium.org <wez@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-08 03:30:17 +0000
commitd4d48be8a5e8e71041dad670af0e18d893888e3e (patch)
treea9b53fc091ead9ed740dfba21bdc715fcffff85c /remoting/client/rectangle_update_decoder.cc
parente7594613917ab0d665abea21aa60701407c2c06e (diff)
downloadchromium_src-d4d48be8a5e8e71041dad670af0e18d893888e3e.zip
chromium_src-d4d48be8a5e8e71041dad670af0e18d893888e3e.tar.gz
chromium_src-d4d48be8a5e8e71041dad670af0e18d893888e3e.tar.bz2
Fix startup race-conditions in new Decoder pipeline:
Fix RectangleUpdateDecoder to cope with rendering requests before it is ready. Fix PepperView not to InitiateDrawing() until initialized. Fix DecoderVp8::RenderFrame() to allow being called before a frame is decoded. Add DCHECKs for screen and view size to DecoderVp8. Clarify requirements on FrameProducer interface implementation in comments. Clarify screen and view size requirements on Decoder interface methods. BUG=116842,116851 Review URL: http://codereview.chromium.org/9624022 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@125536 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'remoting/client/rectangle_update_decoder.cc')
-rw-r--r--remoting/client/rectangle_update_decoder.cc7
1 files changed, 6 insertions, 1 deletions
diff --git a/remoting/client/rectangle_update_decoder.cc b/remoting/client/rectangle_update_decoder.cc
index 6f58564..1a0b059 100644
--- a/remoting/client/rectangle_update_decoder.cc
+++ b/remoting/client/rectangle_update_decoder.cc
@@ -94,7 +94,12 @@ void RectangleUpdateDecoder::DecodePacket(const VideoPacket* packet,
}
void RectangleUpdateDecoder::DoPaint() {
- if (buffers_.empty())
+ // If the view size is empty or we have no output buffers ready, return.
+ if (buffers_.empty() || view_size_.isEmpty())
+ return;
+
+ // If no Decoder is initialized, or the host dimensions are empty, return.
+ if (!decoder_.get() || source_size_.isEmpty())
return;
// Draw the invalidated region to the buffer.