summaryrefslogtreecommitdiffstats
path: root/Source/WebKit/android/nav/WebView.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit/android/nav/WebView.cpp')
-rw-r--r--Source/WebKit/android/nav/WebView.cpp20
1 files changed, 19 insertions, 1 deletions
diff --git a/Source/WebKit/android/nav/WebView.cpp b/Source/WebKit/android/nav/WebView.cpp
index 8835f70..a528e9a 100644
--- a/Source/WebKit/android/nav/WebView.cpp
+++ b/Source/WebKit/android/nav/WebView.cpp
@@ -75,6 +75,15 @@
#include <wtf/text/AtomicString.h>
#include <wtf/text/CString.h>
+// Free as much as we possible can
+#define TRIM_MEMORY_COMPLETE 80
+// Free a lot (all textures gone)
+#define TRIM_MEMORY_MODERATE 60
+// More moderate free (keep bare minimum to restore quickly-ish - possibly clear all textures)
+#define TRIM_MEMORY_BACKGROUND 40
+// Moderate free (clear cached tiles, keep visible ones)
+#define TRIM_MEMORY_UI_HIDDEN 20
+
namespace android {
static jfieldID gWebViewField;
@@ -1581,7 +1590,6 @@ class GLDrawFunctor : Functor {
WebCore::IntRect clip(info->clipLeft, info->clipTop,
info->clipRight - info->clipLeft,
info->clipBottom - info->clipTop);
- TilesManager::instance()->shader()->setWebViewMatrix(info->transform);
bool retVal = (*wvInstance.*funcPtr)(localViewRect, &inval, webViewRect, titlebarHeight, clip, scale, extras);
if (retVal) {
@@ -2563,6 +2571,14 @@ static jstring nativeGetProperty(JNIEnv *env, jobject obj, jstring key)
return 0;
}
+static void nativeOnTrimMemory(JNIEnv *env, jobject obj, jint level)
+{
+ if (TilesManager::hardwareAccelerationEnabled()) {
+ bool freeAllTextures = (level > TRIM_MEMORY_UI_HIDDEN);
+ TilesManager::instance()->deallocateTextures(freeAllTextures);
+ }
+}
+
static void nativeDumpDisplayTree(JNIEnv* env, jobject jwebview, jstring jurl)
{
#ifdef ANDROID_DUMP_DISPLAY_TREE
@@ -2866,6 +2882,8 @@ static JNINativeMethod gJavaWebViewMethods[] = {
(void*) nativeSetProperty },
{ "nativeGetProperty", "(Ljava/lang/String;)Ljava/lang/String;",
(void*) nativeGetProperty },
+ { "nativeOnTrimMemory", "(I)V",
+ (void*) nativeOnTrimMemory },
};
int registerWebView(JNIEnv* env)