Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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/browser/in_process_renderer/in_process_view_renderer.h " | 5 #include "android_webview/browser/in_process_renderer/in_process_view_renderer.h " |
| 6 | 6 |
| 7 #include <android/bitmap.h> | 7 #include <android/bitmap.h> |
| 8 | 8 |
| 9 #include "android_webview/public/browser/draw_gl.h" | 9 #include "android_webview/public/browser/draw_gl.h" |
| 10 #include "android_webview/public/browser/draw_sw.h" | 10 #include "android_webview/public/browser/draw_sw.h" |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 175 web_contents_->SetUserData(kUserDataKey, new UserData(this)); | 175 web_contents_->SetUserData(kUserDataKey, new UserData(this)); |
| 176 } | 176 } |
| 177 | 177 |
| 178 void InProcessViewRenderer::WebContentsGone() { | 178 void InProcessViewRenderer::WebContentsGone() { |
| 179 web_contents_ = NULL; | 179 web_contents_ = NULL; |
| 180 } | 180 } |
| 181 | 181 |
| 182 bool InProcessViewRenderer::PrepareDrawGL(int x, int y) { | 182 bool InProcessViewRenderer::PrepareDrawGL(int x, int y) { |
| 183 // No harm in updating |hw_rendering_scroll_| even if we return false. | 183 // No harm in updating |hw_rendering_scroll_| even if we return false. |
| 184 hw_rendering_scroll_ = gfx::Point(x, y); | 184 hw_rendering_scroll_ = gfx::Point(x, y); |
| 185 return attached_to_window_ && compositor_ && compositor_->IsHwReady() && | 185 return attached_to_window_ && compositor_ && !hardware_failed_; |
| 186 !hardware_failed_; | |
| 187 } | 186 } |
| 188 | 187 |
| 189 void InProcessViewRenderer::DrawGL(AwDrawGLInfo* draw_info) { | 188 void InProcessViewRenderer::DrawGL(AwDrawGLInfo* draw_info) { |
| 190 DCHECK(view_visible_); | 189 DCHECK(view_visible_); |
| 191 | 190 |
| 192 // We need to watch if the current Android context has changed and enforce | 191 // We need to watch if the current Android context has changed and enforce |
| 193 // a clean-up in the compositor. | 192 // a clean-up in the compositor. |
| 194 EGLContext current_context = eglGetCurrentContext(); | 193 EGLContext current_context = eglGetCurrentContext(); |
| 195 if (!current_context) { | 194 if (!current_context) { |
| 196 LOG(WARNING) << "No current context attached. Skipping composite."; | 195 LOG(WARNING) << "No current context attached. Skipping composite."; |
| 197 return; | 196 return; |
| 198 } | 197 } |
| 199 | 198 |
| 200 if (attached_to_window_ && compositor_ && !hardware_initialized_) { | 199 if (attached_to_window_ && compositor_ && !hardware_initialized_) { |
| 201 // TODO(boliu): Actually initialize the compositor GL path. | 200 hardware_failed_ = !compositor_->InitializeHwDraw(); |
| 202 hardware_initialized_ = true; | 201 hardware_initialized_ = true; |
|
joth
2013/05/21 02:08:00
lets rename these two memebers:
hardware_initializ
| |
| 203 egl_context_at_init_ = current_context; | 202 egl_context_at_init_ = current_context; |
| 203 | |
| 204 if (hardware_failed_) | |
| 205 return; | |
| 204 } | 206 } |
| 205 | 207 |
|
joth
2013/05/21 02:08:00
guess we could DCHECK(!hardware_failed_) here
| |
| 206 if (draw_info->mode == AwDrawGLInfo::kModeProcess) | 208 if (draw_info->mode == AwDrawGLInfo::kModeProcess) |
| 207 return; | 209 return; |
| 208 | 210 |
| 209 if (egl_context_at_init_ != current_context) { | 211 if (egl_context_at_init_ != current_context) { |
| 210 // TODO(boliu): Handle context lost | 212 // TODO(boliu): Handle context lost |
| 211 } | 213 } |
| 212 | 214 |
| 213 // TODO(boliu): Make sure this is not called before compositor is initialized | 215 // TODO(boliu): Make sure this is not called before compositor is initialized |
| 214 // and GL is ready. Then make this a DCHECK. | 216 // and GL is ready. Then make this a DCHECK. |
| 215 if (!compositor_) | 217 if (!compositor_) |
| (...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 422 // TODO(joth): BrowserViewRendererImpl had a bunch of logic for dpi and page | 424 // TODO(joth): BrowserViewRendererImpl had a bunch of logic for dpi and page |
| 423 // scale here. Determine what if any needs bringing over to this class. | 425 // scale here. Determine what if any needs bringing over to this class. |
| 424 return CompositeSW(canvas); | 426 return CompositeSW(canvas); |
| 425 } | 427 } |
| 426 | 428 |
| 427 bool InProcessViewRenderer::CompositeSW(SkCanvas* canvas) { | 429 bool InProcessViewRenderer::CompositeSW(SkCanvas* canvas) { |
| 428 return compositor_ && compositor_->DemandDrawSw(canvas); | 430 return compositor_ && compositor_->DemandDrawSw(canvas); |
| 429 } | 431 } |
| 430 | 432 |
| 431 } // namespace android_webview | 433 } // namespace android_webview |
| OLD | NEW |