From 69283a7d5c2e861bf4f4c78f6e9a528891bba961 Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Mon, 19 Jul 2021 12:36:11 +0200 Subject: [PATCH] [color] fix mix/input copy/paste --- radio/src/gui/colorlcd/model_inputs.cpp | 25 +++++++++++----------- radio/src/gui/colorlcd/model_mixes.cpp | 28 ++++++++++++------------- 2 files changed, 25 insertions(+), 28 deletions(-) diff --git a/radio/src/gui/colorlcd/model_inputs.cpp b/radio/src/gui/colorlcd/model_inputs.cpp index a28b1e0dd..2157ac2b3 100644 --- a/radio/src/gui/colorlcd/model_inputs.cpp +++ b/radio/src/gui/colorlcd/model_inputs.cpp @@ -56,20 +56,19 @@ void copyExpo(uint8_t source, uint8_t dest, int8_t input) pauseMixerCalculations(); ExpoData sourceExpo; memcpy(&sourceExpo, expoAddress(source), sizeof(ExpoData)); - ExpoData * expo = expoAddress(dest); - - if(input == PASTE_AFTER) { - memmove(expo+2, expo+1, (MAX_EXPOS-(source+1))*sizeof(ExpoData)); - memcpy(expo+1, &sourceExpo, sizeof(ExpoData)); - (expo+1)->chn = (expo)->chn; - } - else if(input == PASTE_BEFORE) { - memmove(expo+1, expo, (MAX_EXPOS-(source+1))*sizeof(ExpoData)); + ExpoData *expo = expoAddress(dest); + size_t trailingExpos = MAX_EXPOS - (dest + 1); + if (input == PASTE_AFTER) { + trailingExpos--; + memmove(expo + 2, expo + 1, trailingExpos * sizeof(ExpoData)); + memcpy(expo + 1, &sourceExpo, sizeof(ExpoData)); + (expo + 1)->chn = (expo)->chn; + } else if (input == PASTE_BEFORE) { + memmove(expo + 1, expo, trailingExpos * sizeof(ExpoData)); memcpy(expo, &sourceExpo, sizeof(ExpoData)); - expo->chn = (expo+1)->chn; - } - else { - memmove(expo+1, expo, (MAX_EXPOS-(source+1))*sizeof(ExpoData)); + expo->chn = (expo + 1)->chn; + } else { + memmove(expo + 1, expo, trailingExpos * sizeof(ExpoData)); memcpy(expo, &sourceExpo, sizeof(ExpoData)); expo->chn = input; } diff --git a/radio/src/gui/colorlcd/model_mixes.cpp b/radio/src/gui/colorlcd/model_mixes.cpp index 36bdd1000..1e67b5656 100644 --- a/radio/src/gui/colorlcd/model_mixes.cpp +++ b/radio/src/gui/colorlcd/model_mixes.cpp @@ -531,24 +531,22 @@ void copyMix(uint8_t source, uint8_t dest, int8_t ch) pauseMixerCalculations(); MixData sourceMix; memcpy(&sourceMix, mixAddress(source), sizeof(MixData)); - MixData * mix = mixAddress(dest); - if(ch == PASTE_AFTER) { - memmove(mix+2, mix+1, (MAX_MIXERS-(source+1))*sizeof(MixData)); - memcpy(mix+1, &sourceMix, sizeof(MixData)); - (mix+1)->destCh = (mix)->destCh; - } - else if(ch == PASTE_BEFORE) { - memmove(mix+1, mix, (MAX_MIXERS-(source+1))*sizeof(MixData)); + MixData *mix = mixAddress(dest); + size_t trailingMixes = MAX_MIXERS - (dest + 1); + if (ch == PASTE_AFTER) { + trailingMixes--; + memmove(mix + 2, mix + 1, trailingMixes * sizeof(MixData)); + memcpy(mix + 1, &sourceMix, sizeof(MixData)); + (mix + 1)->destCh = (mix)->destCh; + } else if (ch == PASTE_BEFORE) { + memmove(mix + 1, mix, trailingMixes * sizeof(MixData)); memcpy(mix, &sourceMix, sizeof(MixData)); - mix->destCh = (mix+1)->destCh; - } - else { - memmove(mix+1, mix, (MAX_MIXERS-(source+1))*sizeof(MixData)); + mix->destCh = (mix + 1)->destCh; + } else { + memmove(mix + 1, mix, trailingMixes * sizeof(MixData)); memcpy(mix, &sourceMix, sizeof(MixData)); - mix->destCh = ch; + mix->destCh = ch; } - - //memmove(mix + 1, mix, (MAX_MIXERS - (dest + 1)) * sizeof(MixData)); resumeMixerCalculations(); storageDirty(EE_MODEL); }