]> Pileus Git - grits/blobdiff - src/gtkgl.c
Add mouse, keyboard, and motion events to GritsObject
[grits] / src / gtkgl.c
index 9a2909aaa77a83d219ce41b01078a7be807f2f7c..e99f5f82755ae6e2c58ff9556e10735d4ddaf54e 100644 (file)
@@ -56,6 +56,8 @@ void gtk_gl_enable(GtkWidget *widget)
                         GLX_DEPTH_SIZE,  1,
                         None};
        XVisualInfo *xvinfo  = glXChooseVisual(xdisplay, nscreen, attribs);
+       if (!xvinfo)
+               g_error("GtkGl: enable - unable to get valid OpenGL Visual");
        GLXContext   context = glXCreateContext(xdisplay, xvinfo, NULL, False);
        g_object_set_data(G_OBJECT(widget), "glcontext", context);
 
@@ -172,10 +174,42 @@ void gtk_gl_disable(GtkWidget *widget)
  * Mac OSX implementation *
  **************************/
 #elif defined(USE_CGL)
-void gtk_gl_enable(GtkWidget *widget) { }
-void gtk_gl_begin(GtkWidget *widget) { }
-void gtk_gl_end(GtkWidget *widget) { }
-void gtk_gl_disable(GtkWidget *widget) { }
+void gtk_gl_enable(GtkWidget *widget)
+{
+       CGDisplayCapture( kCGDirectMainDisplay );
+       CGLPixelFormatAttribute attribs[] =
+       {
+               kCGLPFANoRecovery,
+               kCGLPFADoubleBuffer,
+               kCGLPFAFullScreen,
+               kCGLPFAStencilSize, ( CGLPixelFormatAttribute ) 8,
+               kCGLPFADisplayMask, ( CGLPixelFormatAttribute ) CGDisplayIDToOpenGLDisplayMask( kCGDirectMainDisplay ),
+               ( CGLPixelFormatAttribute ) NULL
+       };
+
+       CGLPixelFormatObj pixelFormatObj;
+       GLint numPixelFormats;
+       CGLChoosePixelFormat( attribs, &pixelFormatObj, &numPixelFormats );
+
+       CGLCreateContext( pixelFormatObj, NULL, &contextObj );
+
+       CGLDestroyPixelFormat( pixelFormatObj );
+
+       CGLSetCurrentContext( contextObj );
+       CGLSetFullScreen( contextObj );
+}
+
+void gtk_gl_begin(GtkWidget *widget)
+{
+}
+
+void gtk_gl_end(GtkWidget *widget)
+{
+}
+
+void gtk_gl_disable(GtkWidget *widget)
+{
+}
 
 
 /****************************