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;
bool drawCursorPreamble(CachedRoot* root)
{
+ if (!root) return false;
const CachedFrame* frame;
const CachedNode* node = root->currentCursor(&frame);
if (!node) {
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);
}
}
DBG_NAV_LOG("!root");
if (extras == DrawExtrasCursorRing)
resetCursorRing();
- return false;
}
DrawExtra* extra = 0;
switch (extras) {
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) {
DBG_NAV_LOG("!root");
if (extras == DrawExtrasCursorRing)
resetCursorRing();
- return ret;
}
LayerAndroid mainPicture(m_navPictureUI);
DrawExtra* extra = 0;