diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/filetree.c | 2 | ||||
-rw-r--r-- | apps/settings.c | 64 | ||||
-rw-r--r-- | apps/settings.h | 6 |
3 files changed, 47 insertions, 25 deletions
diff --git a/apps/filetree.c b/apps/filetree.c index 6a7da4067e..2d05bd54cf 100644 --- a/apps/filetree.c +++ b/apps/filetree.c | |||
@@ -487,6 +487,7 @@ int ft_enter(struct tree_context* c) | |||
487 | wps_data_load(SCREEN_MAIN, buf, true); | 487 | wps_data_load(SCREEN_MAIN, buf, true); |
488 | set_file(buf, (char *)global_settings.wps_file, | 488 | set_file(buf, (char *)global_settings.wps_file, |
489 | MAX_FILENAME); | 489 | MAX_FILENAME); |
490 | settings_apply_skins(); | ||
490 | break; | 491 | break; |
491 | 492 | ||
492 | #if defined(HAVE_REMOTE_LCD) && (NB_SCREENS > 1) | 493 | #if defined(HAVE_REMOTE_LCD) && (NB_SCREENS > 1) |
@@ -499,6 +500,7 @@ int ft_enter(struct tree_context* c) | |||
499 | wps_data_load(SCREEN_REMOTE, buf, true); | 500 | wps_data_load(SCREEN_REMOTE, buf, true); |
500 | set_file(buf, (char *)global_settings.rwps_file, | 501 | set_file(buf, (char *)global_settings.rwps_file, |
501 | MAX_FILENAME); | 502 | MAX_FILENAME); |
503 | settings_apply_skins(); | ||
502 | break; | 504 | break; |
503 | #endif | 505 | #endif |
504 | 506 | ||
diff --git a/apps/settings.c b/apps/settings.c index 72e5a012e4..1b0abfbf46 100644 --- a/apps/settings.c +++ b/apps/settings.c | |||
@@ -724,6 +724,41 @@ void sound_settings_apply(void) | |||
724 | #endif | 724 | #endif |
725 | } | 725 | } |
726 | 726 | ||
727 | |||
728 | |||
729 | /* call this after loading a .wps/.rwps pr other skin files, so that the | ||
730 | * skin buffer is reset properly | ||
731 | */ | ||
732 | void settings_apply_skins(void) | ||
733 | { | ||
734 | char buf[MAX_PATH]; | ||
735 | /* re-initialize the skin buffer before we start reloading skins */ | ||
736 | skin_buffer_init(); | ||
737 | if ( global_settings.wps_file[0] && | ||
738 | global_settings.wps_file[0] != 0xff ) { | ||
739 | snprintf(buf, sizeof buf, WPS_DIR "/%s.wps", | ||
740 | global_settings.wps_file); | ||
741 | wps_data_load(SCREEN_MAIN, buf, true); | ||
742 | } | ||
743 | else | ||
744 | { | ||
745 | wps_data_init(SCREEN_MAIN); | ||
746 | wps_data_load(SCREEN_MAIN, NULL, true); | ||
747 | } | ||
748 | #if defined(HAVE_REMOTE_LCD) && (NB_SCREENS > 1) | ||
749 | if ( global_settings.rwps_file[0]) { | ||
750 | snprintf(buf, sizeof buf, WPS_DIR "/%s.rwps", | ||
751 | global_settings.rwps_file); | ||
752 | wps_data_load(SCREEN_REMOTE, buf, true); | ||
753 | } | ||
754 | else | ||
755 | { | ||
756 | wps_data_init(SCREEN_REMOTE); | ||
757 | wps_data_load(SCREEN_REMOTE, NULL, true); | ||
758 | } | ||
759 | #endif | ||
760 | } | ||
761 | |||
727 | void settings_apply(bool read_disk) | 762 | void settings_apply(bool read_disk) |
728 | { | 763 | { |
729 | char buf[64]; | 764 | char buf[64]; |
@@ -819,8 +854,6 @@ void settings_apply(bool read_disk) | |||
819 | 854 | ||
820 | if (read_disk) | 855 | if (read_disk) |
821 | { | 856 | { |
822 | /* re-initialize the skin buffer before we start reloading skins */ | ||
823 | skin_buffer_init(); | ||
824 | 857 | ||
825 | #ifdef HAVE_LCD_BITMAP | 858 | #ifdef HAVE_LCD_BITMAP |
826 | /* fonts need to be loaded before the WPS */ | 859 | /* fonts need to be loaded before the WPS */ |
@@ -842,17 +875,6 @@ void settings_apply(bool read_disk) | |||
842 | load_kbd(NULL); | 875 | load_kbd(NULL); |
843 | #endif | 876 | #endif |
844 | 877 | ||
845 | if ( global_settings.wps_file[0] && | ||
846 | global_settings.wps_file[0] != 0xff ) { | ||
847 | snprintf(buf, sizeof buf, WPS_DIR "/%s.wps", | ||
848 | global_settings.wps_file); | ||
849 | wps_data_load(SCREEN_MAIN, buf, true); | ||
850 | } | ||
851 | else | ||
852 | { | ||
853 | wps_data_init(SCREEN_MAIN); | ||
854 | wps_data_load(SCREEN_MAIN, NULL, true); | ||
855 | } | ||
856 | 878 | ||
857 | #if LCD_DEPTH > 1 | 879 | #if LCD_DEPTH > 1 |
858 | if ( global_settings.backdrop_file[0] && | 880 | if ( global_settings.backdrop_file[0] && |
@@ -868,24 +890,16 @@ void settings_apply(bool read_disk) | |||
868 | FOR_NB_SCREENS(screen) | 890 | FOR_NB_SCREENS(screen) |
869 | screens[screen].backdrop_show(BACKDROP_MAIN); | 891 | screens[screen].backdrop_show(BACKDROP_MAIN); |
870 | 892 | ||
871 | #if defined(HAVE_REMOTE_LCD) && (NB_SCREENS > 1) | ||
872 | if ( global_settings.rwps_file[0]) { | ||
873 | snprintf(buf, sizeof buf, WPS_DIR "/%s.rwps", | ||
874 | global_settings.rwps_file); | ||
875 | wps_data_load(SCREEN_REMOTE, buf, true); | ||
876 | } | ||
877 | else | ||
878 | { | ||
879 | wps_data_init(SCREEN_REMOTE); | ||
880 | wps_data_load(SCREEN_REMOTE, NULL, true); | ||
881 | } | ||
882 | #endif | ||
883 | if ( global_settings.lang_file[0]) { | 893 | if ( global_settings.lang_file[0]) { |
884 | snprintf(buf, sizeof buf, LANG_DIR "/%s.lng", | 894 | snprintf(buf, sizeof buf, LANG_DIR "/%s.lng", |
885 | global_settings.lang_file); | 895 | global_settings.lang_file); |
886 | lang_load(buf); | 896 | lang_load(buf); |
887 | talk_init(); /* use voice of same language */ | 897 | talk_init(); /* use voice of same language */ |
888 | } | 898 | } |
899 | |||
900 | /* reload wpses */ | ||
901 | settings_apply_skins(); | ||
902 | |||
889 | /* load the icon set */ | 903 | /* load the icon set */ |
890 | icons_init(); | 904 | icons_init(); |
891 | 905 | ||
diff --git a/apps/settings.h b/apps/settings.h index 2cf026b083..becf164a8f 100644 --- a/apps/settings.h +++ b/apps/settings.h | |||
@@ -244,6 +244,12 @@ struct settings_list; | |||
244 | void reset_setting(const struct settings_list *setting, void *var); | 244 | void reset_setting(const struct settings_list *setting, void *var); |
245 | void settings_reset(void); | 245 | void settings_reset(void); |
246 | void sound_settings_apply(void); | 246 | void sound_settings_apply(void); |
247 | |||
248 | /* call this after loading a .wps/.rwps pr other skin files, so that the | ||
249 | * skin buffer is reset properly | ||
250 | */ | ||
251 | void settings_apply_skins(void); | ||
252 | |||
247 | void settings_apply(bool read_disk); | 253 | void settings_apply(bool read_disk); |
248 | void settings_apply_pm_range(void); | 254 | void settings_apply_pm_range(void); |
249 | void settings_display(void); | 255 | void settings_display(void); |