OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 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/scoped_app_gl_state_restore.h" | 5 #include "android_webview/browser/scoped_app_gl_state_restore.h" |
6 | 6 |
7 #include "base/debug/trace_event.h" | 7 #include "base/debug/trace_event.h" |
8 #include "base/lazy_instance.h" | 8 #include "base/lazy_instance.h" |
9 #include "ui/gl/gl_context.h" | 9 #include "ui/gl/gl_context.h" |
10 #include "ui/gl/gl_surface_stub.h" | 10 #include "ui/gl/gl_surface_stub.h" |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 | 58 |
59 glGetIntegerv(GL_ARRAY_BUFFER_BINDING, &vertex_array_buffer_binding_); | 59 glGetIntegerv(GL_ARRAY_BUFFER_BINDING, &vertex_array_buffer_binding_); |
60 glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING, &index_array_buffer_binding_); | 60 glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING, &index_array_buffer_binding_); |
61 | 61 |
62 switch(mode_) { | 62 switch(mode_) { |
63 case MODE_DRAW: | 63 case MODE_DRAW: |
64 DCHECK_EQ(0, vertex_array_buffer_binding_); | 64 DCHECK_EQ(0, vertex_array_buffer_binding_); |
65 DCHECK_EQ(0, index_array_buffer_binding_); | 65 DCHECK_EQ(0, index_array_buffer_binding_); |
66 break; | 66 break; |
67 case MODE_DETACH_FROM_WINDOW: | 67 case MODE_DETACH_FROM_WINDOW: |
| 68 case MODE_ON_TRIM: |
68 glGetBooleanv(GL_BLEND, &blend_enabled_); | 69 glGetBooleanv(GL_BLEND, &blend_enabled_); |
69 glGetIntegerv(GL_BLEND_SRC_RGB, &blend_src_rgb_); | 70 glGetIntegerv(GL_BLEND_SRC_RGB, &blend_src_rgb_); |
70 glGetIntegerv(GL_BLEND_SRC_ALPHA, &blend_src_alpha_); | 71 glGetIntegerv(GL_BLEND_SRC_ALPHA, &blend_src_alpha_); |
71 glGetIntegerv(GL_BLEND_DST_RGB, &blend_dest_rgb_); | 72 glGetIntegerv(GL_BLEND_DST_RGB, &blend_dest_rgb_); |
72 glGetIntegerv(GL_BLEND_DST_ALPHA, &blend_dest_alpha_); | 73 glGetIntegerv(GL_BLEND_DST_ALPHA, &blend_dest_alpha_); |
73 glGetIntegerv(GL_VIEWPORT, viewport_); | 74 glGetIntegerv(GL_VIEWPORT, viewport_); |
74 glGetBooleanv(GL_SCISSOR_TEST, &scissor_test_); | 75 glGetBooleanv(GL_SCISSOR_TEST, &scissor_test_); |
75 glGetIntegerv(GL_SCISSOR_BOX, scissor_box_); | 76 glGetIntegerv(GL_SCISSOR_BOX, scissor_box_); |
76 break; | 77 break; |
77 } | 78 } |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 glLineWidth(line_width_); | 199 glLineWidth(line_width_); |
199 glPolygonOffset(polygon_offset_factor_, polygon_offset_units_); | 200 glPolygonOffset(polygon_offset_factor_, polygon_offset_units_); |
200 glSampleCoverage(sample_coverage_value_, sample_coverage_invert_); | 201 glSampleCoverage(sample_coverage_value_, sample_coverage_invert_); |
201 | 202 |
202 GLEnableDisable(GL_DITHER, enable_dither_); | 203 GLEnableDisable(GL_DITHER, enable_dither_); |
203 GLEnableDisable(GL_POLYGON_OFFSET_FILL, enable_polygon_offset_fill_); | 204 GLEnableDisable(GL_POLYGON_OFFSET_FILL, enable_polygon_offset_fill_); |
204 GLEnableDisable(GL_SAMPLE_ALPHA_TO_COVERAGE, | 205 GLEnableDisable(GL_SAMPLE_ALPHA_TO_COVERAGE, |
205 enable_sample_alpha_to_coverage_); | 206 enable_sample_alpha_to_coverage_); |
206 GLEnableDisable(GL_SAMPLE_COVERAGE, enable_sample_coverage_); | 207 GLEnableDisable(GL_SAMPLE_COVERAGE, enable_sample_coverage_); |
207 | 208 |
208 if (mode_ == MODE_DETACH_FROM_WINDOW) { | 209 switch(mode_) { |
209 GLEnableDisable(GL_BLEND, blend_enabled_); | 210 case MODE_DRAW: |
210 glBlendFuncSeparate( | 211 // No-op. |
211 blend_src_rgb_, blend_dest_rgb_, blend_src_alpha_, blend_dest_alpha_); | 212 break; |
| 213 case MODE_DETACH_FROM_WINDOW: |
| 214 case MODE_ON_TRIM: |
| 215 GLEnableDisable(GL_BLEND, blend_enabled_); |
| 216 glBlendFuncSeparate( |
| 217 blend_src_rgb_, blend_dest_rgb_, blend_src_alpha_, blend_dest_alpha_); |
212 | 218 |
213 glViewport(viewport_[0], viewport_[1], viewport_[2], viewport_[3]); | 219 glViewport(viewport_[0], viewport_[1], viewport_[2], viewport_[3]); |
214 | 220 |
215 GLEnableDisable(GL_SCISSOR_TEST, scissor_test_); | 221 GLEnableDisable(GL_SCISSOR_TEST, scissor_test_); |
216 | 222 |
217 glScissor( | 223 glScissor( |
218 scissor_box_[0], scissor_box_[1], scissor_box_[2], scissor_box_[3]); | 224 scissor_box_[0], scissor_box_[1], scissor_box_[2], scissor_box_[3]); |
| 225 break; |
219 } | 226 } |
220 | 227 |
221 GLEnableDisable(GL_STENCIL_TEST, stencil_test_); | 228 GLEnableDisable(GL_STENCIL_TEST, stencil_test_); |
222 glStencilFunc(stencil_func_, stencil_mask_, stencil_ref_); | 229 glStencilFunc(stencil_func_, stencil_mask_, stencil_ref_); |
223 } | 230 } |
224 | 231 |
225 } // namespace android_webview | 232 } // namespace android_webview |
OLD | NEW |