diff options
author | jamiewalch@chromium.org <jamiewalch@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-20 03:02:58 +0000 |
---|---|---|
committer | jamiewalch@chromium.org <jamiewalch@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-20 03:02:58 +0000 |
commit | 67809c080e613e92eea5f3241b8e797ce4185edb (patch) | |
tree | c4ae9246dac0d6784ee9fb2b332de5c4ce8de46b /remoting/client/rectangle_update_decoder.cc | |
parent | a7fe9110edf7ad578f19655e6d86030cc01e53e2 (diff) | |
download | chromium_src-67809c080e613e92eea5f3241b8e797ce4185edb.zip chromium_src-67809c080e613e92eea5f3241b8e797ce4185edb.tar.gz chromium_src-67809c080e613e92eea5f3241b8e797ce4185edb.tar.bz2 |
Propagate DPI information to web-app.
BUG=135089
TEST=
Review URL: https://chromiumcodereview.appspot.com/10801003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@147605 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'remoting/client/rectangle_update_decoder.cc')
-rw-r--r-- | remoting/client/rectangle_update_decoder.cc | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/remoting/client/rectangle_update_decoder.cc b/remoting/client/rectangle_update_decoder.cc index ffc95f0..1b4a771 100644 --- a/remoting/client/rectangle_update_decoder.cc +++ b/remoting/client/rectangle_update_decoder.cc @@ -30,6 +30,7 @@ RectangleUpdateDecoder::RectangleUpdateDecoder( : task_runner_(task_runner), consumer_(consumer), source_size_(SkISize::Make(0, 0)), + source_dpi_(SkIPoint::Make(0, 0)), view_size_(SkISize::Make(0, 0)), clip_area_(SkIRect::MakeEmpty()), paint_scheduled_(false) { @@ -63,8 +64,9 @@ void RectangleUpdateDecoder::DecodePacket(scoped_ptr<VideoPacket> packet, base::ScopedClosureRunner done_runner(done); bool decoder_needs_reset = false; + bool notify_size_or_dpi_change = false; - // If the packet includes a screen size, store it. + // If the packet includes screen size or DPI information, store them. if (packet->format().has_screen_width() && packet->format().has_screen_height()) { SkISize source_size = SkISize::Make(packet->format().screen_width(), @@ -72,18 +74,26 @@ void RectangleUpdateDecoder::DecodePacket(scoped_ptr<VideoPacket> packet, if (source_size_ != source_size) { source_size_ = source_size; decoder_needs_reset = true; + notify_size_or_dpi_change = true; + } + } + if (packet->format().has_x_dpi() && packet->format().has_y_dpi()) { + SkIPoint source_dpi(SkIPoint::Make(packet->format().x_dpi(), + packet->format().y_dpi())); + if (source_dpi != source_dpi_) { + source_dpi_ = source_dpi; + notify_size_or_dpi_change = true; } } // If we've never seen a screen size, ignore the packet. - if (source_size_.isZero()) { + if (source_size_.isZero()) return; - } - if (decoder_needs_reset) { + if (decoder_needs_reset) decoder_->Initialize(source_size_); - consumer_->SetSourceSize(source_size_); - } + if (notify_size_or_dpi_change) + consumer_->SetSourceSize(source_size_, source_dpi_); if (!decoder_->IsReadyForData()) { // TODO(ajwong): This whole thing should move into an invalid state. |