summaryrefslogtreecommitdiff
path: root/plugins/gtkui/gtkglext-gtk3/gdk/x11/gdkx11glconfig.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/gtkui/gtkglext-gtk3/gdk/x11/gdkx11glconfig.c')
-rw-r--r--plugins/gtkui/gtkglext-gtk3/gdk/x11/gdkx11glconfig.c245
1 files changed, 245 insertions, 0 deletions
diff --git a/plugins/gtkui/gtkglext-gtk3/gdk/x11/gdkx11glconfig.c b/plugins/gtkui/gtkglext-gtk3/gdk/x11/gdkx11glconfig.c
new file mode 100644
index 00000000..426d28f7
--- /dev/null
+++ b/plugins/gtkui/gtkglext-gtk3/gdk/x11/gdkx11glconfig.c
@@ -0,0 +1,245 @@
+/* GdkGLExt - OpenGL Extension to GDK
+ * Copyright (C) 2012 Thomas Zimmermann
+ *
+ * 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.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif /* HAVE_CONFIG_H */
+
+#include <gdk/gdkgldebug.h>
+#include <gdk/x11/gdkglx.h>
+
+#include "gdkglconfig-x11.h"
+
+struct _GdkX11GLConfig
+{
+ GdkGLConfig parent;
+};
+
+struct _GdkX11GLConfigClass
+{
+ GdkGLConfigClass parent_class;
+};
+
+G_DEFINE_TYPE (GdkX11GLConfig, gdk_x11_gl_config, GDK_TYPE_GL_CONFIG);
+
+static void
+gdk_x11_gl_config_init (GdkX11GLConfig *self)
+{
+ GDK_GL_NOTE_FUNC_PRIVATE ();
+}
+
+static void
+gdk_x11_gl_config_finalize (GObject *object)
+{
+ GDK_GL_NOTE_FUNC_PRIVATE ();
+
+ G_OBJECT_CLASS (gdk_x11_gl_config_parent_class)->finalize (object);
+}
+
+static void
+gdk_x11_gl_config_class_init (GdkX11GLConfigClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ GDK_GL_NOTE_FUNC_PRIVATE ();
+
+ object_class->finalize = gdk_x11_gl_config_finalize;
+}
+
+/**
+ * gdk_x11_gl_config_new_for_display:
+ * @display: display.
+ * @attrib_list: (array length=n_attribs): the attribute list.
+ * @n_attribs: the number of attributes and values in attrib_list
+ *
+ * Creates a #GdkGLConfig on the given display.
+ *
+ * Return value: the new #GdkGLConfig.
+ **/
+GdkGLConfig *
+gdk_x11_gl_config_new_for_display(GdkDisplay *display, const int *attrib_list, gsize n_attribs)
+{
+ GdkGLConfig *glconfig;
+ GdkGLConfig *impl;
+
+ g_return_val_if_fail(GDK_IS_X11_DISPLAY(display), NULL);
+
+ glconfig = g_object_new(GDK_TYPE_X11_GL_CONFIG, NULL);
+
+ g_return_val_if_fail(glconfig != NULL, NULL);
+
+ impl = _gdk_x11_gl_config_impl_new(glconfig, attrib_list, n_attribs);
+
+ if (impl == NULL)
+ g_object_unref(glconfig);
+
+ g_return_val_if_fail(impl != NULL, NULL);
+
+ return glconfig;
+}
+
+/**
+ * gdk_x11_gl_config_new_for_screen:
+ * @screen: target screen.
+ * @attrib_list: (array length=n_attribs): the attribute list.
+ * @n_attribs: the number of attributes and values in attrib_list
+ *
+ * Creates a #GdkGLConfig on the given display.
+ *
+ * Return value: the new #GdkGLConfig.
+ **/
+GdkGLConfig *
+gdk_x11_gl_config_new_for_screen(GdkScreen *screen, const int *attrib_list, gsize n_attribs)
+{
+ GdkGLConfig *glconfig;
+ GdkGLConfig *impl;
+
+ g_return_val_if_fail(GDK_IS_X11_SCREEN(screen), NULL);
+
+ glconfig = g_object_new(GDK_TYPE_X11_GL_CONFIG, NULL);
+
+ g_return_val_if_fail(glconfig != NULL, NULL);
+
+ impl = _gdk_x11_gl_config_impl_new(glconfig, attrib_list, n_attribs);
+
+ if (impl == NULL)
+ g_object_unref(glconfig);
+
+ g_return_val_if_fail(impl != NULL, NULL);
+
+ return glconfig;
+}
+
+/**
+ * gdk_x11_gl_config_new_from_visualid:
+ * @xvisualid: visual ID.
+ *
+ * Creates #GdkGLConfig from given visual ID that specifies the OpenGL-capable
+ * visual.
+ *
+ * Return value: the new #GdkGLConfig.
+ **/
+GdkGLConfig *
+gdk_x11_gl_config_new_from_visualid (VisualID xvisualid)
+{
+ GdkScreen *screen;
+ GdkGLConfig *glconfig;
+ GdkGLConfig *impl;
+
+ GDK_GL_NOTE_FUNC ();
+
+ screen = gdk_screen_get_default ();
+
+ glconfig = g_object_new(GDK_TYPE_X11_GL_CONFIG, NULL);
+
+ g_return_val_if_fail(glconfig != NULL, NULL);
+
+ impl = _gdk_x11_gl_config_impl_new_from_visualid_for_screen (glconfig,
+ screen,
+ xvisualid);
+ if (impl == NULL)
+ g_object_unref(glconfig);
+
+ g_return_val_if_fail(impl != NULL, NULL);
+
+ return glconfig;
+}
+
+/**
+ * gdk_x11_gl_config_new_from_visualid_for_screen:
+ * @screen: target screen.
+ * @xvisualid: visual ID.
+ *
+ * Creates #GdkGLConfig from given visual ID that specifies the OpenGL-capable
+ * visual.
+ *
+ * Return value: the new #GdkGLConfig.
+ **/
+GdkGLConfig *
+gdk_x11_gl_config_new_from_visualid_for_screen (GdkScreen *screen,
+ VisualID xvisualid)
+{
+ GdkGLConfig *glconfig;
+ GdkGLConfig *impl;
+
+ GDK_GL_NOTE_FUNC ();
+
+ g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
+
+ glconfig = g_object_new(GDK_TYPE_X11_GL_CONFIG, NULL);
+
+ g_return_val_if_fail(glconfig != NULL, NULL);
+
+ impl = _gdk_x11_gl_config_impl_new_from_visualid_for_screen (glconfig,
+ screen,
+ xvisualid);
+ if (impl == NULL)
+ g_object_unref(glconfig);
+
+ g_return_val_if_fail(impl != NULL, NULL);
+
+ return glconfig;
+}
+
+/**
+ * gdk_x11_gl_config_get_xdisplay:
+ * @glconfig: a #GdkGLConfig.
+ *
+ * Gets X Display.
+ *
+ * Return value: pointer to the Display.
+ **/
+Display *
+gdk_x11_gl_config_get_xdisplay (GdkGLConfig *glconfig)
+{
+ g_return_val_if_fail (GDK_IS_X11_GL_CONFIG (glconfig), NULL);
+
+ return GDK_GL_CONFIG_IMPL_X11_CLASS (glconfig)->get_xdisplay(glconfig);
+}
+
+/**
+ * gdk_x11_gl_config_get_screen_number:
+ * @glconfig: a #GdkGLConfig.
+ *
+ * Gets X screen number.
+ *
+ * Return value: the screen number.
+ **/
+int
+gdk_x11_gl_config_get_screen_number (GdkGLConfig *glconfig)
+{
+ g_return_val_if_fail (GDK_IS_X11_GL_CONFIG (glconfig), 0);
+
+ return GDK_GL_CONFIG_IMPL_X11_CLASS (glconfig)->get_screen_number(glconfig);
+}
+
+/**
+ * gdk_x11_gl_config_get_xvinfo:
+ * @glconfig: a #GdkGLConfig.
+ *
+ * Gets XVisualInfo data.
+ *
+ * Return value: pointer to the XVisualInfo data.
+ **/
+XVisualInfo *
+gdk_x11_gl_config_get_xvinfo (GdkGLConfig *glconfig)
+{
+ g_return_val_if_fail (GDK_IS_X11_GL_CONFIG (glconfig), NULL);
+
+ return GDK_GL_CONFIG_IMPL_X11_CLASS (glconfig)->get_xvinfo(glconfig);
+}