summaryrefslogtreecommitdiff
path: root/apps/plugins/clock/clock_settings.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/clock/clock_settings.c')
-rw-r--r--apps/plugins/clock/clock_settings.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/apps/plugins/clock/clock_settings.c b/apps/plugins/clock/clock_settings.c
index 9bd7c90d3b..b59a265a3b 100644
--- a/apps/plugins/clock/clock_settings.c
+++ b/apps/plugins/clock/clock_settings.c
@@ -45,6 +45,14 @@ enum settings_file_status{
45 45
46struct clock_settings clock_settings; 46struct clock_settings clock_settings;
47 47
48/* The settings as they exist on the hard disk, so that
49 * we can know at saving time if changes have been made */
50struct clock_settings hdd_clock_settings;
51
52bool settings_needs_saving(struct clock_settings* settings){
53 return(rb->memcmp(settings, &hdd_clock_settings, sizeof(*settings)));
54}
55
48void clock_settings_reset(struct clock_settings* settings){ 56void clock_settings_reset(struct clock_settings* settings){
49 settings->mode = ANALOG; 57 settings->mode = ANALOG;
50 int i; 58 int i;
@@ -98,6 +106,7 @@ enum settings_file_status clock_settings_load(struct clock_settings* settings,
98 rb->read(fd, settings, sizeof(*settings)); 106 rb->read(fd, settings, sizeof(*settings));
99 rb->close(fd); 107 rb->close(fd);
100 apply_backlight_setting(settings->general.backlight); 108 apply_backlight_setting(settings->general.backlight);
109 rb->memcpy(&hdd_clock_settings, settings, sizeof(*settings));
101 return(LOADED); 110 return(LOADED);
102 } 111 }
103 } 112 }
@@ -171,6 +180,9 @@ void load_settings(void){
171void save_settings(void){ 180void save_settings(void){
172 int i; 181 int i;
173 struct screen* display; 182 struct screen* display;
183 if(!settings_needs_saving(&clock_settings))
184 return;
185
174 FOR_NB_SCREENS(i){ 186 FOR_NB_SCREENS(i){
175 display=rb->screens[i]; 187 display=rb->screens[i];
176 display->clear_display(); 188 display->clear_display();