summaryrefslogtreecommitdiffstats
path: root/o3d/core
diff options
context:
space:
mode:
Diffstat (limited to 'o3d/core')
-rw-r--r--o3d/core/cross/gles2/renderer_gles2.cc16
-rw-r--r--o3d/core/cross/gles2/renderer_gles2.h7
-rw-r--r--o3d/core/cross/renderer_test.cc2
3 files changed, 25 insertions, 0 deletions
diff --git a/o3d/core/cross/gles2/renderer_gles2.cc b/o3d/core/cross/gles2/renderer_gles2.cc
index 71d5c72..272524d 100644
--- a/o3d/core/cross/gles2/renderer_gles2.cc
+++ b/o3d/core/cross/gles2/renderer_gles2.cc
@@ -1367,6 +1367,22 @@ void RendererGLES2::UpdateDxClippingUniform(GLint location) {
CHECK_GL_ERROR();
}
+#if defined(OS_MACOSX) && defined(GLES2_BACKEND_DESKTOP_GL)
+void RendererGLES2::set_mac_cgl_context(CGLContextObj obj) {
+ bool changed = (mac_cgl_context_ != obj);
+ mac_cgl_context_ = obj;
+ if (changed) {
+ // We need to reset all of the OpenGL state when the context changes.
+ alpha_function_ref_changed_ = true;
+ alpha_blend_settings_changed_ = true;
+ stencil_settings_changed_ = true;
+ polygon_offset_changed_ = true;
+ // TODO(kbr): properly wire up full-screen support in this configuration.
+ // must_reset_context_ = true;
+ }
+}
+#endif
+
void RendererGLES2::SetViewportInPixels(int left,
int top,
int width,
diff --git a/o3d/core/cross/gles2/renderer_gles2.h b/o3d/core/cross/gles2/renderer_gles2.h
index 30ca3ed..6ddfbf4 100644
--- a/o3d/core/cross/gles2/renderer_gles2.h
+++ b/o3d/core/cross/gles2/renderer_gles2.h
@@ -183,7 +183,14 @@ class RendererGLES2 : public Renderer {
void UpdateDxClippingUniform(GLint location);
#if defined(GLES2_BACKEND_DESKTOP_GL)
+#if defined(OS_LINUX)
inline GLXContext glx_context() const { return context_; }
+#endif
+#if defined(OS_MACOSX)
+ // We need to be able to reset the CGLContextObj when we go into and
+ // out of full-screen mode.
+ void set_mac_cgl_context(CGLContextObj obj);
+#endif
#elif defined(GLES2_BACKEND_NATIVE_GLES2)
inline EGLContext egl_context() const { return egl_context_; }
#endif
diff --git a/o3d/core/cross/renderer_test.cc b/o3d/core/cross/renderer_test.cc
index a73ec2f..9eb0942 100644
--- a/o3d/core/cross/renderer_test.cc
+++ b/o3d/core/cross/renderer_test.cc
@@ -106,7 +106,9 @@ TEST_F(RendererTest, InitAndDestroyRenderer) {
EXPECT_FALSE(gl_renderer->cg_context() != NULL);
#elif defined(RENDERER_GLES2)
#if defined(GLES2_BACKEND_DESKTOP_GL)
+#if defined(OS_LINUX)
EXPECT_FALSE(gles2_renderer->glx_context() != NULL);
+#endif
#elif defined(GLES2_BACKEND_NATIVE_GLES2)
EXPECT_FALSE(gles2_renderer->egl_context() != NULL);
#endif