Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1373)

Unified Diff: remoting/client/rectangle_update_decoder.cc

Issue 10801003: Propagate DPI information to web-app. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Reviewer feedback. Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « remoting/client/rectangle_update_decoder.h ('k') | remoting/webapp/client_plugin.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/client/rectangle_update_decoder.cc
diff --git a/remoting/client/rectangle_update_decoder.cc b/remoting/client/rectangle_update_decoder.cc
index ffc95f07725602f5885782e10f3fc51847c2d48d..1b4a7711d5dcf3d733b03b537e02cfad4a228950 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.
« no previous file with comments | « remoting/client/rectangle_update_decoder.h ('k') | remoting/webapp/client_plugin.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698