Index: cc/layers/heads_up_display_layer_impl.cc |
diff --git a/cc/layers/heads_up_display_layer_impl.cc b/cc/layers/heads_up_display_layer_impl.cc |
index 60d984b004915014ef4a94ac6c83c7529f4114a4..97fddae60e4f4aa154950918eb2f4a156d49f315 100644 |
--- a/cc/layers/heads_up_display_layer_impl.cc |
+++ b/cc/layers/heads_up_display_layer_impl.cc |
@@ -28,6 +28,7 @@ |
#include "third_party/skia/include/effects/SkColorMatrixFilter.h" |
#include "ui/gfx/geometry/point.h" |
#include "ui/gfx/geometry/size.h" |
+#include "ui/gfx/geometry/size_conversions.h" |
namespace cc { |
@@ -69,6 +70,7 @@ double HeadsUpDisplayLayerImpl::Graph::UpdateUpperBound() { |
HeadsUpDisplayLayerImpl::HeadsUpDisplayLayerImpl(LayerTreeImpl* tree_impl, |
int id) |
: LayerImpl(tree_impl, id), |
+ internal_contents_scale_(1.f), |
fps_graph_(60.0, 80.0), |
paint_time_graph_(16.0, 48.0), |
fade_step_(0) { |
@@ -94,8 +96,8 @@ void HeadsUpDisplayLayerImpl::AcquireResource( |
scoped_ptr<ScopedResource> resource = |
ScopedResource::Create(resource_provider); |
- resource->Allocate( |
- content_bounds(), ResourceProvider::TextureHintImmutable, RGBA_8888); |
+ resource->Allocate(internal_content_bounds_, |
+ ResourceProvider::TextureHintImmutable, RGBA_8888); |
resources_.push_back(resource.Pass()); |
} |
@@ -115,7 +117,7 @@ class ResourceSizeIsEqualTo { |
void HeadsUpDisplayLayerImpl::ReleaseUnmatchedSizeResources( |
ResourceProvider* resource_provider) { |
ScopedPtrVector<ScopedResource>::iterator it_erase = |
- resources_.partition(ResourceSizeIsEqualTo(content_bounds())); |
+ resources_.partition(ResourceSizeIsEqualTo(internal_content_bounds_)); |
resources_.erase(it_erase, resources_.end()); |
} |
@@ -124,6 +126,10 @@ bool HeadsUpDisplayLayerImpl::WillDraw(DrawMode draw_mode, |
if (draw_mode == DRAW_MODE_RESOURCELESS_SOFTWARE) |
return false; |
+ internal_contents_scale_ = draw_properties().ideal_contents_scale; |
+ internal_content_bounds_ = |
+ gfx::ToCeiledSize(gfx::ScaleSize(bounds(), internal_contents_scale_)); |
+ |
ReleaseUnmatchedSizeResources(resource_provider); |
AcquireResource(resource_provider); |
return LayerImpl::WillDraw(draw_mode, resource_provider); |
@@ -131,16 +137,15 @@ bool HeadsUpDisplayLayerImpl::WillDraw(DrawMode draw_mode, |
void HeadsUpDisplayLayerImpl::AppendQuads( |
RenderPass* render_pass, |
- const Occlusion& occlusion_in_content_space, |
AppendQuadsData* append_quads_data) { |
if (!resources_.back()->id()) |
return; |
SharedQuadState* shared_quad_state = |
render_pass->CreateAndAppendSharedQuadState(); |
- PopulateSharedQuadState(shared_quad_state); |
+ PopulateScaledSharedQuadState(shared_quad_state, internal_contents_scale_); |
- gfx::Rect quad_rect(content_bounds()); |
+ gfx::Rect quad_rect(internal_content_bounds_); |
gfx::Rect opaque_rect(contents_opaque() ? quad_rect : gfx::Rect()); |
gfx::Rect visible_quad_rect(quad_rect); |
bool premultiplied_alpha = true; |
@@ -177,12 +182,13 @@ void HeadsUpDisplayLayerImpl::UpdateHudTexture( |
else |
canvas_size.set(0, 0); |
- if (canvas_size.width() != content_bounds().width() || |
- canvas_size.height() != content_bounds().height() || !hud_surface_) { |
+ if (canvas_size.width() != internal_content_bounds_.width() || |
+ canvas_size.height() != internal_content_bounds_.height() || |
+ !hud_surface_) { |
TRACE_EVENT0("cc", "ResizeHudCanvas"); |
hud_surface_ = skia::AdoptRef(SkSurface::NewRasterN32Premul( |
- content_bounds().width(), content_bounds().height())); |
+ internal_content_bounds_.width(), internal_content_bounds_.height())); |
} |
UpdateHudContents(); |
@@ -191,7 +197,8 @@ void HeadsUpDisplayLayerImpl::UpdateHudTexture( |
TRACE_EVENT0("cc", "DrawHudContents"); |
hud_surface_->getCanvas()->clear(SkColorSetARGB(0, 0, 0, 0)); |
hud_surface_->getCanvas()->save(); |
- hud_surface_->getCanvas()->scale(contents_scale_x(), contents_scale_y()); |
+ hud_surface_->getCanvas()->scale(internal_contents_scale_, |
+ internal_contents_scale_); |
DrawHudContents(hud_surface_->getCanvas()); |
@@ -203,7 +210,7 @@ void HeadsUpDisplayLayerImpl::UpdateHudTexture( |
size_t row_bytes = 0; |
const void* pixels = hud_surface_->getCanvas()->peekPixels(&info, &row_bytes); |
DCHECK(pixels); |
- gfx::Rect content_rect(content_bounds()); |
+ gfx::Rect content_rect(internal_content_bounds_); |
DCHECK(info.colorType() == kN32_SkColorType); |
resource_provider->SetPixels(resources_.back()->id(), |
static_cast<const uint8_t*>(pixels), |
@@ -677,8 +684,9 @@ void HeadsUpDisplayLayerImpl::DrawDebugRect( |
SkColor fill_color, |
float stroke_width, |
const std::string& label_text) const { |
- gfx::Rect debug_layer_rect = gfx::ScaleToEnclosingRect( |
- rect.rect, 1.0 / contents_scale_x(), 1.0 / contents_scale_y()); |
+ gfx::Rect debug_layer_rect = |
+ gfx::ScaleToEnclosingRect(rect.rect, 1.0 / internal_contents_scale_, |
+ 1.0 / internal_contents_scale_); |
SkIRect sk_rect = RectToSkIRect(debug_layer_rect); |
paint->setColor(fill_color); |
paint->setStyle(SkPaint::kFill_Style); |
@@ -696,7 +704,7 @@ void HeadsUpDisplayLayerImpl::DrawDebugRect( |
// The debug_layer_rect may be huge, and converting to a floating point may |
// be lossy, so intersect with the HUD layer bounds first to prevent that. |
gfx::Rect clip_rect = debug_layer_rect; |
- clip_rect.Intersect(gfx::Rect(content_bounds())); |
+ clip_rect.Intersect(gfx::Rect(internal_content_bounds_)); |
SkRect sk_clip_rect = RectToSkRect(clip_rect); |
canvas->save(); |
@@ -764,16 +772,6 @@ void HeadsUpDisplayLayerImpl::DrawDebugRects( |
fill_color = DebugColors::ScreenSpaceLayerRectFillColor(); |
stroke_width = DebugColors::ScreenSpaceLayerRectBorderWidth(); |
break; |
- case OCCLUDING_RECT_TYPE: |
- stroke_color = DebugColors::OccludingRectBorderColor(); |
- fill_color = DebugColors::OccludingRectFillColor(); |
- stroke_width = DebugColors::OccludingRectBorderWidth(); |
- break; |
- case NONOCCLUDING_RECT_TYPE: |
- stroke_color = DebugColors::NonOccludingRectBorderColor(); |
- fill_color = DebugColors::NonOccludingRectFillColor(); |
- stroke_width = DebugColors::NonOccludingRectBorderWidth(); |
- break; |
case TOUCH_EVENT_HANDLER_RECT_TYPE: |
stroke_color = DebugColors::TouchEventHandlerRectBorderColor(); |
fill_color = DebugColors::TouchEventHandlerRectFillColor(); |
@@ -838,7 +836,7 @@ const char* HeadsUpDisplayLayerImpl::LayerTypeAsString() const { |
} |
void HeadsUpDisplayLayerImpl::AsValueInto( |
- base::debug::TracedValue* dict) const { |
+ base::trace_event::TracedValue* dict) const { |
LayerImpl::AsValueInto(dict); |
dict->SetString("layer_name", "Heads Up Display Layer"); |
} |