367 static void flushCaches(int level) {
368 nFlushCaches(level);
369 }
96 static void android_view_GLES20Canvas_flushCaches(JNIEnv* env, jobject clazz,
97 Caches::FlushMode mode) {
98 if (Caches::hasInstance()) {
99 Caches::getInstance().flush(mode);
100 }
101 }
1000 static JNINativeMethod gMethods[] = {
1001 { "nIsAvailable", "()Z", (void*) android_view_GLES20Canvas_isAvailable },
1002
1003 #ifdef USE_OPENGL_RENDERER
1004 { "nFlushCaches", "(I)V", (void*) android_view_GLES20Canvas_flushCaches },
1005 { "nInitCaches", "()Z", (void*) android_view_GLES20Canvas_initCaches },
1006 { "nTerminateCaches", "()V", (void*) android_view_GLES20Canvas_terminateCaches },
1007
1008 { "nInitAtlas", "(Landroid/view/GraphicBuffer;[II)V",
1009 (void*) android_view_GLES20Canvas_initAtlas },
348 void Caches::flush(FlushMode mode) {
349 FLUSH_LOGD("Flushing caches (mode %d)", mode);
350
351
352 if (mode > kFlushMode_Layers) {
353 tasks.stop();
354 }
355
356 switch (mode) {
357 case kFlushMode_Full:
358 textureCache.clear();
359 patchCache.clear();
360 dropShadowCache.clear();
361 gradientCache.clear();
362 fontRenderer->clear();
363 fboCache.clear();
364 dither.clear();
365
366 case kFlushMode_Moderate:
367 fontRenderer->flush();
368 textureCache.flush();
369 pathCache.clear();
370
371 case kFlushMode_Layers:
372 layerCache.clear();
373 renderBufferCache.clear();
374 break;
375 }
376
377 clearGarbage();
378 }