From 00fdca0c14eb9a5fe6b8b9f2d5ce2313e3b32f23 Mon Sep 17 00:00:00 2001 From: Stefan Kost Date: Tue, 27 Jan 2009 23:09:05 +0200 Subject: [PATCH] Fix example apps by drawing in the main-loop. --- tests/examples/spectrum/demo-audiotest.c | 19 ++++++++++++------- tests/examples/spectrum/demo-osssrc.c | 19 ++++++++++++------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/tests/examples/spectrum/demo-audiotest.c b/tests/examples/spectrum/demo-audiotest.c index d21857a268..d04552d197 100644 --- a/tests/examples/spectrum/demo-audiotest.c +++ b/tests/examples/spectrum/demo-audiotest.c @@ -92,17 +92,22 @@ draw_spectrum (gfloat * data) } /* process delayed message */ +static gboolean +delayed_idle_spectrum_update (gpointer user_data) +{ + draw_spectrum ((gfloat *) user_data); + g_free (user_data); + return (FALSE); +} + static gboolean delayed_spectrum_update (GstClock * sync_clock, GstClockTime time, GstClockID id, gpointer user_data) { - if (!GST_CLOCK_TIME_IS_VALID (time)) - goto done; - - draw_spectrum ((gfloat *) user_data); - -done: - g_free (user_data); + if (GST_CLOCK_TIME_IS_VALID (time)) + g_idle_add (delayed_idle_spectrum_update, user_data); + else + g_free (user_data); return (TRUE); } diff --git a/tests/examples/spectrum/demo-osssrc.c b/tests/examples/spectrum/demo-osssrc.c index dd19ca1f06..c7ae8462e3 100644 --- a/tests/examples/spectrum/demo-osssrc.c +++ b/tests/examples/spectrum/demo-osssrc.c @@ -81,17 +81,22 @@ draw_spectrum (gfloat * data) } /* process delayed message */ +static gboolean +delayed_idle_spectrum_update (gpointer user_data) +{ + draw_spectrum ((gfloat *) user_data); + g_free (user_data); + return (FALSE); +} + static gboolean delayed_spectrum_update (GstClock * sync_clock, GstClockTime time, GstClockID id, gpointer user_data) { - if (!GST_CLOCK_TIME_IS_VALID (time)) - goto done; - - draw_spectrum ((gfloat *) user_data); - -done: - g_free (user_data); + if (GST_CLOCK_TIME_IS_VALID (time)) + g_idle_add (delayed_idle_spectrum_update, user_data); + else + g_free (user_data); return (TRUE); }