1
0
Fork 0
mirror of https://git.freebsd.org/ports.git synced 2025-06-19 03:30:32 -04:00
ports/sysutils/xfburn/files/patch-xfburn_xfburn-transcoder-gst.c
Guido Falsi 52e54facfb Add patch to stop xfburn crashing when trying to burn an audio CD.
Reported and tested by:	Holger Wagemann <Holger.Wagemann@posteo.de>
2018-11-08 15:00:34 +00:00

50 lines
1.5 KiB
C

--- xfburn/xfburn-transcoder-gst.c.orig 2017-12-14 12:34:57 UTC
+++ xfburn/xfburn-transcoder-gst.c
@@ -221,8 +221,8 @@ xfburn_transcoder_gst_init (XfburnTranscoderGst * obj)
/* if the mutex is locked, then we're not currently seeking
* information from gst */
+ /* Actual locking in prepare and finish */
g_mutex_init (&priv->gst_mutex);
- g_mutex_lock (&priv->gst_mutex);
priv->discoverer = gst_discoverer_new(GST_SECOND, NULL);
}
@@ -492,19 +492,9 @@ bus_call (GstBus *bus, GstMessage *msg, gpointer data)
if (strcmp (GST_OBJECT_NAME (GST_MESSAGE_SRC (msg)), "decoder") != 0)
break;
-
- if (!g_mutex_trylock (&priv->gst_mutex)) {
- g_critical ("Lock held by another thread, can't signal transcoding start!");
- break;
- } else {
-#if DEBUG_GST > 0
- DBG ("Locked mutex to signal transcoding start");
-#endif
- }
priv->gst_done = TRUE;
g_cond_signal (&priv->gst_cond);
- g_mutex_unlock (&priv->gst_mutex);
break;
} /* switch of priv->state */
@@ -835,6 +825,8 @@ prepare (XfburnTranscoder *trans, GError **error)
gboolean ret;
gint64 end_time;
+ g_mutex_lock(&priv->gst_mutex);
+
priv->tracks = g_slist_reverse (priv->tracks);
priv->state = XFBURN_TRANSCODER_GST_STATE_TRANSCODE_START;
@@ -933,6 +925,8 @@ finish (XfburnTranscoder *trans)
}
*/
recreate_pipeline (gst);
+
+ g_mutex_unlock (&priv->gst_mutex);
}