diff options
-rw-r--r-- | ext/gl/gstglsinkbin.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/ext/gl/gstglsinkbin.c b/ext/gl/gstglsinkbin.c index 02511f56d..00164f284 100644 --- a/ext/gl/gstglsinkbin.c +++ b/ext/gl/gstglsinkbin.c @@ -343,6 +343,7 @@ gst_gl_sink_bin_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec) { GstGLSinkBin *self = GST_GL_SINK_BIN (object); + GParamSpec *sink_pspec; switch (prop_id) { 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); break; default: - if (self->sink) - g_object_set_property (G_OBJECT (self->sink), pspec->name, value); + if (self->sink) { + 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; } } |