Browse Source

Prevent invalid stencil buffer contents from being used when switching to a Canvas on mobile.

--HG--
branch : minor
Alex Szpakowski 10 years ago
parent
commit
a66a7b7ce9
1 changed files with 5 additions and 0 deletions
  1. 5 0
      src/modules/graphics/opengl/Canvas.cpp

+ 5 - 0
src/modules/graphics/opengl/Canvas.cpp

@@ -768,6 +768,11 @@ void Canvas::setupGrab()
 
 	if (msaa_buffer != 0)
 		msaa_dirty = true;
+
+	// We discard the stencil buffer in stopGrab, so we should clear it here
+	// to prevent the discarded (invalid) contents from being accidentally used.
+	if (depth_stencil != 0 && (GLAD_ES_VERSION_3_0 || GLAD_EXT_discard_framebuffer))
+		glClear(GL_STENCIL_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 }
 
 void Canvas::startGrab(const std::vector<Canvas *> &canvases)