mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-18 22:36:33 +00:00
[456/906] glfilter/glmixer/gltestsrc/glupload: throw an element error if no parent bin
Fixes bug #602153
This commit is contained in:
parent
ade2526b8f
commit
769e43a2e0
2 changed files with 28 additions and 10 deletions
|
@ -238,11 +238,20 @@ gst_gl_filter_start (GstBaseTransform * bt)
|
|||
GstGLFilter *filter = GST_GL_FILTER (bt);
|
||||
GstGLFilterClass *filter_class = GST_GL_FILTER_GET_CLASS (filter);
|
||||
GstElement *parent = GST_ELEMENT (gst_element_get_parent (filter));
|
||||
GstStructure *structure =
|
||||
gst_structure_new (gst_element_get_name (filter), NULL);
|
||||
GstQuery *query = gst_query_new_application (GST_QUERY_CUSTOM, structure);
|
||||
GstStructure *structure = NULL;
|
||||
GstQuery *query = NULL;
|
||||
gboolean isPerformed = FALSE;
|
||||
|
||||
gboolean isPerformed = gst_element_query (parent, query);
|
||||
if (!parent) {
|
||||
GST_ELEMENT_ERROR (filter, CORE, STATE_CHANGE, (NULL),
|
||||
("A parent bin is required"));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
structure = gst_structure_new (gst_element_get_name (filter), NULL);
|
||||
query = gst_query_new_application (GST_QUERY_CUSTOM, structure);
|
||||
|
||||
isPerformed = gst_element_query (parent, query);
|
||||
|
||||
if (isPerformed) {
|
||||
const GValue *id_value =
|
||||
|
|
|
@ -609,10 +609,10 @@ gst_gl_mixer_query (GstPad * pad, GstQuery * query)
|
|||
/* id_value is set by upstream element of itself when going
|
||||
* to paused state */
|
||||
const GValue *id_value =
|
||||
gst_structure_get_value (structure, "gstgldisplay");
|
||||
gst_structure_get_value (structure, "gstgldisplay");
|
||||
foreign_display = GST_GL_DISPLAY (g_value_get_pointer (id_value));
|
||||
}
|
||||
|
||||
|
||||
foreign_gl_context =
|
||||
gst_gl_display_get_internal_gl_context (foreign_display);
|
||||
|
||||
|
@ -1243,12 +1243,21 @@ gst_gl_mixer_change_state (GstElement * element, GstStateChange transition)
|
|||
gint i = 0;
|
||||
|
||||
GstElement *parent = GST_ELEMENT (gst_element_get_parent (mix));
|
||||
GstStructure *structure =
|
||||
gst_structure_new (gst_element_get_name (mix), NULL);
|
||||
GstQuery *query = gst_query_new_application (GST_QUERY_CUSTOM, structure);
|
||||
GstStructure *structure = NULL;
|
||||
GstQuery *query = NULL;
|
||||
gboolean isPerformed = FALSE;
|
||||
|
||||
if (!parent) {
|
||||
GST_ELEMENT_ERROR (mix, CORE, STATE_CHANGE, (NULL),
|
||||
("A parent bin is required"));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
structure = gst_structure_new (gst_element_get_name (mix), NULL);
|
||||
query = gst_query_new_application (GST_QUERY_CUSTOM, structure);
|
||||
|
||||
/* retrieve the gldisplay that is owned by gl elements after the gl mixer */
|
||||
gboolean isPerformed = gst_element_query (parent, query);
|
||||
isPerformed = gst_element_query (parent, query);
|
||||
|
||||
if (isPerformed) {
|
||||
const GValue *id_value =
|
||||
|
|
Loading…
Reference in a new issue