summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/WebKit/android/jni/ViewStateSerializer.cpp4
-rw-r--r--Source/WebKit/android/jni/WebViewCore.cpp26
-rw-r--r--Source/WebKit/android/jni/WebViewCore.h6
-rw-r--r--Source/WebKit/android/nav/WebView.cpp18
4 files changed, 24 insertions, 30 deletions
diff --git a/Source/WebKit/android/jni/ViewStateSerializer.cpp b/Source/WebKit/android/jni/ViewStateSerializer.cpp
index 3fdc3e6..5f2480a 100644
--- a/Source/WebKit/android/jni/ViewStateSerializer.cpp
+++ b/Source/WebKit/android/jni/ViewStateSerializer.cpp
@@ -100,6 +100,10 @@ static BaseLayerAndroid* nativeDeserializeViewState(JNIEnv* env, jobject, jint v
BaseLayerAndroid* layer = new BaseLayerAndroid(content);
layer->setBackgroundColor(color);
+ SkRegion dirtyRegion;
+ dirtyRegion.setRect(0, 0, content->width(), content->height());
+ layer->markAsDirty(dirtyRegion);
+
SkSafeUnref(content);
SkSafeUnref(picture);
int childCount = stream->readS32();
diff --git a/Source/WebKit/android/jni/WebViewCore.cpp b/Source/WebKit/android/jni/WebViewCore.cpp
index 726a225..e0379a8 100644
--- a/Source/WebKit/android/jni/WebViewCore.cpp
+++ b/Source/WebKit/android/jni/WebViewCore.cpp
@@ -871,7 +871,7 @@ void WebViewCore::notifyAnimationStarted()
}
-BaseLayerAndroid* WebViewCore::createBaseLayer(SkRegion* region)
+BaseLayerAndroid* WebViewCore::createBaseLayer()
{
// We set the background color
Color background = Color::white;
@@ -950,9 +950,8 @@ BaseLayerAndroid* WebViewCore::createBaseLayer(SkRegion* region)
return realBase;
}
-BaseLayerAndroid* WebViewCore::recordContent(SkRegion* region, SkIPoint* point)
+BaseLayerAndroid* WebViewCore::recordContent(SkIPoint* point)
{
- DBG_SET_LOG("start");
// If there is a pending style recalculation, just return.
if (m_mainFrame->document()->isPendingStyleRecalc()) {
DBG_SET_LOG("recordContent: pending style recalc, ignoring.");
@@ -965,21 +964,20 @@ BaseLayerAndroid* WebViewCore::recordContent(SkRegion* region, SkIPoint* point)
DBG_SET_LOGD("empty (progress=%g)", progress);
return 0;
}
- region->set(m_addInval);
+
+ BaseLayerAndroid* baseLayer = createBaseLayer();
+
+ baseLayer->markAsDirty(m_addInval);
m_addInval.setEmpty();
#if USE(ACCELERATED_COMPOSITING)
#else
- region->op(m_rebuildInval, SkRegion::kUnion_Op);
+ baseLayer->markAsDirty(m_rebuildInval);
#endif
m_rebuildInval.setEmpty();
point->fX = m_content.width();
point->fY = m_content.height();
- DBG_SET_LOGD("region={%d,%d,r=%d,b=%d}", region->getBounds().fLeft,
- region->getBounds().fTop, region->getBounds().fRight,
- region->getBounds().fBottom);
- DBG_SET_LOG("end");
- return createBaseLayer(region);
+ return baseLayer;
}
void WebViewCore::splitContent(PictureSet* content)
@@ -4553,13 +4551,11 @@ static void NotifyAnimationStarted(JNIEnv* env, jobject obj, jint nativeClass)
viewImpl->notifyAnimationStarted();
}
-static jint RecordContent(JNIEnv* env, jobject obj, jint nativeClass,
- jobject region, jobject pt)
+static jint RecordContent(JNIEnv* env, jobject obj, jint nativeClass, jobject pt)
{
WebViewCore* viewImpl = reinterpret_cast<WebViewCore*>(nativeClass);
- SkRegion* nativeRegion = GraphicsJNI::getNativeRegion(env, region);
SkIPoint nativePt;
- BaseLayerAndroid* result = viewImpl->recordContent(nativeRegion, &nativePt);
+ BaseLayerAndroid* result = viewImpl->recordContent(&nativePt);
GraphicsJNI::ipoint_to_jpoint(nativePt, env, pt);
return reinterpret_cast<jint>(result);
}
@@ -5074,7 +5070,7 @@ static JNINativeMethod gJavaWebViewCoreMethods[] = {
(void*) GetContentMinPrefWidth },
{ "nativeNotifyAnimationStarted", "(I)V",
(void*) NotifyAnimationStarted },
- { "nativeRecordContent", "(ILandroid/graphics/Region;Landroid/graphics/Point;)I",
+ { "nativeRecordContent", "(ILandroid/graphics/Point;)I",
(void*) RecordContent },
{ "setViewportSettingsFromNative", "(I)V",
(void*) SetViewportSettingsFromNative },
diff --git a/Source/WebKit/android/jni/WebViewCore.h b/Source/WebKit/android/jni/WebViewCore.h
index eec98b0..3e1dbab 100644
--- a/Source/WebKit/android/jni/WebViewCore.h
+++ b/Source/WebKit/android/jni/WebViewCore.h
@@ -510,13 +510,13 @@ namespace android {
bool focusBoundsChanged();
- // record the inval area, and the picture size
- WebCore::BaseLayerAndroid* recordContent(SkRegion* , SkIPoint* );
+ // record content in a new BaseLayerAndroid, copying the layer tree as well
+ WebCore::BaseLayerAndroid* recordContent(SkIPoint* );
// This creates a new BaseLayerAndroid by copying the current m_content
// and doing a copy of the layers. The layers' content may be updated
// as we are calling layersSync().
- WebCore::BaseLayerAndroid* createBaseLayer(SkRegion*);
+ WebCore::BaseLayerAndroid* createBaseLayer();
bool updateLayers(WebCore::LayerAndroid*);
void notifyAnimationStarted();
diff --git a/Source/WebKit/android/nav/WebView.cpp b/Source/WebKit/android/nav/WebView.cpp
index 804a479..c1d6a88 100644
--- a/Source/WebKit/android/nav/WebView.cpp
+++ b/Source/WebKit/android/nav/WebView.cpp
@@ -515,18 +515,14 @@ static void copyScrollPositionRecursive(const LayerAndroid* from,
BaseLayerAndroid* getBaseLayer() const { return m_baseLayer; }
-bool setBaseLayer(BaseLayerAndroid* newBaseLayer, SkRegion& inval, bool showVisualIndicator,
+bool setBaseLayer(BaseLayerAndroid* newBaseLayer, bool showVisualIndicator,
bool isPictureAfterFirstLayout)
{
bool queueFull = false;
#if USE(ACCELERATED_COMPOSITING)
- if (m_glWebViewState) {
- // TODO: mark as inval on webkit side
- if (newBaseLayer)
- newBaseLayer->markAsDirty(inval);
+ if (m_glWebViewState)
queueFull = m_glWebViewState->setBaseLayer(newBaseLayer, showVisualIndicator,
isPictureAfterFirstLayout);
- }
#endif
#if ENABLE(ANDROID_OVERFLOW_SCROLL)
@@ -701,6 +697,7 @@ class GLDrawFunctor : Functor {
scale = _scale;
extras = _extras;
};
+
status_t operator()(int messageId, void* data) {
TRACE_METHOD();
@@ -871,15 +868,12 @@ static bool nativeEvaluateLayersAnimations(JNIEnv *env, jobject obj, jint native
return false;
}
-static bool nativeSetBaseLayer(JNIEnv *env, jobject obj, jint nativeView, jint layer, jobject inval,
+static bool nativeSetBaseLayer(JNIEnv *env, jobject obj, jint nativeView, jint layer,
jboolean showVisualIndicator,
jboolean isPictureAfterFirstLayout)
{
BaseLayerAndroid* layerImpl = reinterpret_cast<BaseLayerAndroid*>(layer);
- SkRegion invalRegion;
- if (inval)
- invalRegion = *GraphicsJNI::getNativeRegion(env, inval);
- return ((WebView*)nativeView)->setBaseLayer(layerImpl, invalRegion, showVisualIndicator,
+ return ((WebView*)nativeView)->setBaseLayer(layerImpl, showVisualIndicator,
isPictureAfterFirstLayout);
}
@@ -1257,7 +1251,7 @@ static JNINativeMethod gJavaWebViewMethods[] = {
(void*) nativeLayerBounds },
{ "nativeSetHeightCanMeasure", "(Z)V",
(void*) nativeSetHeightCanMeasure },
- { "nativeSetBaseLayer", "(IILandroid/graphics/Region;ZZ)Z",
+ { "nativeSetBaseLayer", "(IIZZ)Z",
(void*) nativeSetBaseLayer },
{ "nativeGetBaseLayer", "()I",
(void*) nativeGetBaseLayer },