Elm caching settings exposed, part II.

Edje caching primitives exposed in Elm, too, now, and stored at
config. Also, there's now a poller running for all Elm apps doing
cache flushing. All these things have configurable values, of course.

Testing config version bumping too, it should work.



SVN revision: 54851
This commit is contained in:
Gustavo Lima Chaves 2010-11-23 06:10:58 +00:00
parent a6f53d0fb9
commit bbeb7cfcc5
8 changed files with 504 additions and 18 deletions

View File

@ -15,8 +15,11 @@ group "Elm_Config" struct {
value "bgpixmap" int: 0;
value "compositing" int: 1;
value "font_hinting" int: 2;
value "cache_flush_poll_interval" int: 512;
value "image_cache" int: 4096;
value "font_cache" int: 512;
value "edje_cache" int: 32;
value "edje_collection_cache" int: 64;
value "finger_size" int: 40;
value "fps" double: 60.0;
value "theme" string: "default";

View File

@ -15,8 +15,11 @@ group "Elm_Config" struct {
value "bgpixmap" int: 0;
value "compositing" int: 1;
value "font_hinting" int: 2;
value "cache_flush_poll_interval" int: 512;
value "image_cache" int: 4096;
value "font_cache" int: 512;
value "edje_cache" int: 32;
value "edje_collection_cache" int: 64;
value "finger_size" int: 40;
value "fps" double: 60.0;
value "theme" string: "default";

View File

@ -15,8 +15,11 @@ group "Elm_Config" struct {
value "bgpixmap" int: 0;
value "compositing" int: 1;
value "font_hinting" int: 2;
value "cache_flush_poll_interval" int: 512;
value "image_cache" int: 4096;
value "font_cache" int: 512;
value "edje_cache" int: 32;
value "edje_collection_cache" int: 64;
value "finger_size" int: 5;
value "fps" double: 60.0;
value "theme" string: "default-desktop";

View File

@ -118,6 +118,26 @@ config_exit(void *data __UNUSED__,
elm_exit(); /* exit the program's main loop that runs in elm_run() */
}
static void
cf_round(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
double val = elm_slider_value_get(obj);
double v;
v = ((double)((int)(val * 5.0))) / 5.0;
if (v != val) elm_slider_value_set(obj, v);
}
static void
cf_change(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
double scale = elm_scale_get();
double val = elm_slider_value_get(obj);
if (scale == val) return;
elm_cache_flush_interval_all_set(val);
}
static void
fc_round(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
@ -198,6 +218,46 @@ fs_change(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
elm_finger_size_all_set(val);
}
static void
efc_round(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
double val = elm_slider_value_get(obj);
double v;
v = ((double)((int)(val * 5.0))) / 5.0;
if (v != val) elm_slider_value_set(obj, v);
}
static void
efc_change(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
double scale = elm_scale_get();
double val = elm_slider_value_get(obj);
if (scale == val) return;
elm_edje_file_cache_all_set(val);
}
static void
ecc_round(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
double val = elm_slider_value_get(obj);
double v;
v = ((double)((int)(val * 5.0))) / 5.0;
if (v != val) elm_slider_value_set(obj, v);
}
static void
ecc_change(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
double scale = elm_scale_get();
double val = elm_slider_value_get(obj);
if (scale == val) return;
elm_edje_collection_cache_all_set(val);
}
static void
_status_basic(Evas_Object *win, Evas_Object *bx0)
{
@ -493,6 +553,7 @@ _font_overlay_change(void *data __UNUSED__,
static void
_profile_change_do(Evas_Object *win, const char *profile)
{
int flush_interval, font_c, image_c, edje_file_c, edje_col_c;
const char *curr_theme, *curr_engine;
const Eina_List *l_items, *l;
Elm_List_Item *it;
@ -504,6 +565,11 @@ _profile_change_do(Evas_Object *win, const char *profile)
scale = elm_scale_get();
fs = elm_finger_size_get();
flush_interval = elm_cache_flush_interval_get();
font_c = elm_font_cache_get();
image_c = elm_image_cache_get();
edje_file_c = elm_edje_file_cache_get();
edje_col_c = elm_edje_collection_cache_get();
/* gotta update root windows' atoms */
elm_scale_all_set(scale);
@ -511,6 +577,24 @@ _profile_change_do(Evas_Object *win, const char *profile)
elm_finger_size_all_set(fs);
elm_slider_value_set(evas_object_data_get(win, "fs_slider"), fs);
elm_cache_flush_interval_all_set(flush_interval);
elm_slider_value_set(evas_object_data_get(win,
"cache_flush_interval_slider"),
flush_interval);
elm_font_cache_all_set(font_c);
elm_slider_value_set(evas_object_data_get(win, "font_cache_slider"),
font_c / 1024.0);
elm_image_cache_all_set(image_c);
elm_slider_value_set(evas_object_data_get(win, "image_cache_slider"),
image_c / 1024.0);
elm_edje_file_cache_all_set(edje_file_c);
elm_slider_value_set(evas_object_data_get(win, "edje_file_cache_slider"),
edje_file_c);
elm_edje_collection_cache_all_set(edje_col_c);
elm_slider_value_set(evas_object_data_get(win,
"edje_collection_cache_slider"),
edje_col_c);
curr_theme = _elm_theme_current_get(elm_theme_get(NULL));
elm_theme_all_set(curr_theme);
@ -2046,6 +2130,42 @@ _status_config_caches(Evas_Object *win, Evas_Object *pager)
elm_box_pack_end(bx, pd);
evas_object_show(pd);
lb = elm_label_add(win);
evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, 0.5);
elm_label_label_set(lb,"<hilight>Cache Flush Interval</>");
elm_frame_content_set(pd, lb);
evas_object_show(lb);
sl = elm_slider_add(win);
evas_object_data_set(win, "cache_flush_interval_slider", sl);
evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);
elm_slider_span_size_set(sl, 120);
elm_slider_unit_format_set(sl, "%1.0f ticks");
elm_slider_indicator_format_set(sl, "%1.0f");
elm_slider_min_max_set(sl, 8.0, 4096.0);
elm_slider_value_set(sl, elm_cache_flush_interval_get());
elm_box_pack_end(bx, sl);
evas_object_show(sl);
evas_object_smart_callback_add(sl, "changed", cf_round, NULL);
evas_object_smart_callback_add(sl, "delay,changed", cf_change, NULL);
sp = elm_separator_add(win);
elm_separator_horizontal_set(sp, 1);
evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);
elm_box_pack_end(bx, sp);
evas_object_show(sp);
pd = elm_frame_add(win);
evas_object_size_hint_weight_set(pd, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(pd, EVAS_HINT_FILL, 0.5);
elm_object_style_set(pd, "pad_medium");
elm_box_pack_end(bx, pd);
evas_object_show(pd);
lb = elm_label_add(win);
evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, 0.5);
@ -2058,10 +2178,10 @@ _status_config_caches(Evas_Object *win, Evas_Object *pager)
evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);
elm_slider_span_size_set(sl, 120);
elm_slider_unit_format_set(sl, "%1.1f");
elm_slider_indicator_format_set(sl, "%1.1f MB");
elm_slider_unit_format_set(sl, "%1.1f MB");
elm_slider_indicator_format_set(sl, "%1.1f");
elm_slider_min_max_set(sl, 0.0, 4.0);
elm_slider_value_set(sl, (double)elm_font_cache_get() / 1024);
elm_slider_value_set(sl, (double)elm_font_cache_get() / 1024.0);
elm_box_pack_end(bx, sl);
evas_object_show(sl);
@ -2094,16 +2214,88 @@ _status_config_caches(Evas_Object *win, Evas_Object *pager)
evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);
elm_slider_span_size_set(sl, 120);
elm_slider_unit_format_set(sl, "%1.0f");
elm_slider_indicator_format_set(sl, "%1.0f MB");
elm_slider_unit_format_set(sl, "%1.0f MB");
elm_slider_indicator_format_set(sl, "%1.0f");
elm_slider_min_max_set(sl, 0, 32);
elm_slider_value_set(sl, (double)elm_image_cache_get() / 1024);
elm_slider_value_set(sl, (double)elm_image_cache_get() / 1024.0);
elm_box_pack_end(bx, sl);
evas_object_show(sl);
evas_object_smart_callback_add(sl, "changed", ic_round, NULL);
evas_object_smart_callback_add(sl, "delay,changed", ic_change, NULL);
sp = elm_separator_add(win);
elm_separator_horizontal_set(sp, 1);
evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);
elm_box_pack_end(bx, sp);
evas_object_show(sp);
pd = elm_frame_add(win);
evas_object_size_hint_weight_set(pd, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(pd, EVAS_HINT_FILL, 0.5);
elm_object_style_set(pd, "pad_medium");
elm_box_pack_end(bx, pd);
evas_object_show(pd);
lb = elm_label_add(win);
evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, 0.5);
elm_label_label_set(lb,"<hilight>Number of Edje Files to Cache</>");
elm_frame_content_set(pd, lb);
evas_object_show(lb);
sl = elm_slider_add(win);
evas_object_data_set(win, "edje_file_cache_slider", sl);
evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);
elm_slider_span_size_set(sl, 120);
elm_slider_unit_format_set(sl, "%1.0f files");
elm_slider_indicator_format_set(sl, "%1.0f");
elm_slider_min_max_set(sl, 0, 256);
elm_slider_value_set(sl, elm_edje_file_cache_get());
elm_box_pack_end(bx, sl);
evas_object_show(sl);
evas_object_smart_callback_add(sl, "changed", efc_round, NULL);
evas_object_smart_callback_add(sl, "delay,changed", efc_change, NULL);
sp = elm_separator_add(win);
elm_separator_horizontal_set(sp, 1);
evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);
elm_box_pack_end(bx, sp);
evas_object_show(sp);
pd = elm_frame_add(win);
evas_object_size_hint_weight_set(pd, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(pd, EVAS_HINT_FILL, 0.5);
elm_object_style_set(pd, "pad_medium");
elm_box_pack_end(bx, pd);
evas_object_show(pd);
lb = elm_label_add(win);
evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, 0.5);
elm_label_label_set(lb,"<hilight>Number of Edje Collections to Cache</>");
elm_frame_content_set(pd, lb);
evas_object_show(lb);
sl = elm_slider_add(win);
evas_object_data_set(win, "edje_collection_cache_slider", sl);
evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);
elm_slider_span_size_set(sl, 120);
elm_slider_unit_format_set(sl, "%1.0f collections");
elm_slider_indicator_format_set(sl, "%1.0f");
elm_slider_min_max_set(sl, 0, 512);
elm_slider_value_set(sl, elm_edje_collection_cache_get());
elm_box_pack_end(bx, sl);
evas_object_show(sl);
evas_object_smart_callback_add(sl, "changed", ecc_round, NULL);
evas_object_smart_callback_add(sl, "delay,changed", ecc_change, NULL);
evas_object_data_set(win, "caches", bx);
elm_pager_content_push(pager, bx);

View File

@ -251,12 +251,21 @@ extern "C" {
EAPI int elm_policy_get(unsigned int policy);
EAPI void elm_all_flush(void);
EAPI int elm_cache_flush_interval_get(void);
EAPI void elm_cache_flush_interval_set(int size);
EAPI void elm_cache_flush_interval_all_set(int size);
EAPI int elm_font_cache_get(void);
EAPI void elm_font_cache_set(int size);
EAPI void elm_font_cache_all_set(int size);
EAPI int elm_image_cache_get(void);
EAPI void elm_image_cache_set(int size);
EAPI void elm_image_cache_all_set(int size);
EAPI int elm_edje_file_cache_get(void);
EAPI void elm_edje_file_cache_set(int size);
EAPI void elm_edje_file_cache_all_set(int size);
EAPI int elm_edje_collection_cache_get(void);
EAPI void elm_edje_collection_cache_set(int size);
EAPI void elm_edje_collection_cache_all_set(int size);
EAPI void elm_object_scale_set(Evas_Object *obj, double scale);
EAPI double elm_object_scale_get(const Evas_Object *obj);

View File

@ -14,6 +14,8 @@ char *_elm_profile = NULL;
static Eet_Data_Descriptor *_config_edd = NULL;
static Eet_Data_Descriptor *_config_font_overlay_edd = NULL;
static Ecore_Poller *_elm_cache_flush_poller = NULL;
const char *_elm_engines[] = {
"software_x11",
"fb",
@ -62,7 +64,7 @@ static size_t _elm_user_dir_snprintf(char *dst, size_t size, const char *fmt, ..
#ifdef HAVE_ELEMENTARY_X
static Ecore_Event_Handler *_prop_change_handler = NULL;
static Ecore_X_Window _root_1st = 0;
#define ATOM_COUNT 8
#define ATOM_COUNT 11
static Ecore_X_Atom _atom[ATOM_COUNT];
static Ecore_X_Atom _atom_config = 0;
static const char *_atom_names[ATOM_COUNT] =
@ -72,8 +74,11 @@ static const char *_atom_names[ATOM_COUNT] =
"ENLIGHTENMENT_THEME",
"ENLIGHTENMENT_PROFILE",
"ENLIGHTENMENT_FONT_OVERLAY",
"ENLIGHTENMENT_CACHE_FLUSH_INTERVAL",
"ENLIGHTENMENT_FONT_CACHE",
"ENLIGHTENMENT_IMAGE_CACHE",
"ENLIGHTENMENT_EDJE_FILE_CACHE",
"ENLIGHTENMENT_EDJE_COLLECTION_CACHE",
"ENLIGHTENMENT_CONFIG"
};
#define ATOM_E_SCALE 0
@ -81,9 +86,12 @@ static const char *_atom_names[ATOM_COUNT] =
#define ATOM_E_THEME 2
#define ATOM_E_PROFILE 3
#define ATOM_E_FONT_OVERLAY 4
#define ATOM_E_FONT_CACHE 5
#define ATOM_E_IMAGE_CACHE 6
#define ATOM_E_CONFIG 7
#define ATOM_E_CACHE_FLUSH_INTERVAL 5
#define ATOM_E_FONT_CACHE 6
#define ATOM_E_IMAGE_CACHE 7
#define ATOM_E_EDJE_FILE_CACHE 8
#define ATOM_E_EDJE_COLLECTION_CACHE 9
#define ATOM_E_CONFIG 10
static Eina_Bool _prop_config_get(void);
static Eina_Bool _prop_change(void *data __UNUSED__, int ev_type __UNUSED__, void *ev);
@ -137,6 +145,7 @@ _prop_config_get(void)
_config_apply();
_elm_config_font_overlay_apply();
_elm_rescale();
_elm_recache();
return EINA_TRUE;
}
@ -159,7 +168,11 @@ _prop_change(void *data __UNUSED__, int ev_type __UNUSED__, void *ev)
pscale = _elm_config->scale;
if (val > 0) _elm_config->scale = (double)val / 1000.0;
if (pscale != _elm_config->scale) _elm_rescale();
if (pscale != _elm_config->scale)
{
_elm_rescale();
_elm_recache();
}
}
}
else if (event->atom == _atom[ATOM_E_FINGER_SIZE])
@ -174,7 +187,11 @@ _prop_change(void *data __UNUSED__, int ev_type __UNUSED__, void *ev)
pfinger_size = _elm_config->finger_size;
_elm_config->finger_size = val;
if (pfinger_size != _elm_config->finger_size) _elm_rescale();
if (pfinger_size != _elm_config->finger_size)
{
_elm_rescale();
_elm_recache();
}
}
}
else if (event->atom == _atom[ATOM_E_THEME])
@ -189,6 +206,7 @@ _prop_change(void *data __UNUSED__, int ev_type __UNUSED__, void *ev)
_elm_theme_parse(NULL, val);
free(val);
_elm_rescale();
_elm_recache();
}
}
else if (event->atom == _atom[ATOM_E_PROFILE])
@ -235,6 +253,23 @@ _prop_change(void *data __UNUSED__, int ev_type __UNUSED__, void *ev)
_elm_rescale();
}
}
if (event->atom == _atom[ATOM_E_CACHE_FLUSH_INTERVAL])
{
unsigned int val = 1000;
if (ecore_x_window_prop_card32_get(event->win,
event->atom,
&val, 1) > 0)
{
int cache_flush_interval;
cache_flush_interval = _elm_config->cache_flush_poll_interval;
_elm_config->cache_flush_poll_interval = val;
if (cache_flush_interval !=
_elm_config->cache_flush_poll_interval)
_elm_recache();
}
}
if (event->atom == _atom[ATOM_E_FONT_CACHE])
{
unsigned int val = 1000;
@ -267,6 +302,39 @@ _prop_change(void *data __UNUSED__, int ev_type __UNUSED__, void *ev)
_elm_recache();
}
}
if (event->atom == _atom[ATOM_E_EDJE_FILE_CACHE])
{
unsigned int val = 1000;
if (ecore_x_window_prop_card32_get(event->win,
event->atom,
&val, 1) > 0)
{
int edje_file_cache;
edje_file_cache = _elm_config->edje_cache;
_elm_config->edje_cache = val;
if (edje_file_cache != _elm_config->edje_cache)
_elm_recache();
}
}
if (event->atom == _atom[ATOM_E_EDJE_COLLECTION_CACHE])
{
unsigned int val = 1000;
if (ecore_x_window_prop_card32_get(event->win,
event->atom,
&val, 1) > 0)
{
int edje_collection_cache;
edje_collection_cache = _elm_config->edje_collection_cache;
_elm_config->edje_collection_cache = val;
if (edje_collection_cache !=
_elm_config->edje_collection_cache)
_elm_recache();
}
}
else if (((_atom_config > 0) && (event->atom == _atom_config)) ||
(event->atom == _atom[ATOM_E_CONFIG]))
{
@ -338,8 +406,11 @@ _desc_init(void)
/* EET_DATA_DESCRIPTOR_ADD_LIST(D, T, "font_dirs", font_dirs, sub_edd); */
ELM_CONFIG_LIST(D, T, font_overlays, _config_font_overlay_edd);
ELM_CONFIG_VAL(D, T, font_hinting, T_INT);
ELM_CONFIG_VAL(D, T, cache_flush_poll_interval, T_INT);
ELM_CONFIG_VAL(D, T, image_cache, T_INT);
ELM_CONFIG_VAL(D, T, font_cache, T_INT);
ELM_CONFIG_VAL(D, T, edje_cache, T_INT);
ELM_CONFIG_VAL(D, T, edje_collection_cache, T_INT);
ELM_CONFIG_VAL(D, T, finger_size, T_INT);
ELM_CONFIG_VAL(D, T, fps, T_DOUBLE);
ELM_CONFIG_VAL(D, T, theme, T_STRING);
@ -745,6 +816,16 @@ _config_sub_apply(void)
if (_elm_config->modules) _elm_module_parse(_elm_config->modules);
}
static Eina_Bool
_elm_cache_flush_cb(void *data __UNUSED__)
{
elm_all_flush();
return ECORE_CALLBACK_RENEW;
}
/* kind of abusing this call right now -- shared between all of those
* properties -- but they are not meant to be called that periodically
* anyway */
void
_elm_recache(void)
{
@ -756,8 +837,23 @@ _elm_recache(void)
EINA_LIST_FOREACH(_elm_win_list, l, win)
{
Evas *e = evas_object_evas_get(win);
evas_image_cache_set(e, _elm_config->image_cache * 1024);
evas_font_cache_set(e, _elm_config->font_cache * 1024);
evas_image_cache_set(e, _elm_config->image_cache);
evas_font_cache_set(e, _elm_config->font_cache);
}
edje_file_cache_set(_elm_config->edje_cache);
edje_collection_cache_set(_elm_config->edje_collection_cache);
if (_elm_cache_flush_poller)
{
ecore_poller_del(_elm_cache_flush_poller);
_elm_cache_flush_poller = NULL;
}
if (_elm_config->cache_flush_poll_interval > 0)
{
_elm_cache_flush_poller =
ecore_poller_add(ECORE_POLLER_CORE,
_elm_config->cache_flush_poll_interval,
_elm_cache_flush_cb, NULL);
}
}
@ -829,19 +925,22 @@ _config_load(void)
_elm_config->thumbscroll_momentum_threshold = 100.0;
_elm_config->thumbscroll_friction = 1.0;
_elm_config->thumbscroll_bounce_friction = 0.5;
_elm_config->thumbscroll_border_friction = 0.5;
_elm_config->thumbscroll_bounce_enable = EINA_TRUE;
_elm_config->page_scroll_friction = 0.5;
_elm_config->bring_in_scroll_friction = 0.5;
_elm_config->zoom_friction = 0.5;
_elm_config->thumbscroll_bounce_enable = EINA_TRUE;
_elm_config->thumbscroll_border_friction = 0.5;
_elm_config->scale = 1.0;
_elm_config->bgpixmap = 0;
_elm_config->compositing = 1;
_elm_config->font_hinting = 2;
_elm_config->cache_flush_poll_interval = 512;
_elm_config->font_dirs = NULL;
_elm_config->image_cache = 4096;
_elm_config->font_cache = 512;
_elm_config->edje_cache = 32;
_elm_config->edje_collection_cache = 64;
_elm_config->finger_size = 40;
_elm_config->compositing = 1;
_elm_config->fps = 60.0;
_elm_config->theme = eina_stringshare_add("default");
_elm_config->modules = NULL;
@ -1261,6 +1360,7 @@ _elm_config_init(void)
_env_get();
_config_apply();
_elm_config_font_overlay_apply();
_elm_recache();
}
void
@ -1366,6 +1466,7 @@ _elm_config_reload(void)
_config_apply();
_elm_config_font_overlay_apply();
_elm_rescale();
_elm_recache();
}
void
@ -1398,6 +1499,7 @@ _elm_config_profile_set(const char *profile)
_config_apply();
_elm_config_font_overlay_apply();
_elm_rescale();
_elm_recache();
}
}

View File

@ -1790,6 +1790,65 @@ elm_all_flush(void)
}
}
/**
* Get the configured cache flush interval time
*
* This gets the globally configured cache flush interval time, in
* ticks
*
* @return The cache flush interval time
* @ingroup Caches
*
* @see elm_all_flush()
*/
EAPI int
elm_cache_flush_interval_get(void)
{
return _elm_config->cache_flush_poll_interval;
}
/**
* Set the configured cache flush interval time
*
* This sets the globally configured cache flush interval time, in ticks
*
* @param size The cache flush interval time
* @ingroup Caches
*
* @see elm_all_flush()
*/
EAPI void
elm_cache_flush_interval_set(int size)
{
if (_elm_config->cache_flush_poll_interval == size) return;
_elm_config->cache_flush_poll_interval = size;
_elm_recache();
}
/**
* Set the configured cache flush interval time for all applications on the
* display
*
* This sets the globally configured cache flush interval time -- in ticks
* -- for all applications on the display.
*
* @param size The cache flush interval time
* @ingroup Caches
*/
EAPI void
elm_cache_flush_interval_all_set(int size)
{
#ifdef HAVE_ELEMENTARY_X
static Ecore_X_Atom atom = 0;
unsigned int size_i = (unsigned int)size;
if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_CACHE_FLUSH_INTERVAL");
ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
atom, &size_i, 1);
#endif
}
/**
* Get the configured font cache size
*
@ -1898,6 +1957,118 @@ elm_image_cache_all_set(int size)
#endif
}
/**
* Get the configured edje file cache size.
*
* This gets the globally configured edje file cache size, in number
* of files.
*
* @return The edje file cache size
* @ingroup Caches
*/
EAPI int
elm_edje_file_cache_get(void)
{
return _elm_config->edje_cache;
}
/**
* Set the configured edje file cache size
*
* This sets the globally configured edje file cache size, in number
* of files.
*
* @param size The edje file cache size
* @ingroup Caches
*/
EAPI void
elm_edje_file_cache_set(int size)
{
if (_elm_config->edje_cache == size) return;
_elm_config->edje_cache = size;
_elm_recache();
}
/**
* Set the configured edje file cache size for all applications on the
* display
*
* This sets the globally configured edje file cache size -- in number
* of files -- for all applications on the display.
*
* @param size The edje file cache size
* @ingroup Caches
*/
EAPI void
elm_edje_file_cache_all_set(int size)
{
#ifdef HAVE_ELEMENTARY_X
static Ecore_X_Atom atom = 0;
unsigned int size_i = (unsigned int)size;
if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_EDJE_FILE_CACHE");
ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
atom, &size_i, 1);
#endif
}
/**
* Get the configured edje collections (groups) cache size.
*
* This gets the globally configured edje collections cache size, in
* number of collections.
*
* @return The edje collections cache size
* @ingroup Caches
*/
EAPI int
elm_edje_collection_cache_get(void)
{
return _elm_config->edje_collection_cache;
}
/**
* Set the configured edje collections (groups) cache size
*
* This sets the globally configured edje collections cache size, in
* number of collections.
*
* @param size The edje collections cache size
* @ingroup Caches
*/
EAPI void
elm_edje_collection_cache_set(int size)
{
if (_elm_config->edje_collection_cache == size) return;
_elm_config->edje_collection_cache = size;
_elm_recache();
}
/**
* Set the configured edje collections (groups) cache size for all
* applications on the display
*
* This sets the globally configured edje collections cache size -- in
* number of collections -- for all applications on the display.
*
* @param size The edje collections cache size
* @ingroup Caches
*/
EAPI void
elm_edje_collection_cache_all_set(int size)
{
#ifdef HAVE_ELEMENTARY_X
static Ecore_X_Atom atom = 0;
unsigned int size_i = (unsigned int)size;
if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_EDJE_COLLECTION_CACHE");
ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
atom, &size_i, 1);
#endif
}
/**
* Adjust size of an element for finger usage
*

View File

@ -48,7 +48,7 @@ struct _Elm_Theme
/* increment this whenever a new set of config values are added but the users
* config doesn't need to be wiped - simply new values need to be put in
*/
#define ELM_CONFIG_FILE_GENERATION 0x0001
#define ELM_CONFIG_FILE_GENERATION 0x0002
#define ELM_CONFIG_VERSION ((ELM_CONFIG_EPOCH << 16) | ELM_CONFIG_FILE_GENERATION)
/* note: always remember to sync it with elm_config.c */
@ -89,8 +89,11 @@ struct _Elm_Config
Eina_List *font_dirs;
Eina_List *font_overlays;
int font_hinting;
int cache_flush_poll_interval;
int image_cache;
int font_cache;
int edje_cache;
int edje_collection_cache;
int finger_size;
double fps;
const char *theme;