diff options
author | Cary Clark <cary@android.com> | 2010-03-05 09:29:34 -0500 |
---|---|---|
committer | Cary Clark <cary@android.com> | 2010-03-05 09:35:30 -0500 |
commit | c657c686e52dc255b3967ab8744c2e9cde4a16de (patch) | |
tree | 11ef522ae275f74b129c44a68b9ce4139d64ce15 /WebCore | |
parent | e58dffb37ac1ec127575ed17b47adf1ed731cf0a (diff) | |
download | external_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.cpp | 18 |
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) |