[222/906] Finish TODO task 17

This commit is contained in:
Julien Isorce 2008-09-14 19:56:50 +02:00 committed by Matthew Waters
parent 6ad3704c30
commit 72b90292eb
2 changed files with 41 additions and 25 deletions

View file

@ -1623,6 +1623,9 @@ gst_gl_display_thread_gen_shader (GstGLDisplay* display)
{
glutSetWindow (display->glutWinId);
if (GLEW_ARB_fragment_shader)
{
if (display->gen_shader_vertex_source ||
display->gen_shader_fragment_source)
{
gboolean isAlive = TRUE;
GError *error = NULL;
@ -1652,6 +1655,7 @@ gst_gl_display_thread_gen_shader (GstGLDisplay* display)
display->gen_shader = NULL;
}
}
}
else
{
GST_CAT_WARNING (GST_CAT_DEFAULT, "One of the filter required ARB_fragment_shader");
@ -2297,6 +2301,7 @@ gst_gl_display_gen_shader (GstGLDisplay* display,
display->gen_shader_fragment_source = shader_fragment_source;
gst_gl_display_post_message (GST_GL_DISPLAY_ACTION_GEN_SHADER, display);
g_cond_wait (display->cond_gen_shader, display->mutex);
if (shader)
*shader = display->gen_shader;
display->gen_shader = NULL;
display->gen_shader_vertex_source = NULL;

View file

@ -44,6 +44,8 @@ static void gst_gl_effects_get_property (GObject * object, guint prop_id,
static void gst_gl_effects_init_resources (GstGLFilter* filter);
static void gst_gl_effects_reset_resources (GstGLFilter* filter);
static void gst_gl_effects_on_init_gl_context (GstGLFilter* filter);
static void gst_gl_effects_ghash_func_clean (gpointer key, gpointer value, gpointer data);
static gboolean gst_gl_effects_filter (GstGLFilter * filter,
@ -219,6 +221,7 @@ gst_gl_effects_class_init (GstGLEffectsClass * klass)
GST_GL_FILTER_CLASS (klass)->display_reset_cb = gst_gl_effects_reset_gl_resources;
GST_GL_FILTER_CLASS (klass)->onStart = gst_gl_effects_init_resources;
GST_GL_FILTER_CLASS (klass)->onStop = gst_gl_effects_reset_resources;
GST_GL_FILTER_CLASS (klass)->onInitFBO = gst_gl_effects_on_init_gl_context;
g_object_class_install_property (
gobject_class,
@ -371,6 +374,14 @@ gst_gl_effects_init_resources (GstGLFilter* filter)
}
}
static void
gst_gl_effects_on_init_gl_context (GstGLFilter* filter)
{
//check that your hardware supports shader
//if not the pipeline correctly shut down
gst_gl_display_gen_shader (filter->display, 0, 0, NULL);
}
static gboolean
gst_gl_effects_filter (GstGLFilter* filter, GstGLBuffer* inbuf,
GstGLBuffer* outbuf)