diff options
| author | Kevin Ferrare <kevin@rockbox.org> | 2007-08-04 08:32:49 +0000 |
|---|---|---|
| committer | Kevin Ferrare <kevin@rockbox.org> | 2007-08-04 08:32:49 +0000 |
| commit | 721c897ad9b4377ebb3ed3e7bb9bdd5f4558d17e (patch) | |
| tree | e09fb2be60212097371d3e13c7c12ec149cac655 /apps/plugins/clock/clock_settings.c | |
| parent | db6af4eeac61f7a4c999049fc49d0b51ac4b79ca (diff) | |
| download | rockbox-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.c | 12 |
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(); |