Chromium Code Reviews| 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 324 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 335 jint GetNativeInstanceCount(JNIEnv* env, jclass) { | 335 jint GetNativeInstanceCount(JNIEnv* env, jclass) { |
| 336 return base::subtle::NoBarrier_Load(&g_instance_count); | 336 return base::subtle::NoBarrier_Load(&g_instance_count); |
| 337 } | 337 } |
| 338 | 338 |
| 339 jlong AwContents::GetAwDrawGLViewContext(JNIEnv* env, jobject obj) { | 339 jlong AwContents::GetAwDrawGLViewContext(JNIEnv* env, jobject obj) { |
| 340 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 340 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 341 return reinterpret_cast<intptr_t>(this); | 341 return reinterpret_cast<intptr_t>(this); |
| 342 } | 342 } |
| 343 | 343 |
| 344 void AwContents::DrawGL(AwDrawGLInfo* draw_info) { | 344 void AwContents::DrawGL(AwDrawGLInfo* draw_info) { |
| 345 if (draw_info->mode == AwDrawGLInfo::kModeSync) { | |
| 346 if (hardware_renderer_) | |
| 347 hardware_renderer_->CommitFrame(); | |
|
hush (inactive)
2014/07/25 18:08:07
CommitFrame will just copy the child draw result (
boliu
2014/07/25 18:11:02
Everything above here is correct.
hush (inactive)
2014/07/25 18:31:00
Okay.
Imagine a scenario where onDraw happens ever
boliu
2014/07/25 18:41:51
Yes. But "old frame" isn't a good charaterization.
| |
| 348 return; | |
| 349 } | |
| 350 | |
| 345 { | 351 { |
| 346 GLViewRendererManager* manager = GLViewRendererManager::GetInstance(); | 352 GLViewRendererManager* manager = GLViewRendererManager::GetInstance(); |
| 347 base::AutoLock lock(render_thread_lock_); | 353 base::AutoLock lock(render_thread_lock_); |
| 348 if (renderer_manager_key_ != manager->NullKey()) { | 354 if (renderer_manager_key_ != manager->NullKey()) { |
| 349 manager->DidDrawGL(renderer_manager_key_); | 355 manager->DidDrawGL(renderer_manager_key_); |
| 350 } | 356 } |
| 351 } | 357 } |
| 352 | 358 |
| 353 ScopedAppGLStateRestore state_restore( | 359 ScopedAppGLStateRestore state_restore( |
| 354 draw_info->mode == AwDrawGLInfo::kModeDraw | 360 draw_info->mode == AwDrawGLInfo::kModeDraw |
| 355 ? ScopedAppGLStateRestore::MODE_DRAW | 361 ? ScopedAppGLStateRestore::MODE_DRAW |
| 356 : ScopedAppGLStateRestore::MODE_RESOURCE_MANAGEMENT); | 362 : ScopedAppGLStateRestore::MODE_RESOURCE_MANAGEMENT); |
| 357 ScopedAllowGL allow_gl; | 363 ScopedAllowGL allow_gl; |
| 358 | 364 |
| 359 if (shared_renderer_state_.IsInsideHardwareRelease()) { | 365 if (shared_renderer_state_.IsInsideHardwareRelease()) { |
| 360 hardware_renderer_.reset(); | 366 hardware_renderer_.reset(); |
| 361 return; | 367 return; |
| 362 } | 368 } |
| 363 | 369 |
| 364 if (draw_info->mode != AwDrawGLInfo::kModeDraw) | 370 if (draw_info->mode != AwDrawGLInfo::kModeDraw) |
| 365 return; | 371 return; |
| 366 | 372 |
| 367 if (!hardware_renderer_) { | 373 if (!hardware_renderer_) { |
| 368 hardware_renderer_.reset(new HardwareRenderer(&shared_renderer_state_)); | 374 hardware_renderer_.reset(new HardwareRenderer(&shared_renderer_state_)); |
| 375 hardware_renderer_->CommitFrame(); | |
| 369 } | 376 } |
| 370 | 377 |
| 371 hardware_renderer_->DrawGL(state_restore.stencil_enabled(), | 378 hardware_renderer_->DrawGL(state_restore.stencil_enabled(), |
| 372 state_restore.framebuffer_binding_ext(), | 379 state_restore.framebuffer_binding_ext(), |
| 373 draw_info); | 380 draw_info); |
| 374 } | 381 } |
| 375 | 382 |
| 376 namespace { | 383 namespace { |
| 377 void DocumentHasImagesCallback(const ScopedJavaGlobalRef<jobject>& message, | 384 void DocumentHasImagesCallback(const ScopedJavaGlobalRef<jobject>& message, |
| 378 bool has_images) { | 385 bool has_images) { |
| (...skipping 765 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1144 } | 1151 } |
| 1145 | 1152 |
| 1146 browser_view_renderer_.TrimMemory(level, visible); | 1153 browser_view_renderer_.TrimMemory(level, visible); |
| 1147 } | 1154 } |
| 1148 | 1155 |
| 1149 void SetShouldDownloadFavicons(JNIEnv* env, jclass jclazz) { | 1156 void SetShouldDownloadFavicons(JNIEnv* env, jclass jclazz) { |
| 1150 g_should_download_favicons = true; | 1157 g_should_download_favicons = true; |
| 1151 } | 1158 } |
| 1152 | 1159 |
| 1153 } // namespace android_webview | 1160 } // namespace android_webview |
| OLD | NEW |