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
#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
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
evas_image_cache_flush(e);
evas_font_cache_flush(e);
}
+ edje_file_cache_flush();
+ edje_collection_cache_flush();
}
void
}
return ee;
}
+
+/* local subsystem functions */
+static int
+_e_canvas_cb_flush(void *data)
+{
+ e_canvas_cache_flush();
+ return 1;
+}
+
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) */
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;
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);
/* 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
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;
#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)
OP("-menus-fast-move-threshold-set", 1, "Set the mouse speed (pixels/second) that is considered a 'fast move'", 0, HDL)
#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