OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "android_webview/native/aw_contents.h" | 5 #include "android_webview/native/aw_contents.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 | 8 |
9 #include "android_webview/browser/aw_browser_context.h" | 9 #include "android_webview/browser/aw_browser_context.h" |
10 #include "android_webview/browser/aw_browser_main_parts.h" | 10 #include "android_webview/browser/aw_browser_main_parts.h" |
(...skipping 881 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
892 | 892 |
893 void AwContents::OnDetachedFromWindow(JNIEnv* env, jobject obj) { | 893 void AwContents::OnDetachedFromWindow(JNIEnv* env, jobject obj) { |
894 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 894 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
895 ReleaseHardwareDrawIfNeeded(); | 895 ReleaseHardwareDrawIfNeeded(); |
896 browser_view_renderer_.OnDetachedFromWindow(); | 896 browser_view_renderer_.OnDetachedFromWindow(); |
897 } | 897 } |
898 | 898 |
899 void AwContents::ReleaseHardwareDrawIfNeeded() { | 899 void AwContents::ReleaseHardwareDrawIfNeeded() { |
900 InsideHardwareReleaseReset inside_reset(&shared_renderer_state_); | 900 InsideHardwareReleaseReset inside_reset(&shared_renderer_state_); |
901 | 901 |
| 902 JNIEnv* env = AttachCurrentThread(); |
| 903 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); |
| 904 if (!obj.is_null()) |
| 905 Java_AwContents_invalidateOnFunctorDestroy(env, obj.obj()); |
| 906 |
902 bool hardware_initialized = browser_view_renderer_.hardware_enabled(); | 907 bool hardware_initialized = browser_view_renderer_.hardware_enabled(); |
903 if (hardware_initialized) { | 908 if (hardware_initialized) { |
904 bool draw_functor_succeeded = RequestDrawGL(NULL, true); | 909 bool draw_functor_succeeded = RequestDrawGL(NULL, true); |
905 if (!draw_functor_succeeded) { | 910 if (!draw_functor_succeeded) { |
906 LOG(ERROR) << "Unable to free GL resources. Has the Window leaked?"; | 911 LOG(ERROR) << "Unable to free GL resources. Has the Window leaked?"; |
907 // Calling release on wrong thread intentionally. | 912 // Calling release on wrong thread intentionally. |
908 AwDrawGLInfo info; | 913 AwDrawGLInfo info; |
909 info.mode = AwDrawGLInfo::kModeProcess; | 914 info.mode = AwDrawGLInfo::kModeProcess; |
910 DrawGL(&info); | 915 DrawGL(&info); |
911 } | 916 } |
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1165 } | 1170 } |
1166 | 1171 |
1167 browser_view_renderer_.TrimMemory(level, visible); | 1172 browser_view_renderer_.TrimMemory(level, visible); |
1168 } | 1173 } |
1169 | 1174 |
1170 void SetShouldDownloadFavicons(JNIEnv* env, jclass jclazz) { | 1175 void SetShouldDownloadFavicons(JNIEnv* env, jclass jclazz) { |
1171 g_should_download_favicons = true; | 1176 g_should_download_favicons = true; |
1172 } | 1177 } |
1173 | 1178 |
1174 } // namespace android_webview | 1179 } // namespace android_webview |
OLD | NEW |