From 4198973c29b4c91c2a40c5c637d00881ceb4511e Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Wed, 5 Apr 2023 18:16:23 +0200 Subject: Ensure clipboard is cleared at bank switching --- src/sequencer.c | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) (limited to 'src/sequencer.c') diff --git a/src/sequencer.c b/src/sequencer.c index 7a7d528..ff5847d 100644 --- a/src/sequencer.c +++ b/src/sequencer.c @@ -469,6 +469,26 @@ static Pattern patterns[8] = { {default_ch1, default_ch2, default_ch3, default_ch4, default_bpm, 0}, }; +typedef enum ClipboardType { + CLIP_EMPTY, + CLIP_TRIG, + CLIP_PARAM_CH1, + CLIP_PARAM_CH2, + CLIP_PARAM_CH3, + CLIP_PARAM_CH4, + CLIP_PATTERN, + CLIP_CHANNEL, +} ClipboardType; + +typedef struct Clipboard { + ClipboardType type; + u8 src_pat; + u8 src_chan; + u8 src_trig; +} Clipboard; + +static Clipboard clipboard = {CLIP_EMPTY, 0, 0, 0}; + void save_bank(int i) { sram_write(&patterns, sizeof(Metadata) + i * sizeof(patterns), sizeof(patterns)); @@ -2002,6 +2022,7 @@ pause_playing(void) { void select_bank(int i) { stop_playing(); + clipboard.type = CLIP_EMPTY; save_bank(current_bank); metadata.current_pattern = current_pattern; metadata.current_bank = i; @@ -2602,26 +2623,6 @@ handle_trigger_selection(void) { } } -typedef enum ClipboardType { - CLIP_EMPTY, - CLIP_TRIG, - CLIP_PARAM_CH1, - CLIP_PARAM_CH2, - CLIP_PARAM_CH3, - CLIP_PARAM_CH4, - CLIP_PATTERN, - CLIP_CHANNEL, -} ClipboardType; - -typedef struct Clipboard { - ClipboardType type; - u8 src_pat; - u8 src_chan; - u8 src_trig; -} Clipboard; - -static Clipboard clipboard = {CLIP_EMPTY, 0, 0, 0}; - void clipboard_paste(void) { Pattern *pat_dst = &patterns[pattern_selection_loc]; -- cgit v1.2.1