From 35d64ef2c3a319c5f38eaeb786425fba236e031c Mon Sep 17 00:00:00 2001 From: Stone_Red <56473591+Stone-Red-Code@users.noreply.github.com> Date: Fri, 29 Nov 2024 17:52:43 +0100 Subject: [PATCH] Don't unnecessarily redraw time plugin bitmap every second --- src/DesktopMagic/BuiltInPlugins/TimePlugin.cs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/DesktopMagic/BuiltInPlugins/TimePlugin.cs b/src/DesktopMagic/BuiltInPlugins/TimePlugin.cs index 9365dcd..f56d699 100644 --- a/src/DesktopMagic/BuiltInPlugins/TimePlugin.cs +++ b/src/DesktopMagic/BuiltInPlugins/TimePlugin.cs @@ -9,15 +9,29 @@ namespace DesktopMagic.BuiltInPlugins; internal class TimePlugin : Plugin { - [Setting("display-seconds", "Display Seconds")] + [Setting("display-seconds", "Show Seconds")] private readonly CheckBox displaySecondsCheckBox = new CheckBox(true); + private string oldTime = string.Empty; + private Color oldColor = Color.White; + private string oldFont = string.Empty; + private bool oldDisplaySecondsCheckBoxValue; public override int UpdateInterval => 1000; - public override Bitmap Main() + public override Bitmap? Main() { string time = displaySecondsCheckBox.Value ? DateTime.Now.ToLongTimeString() : DateTime.Now.ToShortTimeString(); + if (oldTime == time && oldColor == Application.Theme.PrimaryColor && oldFont == Application.Theme.Font && oldDisplaySecondsCheckBoxValue == displaySecondsCheckBox.Value) + { + return null; + } + + oldTime = time; + oldColor = Application.Theme.PrimaryColor; + oldFont = Application.Theme.Font; + oldDisplaySecondsCheckBoxValue = displaySecondsCheckBox.Value; + Font font = new Font(Application.Theme.Font, 200); Bitmap bmp = new Bitmap(1, 1);