summaryrefslogtreecommitdiff
path: root/plugins/gtkui/gtkglext-gtk2/gdk/gdkglcontext.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/gtkui/gtkglext-gtk2/gdk/gdkglcontext.c')
-rw-r--r--plugins/gtkui/gtkglext-gtk2/gdk/gdkglcontext.c120
1 files changed, 120 insertions, 0 deletions
diff --git a/plugins/gtkui/gtkglext-gtk2/gdk/gdkglcontext.c b/plugins/gtkui/gtkglext-gtk2/gdk/gdkglcontext.c
new file mode 100644
index 00000000..9ec0189b
--- /dev/null
+++ b/plugins/gtkui/gtkglext-gtk2/gdk/gdkglcontext.c
@@ -0,0 +1,120 @@
+/* GdkGLExt - OpenGL Extension to GDK
+ * Copyright (C) 2002-2004 Naofumi Yasufuku
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+
+#include "gdkglprivate.h"
+#include "gdkgldrawable.h"
+#include "gdkglconfig.h"
+#include "gdkglcontext.h"
+
+gboolean _gdk_gl_context_force_indirect = FALSE;
+
+static void gdk_gl_context_class_init (GdkGLContextClass *klass);
+static void gdk_gl_context_finalize (GObject *object);
+
+static gpointer parent_class = NULL;
+
+GType
+gdk_gl_context_get_type (void)
+{
+ static GType type = 0;
+
+ if (!type)
+ {
+ static const GTypeInfo type_info = {
+ sizeof (GdkGLContextClass),
+ (GBaseInitFunc) NULL,
+ (GBaseFinalizeFunc) NULL,
+ (GClassInitFunc) gdk_gl_context_class_init,
+ (GClassFinalizeFunc) NULL,
+ NULL, /* class_data */
+ sizeof (GdkGLContext),
+ 0, /* n_preallocs */
+ (GInstanceInitFunc) NULL
+ };
+
+ type = g_type_register_static (G_TYPE_OBJECT,
+ "GdkGLContext",
+ &type_info, 0);
+ }
+
+ return type;
+}
+
+static void
+gdk_gl_context_class_init (GdkGLContextClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ GDK_GL_NOTE_FUNC_PRIVATE ();
+
+ parent_class = g_type_class_peek_parent (klass);
+
+ object_class->finalize = gdk_gl_context_finalize;
+}
+
+static void
+gdk_gl_context_finalize (GObject *object)
+{
+ GDK_GL_NOTE_FUNC_PRIVATE ();
+
+ G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+/**
+ * gdk_gl_context_new:
+ * @gldrawable: a #GdkGLDrawable.
+ * @share_list: the #GdkGLContext with which to share display lists and texture
+ * objects. NULL indicates that no sharing is to take place.
+ * @direct: whether rendering is to be done with a direct connection to
+ * the graphics system.
+ * @render_type: GDK_GL_RGBA_TYPE or GDK_GL_COLOR_INDEX_TYPE (currently not
+ * used).
+ *
+ * Creates a new OpenGL rendering context.
+ *
+ * Return value: the new #GdkGLContext.
+ **/
+GdkGLContext *
+gdk_gl_context_new (GdkGLDrawable *gldrawable,
+ GdkGLContext *share_list,
+ gboolean direct,
+ int render_type)
+{
+ g_return_val_if_fail (GDK_IS_GL_DRAWABLE (gldrawable), NULL);
+
+ return GDK_GL_DRAWABLE_GET_CLASS (gldrawable)->create_new_context (gldrawable,
+ share_list,
+ direct,
+ render_type);
+}
+
+/**
+ * gdk_gl_context_destroy:
+ * @glcontext: a #GdkGLContext.
+ *
+ * Destroys the OpenGL resources associated with @glcontext and
+ * decrements @glcontext's reference count.
+ **/
+void
+gdk_gl_context_destroy (GdkGLContext *glcontext)
+{
+ g_return_if_fail (GDK_IS_GL_CONTEXT (glcontext));
+
+ _gdk_gl_context_destroy (glcontext);
+ g_object_unref (G_OBJECT (glcontext));
+}