From c4852a71042b092d5ccadfb4b7e2e82b21300c08 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 28 Apr 2025 04:13:26 -0500 Subject: [PATCH] YES!!!!! FIXED!!!!!!!!!!!! no more chewed off triangle! finally I can move on! --- src/engine/dispatch.h | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/engine/dispatch.h b/src/engine/dispatch.h index 7289767eb..d1121673d 100644 --- a/src/engine/dispatch.h +++ b/src/engine/dispatch.h @@ -443,7 +443,7 @@ struct DivDispatchOscBuffer { unsigned int needle; unsigned short readNeedle; //unsigned short lastSample; - bool follow; + bool follow, mustNotKillNeedle; short data[65536]; inline void putSample(const size_t pos, const short val) { @@ -470,6 +470,11 @@ struct DivDispatchOscBuffer { unsigned short start=needle>>16; unsigned short end=(needle+calc)>>16; + if (mustNotKillNeedle && start!=end) { + start++; + end++; + } + //logD("C %d %d %d",len,calc,rate); if (end>16]!=-1); //data[needle>>16]=lastSample; } void reset() { memset(data,-1,65536*sizeof(short)); needle=0; readNeedle=0; + mustNotKillNeedle=false; //lastSample=0; } void setRate(unsigned int r) { @@ -505,7 +512,8 @@ struct DivDispatchOscBuffer { needle(0), readNeedle(0), //lastSample(0), - follow(true) { + follow(true), + mustNotKillNeedle(false) { memset(data,-1,65536*sizeof(short)); } };