Index: gnopernicus/speech/libsrs/srspeech.c
===================================================================
RCS file: /cvs/gnome/gnopernicus/speech/libsrs/srspeech.c,v
retrieving revision 1.33
diff -u -r1.33 srspeech.c
--- gnopernicus/speech/libsrs/srspeech.c	19 Dec 2003 11:52:47 -0000	1.33
+++ gnopernicus/speech/libsrs/srspeech.c	14 Feb 2004 15:01:25 -0000
@@ -733,10 +733,16 @@
 }
 
 void
-srs_call_shut_up ()
+srs_call_shut_up (gint priority, gint preempt)
 {
     if (!cb_support_tranzition)
 	srs_shut_up ();
+    else if (CurrText)
+    {	
+	if (priority > CurrText->priority || 
+	    (priority == CurrText->priority && CurrText->preempt))
+	    srs_shut_up ();
+    }
 }
 
 
Index: gnopernicus/speech/libsrs/srspeech.h
===================================================================
RCS file: /cvs/gnome/gnopernicus/speech/libsrs/srspeech.h,v
retrieving revision 1.15
diff -u -r1.15 srspeech.h
--- gnopernicus/speech/libsrs/srspeech.h	19 Dec 2003 11:52:47 -0000	1.15
+++ gnopernicus/speech/libsrs/srspeech.h	14 Feb 2004 15:01:25 -0000
@@ -148,7 +148,7 @@
 int        	srs_pause      		(void);
 int        	srs_resume     		(void);
 gboolean	srs_remove		(gint priority);
-void		srs_call_shut_up 	();
+void		srs_call_shut_up 	(gint priority, gint preempt);
 /*____________________________< engine METHODS >______________________________*/
 
 #endif
Index: gnopernicus/speech/libsrs/srsxml.c
===================================================================
RCS file: /cvs/gnome/gnopernicus/speech/libsrs/srsxml.c,v
retrieving revision 1.23
diff -u -r1.23 srsxml.c
--- gnopernicus/speech/libsrs/srsxml.c	19 Dec 2003 11:52:47 -0000	1.23
+++ gnopernicus/speech/libsrs/srsxml.c	14 Feb 2004 15:01:27 -0000
@@ -108,7 +108,7 @@
 				}
 				if ((last_priority < srs_priority) ||
 				    ((last_priority == srs_priority) && last_preempt))
-				    srs_call_shut_up ();
+				    srs_call_shut_up (srs_priority, srs_preempt);
 				last_priority = srs_priority;
 				last_preempt = srs_preempt;
 				srs_remove (srs_priority);						
