add edit clear submenu/clear hard_edges, fix tessy gl segv, mask toolgui layout,...
[goodguy/cinelerra.git] / cinelerra-5.1 / guicast / bcwindow3d.C
index 57118e7421bba74dedbb056bc039ef5e850155d8..d68e935415dd5e4a1f912003df42a8bdc25d3268 100644 (file)
@@ -192,9 +192,30 @@ bool BC_WindowBase::glx_make_current(GLXDrawable draw, GLXContext glx_ctxt)
        return glXMakeContextCurrent(get_display(), draw, draw, glx_ctxt);
 }
 
+//#define GL_BUG
+#ifdef GL_BUG
+static void GLAPIENTRY glDebugCallback(GLenum source, GLenum type,
+       GLuint id, GLenum severity, GLsizei length, const GLchar* message,
+       const void* userParam)
+{
+       fprintf(stderr, "GL CALLBACK: %s type = 0x%x, severity = 0x%x, message = %s\n",
+               ( type == GL_DEBUG_TYPE_ERROR ? "** GL ERROR **" : "" ),
+               type, severity, message );
+}
+#endif
+
 bool BC_WindowBase::glx_make_current(GLXDrawable draw)
 {
-       return glx_make_current(draw, glx_win_context);
+       bool ret = glx_make_current(draw, glx_win_context);
+#ifdef GL_BUG
+       //Enabling OpenGL debug output
+       glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0, 0, GL_TRUE);
+       glEnable(GL_DEBUG_OUTPUT);
+       glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS);
+       glDebugMessageCallback(glDebugCallback, 0);
+       glEnable(GL_DEBUG_OUTPUT);
+#endif
+       return ret;
 }
 
 #endif
@@ -237,14 +258,14 @@ void BC_WindowBase::flip_opengl()
 #endif
 }
 
-unsigned int BC_WindowBase::get_shader(char *source, int *got_it)
+int BC_WindowBase::get_shader(unsigned int *handle, const char *vert, const char *frag)
 {
-       return get_resources()->get_synchronous()->get_shader(source, got_it);
+       return get_resources()->get_synchronous()->get_shader(handle, vert, frag);
 }
 
-void BC_WindowBase::put_shader(unsigned int handle, char *source)
+void BC_WindowBase::put_shader(unsigned int handle, const char *vert, const char *frag)
 {
-       get_resources()->get_synchronous()->put_shader(handle, source);
+       get_resources()->get_synchronous()->put_shader(handle, vert, frag);
 }
 
 int BC_WindowBase::get_opengl_server_version()