diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 47599c5de..f9bef7083 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -30,7 +30,7 @@ uint8_t DemodBuffer[MAX_DEMOD_BUF_LEN]; size_t DemodBufferLen = 0; -size_t g_DemodStartIdx = 0; +int32_t g_DemodStartIdx = 0; int g_DemodClock = 0; static int CmdHelp(const char *Cmd); @@ -1789,6 +1789,7 @@ int CmdLtrim(const char *Cmd) { GraphBuffer[i - ds] = GraphBuffer[i]; GraphTraceLen -= ds; + g_DemodStartIdx -= ds; RepaintGraphWindow(); return PM3_SUCCESS; } diff --git a/client/src/cmddata.h b/client/src/cmddata.h index 86a60a9bb..b009aaaf8 100644 --- a/client/src/cmddata.h +++ b/client/src/cmddata.h @@ -86,7 +86,7 @@ extern uint8_t DemodBuffer[MAX_DEMOD_BUF_LEN]; extern size_t DemodBufferLen; extern int g_DemodClock; -extern size_t g_DemodStartIdx; +extern int32_t g_DemodStartIdx; #ifdef __cplusplus } diff --git a/client/src/proxguiqt.cpp b/client/src/proxguiqt.cpp index 8c0651b10..6436b5b85 100644 --- a/client/src/proxguiqt.cpp +++ b/client/src/proxguiqt.cpp @@ -703,6 +703,16 @@ void Plot::Trim(void) { if ((CursorAPos == 0) || (CursorBPos == 0)) { // if we don't have both cursors set lref = GraphStart; rref = GraphStop; + if (CursorAPos >= lref) { + CursorAPos -= lref; + } else { + CursorAPos = 0; + } + if (CursorBPos >= lref) { + CursorBPos -= lref; + } else { + CursorBPos = 0; + } } else { lref = CursorAPos < CursorBPos ? CursorAPos : CursorBPos; rref = CursorAPos < CursorBPos ? CursorBPos : CursorAPos; @@ -715,6 +725,7 @@ void Plot::Trim(void) { CursorAPos -= lref; CursorBPos -= lref; } + g_DemodStartIdx -= lref; for (uint32_t i = lref; i < rref; ++i) GraphBuffer[i - lref] = GraphBuffer[i]; GraphTraceLen = rref - lref;