diff options
Diffstat (limited to 'Source')
-rw-r--r-- | Source/WebKit/android/jni/PictureSet.cpp | 10 | ||||
-rw-r--r-- | Source/WebKit/android/nav/WebView.cpp | 7 |
2 files changed, 11 insertions, 6 deletions
diff --git a/Source/WebKit/android/jni/PictureSet.cpp b/Source/WebKit/android/jni/PictureSet.cpp index 181256c..98d7438 100644 --- a/Source/WebKit/android/jni/PictureSet.cpp +++ b/Source/WebKit/android/jni/PictureSet.cpp @@ -83,13 +83,19 @@ PictureSet::PictureSet() PictureSet::PictureSet(SkPicture* picture) { - if (!picture) + mBaseArea = mAdditionalArea = 0; + if (!picture) { + mWidth = mHeight = 0; return; + } + mWidth = picture->width(); + mHeight = picture->height(); + mBaseArea = mWidth * mHeight; Pictures pictureAndBounds; pictureAndBounds.mPicture = picture; SkSafeRef(pictureAndBounds.mPicture); pictureAndBounds.mEmpty = false; - pictureAndBounds.mArea.setRect(0, 0, picture->width(), picture->height()); + pictureAndBounds.mArea.setRect(0, 0, mWidth, mHeight); pictureAndBounds.mSplit = false; pictureAndBounds.mBase = true; pictureAndBounds.mElapsed = 0; diff --git a/Source/WebKit/android/nav/WebView.cpp b/Source/WebKit/android/nav/WebView.cpp index 405b28e..8d3082b 100644 --- a/Source/WebKit/android/nav/WebView.cpp +++ b/Source/WebKit/android/nav/WebView.cpp @@ -383,6 +383,7 @@ void resetCursorRing() bool drawCursorPreamble(CachedRoot* root) { + if (!root) return false; const CachedFrame* frame; const CachedNode* node = root->currentCursor(&frame); if (!node) { @@ -444,7 +445,7 @@ bool drawGL(WebCore::IntRect& viewRect, WebCore::IntRect* invalRect, WebCore::In SkIRect rect; rect.set(0, 0, m_baseLayer->content()->width(), m_baseLayer->content()->height()); region.setRect(rect); - m_glWebViewState->setBaseLayer(m_baseLayer, region, false, false); + m_glWebViewState->setBaseLayer(m_baseLayer, region, false, true); } } @@ -453,7 +454,6 @@ bool drawGL(WebCore::IntRect& viewRect, WebCore::IntRect* invalRect, WebCore::In DBG_NAV_LOG("!root"); if (extras == DrawExtrasCursorRing) resetCursorRing(); - return false; } DrawExtra* extra = 0; switch (extras) { @@ -491,7 +491,7 @@ bool drawGL(WebCore::IntRect& viewRect, WebCore::IntRect* invalRect, WebCore::In extra->draw(canvas, &mainPicture, &rect); picture.endRecording(); } - } else if (extras == DrawExtrasCursorRing && m_ring.m_isButton) { + } else if (root && extras == DrawExtrasCursorRing && m_ring.m_isButton) { const CachedFrame* cachedFrame; const CachedNode* cachedCursor = root->currentCursor(&cachedFrame); if (cachedCursor) { @@ -538,7 +538,6 @@ PictureSet* draw(SkCanvas* canvas, SkColor bgColor, int extras, bool split) DBG_NAV_LOG("!root"); if (extras == DrawExtrasCursorRing) resetCursorRing(); - return ret; } LayerAndroid mainPicture(m_navPictureUI); DrawExtra* extra = 0; |