diff -u -r1.83.2.2 srspc.c
--- gnopernicus/srcore/srspc.c	28 Sep 2004 09:10:35 -0000	1.83.2.2
+++ gnopernicus/srcore/srspc.c	26 Nov 2004 14:27:07 -0000
@@ -1136,6 +1136,14 @@
         srcs_out_terminate (last_out);
 	last_out = NULL;
     }
+    if (srcs_outs)
+    {
+	GSList *crt, *tmp = srcs_outs;
+	srcs_outs = NULL;
+	for (crt = tmp; crt; crt = crt->next)
+	    srcs_out_terminate (crt->data);
+	g_slist_free (tmp);
+    }
 
     src_speech_send ("<SRSOUT><SHUTUP/></SRSOUT>");
 }
@@ -1232,12 +1240,12 @@
 	srcs_outs = g_slist_remove_link (srcs_outs, tmp);
     }
 										        
-    srcs_outs = g_slist_append (srcs_outs, out);
     if (last_out && srcs_out_can_shutup_out (last_out, out))
     {
 	src_speech_shutup ();
     }
 
+    srcs_outs = g_slist_append (srcs_outs, out);
 #ifdef SRS_NO_MARKERS_SUPPORTED
     if (!src_speech_callback)
 	src_speech_send_from_queue ();
