gl/context: add check_gl_version
authorMatthew Waters <ystreet00@gmail.com>
Thu, 29 May 2014 10:35:48 +0000 (20:35 +1000)
committerMatthew Waters <ystreet00@gmail.com>
Fri, 30 May 2014 00:29:37 +0000 (10:29 +1000)
docs/libs/gst-plugins-bad-libs-sections.txt
gst-libs/gst/gl/gstglcontext.c
gst-libs/gst/gl/gstglcontext.h

index 75cc02336ffb9b15d7002111376ffe07bd312235..c70c8486a1a7d4bf9427de07756d84f29af4aa40 100644 (file)
@@ -763,6 +763,7 @@ gst_gl_context_get_gl_api
 gst_gl_context_get_gl_context
 gst_gl_context_get_platform
 gst_gl_context_check_feature
+gst_gl_context_check_gl_version
 <SUBSECTION Standard>
 GST_GL_CONTEXT
 GST_GL_IS_CONTEXT
index b53e21087e5d713caff4ffaedf2f29d7399a10cc..c244de21ab1723dc6f118353c8df2a2cd257781e 100644 (file)
@@ -1041,6 +1041,37 @@ gst_gl_context_get_gl_version (GstGLContext * context, gint * maj, gint * min)
     *min = context->priv->gl_minor;
 }
 
+/**
+ * gst_gl_context_check_gl_version:
+ * @context: a #GstGLContext
+ * @api: api type required
+ * @maj: major version required
+ * @min: minor version required
+ *
+ * Returns: whether OpenGL context implements the required api and specified
+ * version.
+ */
+gboolean
+gst_gl_context_check_gl_version (GstGLContext * context, GstGLAPI api,
+    gint maj, gint min)
+{
+  g_return_if_fail (GST_GL_IS_CONTEXT (context));
+
+  if (maj > context->priv->gl_major)
+    return FALSE;
+
+  if ((gst_gl_context_get_gl_api (context) & api) == GST_GL_API_NONE)
+    return FALSE;
+
+  if (maj < context->priv->gl_major)
+    return TRUE;
+
+  if (min > context->priv->gl_minor)
+    return FALSE;
+
+  return TRUE;
+}
+
 /**
  * gst_gl_context_check_feature:
  * @context: a #GstGLContext
index e6e654914865cf959d2d638aa7ab75f49d6407a9..999b86af93406f511618e9df62a0a2440c3b1c66 100644 (file)
@@ -135,6 +135,7 @@ gboolean      gst_gl_context_set_window (GstGLContext *context, GstGLWindow *win
 GstGLWindow * gst_gl_context_get_window (GstGLContext *context);
 
 void          gst_gl_context_get_gl_version (GstGLContext *context, gint *maj, gint *min);
+gboolean      gst_gl_context_check_gl_version (GstGLContext * context, GstGLAPI api, gint maj, gint min);
 gboolean      gst_gl_context_check_feature (GstGLContext *context, const gchar *feature);
 
 /* FIXME: remove */