mesa: allocate gl_debug_state on demand
[mesa.git] / src / mesa / main / enable.c
index 40508a4564347f33b10dc0b49152a4810a356dc5..edd4751e1adea13cd87b58961348e2a4e92088f1 100644 (file)
@@ -32,6 +32,7 @@
 #include "clip.h"
 #include "context.h"
 #include "enable.h"
+#include "errors.h"
 #include "light.h"
 #include "simple_list.h"
 #include "mtypes.h"
@@ -367,14 +368,26 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state)
          ctx->Depth.Test = state;
          break;
       case GL_DEBUG_OUTPUT:
-         if (!_mesa_is_desktop_gl(ctx))
+         if (!_mesa_is_desktop_gl(ctx)) {
             goto invalid_enum_error;
-         ctx->Debug.DebugOutput = state;
+         }
+         else {
+            struct gl_debug_state *debug = _mesa_get_debug_state(ctx);
+            if (debug) {
+               debug->DebugOutput = state;
+            }
+         }
          break;
       case GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB:
-         if (!_mesa_is_desktop_gl(ctx))
+         if (!_mesa_is_desktop_gl(ctx)) {
             goto invalid_enum_error;
-         ctx->Debug.SyncOutput = state;
+         }
+         else {
+            struct gl_debug_state *debug = _mesa_get_debug_state(ctx);
+            if (debug) {
+               debug->SyncOutput = state;
+            }
+         }
          break;
       case GL_DITHER:
          if (ctx->Color.DitherFlag == state)
@@ -1228,11 +1241,19 @@ _mesa_IsEnabled( GLenum cap )
       case GL_DEBUG_OUTPUT:
          if (!_mesa_is_desktop_gl(ctx))
             goto invalid_enum_error;
-         return ctx->Debug.DebugOutput;
+         if (ctx->Debug) {
+            return ctx->Debug->DebugOutput;
+         } else {
+            return GL_FALSE;
+         }
       case GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB:
          if (!_mesa_is_desktop_gl(ctx))
             goto invalid_enum_error;
-         return ctx->Debug.SyncOutput;
+         if (ctx->Debug) {
+            return ctx->Debug->SyncOutput;
+         } else {
+            return GL_FALSE;
+         }
       case GL_DEPTH_TEST:
          return ctx->Depth.Test;
       case GL_DITHER: