mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-24 17:20:36 +00:00
glsinkbin: validate property in internal sink
It might be the case that glgsinkbin would try to set a property to its internal sink which doesn't exist in it, leading to a glib's warning. For example, when playsink sets 'force-aspect-ratio' property and glsinkbin has, as internal sink, appsink, which doesn't handle that property. The patch validates the incoming property to forward to internal sink if it exists in the internal sink and both properties has the same type.
This commit is contained in:
parent
a6552ee02e
commit
b1df1000b1
1 changed files with 12 additions and 2 deletions
|
@ -343,6 +343,7 @@ gst_gl_sink_bin_set_property (GObject * object, guint prop_id,
|
||||||
const GValue * value, GParamSpec * pspec)
|
const GValue * value, GParamSpec * pspec)
|
||||||
{
|
{
|
||||||
GstGLSinkBin *self = GST_GL_SINK_BIN (object);
|
GstGLSinkBin *self = GST_GL_SINK_BIN (object);
|
||||||
|
GParamSpec *sink_pspec;
|
||||||
|
|
||||||
switch (prop_id) {
|
switch (prop_id) {
|
||||||
case PROP_SINK:
|
case PROP_SINK:
|
||||||
|
@ -356,8 +357,17 @@ gst_gl_sink_bin_set_property (GObject * object, guint prop_id,
|
||||||
g_object_set_property (G_OBJECT (self->balance), pspec->name, value);
|
g_object_set_property (G_OBJECT (self->balance), pspec->name, value);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (self->sink)
|
if (self->sink) {
|
||||||
g_object_set_property (G_OBJECT (self->sink), pspec->name, value);
|
sink_pspec =
|
||||||
|
g_object_class_find_property (G_OBJECT_GET_CLASS (self->sink),
|
||||||
|
pspec->name);
|
||||||
|
if (sink_pspec
|
||||||
|
&& G_PARAM_SPEC_TYPE (sink_pspec) == G_PARAM_SPEC_TYPE (pspec)) {
|
||||||
|
g_object_set_property (G_OBJECT (self->sink), pspec->name, value);
|
||||||
|
} else {
|
||||||
|
GST_INFO ("Failed to set unmatched property %s", pspec->name);
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue