more cache controls and a flusher... :)

SVN revision: 18627
This commit is contained in:
Carsten Haitzler 2005-11-24 04:23:31 +00:00
parent da336f50b8
commit eaadf415e0
6 changed files with 178 additions and 2 deletions

2
TODO
View File

@ -8,6 +8,8 @@ Some of the things (in very short form) that need to be done to E17...
BUGS / FIXES
-------------------------------------------------------------------------------
* BUG: in multihead dnd from pager to pager is pretty screwed especially at the
top of the screen (if the pager is there)
* BUG: if iconified window quits qhile iconified and ibox is being used then
e segv's
* BUG: dnd to ibar is broken if u did an icon that isn't IN the ibar yet

View File

@ -4,9 +4,11 @@
#include "e.h"
/* local subsystem functions */
static int _e_canvas_cb_flush(void *data);
/* local subsystem globals */
static Evas_List *_e_canvases = NULL;
static Ecore_Timer *_e_canvas_cache_flush_timer = NULL;
/* externally accessible functions */
void
@ -66,6 +68,19 @@ e_canvas_recache(void)
evas_image_cache_set(e, e_config->image_cache * 1024);
evas_font_cache_set(e, e_config->font_cache * 1024);
}
edje_file_cache_set(e_config->edje_cache);
edje_collection_cache_set(e_config->edje_cache);
if (_e_canvas_cache_flush_timer)
{
ecore_timer_del(_e_canvas_cache_flush_timer);
_e_canvas_cache_flush_timer = NULL;
}
if (e_config->cache_flush_interval > 0.0)
{
_e_canvas_cache_flush_timer =
ecore_timer_add(e_config->cache_flush_interval, _e_canvas_cb_flush,
NULL);
}
}
void
@ -83,6 +98,8 @@ e_canvas_cache_flush(void)
evas_image_cache_flush(e);
evas_font_cache_flush(e);
}
edje_file_cache_flush();
edje_collection_cache_flush();
}
void
@ -145,3 +162,12 @@ e_canvas_new(int engine_hint, Ecore_X_Window win, int x, int y, int w, int h,
}
return ee;
}
/* local subsystem functions */
static int
_e_canvas_cb_flush(void *data)
{
e_canvas_cache_flush();
return 1;
}

View File

@ -263,6 +263,9 @@ e_config_init(void)
E_CONFIG_VAL(D, T, framerate, DOUBLE); /**/
E_CONFIG_VAL(D, T, image_cache, INT); /**/
E_CONFIG_VAL(D, T, font_cache, INT); /**/
E_CONFIG_VAL(D, T, edje_cache, INT); /**/
E_CONFIG_VAL(D, T, edje_collection_cache, INT); /**/
E_CONFIG_VAL(D, T, cache_flush_interval, DOUBLE); /**/
E_CONFIG_VAL(D, T, zone_desks_x_count, INT); /**/
E_CONFIG_VAL(D, T, zone_desks_y_count, INT); /**/
E_CONFIG_VAL(D, T, use_virtual_roots, INT); /* should not make this a config option (for now) */
@ -411,6 +414,9 @@ e_config_init(void)
e_config->framerate = 30.0;
e_config->image_cache = 4096;
e_config->font_cache = 512;
e_config->edje_cache = 32;
e_config->edje_collection_cache = 64;
e_config->cache_flush_interval = 60.0;
e_config->zone_desks_x_count = 4;
e_config->zone_desks_y_count = 1;
e_config->use_virtual_roots = 0;
@ -1395,6 +1401,9 @@ e_config_init(void)
E_CONFIG_LIMIT(e_config->framerate, 1.0, 200.0);
E_CONFIG_LIMIT(e_config->image_cache, 0, 256 * 1024);
E_CONFIG_LIMIT(e_config->font_cache, 0, 32 * 1024);
E_CONFIG_LIMIT(e_config->edje_cache, 0, 256);
E_CONFIG_LIMIT(e_config->edje_collection_cache, 0, 512);
E_CONFIG_LIMIT(e_config->cache_flush_interval, 0.0, 600.0);
E_CONFIG_LIMIT(e_config->zone_desks_x_count, 1, 64);
E_CONFIG_LIMIT(e_config->zone_desks_y_count, 1, 64);
E_CONFIG_LIMIT(e_config->use_edge_flip, 0, 1);

View File

@ -48,9 +48,10 @@ typedef Eet_Data_Descriptor E_Config_DD;
/* increment this whenever we change config enough that you need new
* defaults for e to work - started at 100 when we introduced this config
* versioning feature
* versioning feature. the value of this is really irrelevant - just as
* long as it increases every time we change something
*/
#define E_CONFIG_FILE_VERSION 129
#define E_CONFIG_FILE_VERSION 132
#define E_EVAS_ENGINE_DEFAULT 0
#define E_EVAS_ENGINE_SOFTWARE_X11 1
@ -87,6 +88,9 @@ struct _E_Config
double framerate;
int image_cache;
int font_cache;
int edje_cache;
int edje_collection_cache;
double cache_flush_interval;
int zone_desks_x_count;
int zone_desks_y_count;
int use_virtual_roots;

View File

@ -1880,6 +1880,129 @@ break;
#endif
#undef HDL
/****************************************************************************/
#define HDL E_IPC_OP_EDJE_CACHE_SET
#if (TYPE == E_REMOTE_OPTIONS)
OP("-edje-cache-set", 1, "Set the edje cache size (items)", 0, HDL)
#elif (TYPE == E_REMOTE_OUT)
REQ_INT(atoi(params[0]), HDL)
#elif (TYPE == E_WM_IN)
START_INT(val, HDL);
e_config->edje_cache = val;
E_CONFIG_LIMIT(e_config->edje_cache, 0, 256);
e_canvas_recache();
SAVE;
END_INT;
#elif (TYPE == E_REMOTE_IN)
#endif
#undef HDL
/****************************************************************************/
#define HDL E_IPC_OP_EDJE_CACHE_GET
#if (TYPE == E_REMOTE_OPTIONS)
OP("-edje-cache-get", 0, "Get the speculative edje cache size (items)", 1, HDL)
#elif (TYPE == E_REMOTE_OUT)
REQ_NULL(HDL)
#elif (TYPE == E_WM_IN)
SEND_INT(e_config->edje_cache, E_IPC_OP_EDJE_CACHE_GET_REPLY, HDL);
#elif (TYPE == E_REMOTE_IN)
#endif
#undef HDL
/****************************************************************************/
#define HDL E_IPC_OP_EDJE_CACHE_GET_REPLY
#if (TYPE == E_REMOTE_OPTIONS)
#elif (TYPE == E_REMOTE_OUT)
#elif (TYPE == E_WM_IN)
#elif (TYPE == E_REMOTE_IN)
START_INT(val, HDL)
printf("REPLY: %i\n", val);
END_INT;
#endif
#undef HDL
/****************************************************************************/
#define HDL E_IPC_OP_EDJE_COLLECTION_CACHE_SET
#if (TYPE == E_REMOTE_OPTIONS)
OP("-edje-collection-cache-set", 1, "Set the edje collection cache size (items)", 0, HDL)
#elif (TYPE == E_REMOTE_OUT)
REQ_INT(atoi(params[0]), HDL)
#elif (TYPE == E_WM_IN)
START_INT(val, HDL);
e_config->edje_collection_cache = val;
E_CONFIG_LIMIT(e_config->edje_collection_cache, 0, 512);
e_canvas_recache();
SAVE;
END_INT;
#elif (TYPE == E_REMOTE_IN)
#endif
#undef HDL
/****************************************************************************/
#define HDL E_IPC_OP_EDJE_COLLECTION_CACHE_GET
#if (TYPE == E_REMOTE_OPTIONS)
OP("-edje-collection-cache-get", 0, "Get the speculative edje collection cache size (items)", 1, HDL)
#elif (TYPE == E_REMOTE_OUT)
REQ_NULL(HDL)
#elif (TYPE == E_WM_IN)
SEND_INT(e_config->edje_collection_cache, E_IPC_OP_EDJE_COLLECTION_CACHE_GET_REPLY, HDL);
#elif (TYPE == E_REMOTE_IN)
#endif
#undef HDL
/****************************************************************************/
#define HDL E_IPC_OP_EDJE_COLLECTION_CACHE_GET_REPLY
#if (TYPE == E_REMOTE_OPTIONS)
#elif (TYPE == E_REMOTE_OUT)
#elif (TYPE == E_WM_IN)
#elif (TYPE == E_REMOTE_IN)
START_INT(val, HDL)
printf("REPLY: %i\n", val);
END_INT;
#endif
#undef HDL
/****************************************************************************/
#define HDL E_IPC_OP_CACHE_FLUSH_INTERVAL_SET
#if (TYPE == E_REMOTE_OPTIONS)
OP("-cache-flush-interval-set", 1, "Set the cache flush interval (sec) (0.0 = off)", 0, HDL)
#elif (TYPE == E_REMOTE_OUT)
REQ_DOUBLE(atof(params[0]), HDL);
#elif (TYPE == E_WM_IN)
START_DOUBLE(dbl, HDL);
e_config->cache_flush_interval = dbl;
E_CONFIG_LIMIT(e_config->cache_flush_interval, 0.0, 600.0);
e_canvas_recache();
SAVE;
END_DOUBLE;
#elif (TYPE == E_REMOTE_IN)
#endif
#undef HDL
/****************************************************************************/
#define HDL E_IPC_OP_CACHE_FLUSH_INTERVAL_GET
#if (TYPE == E_REMOTE_OPTIONS)
OP("-cache-flush-interval-get", 0, "Get the interval between cache flushed (sec)", 1, HDL)
#elif (TYPE == E_REMOTE_OUT)
REQ_NULL(HDL);
#elif (TYPE == E_WM_IN)
SEND_DOUBLE(e_config->cache_flush_interval, E_IPC_OP_CACHE_FLUSH_INTERVAL_GET_REPLY, HDL);
#elif (TYPE == E_REMOTE_IN)
#endif
#undef HDL
/****************************************************************************/
#define HDL E_IPC_OP_CACHE_FLUSH_INTERVAL_GET_REPLY
#if (TYPE == E_REMOTE_OPTIONS)
#elif (TYPE == E_REMOTE_OUT)
#elif (TYPE == E_WM_IN)
#elif (TYPE == E_REMOTE_IN)
START_DOUBLE(fint, HDL);
printf("REPLY: %3.3f\n", fint);
END_DOUBLE;
#endif
#undef HDL
/****************************************************************************/
#define HDL E_IPC_OP_MENUS_FAST_MOVE_THRESHOLD_SET
#if (TYPE == E_REMOTE_OPTIONS)

View File

@ -340,3 +340,15 @@
#define E_IPC_OP_FULLSCREEN_POLICY_GET_REPLY 322
#define E_IPC_EFM_START 323
#define E_IPC_OP_EDJE_CACHE_SET 324
#define E_IPC_OP_EDJE_CACHE_GET 325
#define E_IPC_OP_EDJE_CACHE_GET_REPLY 326
#define E_IPC_OP_EDJE_COLLECTION_CACHE_SET 327
#define E_IPC_OP_EDJE_COLLECTION_CACHE_GET 328
#define E_IPC_OP_EDJE_COLLECTION_CACHE_GET_REPLY 329
#define E_IPC_OP_CACHE_FLUSH_INTERVAL_SET 330
#define E_IPC_OP_CACHE_FLUSH_INTERVAL_GET 331
#define E_IPC_OP_CACHE_FLUSH_INTERVAL_GET_REPLY 332