diff options
Diffstat (limited to 'apps/gui/skin_engine/skin_engine.c')
-rw-r--r-- | apps/gui/skin_engine/skin_engine.c | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/apps/gui/skin_engine/skin_engine.c b/apps/gui/skin_engine/skin_engine.c index 8ba76e5739..a3ad85fd6e 100644 --- a/apps/gui/skin_engine/skin_engine.c +++ b/apps/gui/skin_engine/skin_engine.c | |||
@@ -34,9 +34,11 @@ | |||
34 | #if CONFIG_TUNER | 34 | #if CONFIG_TUNER |
35 | #include "radio.h" | 35 | #include "radio.h" |
36 | #endif | 36 | #endif |
37 | #include "gui/list.h" | ||
37 | #include "skin_engine.h" | 38 | #include "skin_engine.h" |
38 | #include "skin_buffer.h" | 39 | #include "skin_buffer.h" |
39 | #include "statusbar-skinned.h" | 40 | #include "statusbar-skinned.h" |
41 | #include "wps_internals.h" | ||
40 | 42 | ||
41 | #define FAILSAFENAME "rockbox_failsafe" | 43 | #define FAILSAFENAME "rockbox_failsafe" |
42 | 44 | ||
@@ -334,3 +336,56 @@ void skin_request_full_update(enum skinnable_screens skin) | |||
334 | FOR_NB_SCREENS(i) | 336 | FOR_NB_SCREENS(i) |
335 | skins[skin][i].needs_full_update = true; | 337 | skins[skin][i].needs_full_update = true; |
336 | } | 338 | } |
339 | |||
340 | bool dbg_skin_engine(void) | ||
341 | { | ||
342 | struct simplelist_info info; | ||
343 | int i, total = 0; | ||
344 | #if defined(HAVE_BACKDROP_IMAGE) | ||
345 | int ref_count; | ||
346 | char *path; | ||
347 | size_t bytes; | ||
348 | int path_prefix_len = strlen(ROCKBOX_DIR "/wps/"); | ||
349 | #endif | ||
350 | simplelist_info_init(&info, "Skin engine usage", 0, NULL); | ||
351 | simplelist_set_line_count(0); | ||
352 | FOR_NB_SCREENS(j) { | ||
353 | #if NB_SCREENS > 1 | ||
354 | simplelist_addline("%s display:", | ||
355 | j == 0 ? "Main" : "Remote"); | ||
356 | #endif | ||
357 | for (i = 0; i < skin_get_num_skins(); i++) { | ||
358 | struct skin_stats *stats = skin_get_stats(i, j); | ||
359 | if (stats->buflib_handles) | ||
360 | { | ||
361 | simplelist_addline("Skin ID: %d, %d allocations", | ||
362 | i, stats->buflib_handles); | ||
363 | simplelist_addline("\tskin: %d bytes", | ||
364 | stats->tree_size); | ||
365 | simplelist_addline("\tImages: %d bytes", | ||
366 | stats->images_size); | ||
367 | simplelist_addline("\tTotal: %d bytes", | ||
368 | stats->tree_size + stats->images_size); | ||
369 | total += stats->tree_size + stats->images_size; | ||
370 | } | ||
371 | } | ||
372 | } | ||
373 | simplelist_addline("Skin total usage: %d bytes", total); | ||
374 | #if defined(HAVE_BACKDROP_IMAGE) | ||
375 | simplelist_addline("Backdrop Images:"); | ||
376 | i = 0; | ||
377 | while (skin_backdrop_get_debug(i++, &path, &ref_count, &bytes)) { | ||
378 | if (ref_count > 0) { | ||
379 | |||
380 | if (!strncasecmp(path, ROCKBOX_DIR "/wps/", path_prefix_len)) | ||
381 | path += path_prefix_len; | ||
382 | simplelist_addline("%s", path); | ||
383 | simplelist_addline("\tref_count: %d", ref_count); | ||
384 | simplelist_addline("\tsize: %d", bytes); | ||
385 | total += bytes; | ||
386 | } | ||
387 | } | ||
388 | simplelist_addline("Total usage: %d bytes", total); | ||
389 | #endif | ||
390 | return simplelist_show_list(&info); | ||
391 | } | ||