summaryrefslogtreecommitdiff
path: root/apps/plugins/clock/clock_settings.c
diff options
context:
space:
mode:
authorKevin Ferrare <kevin@rockbox.org>2007-08-04 08:32:49 +0000
committerKevin Ferrare <kevin@rockbox.org>2007-08-04 08:32:49 +0000
commit721c897ad9b4377ebb3ed3e7bb9bdd5f4558d17e (patch)
treee09fb2be60212097371d3e13c7c12ec149cac655 /apps/plugins/clock/clock_settings.c
parentdb6af4eeac61f7a4c999049fc49d0b51ac4b79ca (diff)
downloadrockbox-721c897ad9b4377ebb3ed3e7bb9bdd5f4558d17e.zip
rockbox-721c897ad9b4377ebb3ed3e7bb9bdd5f4558d17e.tar.gz
rockbox-721c897ad9b4377ebb3ed3e7bb9bdd5f4558d17e.tar.bz2
rockbox-721c897ad9b4377ebb3ed3e7bb9bdd5f4558d17e.tar.xz
clock plugin : check wether it's necessary to save the settings, correct format for japanese dates on analog screen, code a little more clear
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14178 a1c6a512-1295-4272-9138-f99709370657
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 9bd7c90..b59a265 100644
--- a/apps/plugins/clock/clock_settings.c
+++ b/apps/plugins/clock/clock_settings.c
@@ -45,6 +45,14 @@ enum settings_file_status{
struct clock_settings clock_settings;
+/* The settings as they exist on the hard disk, so that
+ * we can know at saving time if changes have been made */
+struct clock_settings hdd_clock_settings;
+
+bool settings_needs_saving(struct clock_settings* settings){
+ return(rb->memcmp(settings, &hdd_clock_settings, sizeof(*settings)));
+}
+
void clock_settings_reset(struct clock_settings* settings){
settings->mode = ANALOG;
int i;
@@ -98,6 +106,7 @@ enum settings_file_status clock_settings_load(struct clock_settings* settings,
rb->read(fd, settings, sizeof(*settings));
rb->close(fd);
apply_backlight_setting(settings->general.backlight);
+ rb->memcpy(&hdd_clock_settings, settings, sizeof(*settings));
return(LOADED);
}
}
@@ -171,6 +180,9 @@ void load_settings(void){
void save_settings(void){
int i;
struct screen* display;
+ if(!settings_needs_saving(&clock_settings))
+ return;
+
FOR_NB_SCREENS(i){
display=rb->screens[i];
display->clear_display();