]> git.seodisparate.com - mpd_info_screen/commitdiff
WIP only update display if dirty_flag is set
authorStephen Seo <seo.disparate@gmail.com>
Wed, 15 Dec 2021 05:36:56 +0000 (14:36 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Wed, 15 Dec 2021 05:36:56 +0000 (14:36 +0900)
src/display.rs

index be9aa4762f4c7cccdc61cbca3363e73229096dbb..d2b890e421280bc2f7f0fb0980f8f5b6b24b5010 100644 (file)
@@ -88,11 +88,19 @@ impl EventHandler for MPDDisplay {
 
         if self.is_valid && self.is_initialized && self.poll_instant.elapsed() > POLL_TIME {
             self.poll_instant = Instant::now();
-            self.shared = MPDHandler::get_current_song_info(self.mpd_handler.clone().unwrap())
-                .map_or(None, |f| Some(f));
-            if let Some(shared) = &self.shared {
-                if self.notice_text.contents() != shared.error_text {
-                    self.notice_text = Text::new(TextFragment::new(shared.error_text.clone()));
+            if !self.dirty_flag.is_none()
+                && self
+                    .dirty_flag
+                    .as_ref()
+                    .unwrap()
+                    .swap(false, std::sync::atomic::Ordering::Relaxed)
+            {
+                self.shared = MPDHandler::get_current_song_info(self.mpd_handler.clone().unwrap())
+                    .map_or(None, |f| Some(f));
+                if let Some(shared) = &self.shared {
+                    if self.notice_text.contents() != shared.error_text {
+                        self.notice_text = Text::new(TextFragment::new(shared.error_text.clone()));
+                    }
                 }
             }
         }