more cache controls and a flusher... :)
authorCarsten Haitzler <raster@rasterman.com>
Thu, 24 Nov 2005 04:23:31 +0000 (04:23 +0000)
committerCarsten Haitzler <raster@rasterman.com>
Thu, 24 Nov 2005 04:23:31 +0000 (04:23 +0000)
SVN revision: 18627

TODO
src/bin/e_canvas.c
src/bin/e_config.c
src/bin/e_config.h
src/bin/e_ipc_handlers.h
src/bin/e_ipc_handlers_list.h

diff --git a/TODO b/TODO
index 8369b00..0f5bda4 100644 (file)
--- a/TODO
+++ b/TODO
@@ -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
index bc74775..fc382f8 100644 (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;
+}
+
index b54dd10..d0269aa 100644 (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);
index 22e55f1..8ef6a5d 100644 (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;
index 8a76a7e..107b5e9 100644 (file)
@@ -1881,6 +1881,129 @@ break;
 #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)
index ba562e2..f5f1140 100644 (file)
 #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