OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 #if defined(ENABLE_GPU) | 5 #if defined(ENABLE_GPU) |
6 | 6 |
7 #include "chrome/renderer/webgraphicscontext3d_command_buffer_impl.h" | 7 #include "chrome/renderer/webgraphicscontext3d_command_buffer_impl.h" |
8 | 8 |
9 #include <GLES2/gl2.h> | 9 #include <GLES2/gl2.h> |
10 #ifndef GL_GLEXT_PROTOTYPES | 10 #ifndef GL_GLEXT_PROTOTYPES |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
112 web_view_ = web_view; | 112 web_view_ = web_view; |
113 context_ = ggl::CreateViewContext( | 113 context_ = ggl::CreateViewContext( |
114 host, | 114 host, |
115 view_id, | 115 view_id, |
116 renderview->routing_id(), | 116 renderview->routing_id(), |
117 kWebGraphicsContext3DPerferredGLExtensions, | 117 kWebGraphicsContext3DPerferredGLExtensions, |
118 attribs); | 118 attribs); |
119 if (context_) { | 119 if (context_) { |
120 ggl::SetSwapBuffersCallback( | 120 ggl::SetSwapBuffersCallback( |
121 context_, | 121 context_, |
122 NewCallback(renderview, &RenderView::DidFlushPaint)); | 122 NewCallback(this, |
| 123 &WebGraphicsContext3DCommandBufferImpl::OnSwapBuffers)); |
123 } | 124 } |
124 } else { | 125 } else { |
125 bool compositing_enabled = !CommandLine::ForCurrentProcess()->HasSwitch( | 126 bool compositing_enabled = !CommandLine::ForCurrentProcess()->HasSwitch( |
126 switches::kDisableAcceleratedCompositing); | 127 switches::kDisableAcceleratedCompositing); |
127 ggl::Context* parent_context = NULL; | 128 ggl::Context* parent_context = NULL; |
128 // If GPU compositing is enabled we need to create a GL context that shares | 129 // If GPU compositing is enabled we need to create a GL context that shares |
129 // resources with the compositor's context. | 130 // resources with the compositor's context. |
130 if (compositing_enabled) { | 131 if (compositing_enabled) { |
131 // Asking for the WebGraphicsContext3D on the WebView will force one to | 132 // Asking for the WebGraphicsContext3D on the WebView will force one to |
132 // be created if it doesn't already exist. When the compositor is created | 133 // be created if it doesn't already exist. When the compositor is created |
(...skipping 893 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1026 glDeleteTextures(1, &texture); | 1027 glDeleteTextures(1, &texture); |
1027 } | 1028 } |
1028 | 1029 |
1029 void WebGraphicsContext3DCommandBufferImpl::copyTextureToCompositor( | 1030 void WebGraphicsContext3DCommandBufferImpl::copyTextureToCompositor( |
1030 unsigned texture, unsigned parentTexture) { | 1031 unsigned texture, unsigned parentTexture) { |
1031 makeContextCurrent(); | 1032 makeContextCurrent(); |
1032 glCopyTextureToParentTextureCHROMIUM(texture, parentTexture); | 1033 glCopyTextureToParentTextureCHROMIUM(texture, parentTexture); |
1033 glFlush(); | 1034 glFlush(); |
1034 } | 1035 } |
1035 | 1036 |
| 1037 void WebGraphicsContext3DCommandBufferImpl::OnSwapBuffers() { |
| 1038 // This may be called after tear-down of the RenderView. |
| 1039 RenderView* renderview = |
| 1040 web_view_ ? RenderView::FromWebView(web_view_) : NULL; |
| 1041 if (renderview) |
| 1042 renderview->DidFlushPaint(); |
| 1043 } |
| 1044 |
1036 #endif // defined(ENABLE_GPU) | 1045 #endif // defined(ENABLE_GPU) |
OLD | NEW |