summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Roard <nicolasroard@google.com>2011-03-19 19:01:15 -0700
committerNicolas Roard <nicolasroard@google.com>2011-03-19 19:24:29 -0700
commite1c3e59945c9789e93c417e064a9abed1057ce42 (patch)
tree032b92a04cbed89ac7f847ea61d855956a8eb746
parenta5ec3c20d40b576e2f6878c615cc7c63eebe3a3f (diff)
downloadexternal_webkit-e1c3e59945c9789e93c417e064a9abed1057ce42.zip
external_webkit-e1c3e59945c9789e93c417e064a9abed1057ce42.tar.gz
external_webkit-e1c3e59945c9789e93c417e064a9abed1057ce42.tar.bz2
Fix native crash
Don't save the extras in the picture when drawing. bug:4126884 bug:4132721 Change-Id: I52c46a33f847e64c1f8245a0bb84445a948d72a4
-rw-r--r--WebCore/platform/graphics/android/LayerAndroid.cpp14
-rw-r--r--WebCore/platform/graphics/android/LayerAndroid.h1
2 files changed, 10 insertions, 5 deletions
diff --git a/WebCore/platform/graphics/android/LayerAndroid.cpp b/WebCore/platform/graphics/android/LayerAndroid.cpp
index 2df63a9..dba1ceb 100644
--- a/WebCore/platform/graphics/android/LayerAndroid.cpp
+++ b/WebCore/platform/graphics/android/LayerAndroid.cpp
@@ -1033,6 +1033,7 @@ void LayerAndroid::paintBitmapGL()
contentDraw(nCanvas);
picture.endRecording();
picture.draw(canvas);
+ extraDraw(canvas);
m_atomicSync.lock();
texture->setTextureInfoFor(this);
@@ -1048,6 +1049,14 @@ void LayerAndroid::paintBitmapGL()
XLOG("LayerAndroid %d paintBitmapGL UPDATING DONE", uniqueId());
}
+void LayerAndroid::extraDraw(SkCanvas* canvas)
+{
+ m_atomicSync.lock();
+ if (m_extra)
+ canvas->drawPicture(*m_extra);
+ m_atomicSync.unlock();
+}
+
void LayerAndroid::contentDraw(SkCanvas* canvas)
{
if (m_contentsImage) {
@@ -1058,11 +1067,6 @@ void LayerAndroid::contentDraw(SkCanvas* canvas)
canvas->drawPicture(*m_recordingPicture);
}
- m_atomicSync.lock();
- if (m_extra)
- canvas->drawPicture(*m_extra);
- m_atomicSync.unlock();
-
if (TilesManager::instance()->getShowVisualIndicator()) {
float w = getSize().width();
float h = getSize().height();
diff --git a/WebCore/platform/graphics/android/LayerAndroid.h b/WebCore/platform/graphics/android/LayerAndroid.h
index 98a0a15..0846930 100644
--- a/WebCore/platform/graphics/android/LayerAndroid.h
+++ b/WebCore/platform/graphics/android/LayerAndroid.h
@@ -243,6 +243,7 @@ public:
void needsRepaint() { m_pictureUsed++; }
unsigned int pictureUsed() { return m_pictureUsed; }
void contentDraw(SkCanvas*);
+ void extraDraw(SkCanvas*);
virtual bool isMedia() const { return false; }
virtual bool isVideo() const { return false; }