diff options
Diffstat (limited to 'apps/gui/skin_engine/skin_engine.c')
-rw-r--r-- | apps/gui/skin_engine/skin_engine.c | 17 |
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 | ||
84 | static void gui_skin_reset(struct gui_skin *skin) | 84 | static 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; |