From ac0f72b1b2865c34ea6f68e964237dcd3b9ec8a1 Mon Sep 17 00:00:00 2001 From: B0ney <40839054+B0ney@users.noreply.github.com> Date: Mon, 11 Mar 2024 15:16:02 +0000 Subject: [PATCH] use `Cell` instead of `RefCell` for storing wave colour --- src/widget/waveform_view.rs | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/src/widget/waveform_view.rs b/src/widget/waveform_view.rs index 73e53a83..3ae275f5 100644 --- a/src/widget/waveform_view.rs +++ b/src/widget/waveform_view.rs @@ -12,7 +12,7 @@ use iced::mouse::Button; use iced::widget::canvas::{self, Renderer as _}; use iced::{keyboard, Border, Renderer}; use iced::{Color, Element, Length, Point, Rectangle, Size, Vector}; -use std::cell::RefCell; +use std::cell::Cell; pub use marker::Marker; pub use style::{Appearance, StyleSheet}; @@ -204,7 +204,7 @@ struct State { wave_id: u64, canvas_cache: canvas::Cache, waveform: WaveGeometry, - wave_color: RefCell, + wave_color: Cell, } impl State { @@ -261,16 +261,11 @@ impl State { // Clear canvas cache if wave colors differ fn update_wave_color(&self, appearance: &Appearance) { - use std::ops::DerefMut; - let new_color = appearance.wave_color; - - match self.wave_color.borrow_mut().deref_mut() { - old_color if new_color.ne(old_color) => { - *old_color = new_color; - self.canvas_cache.clear(); - } - _ => {} + + if new_color != self.wave_color.get() { + self.wave_color.set(new_color); + self.canvas_cache.clear(); } } }