mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-19 14:56:36 +00:00
videobalance: Fix wrong lock order that could lead to a deadlock. Fixes #624331.
This commit is contained in:
parent
e5aae4cd4e
commit
d5a4da9a69
1 changed files with 4 additions and 2 deletions
|
@ -207,9 +207,7 @@ gst_video_balance_update_properties (GstVideoBalance * videobalance)
|
||||||
gboolean passthrough = gst_video_balance_is_passthrough (videobalance);
|
gboolean passthrough = gst_video_balance_is_passthrough (videobalance);
|
||||||
GstBaseTransform *base = GST_BASE_TRANSFORM (videobalance);
|
GstBaseTransform *base = GST_BASE_TRANSFORM (videobalance);
|
||||||
|
|
||||||
GST_BASE_TRANSFORM_LOCK (base);
|
|
||||||
base->passthrough = passthrough;
|
base->passthrough = passthrough;
|
||||||
GST_BASE_TRANSFORM_UNLOCK (base);
|
|
||||||
|
|
||||||
if (!passthrough)
|
if (!passthrough)
|
||||||
gst_video_balance_update_tables (videobalance);
|
gst_video_balance_update_tables (videobalance);
|
||||||
|
@ -684,6 +682,7 @@ gst_video_balance_colorbalance_set_value (GstColorBalance * balance,
|
||||||
g_return_if_fail (GST_IS_VIDEO_FILTER (vb));
|
g_return_if_fail (GST_IS_VIDEO_FILTER (vb));
|
||||||
g_return_if_fail (channel->label != NULL);
|
g_return_if_fail (channel->label != NULL);
|
||||||
|
|
||||||
|
GST_BASE_TRANSFORM_LOCK (vb);
|
||||||
GST_OBJECT_LOCK (vb);
|
GST_OBJECT_LOCK (vb);
|
||||||
if (!g_ascii_strcasecmp (channel->label, "HUE")) {
|
if (!g_ascii_strcasecmp (channel->label, "HUE")) {
|
||||||
new_val = (value + 1000.0) * 2.0 / 2000.0 - 1.0;
|
new_val = (value + 1000.0) * 2.0 / 2000.0 - 1.0;
|
||||||
|
@ -705,6 +704,7 @@ gst_video_balance_colorbalance_set_value (GstColorBalance * balance,
|
||||||
|
|
||||||
gst_video_balance_update_properties (vb);
|
gst_video_balance_update_properties (vb);
|
||||||
GST_OBJECT_UNLOCK (vb);
|
GST_OBJECT_UNLOCK (vb);
|
||||||
|
GST_BASE_TRANSFORM_UNLOCK (vb);
|
||||||
|
|
||||||
gst_color_balance_value_changed (balance, channel,
|
gst_color_balance_value_changed (balance, channel,
|
||||||
gst_color_balance_get_value (balance, channel));
|
gst_color_balance_get_value (balance, channel));
|
||||||
|
@ -765,6 +765,7 @@ gst_video_balance_set_property (GObject * object, guint prop_id,
|
||||||
gdouble d;
|
gdouble d;
|
||||||
const gchar *label = NULL;
|
const gchar *label = NULL;
|
||||||
|
|
||||||
|
GST_BASE_TRANSFORM_LOCK (balance);
|
||||||
GST_OBJECT_LOCK (balance);
|
GST_OBJECT_LOCK (balance);
|
||||||
switch (prop_id) {
|
switch (prop_id) {
|
||||||
case PROP_CONTRAST:
|
case PROP_CONTRAST:
|
||||||
|
@ -806,6 +807,7 @@ gst_video_balance_set_property (GObject * object, guint prop_id,
|
||||||
|
|
||||||
gst_video_balance_update_properties (balance);
|
gst_video_balance_update_properties (balance);
|
||||||
GST_OBJECT_UNLOCK (balance);
|
GST_OBJECT_UNLOCK (balance);
|
||||||
|
GST_BASE_TRANSFORM_UNLOCK (balance);
|
||||||
|
|
||||||
if (label) {
|
if (label) {
|
||||||
GstColorBalanceChannel *channel =
|
GstColorBalanceChannel *channel =
|
||||||
|
|
Loading…
Reference in a new issue