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 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
57 MakeAppContextCurrent(); | 57 MakeAppContextCurrent(); |
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_RESOURCE_MANAGEMENT: |
68 glGetBooleanv(GL_BLEND, &blend_enabled_); | 68 glGetBooleanv(GL_BLEND, &blend_enabled_); |
69 glGetIntegerv(GL_BLEND_SRC_RGB, &blend_src_rgb_); | 69 glGetIntegerv(GL_BLEND_SRC_RGB, &blend_src_rgb_); |
70 glGetIntegerv(GL_BLEND_SRC_ALPHA, &blend_src_alpha_); | 70 glGetIntegerv(GL_BLEND_SRC_ALPHA, &blend_src_alpha_); |
71 glGetIntegerv(GL_BLEND_DST_RGB, &blend_dest_rgb_); | 71 glGetIntegerv(GL_BLEND_DST_RGB, &blend_dest_rgb_); |
72 glGetIntegerv(GL_BLEND_DST_ALPHA, &blend_dest_alpha_); | 72 glGetIntegerv(GL_BLEND_DST_ALPHA, &blend_dest_alpha_); |
73 glGetIntegerv(GL_VIEWPORT, viewport_); | 73 glGetIntegerv(GL_VIEWPORT, viewport_); |
74 glGetBooleanv(GL_SCISSOR_TEST, &scissor_test_); | 74 glGetBooleanv(GL_SCISSOR_TEST, &scissor_test_); |
75 glGetIntegerv(GL_SCISSOR_BOX, scissor_box_); | 75 glGetIntegerv(GL_SCISSOR_BOX, scissor_box_); |
76 break; | 76 break; |
77 } | 77 } |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 glLineWidth(line_width_); | 198 glLineWidth(line_width_); |
199 glPolygonOffset(polygon_offset_factor_, polygon_offset_units_); | 199 glPolygonOffset(polygon_offset_factor_, polygon_offset_units_); |
200 glSampleCoverage(sample_coverage_value_, sample_coverage_invert_); | 200 glSampleCoverage(sample_coverage_value_, sample_coverage_invert_); |
201 | 201 |
202 GLEnableDisable(GL_DITHER, enable_dither_); | 202 GLEnableDisable(GL_DITHER, enable_dither_); |
203 GLEnableDisable(GL_POLYGON_OFFSET_FILL, enable_polygon_offset_fill_); | 203 GLEnableDisable(GL_POLYGON_OFFSET_FILL, enable_polygon_offset_fill_); |
204 GLEnableDisable(GL_SAMPLE_ALPHA_TO_COVERAGE, | 204 GLEnableDisable(GL_SAMPLE_ALPHA_TO_COVERAGE, |
205 enable_sample_alpha_to_coverage_); | 205 enable_sample_alpha_to_coverage_); |
206 GLEnableDisable(GL_SAMPLE_COVERAGE, enable_sample_coverage_); | 206 GLEnableDisable(GL_SAMPLE_COVERAGE, enable_sample_coverage_); |
207 | 207 |
208 if (mode_ == MODE_DETACH_FROM_WINDOW) { | 208 switch(mode_) { |
209 GLEnableDisable(GL_BLEND, blend_enabled_); | 209 case MODE_DRAW: |
210 glBlendFuncSeparate( | 210 // No-op. |
211 blend_src_rgb_, blend_dest_rgb_, blend_src_alpha_, blend_dest_alpha_); | 211 break; |
| 212 case MODE_RESOURCE_MANAGEMENT: |
| 213 GLEnableDisable(GL_BLEND, blend_enabled_); |
| 214 glBlendFuncSeparate( |
| 215 blend_src_rgb_, blend_dest_rgb_, blend_src_alpha_, blend_dest_alpha_); |
212 | 216 |
213 glViewport(viewport_[0], viewport_[1], viewport_[2], viewport_[3]); | 217 glViewport(viewport_[0], viewport_[1], viewport_[2], viewport_[3]); |
214 | 218 |
215 GLEnableDisable(GL_SCISSOR_TEST, scissor_test_); | 219 GLEnableDisable(GL_SCISSOR_TEST, scissor_test_); |
216 | 220 |
217 glScissor( | 221 glScissor( |
218 scissor_box_[0], scissor_box_[1], scissor_box_[2], scissor_box_[3]); | 222 scissor_box_[0], scissor_box_[1], scissor_box_[2], scissor_box_[3]); |
| 223 break; |
219 } | 224 } |
220 | 225 |
221 GLEnableDisable(GL_STENCIL_TEST, stencil_test_); | 226 GLEnableDisable(GL_STENCIL_TEST, stencil_test_); |
222 glStencilFunc(stencil_func_, stencil_mask_, stencil_ref_); | 227 glStencilFunc(stencil_func_, stencil_mask_, stencil_ref_); |
223 } | 228 } |
224 | 229 |
225 } // namespace android_webview | 230 } // namespace android_webview |
OLD | NEW |