If jackd changes the buffer size or sample rate, jackaudiosink hangs
and can't be stopped. This also happens if jack is configured as slave
and a gstreamer pipeline is started on the slave machine while the jack
master isn't running yet. If the the jack master is started it changes
the buffer size / sample rate and jackaudiosink can't be stopped.
This fix calls jack_shutdown_cb when jack_sample_rate_cb or
jack_buffer_size_cb is called.
https://bugzilla.gnome.org/show_bug.cgi?id=771272
-/* we error out */
-static int
-jack_sample_rate_cb (jack_nframes_t nframes, void *arg)
-{
- return 0;
-}
-
-/* we error out */
-static int
-jack_buffer_size_cb (jack_nframes_t nframes, void *arg)
-{
- return 0;
-}
-
static void
jack_shutdown_cb (void *arg)
{
static void
jack_shutdown_cb (void *arg)
{
g_mutex_unlock (&conn->lock);
}
g_mutex_unlock (&conn->lock);
}
+/* we error out */
+static int
+jack_sample_rate_cb (jack_nframes_t nframes, void *arg)
+{
+ jack_shutdown_cb(arg);
+ return 0;
+}
+
+/* we error out */
+static int
+jack_buffer_size_cb (jack_nframes_t nframes, void *arg)
+{
+ jack_shutdown_cb(arg);
+ return 0;
+}
+
typedef struct
{
const gchar *id;
typedef struct
{
const gchar *id;