efl

Форк
0
/
efreet_icon_cache_dump.c 
122 строки · 2.7 Кб
1
#ifdef HAVE_CONFIG_H
2
# include <config.h>
3
#endif
4

5
#include <stdio.h>
6
#include <limits.h>
7
#include <sys/stat.h>
8
#include <fcntl.h>
9
#include <unistd.h>
10
#include <errno.h>
11

12
#include <Eina.h>
13
#include <Eet.h>
14
#include <Ecore.h>
15
#include <Ecore_File.h>
16

17
#define EFREET_MODULE_LOG_DOM /* no logging in this file */
18

19
#include <Efreet.h>
20
#include "efreet_private.h"
21
#include "efreet_cache_private.h"
22

23
int verbose = 0;
24

25
static void
26
dump(Efreet_Icon_Theme *theme)
27
{
28
    Eet_File *ef;
29
    unsigned int count = 0;
30
    double start, avg;
31
    char **keys;
32
    int num, i;
33

34
    start = ecore_time_get();
35
    ef = eet_open(efreet_icon_cache_file(theme->name.internal), EET_FILE_MODE_READ);
36
    printf("open: %s %f\n", theme->name.internal, ecore_time_get() - start);
37

38
    start = ecore_time_get();
39
    keys = eet_list(ef, "*", &num);
40
    printf("list: %s %f\n", theme->name.internal, ecore_time_get() - start);
41
    if (!keys) return;
42

43
    start = ecore_time_get();
44
    for (i = 0; i < num; i++)
45
    {
46
        Efreet_Cache_Icon *icon;
47
        unsigned int j;
48

49
        icon = eet_data_read(ef, efreet_icon_edd(), keys[i]);
50
        if (!icon) continue;
51

52
        for (j = 0; j < icon->icons_count; ++j)
53
            count += icon->icons[j]->paths_count;
54
    }
55
    free(keys);
56

57
    start = ecore_time_get() - start;
58
    avg = 0;
59
    if (count > 0)
60
        avg = start / count;
61
    printf("read: %s - %u paths (time: %f) (avg %f)\n", theme->name.internal, count, start, avg);
62
    eet_close(ef);
63
    eet_clearcache();
64
}
65

66
int
67
main(int argc, char **argv)
68
{
69
    Eet_File *theme_ef;
70
    Eina_List *l = NULL;
71
    Efreet_Icon_Theme *theme;
72
    int i;
73

74
    efreet_cache_update = 0;
75

76
    if (!efreet_init()) return -1;
77

78
    theme_ef = eet_open(efreet_icon_theme_cache_file(), EET_FILE_MODE_READ);
79
    if (!theme_ef) return -1;
80

81
    if (argc > 1)
82
    {
83
        for (i = 1; i < argc; i++)
84
        {
85
            theme = eet_data_read(theme_ef, efreet_icon_theme_edd(EINA_FALSE), argv[i]);
86
            if (theme) l = eina_list_append(l, theme);
87
        }
88
    }
89
    else
90
    {
91
        char **keys;
92
        int num;
93

94
        keys = eet_list(theme_ef, "*", &num);
95
        if (keys)
96
        {
97
            for (i = 0; i < num; i++)
98
            {
99
                theme = eet_data_read(theme_ef, efreet_icon_theme_edd(EINA_FALSE), keys[i]);
100
                if (theme) l = eina_list_append(l, theme);
101
            }
102
            free(keys);
103
        }
104
    }
105

106
    EINA_LIST_FREE(l, theme)
107
    {
108
        void *data;
109

110
        dump(theme);
111

112
        /* free theme */
113
        eina_list_free(theme->paths);
114
        eina_list_free(theme->inherits);
115
        EINA_LIST_FREE(theme->directories, data)
116
            free(data);
117
        free(theme);
118
    }
119

120
    efreet_shutdown();
121
    return 0;
122
}
123

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.