summaryrefslogtreecommitdiffstats
path: root/WebCore
diff options
context:
space:
mode:
authorCary Clark <cary@android.com>2010-03-05 09:29:34 -0500
committerCary Clark <cary@android.com>2010-03-05 09:35:30 -0500
commitc657c686e52dc255b3967ab8744c2e9cde4a16de (patch)
tree11ef522ae275f74b129c44a68b9ce4139d64ce15 /WebCore
parente58dffb37ac1ec127575ed17b47adf1ed731cf0a (diff)
downloadexternal_webkit-c657c686e52dc255b3967ab8744c2e9cde4a16de.zip
external_webkit-c657c686e52dc255b3967ab8744c2e9cde4a16de.tar.gz
external_webkit-c657c686e52dc255b3967ab8744c2e9cde4a16de.tar.bz2
fixes with find drawing in layers
Clipping the match picture before drawing prevents layer pictures from drawing outside of their intended bounds. Rearranging the layer picture draw call causes it to restore the canvas matrix, which causes extras like finds and cursor rings to draw correctly. Also, added more layer debugging, and a function to show layer state in the console window. http://b/2488516 http://b/2488509
Diffstat (limited to 'WebCore')
-rw-r--r--WebCore/platform/graphics/android/LayerAndroid.cpp18
1 files changed, 16 insertions, 2 deletions
diff --git a/WebCore/platform/graphics/android/LayerAndroid.cpp b/WebCore/platform/graphics/android/LayerAndroid.cpp
index 9d5d1ec..c0851dd 100644
--- a/WebCore/platform/graphics/android/LayerAndroid.cpp
+++ b/WebCore/platform/graphics/android/LayerAndroid.cpp
@@ -305,7 +305,7 @@ void LayerAndroid::onDraw(SkCanvas* canvas, SkScalar opacity) {
if (canvasOpacity < 255)
canvas->setDrawFilter(new OpacityDrawFilter(canvasOpacity));
- m_recordingPicture->draw(canvas);
+ canvas->drawPicture(*m_recordingPicture);
if (m_extra)
m_extra->draw(canvas, this);
@@ -434,7 +434,8 @@ void LayerAndroid::dumpLayers(FILE* file, int indentLevel) const
writeln(file, indentLevel, "{");
writeHexVal(file, indentLevel + 1, "layer", (int)this);
- writeIntVal(file, indentLevel + 1, "clipRect", m_haveClip);
+ writeIntVal(file, indentLevel + 1, "layerId", m_uniqueId);
+ writeIntVal(file, indentLevel + 1, "haveClip", m_haveClip);
writeFloatVal(file, indentLevel + 1, "opacity", getOpacity());
writeSize(file, indentLevel + 1, "size", getSize());
@@ -470,6 +471,19 @@ void LayerAndroid::dumpLayers(FILE* file, int indentLevel) const
writeln(file, indentLevel, "}");
}
+void LayerAndroid::dumpToLog() const
+{
+ FILE* file = fopen("/data/data/com.android.browser/layertmp", "w");
+ dumpLayers(file, 0);
+ fclose(file);
+ file = fopen("/data/data/com.android.browser/layertmp", "r");
+ char buffer[512];
+ bzero(buffer, sizeof(buffer));
+ while (fgets(buffer, sizeof(buffer), file))
+ SkDebugf("%s", buffer);
+ fclose(file);
+}
+
const LayerAndroid* LayerAndroid::findById(int match) const
{
if (m_uniqueId == match)