Index: ui/compositor/layer.cc |
diff --git a/ui/compositor/layer.cc b/ui/compositor/layer.cc |
index 71daa33f74c9af71352b6bd8f0ed44a8292b9412..104f79b7f2db3af537f18e1c51a8e7c633309705 100644 |
--- a/ui/compositor/layer.cc |
+++ b/ui/compositor/layer.cc |
@@ -751,10 +751,17 @@ void Layer::RecomputeDrawsContentAndUVRect() { |
DCHECK(texture_); |
gfx::Size texture_size; |
- if (scale_content_) |
+ if (scale_content_) { |
texture_size = texture_->size(); |
- else |
- texture_size = ConvertSizeToDIP(this, texture_->size()); |
+ } else { |
+ // Scale the texture's size but the layer's scale factor can be different |
+ // from the one of the texture in some cases, such like phantom windows |
+ // on a hi-DPI device while its original window is in a normal DPI. Thus |
+ // estimate the scale factor from the size of the texture and the layer. |
oshima
2012/09/18 21:20:45
can you update the comment to be more generic (wit
Jun Mukai
2012/09/19 19:26:56
Removed that part.
|
+ float scale_factor = |
+ static_cast<float>(bounds().width()) / texture_->size().width(); |
+ texture_size = texture_->size().Scale(scale_factor); |
+ } |
gfx::Size size(std::min(bounds().width(), texture_size.width()), |
std::min(bounds().height(), texture_size.height())); |