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

Unified Diff: cc/layers/picture_layer.cc

Issue 315393002: Record SkPicture with correct LCD text setting. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: better unittest Created 6 years, 6 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
Index: cc/layers/picture_layer.cc
diff --git a/cc/layers/picture_layer.cc b/cc/layers/picture_layer.cc
index ae823a6cec4f0cc8d251e86845c385559cd25777..489c30c3b20fe346d6fd6d37941dfb8999427fea 100644
--- a/cc/layers/picture_layer.cc
+++ b/cc/layers/picture_layer.cc
@@ -21,7 +21,9 @@ PictureLayer::PictureLayer(ContentLayerClient* client)
pile_(make_scoped_refptr(new PicturePile())),
instrumentation_object_tracker_(id()),
is_mask_(false),
- update_source_frame_number_(-1) {}
+ use_lcd_text_(true),
+ update_source_frame_number_(-1) {
+}
PictureLayer::~PictureLayer() {
}
@@ -88,6 +90,8 @@ bool PictureLayer::Update(ResourceUpdateQueue* queue,
update_source_frame_number_ = layer_tree_host()->source_frame_number();
bool updated = Layer::Update(queue, occlusion);
+ UpdateUseLCDText();
+
gfx::Rect visible_layer_rect = gfx::ScaleToEnclosingRect(
visible_content_rect(), 1.f / contents_scale_x());
@@ -120,6 +124,7 @@ bool PictureLayer::Update(ResourceUpdateQueue* queue,
SafeOpaqueBackgroundColor(),
contents_opaque(),
client_->FillsBoundsCompletely(),
+ use_lcd_text_,
pile_invalidation_,
visible_layer_rect,
update_source_frame_number_,
@@ -172,6 +177,7 @@ skia::RefPtr<SkPicture> PictureLayer::GetPicture() const {
SkCanvas* canvas = recorder.beginRecording(width, height, NULL, 0);
client_->PaintContents(canvas,
gfx::Rect(width, height),
+ use_lcd_text_,
&opaque,
ContentLayerClient::GRAPHICS_CONTEXT_ENABLED);
skia::RefPtr<SkPicture> picture = skia::AdoptRef(recorder.endRecording());
@@ -186,4 +192,17 @@ void PictureLayer::RunMicroBenchmark(MicroBenchmark* benchmark) {
benchmark->RunOnLayer(this);
}
+void PictureLayer::UpdateUseLCDText() {
+ if (use_lcd_text_ == can_use_lcd_text())
+ return;
+
+ // LCD text starts out enabled and can only be disabled.
+ if (!use_lcd_text_)
+ return;
+
+ use_lcd_text_ = can_use_lcd_text();
+ if (client_->PaintsLCDText())
+ SetNeedsDisplay();
enne (OOO) 2014/06/10 18:46:09 Re: "The ui::layer will still not be invalidated"
alokp 2014/06/10 20:54:43 Not if PaintsLCDText returns false.
+}
+
} // namespace cc

Powered by Google App Engine
This is Rietveld 408576698