value "compositing" int: 1;
value "font_hinting" int: 2;
value "cache_flush_poll_interval" int: 512;
+ value "cache_flush_enable" uchar: 1;
value "image_cache" int: 4096;
value "font_cache" int: 512;
value "edje_cache" int: 32;
value "compositing" int: 1;
value "font_hinting" int: 2;
value "cache_flush_poll_interval" int: 512;
+ value "cache_flush_enable" uchar: 1;
value "image_cache" int: 4096;
value "font_cache" int: 512;
value "edje_cache" int: 32;
value "compositing" int: 1;
value "font_hinting" int: 2;
value "cache_flush_poll_interval" int: 512;
+ value "cache_flush_enable" uchar: 1;
value "image_cache" int: 4096;
value "font_cache" int: 512;
value "edje_cache" int: 32;
}
static void
+cf_enable(void *data,
+ Evas_Object *obj,
+ void *event_info __UNUSED__)
+{
+ Eina_Bool cf = elm_cache_flush_enmabled_get();
+ Eina_Bool val = elm_check_state_get(obj);
+
+ if (cf == val) return;
+ elm_object_disabled_set((Evas_Object *)data, !val);
+ elm_cache_flush_enabled_all_set(val);
+}
+
+static void
cf_round(void *data __UNUSED__,
Evas_Object *obj,
void *event_info __UNUSED__)
_status_config_caches(Evas_Object *win,
Evas_Object *pager)
{
- Evas_Object *lb, *pd, *bx, *sl, *sp;
+ Evas_Object *lb, *pd, *bx, *sl, *sp, *ck;
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, 0.5);
- LABEL_FRAME_ADD("<hilight>Cache Flush Interval</>");
+ LABEL_FRAME_ADD("<hilight>Cache Flush Interval (8 ticks pre second)</>");
sl = elm_slider_add(win);
evas_object_data_set(win, "cache_flush_interval_slider", sl);
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_object_disabled_set(sl, !elm_cache_flush_enmabled_get());
+
+ ck = elm_check_add(win);
+ evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(ck, EVAS_HINT_FILL, 0.5);
+ elm_check_label_set(ck, "Enable Flushing");
+ elm_check_state_set(ck, elm_cache_flush_enmabled_get());
+ evas_object_smart_callback_add(ck, "changed", cf_enable, sl);
+ elm_box_pack_end(bx, ck);
+ evas_object_show(ck);
+
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);
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 Eina_Bool elm_cache_flush_enmabled_get(void);
+ EAPI void elm_cache_flush_enabled_set(Eina_Bool enabled);
+ EAPI void elm_cache_flush_enabled_all_set(Eina_Bool enabled);
EAPI int elm_font_cache_get(void);
EAPI void elm_font_cache_set(int size);
EAPI void elm_font_cache_all_set(int size);
"ENLIGHTENMENT_PROFILE",
"ENLIGHTENMENT_FONT_OVERLAY",
"ENLIGHTENMENT_CACHE_FLUSH_INTERVAL",
+ "ENLIGHTENMENT_CACHE_FLUSH_ENABLE",
"ENLIGHTENMENT_FONT_CACHE",
"ENLIGHTENMENT_IMAGE_CACHE",
"ENLIGHTENMENT_EDJE_FILE_CACHE",
#define ATOM_E_PROFILE 3
#define ATOM_E_FONT_OVERLAY 4
#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_THUMBSCROLL_BOUNCE_ENABLE 10
-#define ATOM_E_THUMBSCROLL_BOUNCE_FRICTION 11
-#define ATOM_E_THUMBSCROLL_ENABLE 12
-#define ATOM_E_THUMBSCROLL_THRESHOLD 13
-#define ATOM_E_THUMBSCROLL_MOMENTUM_THRESHOLD 14
-#define ATOM_E_THUMBSCROLL_FRICTION 15
-#define ATOM_E_THUMBSCROLL_BORDER_FRICTION 16
-#define ATOM_E_THUMBSCROLL_PAGE_SCROLL_FRICTION 17
-#define ATOM_E_THUMBSCROLL_BRING_IN_SCROLL_FRICTION 18
-#define ATOM_E_THUMBSCROLL_ZOOM_FRICTION 19
-#define ATOM_E_CONFIG 20
+#define ATOM_E_CACHE_FLUSH_ENABLE 6
+#define ATOM_E_FONT_CACHE 7
+#define ATOM_E_IMAGE_CACHE 8
+#define ATOM_E_EDJE_FILE_CACHE 9
+#define ATOM_E_EDJE_COLLECTION_CACHE 10
+#define ATOM_E_THUMBSCROLL_BOUNCE_ENABLE 11
+#define ATOM_E_THUMBSCROLL_BOUNCE_FRICTION 12
+#define ATOM_E_THUMBSCROLL_ENABLE 13
+#define ATOM_E_THUMBSCROLL_THRESHOLD 14
+#define ATOM_E_THUMBSCROLL_MOMENTUM_THRESHOLD 15
+#define ATOM_E_THUMBSCROLL_FRICTION 16
+#define ATOM_E_THUMBSCROLL_BORDER_FRICTION 17
+#define ATOM_E_THUMBSCROLL_PAGE_SCROLL_FRICTION 18
+#define ATOM_E_THUMBSCROLL_BRING_IN_SCROLL_FRICTION 19
+#define ATOM_E_THUMBSCROLL_ZOOM_FRICTION 20
+#define ATOM_E_CONFIG 21
static Eina_Bool _prop_config_get(void);
static Eina_Bool _prop_change(void *data __UNUSED__,
_elm_recache();
}
}
+ else if (event->atom == _atom[ATOM_E_CACHE_FLUSH_ENABLE])
+ {
+ unsigned int val = 1000;
+
+ if (ecore_x_window_prop_card32_get(event->win,
+ event->atom,
+ &val, 1) > 0)
+ {
+ _elm_config->cache_flush_enable = !!val;
+ _elm_recache();
+ }
+ }
else if (event->atom == _atom[ATOM_E_FONT_CACHE])
{
unsigned int val = 1000;
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, cache_flush_enable, T_UCHAR);
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->compositing = 1;
_elm_config->font_hinting = 2;
_elm_config->cache_flush_poll_interval = 512;
+ _elm_config->cache_flush_enable = EINA_TRUE;
_elm_config->font_dirs = NULL;
_elm_config->image_cache = 4096;
_elm_config->font_cache = 512;
}
/**
+ * Get the configured cache flush enabled state
+ *
+ * This gets the globally configured cache flush state - if it is enabled
+ * or not. When cache flushing is enabled, elementary will regularly
+ * (see elm_cache_flush_interval_get() ) flush caches and dump data out of
+ * memory and allow usage to re-seed caches and data in memory where it
+ * can do so. An idle application will thus minimise its memory usage as
+ * data will be freed from memory and not be re-loaded as it is idle and
+ * not rendering or doing anything graphically right now.
+ *
+ * @return The cache flush state
+ * @ingroup Caches
+ *
+ * @see elm_all_flush()
+ */
+EAPI Eina_Bool
+elm_cache_flush_enmabled_get(void)
+{
+ return _elm_config->cache_flush_enable;
+}
+
+/**
+ * Set the configured cache flush enabled state
+ *
+ * This sets the globally configured cache flush enabled state
+ *
+ * @param size The cache flush enabled state
+ * @ingroup Caches
+ *
+ * @see elm_all_flush()
+ */
+EAPI void
+elm_cache_flush_enabled_set(Eina_Bool enabled)
+{
+ enabled = !!enabled;
+ if (_elm_config->cache_flush_enable == enabled) return;
+ _elm_config->cache_flush_enable = enabled;
+
+ _elm_recache();
+}
+
+/**
+ * Set the configured cache flush enabled state for all applications on the
+ * display
+ *
+ * This sets the globally configured cache flush enabled state for all
+ * applications on the display.
+ *
+ * @param size The cache flush enabled state
+ * @ingroup Caches
+ */
+EAPI void
+elm_cache_flush_enabled_all_set(Eina_Bool enabled)
+{
+#ifdef HAVE_ELEMENTARY_X
+ static Ecore_X_Atom atom = 0;
+ unsigned int enabled_i = (unsigned int)enabled;
+
+ if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_CACHE_FLUSH_ENABLE");
+ ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
+ atom, &enabled_i, 1);
+#endif
+}
+
+/**
* Get the configured font cache size
*
* This gets the globally configured font cache size, in bytes
Eina_List *font_overlays;
int font_hinting;
int cache_flush_poll_interval;
+ Eina_Bool cache_flush_enable;
int image_cache;
int font_cache;
int edje_cache;