Blob Blame History Raw
diff -ur Csound5.10.1/Top/csound.c Csound5.10.1-patch/Top/csound.c
--- Csound5.10.1/Top/csound.c	2009-10-15 21:46:28.608183562 -0400
+++ Csound5.10.1-patch/Top/csound.c	2009-10-15 21:53:50.272631365 -0400
@@ -1363,6 +1363,10 @@
   {
       int done;
       int returnValue;
+      /* WTB - Oct 15 2009: only perform if CS_STATE_COMP set. */
+      if (UNLIKELY((csound->engineState & CS_STATE_COMP) == 0)) {
+    	  return 1;
+      }
       /* setup jmp for return after an exit() */
       if ((returnValue = setjmp(csound->exitjmp))) {
 #ifndef MACOSX
@@ -1383,6 +1387,10 @@
   {
       int done = 0;
       int returnValue;
+      /* WTB - Oct 15 2009: only perform if CS_STATE_COMP set. */
+      if (UNLIKELY((csound->engineState & CS_STATE_COMP) == 0)) {
+    	  return 1;
+      }
       /* setup jmp for return after an exit() */
       if ((returnValue = setjmp(csound->exitjmp))) {
 #ifndef MACOSX
@@ -1402,6 +1410,10 @@
   {
       int returnValue;
       int done;
+      /* WTB - Oct 15 2009: only perform if CS_STATE_COMP set. */
+      if (UNLIKELY((csound->engineState & CS_STATE_COMP) == 0)) {
+    	  return 1;
+      }
       /* Setup jmp for return after an exit(). */
       if ((returnValue = setjmp(csound->exitjmp))) {
 #ifndef MACOSX
@@ -1427,6 +1439,10 @@
       int done;
       int returnValue;
       csound->performState = 0;
+      /* WTB - Oct 15 2009: only perform if CS_STATE_COMP set. */
+      if (UNLIKELY((csound->engineState & CS_STATE_COMP) == 0)) {
+    	  return 1;
+      }
       /* setup jmp for return after an exit() */
       if ((returnValue = setjmp(csound->exitjmp))) {
 #ifndef MACOSX
diff -ur Csound5.10.1/Top/main.c Csound5.10.1-patch/Top/main.c
--- Csound5.10.1/Top/main.c	2008-08-11 03:42:21.000000000 -0400
+++ Csound5.10.1-patch/Top/main.c	2009-10-15 21:49:14.804391186 -0400
@@ -89,7 +89,8 @@
     dbfs_init(csound, DFLT_DBFS);
     csound->csRtClock = (RTCLOCK*) csound->Calloc(csound, sizeof(RTCLOCK));
     csoundInitTimerStruct(csound->csRtClock);
-    csound->engineState |= CS_STATE_COMP | CS_STATE_CLN;
+    /* WTB - Oct 15 2009: only set CS_STATE_CLN; CS_STATE_COMP set when retval=0. */
+    csound->engineState |= /*CS_STATE_COMP |*/ CS_STATE_CLN;
 
 #ifndef USE_DOUBLE
 #ifdef BETA
@@ -430,6 +431,13 @@
 
     }
 
-    return musmon(csound);
+    n = musmon(csound);
+
+    /* WTB - Oct 15 2009: CS_STATE_COMP set when retval=0. */
+    if (n == 0) {
+		csound->engineState |= CS_STATE_COMP;
+    }
+
+    return n;
 }