summaryrefslogtreecommitdiff
path: root/apps/gui/skin_engine/skin_engine.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/gui/skin_engine/skin_engine.c')
-rw-r--r--apps/gui/skin_engine/skin_engine.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/apps/gui/skin_engine/skin_engine.c b/apps/gui/skin_engine/skin_engine.c
index 4c113e5c68..5253b88363 100644
--- a/apps/gui/skin_engine/skin_engine.c
+++ b/apps/gui/skin_engine/skin_engine.c
@@ -83,10 +83,23 @@ struct skin_stats *skin_get_stats(int number, int screen)
83 83
84static void gui_skin_reset(struct gui_skin *skin) 84static void gui_skin_reset(struct gui_skin *skin)
85{ 85{
86 struct wps_data *data;
87 struct skin_albumart *aa_save;
86 skin->failsafe_loaded = false; 88 skin->failsafe_loaded = false;
87 skin->needs_full_update = true; 89 skin->needs_full_update = true;
88 skin->gui_wps.data = &skin->data; 90 skin->gui_wps.data = data = &skin->data;
89 memset(skin->gui_wps.data, 0, sizeof(struct wps_data)); 91 /* copy to temp var to protect against memset */
92 if ((aa_save = SKINOFFSETTOPTR(get_skin_buffer(data), data->albumart)))
93 {
94 short old_width, old_height;
95 old_width = aa_save->width;
96 old_height = aa_save->height;
97 memset(data, 0, sizeof(struct wps_data));
98 data->last_albumart_width = old_width;
99 data->last_albumart_height = old_height;
100 }
101 else
102 memset(data, 0, sizeof(struct wps_data));
90 skin->data.wps_loaded = false; 103 skin->data.wps_loaded = false;
91 skin->data.buflib_handle = -1; 104 skin->data.buflib_handle = -1;
92 skin->data.tree = -1; 105 skin->data.tree = -1;