summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/filetree.c2
-rw-r--r--apps/settings.c64
-rw-r--r--apps/settings.h6
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 */
732void 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
727void settings_apply(bool read_disk) 762void 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;
244void reset_setting(const struct settings_list *setting, void *var); 244void reset_setting(const struct settings_list *setting, void *var);
245void settings_reset(void); 245void settings_reset(void);
246void sound_settings_apply(void); 246void 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 */
251void settings_apply_skins(void);
252
247void settings_apply(bool read_disk); 253void settings_apply(bool read_disk);
248void settings_apply_pm_range(void); 254void settings_apply_pm_range(void);
249void settings_display(void); 255void settings_display(void);