Index: android_webview/browser/scoped_app_gl_state_restore.cc |
diff --git a/android_webview/browser/scoped_app_gl_state_restore.cc b/android_webview/browser/scoped_app_gl_state_restore.cc |
index 0f45ca3de0a0844047c048d5ea68e95538bbca51..caa23879f6c312a918491831f80b095c83db1264 100644 |
--- a/android_webview/browser/scoped_app_gl_state_restore.cc |
+++ b/android_webview/browser/scoped_app_gl_state_restore.cc |
@@ -72,10 +72,10 @@ namespace internal { |
class ScopedAppGLStateRestoreImpl { |
public: |
- ScopedAppGLStateRestoreImpl(ScopedAppGLStateRestore::CallMode mode); |
+ explicit ScopedAppGLStateRestoreImpl(ScopedAppGLStateRestore::CallMode mode); |
~ScopedAppGLStateRestoreImpl(); |
- bool stencil_enabled() const { return stencil_test_; } |
+ StencilState stencil_state() const { return stencil_state_; } |
GLint framebuffer_binding_ext() const { return framebuffer_binding_ext_; } |
private: |
@@ -135,22 +135,7 @@ class ScopedAppGLStateRestoreImpl { |
GLboolean scissor_test_; |
GLint scissor_box_[4]; |
- GLboolean stencil_test_; |
- GLint stencil_front_func_; |
- GLint stencil_front_ref_; |
- GLint stencil_front_mask_; |
- GLint stencil_back_func_; |
- GLint stencil_back_ref_; |
- GLint stencil_back_mask_; |
- GLint stencil_clear_; |
- GLint stencil_front_writemask_; |
- GLint stencil_back_writemask_; |
- GLint stencil_front_fail_op_; |
- GLint stencil_front_z_fail_op_; |
- GLint stencil_front_z_pass_op_; |
- GLint stencil_back_fail_op_; |
- GLint stencil_back_z_fail_op_; |
- GLint stencil_back_z_pass_op_; |
+ StencilState stencil_state_; |
GLint framebuffer_binding_ext_; |
@@ -239,22 +224,27 @@ ScopedAppGLStateRestoreImpl::ScopedAppGLStateRestoreImpl( |
glGetBooleanv(GL_SAMPLE_ALPHA_TO_COVERAGE, &enable_sample_alpha_to_coverage_); |
glGetBooleanv(GL_SAMPLE_COVERAGE, &enable_sample_coverage_); |
- glGetBooleanv(GL_STENCIL_TEST, &stencil_test_); |
- glGetIntegerv(GL_STENCIL_FUNC, &stencil_front_func_); |
- glGetIntegerv(GL_STENCIL_VALUE_MASK, &stencil_front_mask_); |
- glGetIntegerv(GL_STENCIL_REF, &stencil_front_ref_); |
- glGetIntegerv(GL_STENCIL_BACK_FUNC, &stencil_back_func_); |
- glGetIntegerv(GL_STENCIL_BACK_VALUE_MASK, &stencil_back_mask_); |
- glGetIntegerv(GL_STENCIL_BACK_REF, &stencil_back_ref_); |
- glGetIntegerv(GL_STENCIL_CLEAR_VALUE, &stencil_clear_); |
- glGetIntegerv(GL_STENCIL_WRITEMASK, &stencil_front_writemask_); |
- glGetIntegerv(GL_STENCIL_BACK_WRITEMASK, &stencil_back_writemask_); |
- glGetIntegerv(GL_STENCIL_FAIL, &stencil_front_fail_op_); |
- glGetIntegerv(GL_STENCIL_PASS_DEPTH_FAIL, &stencil_front_z_fail_op_); |
- glGetIntegerv(GL_STENCIL_PASS_DEPTH_PASS, &stencil_front_z_pass_op_); |
- glGetIntegerv(GL_STENCIL_BACK_FAIL, &stencil_back_fail_op_); |
- glGetIntegerv(GL_STENCIL_BACK_PASS_DEPTH_FAIL, &stencil_back_z_fail_op_); |
- glGetIntegerv(GL_STENCIL_BACK_PASS_DEPTH_PASS, &stencil_back_z_pass_op_); |
+ glGetBooleanv(GL_STENCIL_TEST, &stencil_state_.stencil_test_enabled); |
+ glGetIntegerv(GL_STENCIL_FUNC, &stencil_state_.stencil_front_func); |
+ glGetIntegerv(GL_STENCIL_VALUE_MASK, &stencil_state_.stencil_front_mask); |
+ glGetIntegerv(GL_STENCIL_REF, &stencil_state_.stencil_front_ref); |
+ glGetIntegerv(GL_STENCIL_BACK_FUNC, &stencil_state_.stencil_back_func); |
+ glGetIntegerv(GL_STENCIL_BACK_VALUE_MASK, &stencil_state_.stencil_back_mask); |
+ glGetIntegerv(GL_STENCIL_BACK_REF, &stencil_state_.stencil_back_ref); |
+ glGetIntegerv(GL_STENCIL_CLEAR_VALUE, &stencil_state_.stencil_clear); |
+ glGetIntegerv(GL_STENCIL_WRITEMASK, &stencil_state_.stencil_front_writemask); |
+ glGetIntegerv(GL_STENCIL_BACK_WRITEMASK, |
+ &stencil_state_.stencil_back_writemask); |
+ glGetIntegerv(GL_STENCIL_FAIL, &stencil_state_.stencil_front_fail_op); |
+ glGetIntegerv(GL_STENCIL_PASS_DEPTH_FAIL, |
+ &stencil_state_.stencil_front_z_fail_op); |
+ glGetIntegerv(GL_STENCIL_PASS_DEPTH_PASS, |
+ &stencil_state_.stencil_front_z_pass_op); |
+ glGetIntegerv(GL_STENCIL_BACK_FAIL, &stencil_state_.stencil_back_fail_op); |
+ glGetIntegerv(GL_STENCIL_BACK_PASS_DEPTH_FAIL, |
+ &stencil_state_.stencil_back_z_fail_op); |
+ glGetIntegerv(GL_STENCIL_BACK_PASS_DEPTH_PASS, |
+ &stencil_state_.stencil_back_z_pass_op); |
glGetIntegerv(GL_FRAMEBUFFER_BINDING_EXT, &framebuffer_binding_ext_); |
@@ -402,22 +392,22 @@ ScopedAppGLStateRestoreImpl::~ScopedAppGLStateRestoreImpl() { |
break; |
} |
- GLEnableDisable(GL_STENCIL_TEST, stencil_test_); |
- glStencilFuncSeparate( |
- GL_FRONT, stencil_front_func_, stencil_front_mask_, stencil_front_ref_); |
- glStencilFuncSeparate( |
- GL_BACK, stencil_back_func_, stencil_back_mask_, stencil_back_ref_); |
- glClearStencil(stencil_clear_); |
- glStencilMaskSeparate(GL_FRONT, stencil_front_writemask_); |
- glStencilMaskSeparate(GL_BACK, stencil_back_writemask_); |
- glStencilOpSeparate(GL_FRONT, |
- stencil_front_fail_op_, |
- stencil_front_z_fail_op_, |
- stencil_front_z_pass_op_); |
- glStencilOpSeparate(GL_BACK, |
- stencil_back_fail_op_, |
- stencil_back_z_fail_op_, |
- stencil_back_z_pass_op_); |
+ GLEnableDisable(GL_STENCIL_TEST, stencil_state_.stencil_test_enabled); |
+ glStencilFuncSeparate(GL_FRONT, stencil_state_.stencil_front_func, |
+ stencil_state_.stencil_front_mask, |
+ stencil_state_.stencil_front_ref); |
+ glStencilFuncSeparate(GL_BACK, stencil_state_.stencil_back_func, |
+ stencil_state_.stencil_back_mask, |
+ stencil_state_.stencil_back_ref); |
+ glClearStencil(stencil_state_.stencil_clear); |
+ glStencilMaskSeparate(GL_FRONT, stencil_state_.stencil_front_writemask); |
+ glStencilMaskSeparate(GL_BACK, stencil_state_.stencil_back_writemask); |
+ glStencilOpSeparate(GL_FRONT, stencil_state_.stencil_front_fail_op, |
+ stencil_state_.stencil_front_z_fail_op, |
+ stencil_state_.stencil_front_z_pass_op); |
+ glStencilOpSeparate(GL_BACK, stencil_state_.stencil_back_fail_op, |
+ stencil_state_.stencil_back_z_fail_op, |
+ stencil_state_.stencil_back_z_pass_op); |
// Do not leak GLError out of chromium. |
ClearGLErrors(true, "Chromium GLError"); |
@@ -431,8 +421,8 @@ ScopedAppGLStateRestore::ScopedAppGLStateRestore(CallMode mode) |
ScopedAppGLStateRestore::~ScopedAppGLStateRestore() {} |
-bool ScopedAppGLStateRestore::stencil_enabled() const { |
- return impl_->stencil_enabled(); |
+StencilState ScopedAppGLStateRestore::stencil_state() const { |
+ return impl_->stencil_state(); |
} |
int ScopedAppGLStateRestore::framebuffer_binding_ext() const { |
return impl_->framebuffer_binding_ext(); |