]> git.rkrishnan.org Git - dttsp.git/blobdiff - jDttSP/main.c
Bug fixes to jsdr, keyer
[dttsp.git] / jDttSP / main.c
index a4611e3824deeab5cf787dbb4587582fa94d5eac..4aa5884ddcf7a31885760a9f16444046cd35b918 100644 (file)
@@ -48,6 +48,16 @@ extern void destroy_workspace(void);
 
 //========================================================================
 
+void
+clear_jack_ringbuffer(jack_ringbuffer_t *rb, int nbytes) {
+  int i;
+  char zero = 0;
+  for (i = 0; i < nbytes; i++)
+    jack_ringbuffer_write(rb, &zero, 1);
+}
+
+//========================================================================
+
 PRIVATE void
 monitor_thread(void) {
   while (top.running) {
@@ -164,6 +174,9 @@ run_swch(void) {
     rx.tick = tx.tick = 0;
     top.state = top.swch.run.last;
     top.swch.bfct.want = top.swch.bfct.have = 0;
+
+    jack_ringbuffer_reset(top.jack.ring.o.l);
+    jack_ringbuffer_reset(top.jack.ring.o.r);
   }
 
   process_samples(top.hold.buf.l, top.hold.buf.r, top.hold.size.frames);
@@ -171,13 +184,6 @@ run_swch(void) {
 
 //========================================================================
 
-void
-clear_jack_ringbuffer(jack_ringbuffer_t *rb, int nbytes) {
-  int i;
-  char zero = 0;
-  for (i = 0; i < nbytes; i++)
-    jack_ringbuffer_write(rb, &zero, 1);
-}
 
 PRIVATE void 
 audio_callback(jack_nframes_t nframes, void *arg) {
@@ -407,8 +413,8 @@ setup_system_audio(void) {
   top.jack.ring.i.r = jack_ringbuffer_create(top.hold.size.bytes * loc.mult.ring);
   top.jack.ring.o.l = jack_ringbuffer_create(top.hold.size.bytes * loc.mult.ring);
   top.jack.ring.o.r = jack_ringbuffer_create(top.hold.size.bytes * loc.mult.ring);
-  clear_jack_ringbuffer(top.jack.ring.o.l, top.hold.size.bytes);
-  clear_jack_ringbuffer(top.jack.ring.o.r, top.hold.size.bytes);
+  clear_jack_ringbuffer(top.jack.ring.o.l, top.jack.size * sizeof(float));
+  clear_jack_ringbuffer(top.jack.ring.o.r, top.jack.size * sizeof(float));
 }
 
 PRIVATE void