On Fri, 2009-09-11 at 06:44 -0700, Enlightenment SVN wrote:
> Log:
> 1. make max image size a #define
> 2. max image size > 65536x65536
yay. thanks a lot :)
> 3. fix cserve leak
> 4. fix cserve+async load to work together.
>
>
> Author: raster
> Date: 2009-09-11 06:44:53 -0700 (Fri, 11 Sep 2009)
> New Revision: 42406
>
> Modified:
> trunk/evas/src/bin/evas_cserve_main.c
> trunk/evas/src/lib/cache/evas_cache_image.c
> trunk/evas/src/lib/cserve/evas_cs.h
> trunk/evas/src/lib/cserve/evas_cs_client.c
> trunk/evas/src/lib/cserve/evas_cs_server.c
> trunk/evas/src/lib/include/evas_common.h
> trunk/evas/src/modules/loaders/edb/evas_image_load_edb.c
> trunk/evas/src/modules/loaders/gif/evas_image_load_gif.c
> trunk/evas/src/modules/loaders/jpeg/evas_image_load_jpeg.c
> trunk/evas/src/modules/loaders/png/evas_image_load_png.c
> trunk/evas/src/modules/loaders/svg/evas_image_load_svg.c
> trunk/evas/src/modules/loaders/tiff/evas_image_load_tiff.c
> trunk/evas/src/modules/loaders/xpm/evas_image_load_xpm.c
>
> Modified: trunk/evas/src/bin/evas_cserve_main.c
> ===================================================================
> --- trunk/evas/src/bin/evas_cserve_main.c 2009-09-11 13:43:02 UTC (rev
> 42405)
> +++ trunk/evas/src/bin/evas_cserve_main.c 2009-09-11 13:44:53 UTC (rev
> 42406)
> @@ -465,16 +465,16 @@
> int err = 0;
> double t;
>
> - D("... stat %s\n", file);
> + D("... stat %s", file);
> ret = stat(file, &st);
> if (ret < 0) return NULL;
> - D("... load header\n");
> + D("... load header");
> t = get_time();
> ie = evas_cache_image_request(cache, file, key, load_opts, &err);
> t = get_time() - t;
> - D("... header done\n");
> + D("... header done");
> if (!ie) return NULL;
> - D("... ie->cache = %p\n", ie->cache);
> + D("... ie->cache = %p", ie->cache);
> img = (Img *)ie;
> img->stats.load1 = t;
> img->key = eina_stringshare_add(bufkey);
> @@ -552,21 +552,21 @@
> static void
> cache_clean(void)
> {
> - D("... cache clean!!! do\n");
> + D("... cache clean!!! do");
> LKL(cache_lock);
> while ((cache_usage > ((cache_max_usage + cache_max_adjust) * 1024)) &&
> (cache_images))
> {
> Img *img;
> Eina_List *l;
> -
> - D("... clean loop %i > %i\n", cache_usage, (cache_max_usage +
> cache_max_adjust) * 1024);
> +
> + D("... clean loop %i > %i", cache_usage, (cache_max_usage +
> cache_max_adjust) * 1024);
> l = eina_list_last(cache_images); // THREAD: called from thread.
> happens to be safe as it uses no unlocked shared resources
> if (!l) break;
> img = l->data;
> if (!img) break;
> LKL(img->lock);
> - D("... REMOVE %p '%s'\n", img, img->file.file);
> + D("... REMOVE %p '%s'", img, img->file.file);
> #ifdef BUILD_PTHREAD
> img->killme = 1;
> img->useless = 1;
> @@ -577,7 +577,7 @@
> cache_images = eina_list_remove_list(cache_images, l); // FIXME:
> called from thread
> img->incache--;
> cache_usage -= img->usage;
> - D("... IMG FREE %p\n", img);
> + D("... IMG FREE %p", img);
> img_free(img);
> #endif
> }
> @@ -633,10 +633,10 @@
>
> if (cache_max_adjust < -cache_max_usage)
> cache_max_adjust = -cache_max_usage;
> - D("... cache_max_adjust = %i\n", cache_max_adjust);
> + D("... cache_max_adjust = %i", cache_max_adjust);
> if (pval != cache_max_adjust)
> {
> - D("... cache clean\n");
> + D("... cache clean");
> // FIXME lock problem
> cache_clean();
> }
> @@ -648,17 +648,17 @@
> eina_hash_del(active_images, img->key, img);
> if (img->dead)
> {
> - D("... img %p '%s' dead\n", img , img->file.file);
> + D("... img %p '%s' dead", img , img->file.file);
> img_free(img);
> return;
> }
> if ((cache_usage + img->usage) > ((cache_max_usage + cache_max_adjust) *
> 1024))
> {
> - D("... img %p '%s' too big for cache\n", img , img->file.file);
> + D("... img %p '%s' too big for cache", img , img->file.file);
> img_free(img);
> return;
> }
> - D("... img %p '%s' cached += %i\n", img , img->file.file, img->usage);
> + D("... img %p '%s' cached += %i", img , img->file.file, img->usage);
> if (img->incache > 0)
> {
> printf("EEEEEEEEEEEEEEEEK!\n");
> @@ -726,8 +726,8 @@
> Eina_List *l, *l_next;
>
> if (!file) return NULL;
> - D("... img_load '%s'\n", file);
> - if (key) D("... ... key '%s'\n", key);
> + D("... img_load '%s'", file);
> + if (key) D("... ... key '%s'", key);
> if (key)
> snprintf(buf, sizeof(buf), "%s///::/%s/\001/%i/%1.8f/%ix%i",
> file, key,
> @@ -740,16 +740,16 @@
> load_opts->scale_down_by,
> load_opts->dpi,
> load_opts->w, load_opts->h);
> - D("... find '%s'\n", buf);
> + D("... find '%s'", buf);
> img = eina_hash_find(active_images, buf);
> if ((img) && (img_ok(img)))
> {
> - D("... found!\n");
> + D("... found!");
> img->stats.load1saved++;
> img->ref++;
> - D("... sats update\n");
> + D("... sats update");
> stats_update();
> - D("... return %p\n", img);
> + D("... return %p", img);
> return img;
> }
>
> @@ -762,7 +762,7 @@
> LKL(img->lock);
> if (img_ok(img))
> {
> - D("... found cached\n");
> + D("... found cached");
> cache_images = eina_list_remove_list(cache_images, l);
> img->incache--;
> cache_usage -= img->usage;
> @@ -770,9 +770,9 @@
> img->stats.load1saved++;
> img->ref++;
> eina_hash_direct_add(active_images, img->key, img);
> - D("... sats update\n");
> + D("... sats update");
> stats_update();
> - D("... return %p\n", img);
> + D("... return %p", img);
> LKU(img->lock);
> LKU(cache_lock);
> return img;
> @@ -781,7 +781,7 @@
> }
> }
> LKU(cache_lock);
> - D("... ned new img\n");
> + D("... ned new img");
> return img_new(file, key, load_opts, buf);
> }
>
> @@ -797,10 +797,10 @@
> return;
> }
> img->ref--;
> - D("... img ref-- = %i\n", img->ref);
> + D("... img ref-- = %i", img->ref);
> if (img->ref == 0)
> {
> - D("... img cache %p '%s'\n", img, img->file.file);
> + D("... img cache %p '%s'", img, img->file.file);
> img_cache(img);
> }
> }
> @@ -808,12 +808,12 @@
> static void
> img_unloaddata(Img *img)
> {
> - D("img_unloaddata() %p '%s'\n", img, img->file.file);
> + D("img_unloaddata() %p '%s'", img, img->file.file);
> if ((img->dref <= 0) && (img->useless) && (img->mem))
> {
> Image_Entry *ie = (Image_Entry *)img;
>
> - D("... really do forced unload\n");
> + D("... really do forced unload");
> if (!img->active) cache_usage -= img->usage;
> img->usage -=
> (4096 * (((img->image.w * img->image.h * sizeof(DATA32)) + 4095) /
> 4096)) +
> @@ -824,7 +824,7 @@
> img->mem = NULL;
> img->image.data = NULL;
> img->dref = 0;
> - D("... done\n");
> + D("... done");
>
> ie->flags.loaded = 0;
> ie->allocated.w = 0;
> @@ -835,7 +835,7 @@
> static void
> img_useless(Img *img)
> {
> - D("img_useless() %p\n", img);
> + D("img_useless() %p", img);
> img->useless = 1;
> if (img->dref <= 0) img_unloaddata(img);
> }
> @@ -843,7 +843,7 @@
> static void
> img_forcedunload(Img *img)
> {
> - D("img_forcedunload() %p\n", img);
> + D("img_forcedunload() %p", img);
> img->dead = 1;
> img_unload(img);
> }
> @@ -851,8 +851,7 @@
> static void
> img_preload(Img *img)
> {
> - D("img_preload() %p\n", img);
> - printf("preload '%s'\n", img->file.file);
> + D("img_preload() %p", img);
> }
>
> static void
> @@ -862,12 +861,12 @@
> Img *img;
>
> images = data;
> - D("... CLIENT DEL %i\n", c->pid);
> + D("... CLIENT DEL %i", c->pid);
> EINA_LIST_FREE(images, img)
> {
> - D("... unloaddata img %p\n", img);
> + D("... unloaddata img %p", img);
> img_unloaddata(img);
> - D("... unload img %p\n", img);
> + D("... unload img %p", img);
> img_unload(img);
> }
> }
> @@ -901,7 +900,7 @@
> msg.mem.id = img->mem->id;
> msg.mem.offset = img->mem->offset;
> msg.mem.size = img->mem->size;
> - D("... reply\n");
> + D("... reply");
> evas_cserve_client_send(c, OP_LOADDATA, sizeof(msg), (unsigned char
> *)(&msg));
> LKU(c->lock);
> return NULL;
> @@ -917,7 +916,7 @@
> else
> msg.mem.id = msg.mem.offset = msg.mem.size = 0;
> LKU(img->lock);
> - D("... reply\n");
> + D("... reply");
> evas_cserve_client_send(c, OP_LOADDATA, sizeof(msg), (unsigned char
> *)(&msg));
> LKU(c->lock);
> return NULL;
> @@ -928,7 +927,7 @@
> message(void *fdata, Server *s, Client *c, int opcode, int size, unsigned
> char *data)
> {
> t_now = time(NULL);
> - D("message @ %i...\n", (int)t_now);
> + D("message @ %i...", (int)t_now);
> switch (opcode)
> {
> case OP_INIT:
> @@ -939,12 +938,17 @@
> memset(&msg, 0, sizeof(msg));
> msg.pid = getpid();
> msg.server_id = server_id;
> + msg.handle = c;
> rep = (Op_Init *)data;
> c->pid = rep->pid;
> + if (rep->server_id == 1) // 2nd channel conn
> + {
> + c->client_main = rep->handle;
> + }
> c->func = client_del;
> c->data = NULL;
> - D("OP_INIT %i\n", c->pid);
> - D("... reply\n");
> + D("OP_INIT %i", c->pid);
> + D("... reply");
> evas_cserve_client_send(c, OP_INIT, sizeof(msg), (unsigned char
> *)(&msg));
> }
> break;
> @@ -956,7 +960,7 @@
> RGBA_Image_Loadopts lopt = {0, 0.0, 0, 0};
> char *file = NULL, *key = NULL;
>
> - D("OP_LOAD %i\n", c->pid);
> + D("OP_LOAD %i", c->pid);
> rep = (Op_Load *)data;
> file = data + sizeof(Op_Load);
> key = file + strlen(file) + 1;
> @@ -965,17 +969,20 @@
> lopt.dpi = rep->lopt.dpi;
> lopt.w = rep->lopt.w;
> lopt.h = rep->lopt.h;
> - D("... img_load '%s'\n", file);
> - if (key) D("'%s'\n", key);
> - else D(" '%s'\n", NULL);
> - D(" lopt { %i %1.1f %i %i}\n",
> + D("... img_load '%s'", file);
> + if (key) D("'%s'", key);
> + else D(" '%s'", NULL);
> + D(" lopt { %i %1.1f %i %i}",
> lopt.scale_down_by, lopt.dpi, lopt.w, lopt.h);
> img = img_load(file, key, &lopt);
> - D("... img_load = %p\n", img);
> + D("... img_load = %p", img);
> if (img)
> {
> - D("... add image to client list\n");
> - c->data = eina_list_append(c->data, img);
> + D("... add image to client list");
> + if (c->client_main)
> + c->client_main->data =
> eina_list_append(c->client_main->data, img);
> + else
> + c->data = eina_list_append(c->data, img);
> }
> memset(&msg, 0, sizeof(msg));
> msg.handle = img;
> @@ -995,7 +1002,7 @@
> msg.image.h = img->image.h;
> msg.image.alpha = img->image.alpha;
> }
> - D("... reply\n");
> + D("... reply");
> evas_cserve_client_send(c, OP_LOAD, sizeof(msg), (unsigned char
> *)(&msg));
> }
> break;
> @@ -1004,19 +1011,27 @@
> Op_Unload *rep;
> Img *img;
>
> - D("OP_UNLOAD %i\n", c->pid);
> + D("OP_UNLOAD %i", c->pid);
> rep = (Op_Unload *)data;
> img = rep->handle;
> if ((img) && (rep->server_id == server_id))
> {
> - D("... remove %p from list\n", img);
> - c->data = eina_list_remove(c->data, img);
> - D("... unload %p\n", img);
> + Eina_Bool doflush = 0;
> +
> + D("... remove %p from list", img);
> + if (c->client_main)
> + c->client_main->data =
> eina_list_remove(c->client_main->data, img);
> + else
> + c->data = eina_list_remove(c->data, img);
> + D("... unload %p", img);
> LKL(img->lock);
> img->ref++;
> img_unload(img);
> img->ref--;
> + if (img->ref == 0) doflush = 1;
> LKU(img->lock);
> + if (doflush)
> + img_cache(img);
> cache_clean();
> }
> }
> @@ -1027,14 +1042,14 @@
> Op_Loaddata_Reply msg;
> Img *img;
>
> - D("OP_LOADDATA %i\n", c->pid);
> + D("OP_LOADDATA %i", c->pid);
> rep = (Op_Loaddata *)data;
> img = rep->handle;
> if ((img) && (rep->server_id == server_id))
> {
> if (img->mem)
> {
> - D("... load saved - cached %p\n", img);
> + D("... load saved - cached %p", img);
> img->stats.load2saved++;
> stats_update();
> memset(&msg, 0, sizeof(msg));
> @@ -1046,7 +1061,7 @@
> }
> else
> msg.mem.id = msg.mem.offset = msg.mem.size = 0;
> - D("... reply\n");
> + D("... reply");
> evas_cserve_client_send(c, OP_LOADDATA, sizeof(msg),
> (unsigned char *)(&msg));
> }
> else
> @@ -1056,7 +1071,7 @@
> pthread_attr_t attr;
> Load_Inf *li;
>
> - D("... load data %p\n", img);
> + D("... load data %p", img);
> pthread_attr_init(&attr);
> li = calloc(1, sizeof(Load_Inf));
> if (li)
> @@ -1083,7 +1098,7 @@
> }
> else
> msg.mem.id = msg.mem.offset = msg.mem.size = 0;
> - D("... reply\n");
> + D("... reply");
> evas_cserve_client_send(c, OP_LOADDATA, sizeof(msg),
> (unsigned char *)(&msg));
> #endif
> }
> @@ -1100,16 +1115,16 @@
> Op_Unloaddata *rep;
> Img *img;
>
> - D("OP_UNLOADDATA %i\n", c->pid);
> + D("OP_UNLOADDATA %i", c->pid);
> rep = (Op_Unloaddata *)data;
> img = rep->handle;
> if ((img) && (rep->server_id == server_id))
> {
> - D("... dref--\n");
> + D("... dref--");
> LKL(img->lock);
> img->dref--;
> if (img->dref < 0) img->dref = 0;
> - D("... unload data %p '%s'\n", img, img->file.file);
> + D("... unload data %p '%s'", img, img->file.file);
> img_unloaddata(img);
> LKU(img->lock);
> }
> @@ -1120,16 +1135,16 @@
> Op_Unloaddata *rep;
> Img *img;
>
> - D("OP_USELESSDATA %i\n", c->pid);
> + D("OP_USELESSDATA %i", c->pid);
> rep = (Op_Unloaddata *)data;
> img = rep->handle;
> if ((img) && (rep->server_id == server_id))
> {
> - D("... dref--\n");
> + D("... dref--");
> LKL(img->lock);
> img->dref--;
> if (img->dref < 0) img->dref = 0;
> - D("... useless %p\n", img);
> + D("... useless %p", img);
> img_useless(img);
> LKU(img->lock);
> }
> @@ -1140,13 +1155,16 @@
> Op_Preload *rep;
> Img *img;
>
> - D("OP_PRELOAD %i\n", c->pid);
> + D("OP_PRELOAD %i", c->pid);
> rep = (Op_Preload *)data;
> img = rep->handle;
> if ((img) && (rep->server_id == server_id))
> {
> LKL(img->lock);
> - c->data = eina_list_remove(c->data, img);
> + if (c->client_main)
> + c->client_main->data =
> eina_list_remove(c->client_main->data, img);
> + else
> + c->data = eina_list_remove(c->data, img);
> // FIXME: preload doesnt work async
> img_preload(img);
> LKU(img->lock);
> @@ -1157,19 +1175,27 @@
> Op_Forcedunload *rep;
> Img *img;
>
> - D("OP_FORCEDUNLOAD %i\n", c->pid);
> + D("OP_FORCEDUNLOAD %i", c->pid);
> rep = (Op_Forcedunload *)data;
> img = rep->handle;
> if ((img) && (rep->server_id == server_id))
> {
> + Eina_Bool doflush = 0;
> +
> LKL(img->lock);
> - D("remove %p from list\n", img);
> - c->data = eina_list_remove(c->data, img);
> - D("... forced unload now\n");
> + D("remove %p from list", img);
> + if (c->client_main)
> + c->client_main->data =
> eina_list_remove(c->client_main->data, img);
> + else
> + c->data = eina_list_remove(c->data, img);
> + D("... forced unload now");
> img->ref++;
> img_forcedunload(img);
> img->ref--;
> + if (img->ref == 0) doflush = 1;
> LKU(img->lock);
> + if (doflush)
> + img_cache(img);
> cache_clean();
> }
> }
> @@ -1178,11 +1204,11 @@
> {
> Op_Getconfig_Reply msg;
>
> - D("OP_GETCONFIG %i\n", c->pid);
> + D("OP_GETCONFIG %i", c->pid);
> msg.cache_max_usage = cache_max_usage;
> msg.cache_item_timeout = cache_item_timeout;
> msg.cache_item_timeout_check = cache_item_timeout_check;
> - D("... reply\n");
> + D("... reply");
> evas_cserve_client_send(c, OP_GETCONFIG, sizeof(msg), (unsigned
> char *)(&msg));
> }
> break;
> @@ -1190,14 +1216,14 @@
> {
> Op_Setconfig *rep;
>
> - D("OP_SETCONFIG %i\n", c->pid);
> + D("OP_SETCONFIG %i", c->pid);
> rep = (Op_Setconfig *)data;
> cache_max_usage = rep->cache_max_usage;
> cache_item_timeout = rep->cache_item_timeout;
> cache_item_timeout_check = rep->cache_item_timeout_check;
> - D("... cache timeout\n");
> + D("... cache timeout");
> cache_timeout(t_now);
> - D("... cache clean\n");
> + D("... cache clean");
> cache_clean();
> }
> break;
> @@ -1205,7 +1231,7 @@
> {
> Op_Getstats_Reply msg;
>
> - D("OP_GETSTATS %i\n", c->pid);
> + D("OP_GETSTATS %i", c->pid);
> stats_calc();
> msg.saved_memory = saved_memory;
> msg.wasted_memory = (real_memory - alloced_memory);
> @@ -1213,7 +1239,7 @@
> msg.wasted_memory_peak = (real_memory_peak -
> alloced_memory_peak);
> msg.saved_time_image_header_load = saved_load_lifetime +
> saved_load_time;
> msg.saved_time_image_data_load = saved_loaddata_lifetime +
> saved_loaddata_time;
> - D("... reply\n");
> + D("... reply");
> evas_cserve_client_send(c, OP_GETSTATS, sizeof(msg), (unsigned
> char *)(&msg));
> }
> break;
> @@ -1224,19 +1250,19 @@
> Eina_List *imgs = NULL, *l;
> Img *img;
>
> - D("OP_GETINFO %i\n", c->pid);
> + D("OP_GETINFO %i", c->pid);
> len = sizeof(Op_Getinfo_Reply);
> - D("... foreach\n");
> + D("... foreach");
> if (active_images)
> eina_hash_foreach(active_images, getinfo_hash_image_cb,
> &imgs);
> - D("... walk foreach list output\n");
> + D("... walk foreach list output");
> LKL(cache_lock);
> EINA_LIST_FOREACH(cache_images, l, img)
> {
> imgs = eina_list_append(imgs, img);
> }
> LKU(cache_lock);
> - D("... walk image cache\n");
> + D("... walk image cache");
> EINA_LIST_FOREACH(imgs, l, img)
> {
> len += sizeof(Op_Getinfo_Item);
> @@ -1245,13 +1271,13 @@
> if (img->file.key) len += strlen(img->file.key);
> len++;
> }
> - D("... malloc msg\n");
> + D("... malloc msg");
> msg = malloc(len);
> if (msg)
> {
> unsigned char *p;
>
> - D("... init msg\n");
> + D("... init msg");
> memset(msg, 0, len);
> p = (unsigned char *)msg;
> msg->active.mem_total = 0;
> @@ -1259,13 +1285,13 @@
> msg->cached.mem_total = 0;
> msg->cached.count = 0;
> p += sizeof(Op_Getinfo_Reply);
> - D("... walk all imgs\n");
> + D("... walk all imgs");
> EINA_LIST_FOREACH(imgs, l, img)
> {
> Op_Getinfo_Item *itt, it;
>
> LKL(img->lock);
> - D("... img %p\n", img);
> + D("... img %p", img);
> memset(&it, 0, sizeof(Op_Getinfo_Item));
> itt = (Op_Getinfo_Item *)p;
> it.file_key_size = 0;
> @@ -1315,33 +1341,33 @@
> }
> it.dead = img->dead;
> it.useless = img->useless;
> - D("... memcpy %p %p %i \n",
> + D("... memcpy %p %p %i ",
> itt, &it, sizeof(Op_Getinfo_Item));
> memcpy(itt, &it, sizeof(Op_Getinfo_Item));
> - D("... memcpy done n\n", img);
> + D("... memcpy done n", img);
> p += sizeof(Op_Getinfo_Item) + it.file_key_size;
> LKU(img->lock);
> }
> - D("... walk all imgs done\n");
> + D("... walk all imgs done");
> msg->active.mem_total =
> (msg->active.mem_total + 1023) / 1024;
> msg->cached.mem_total =
> (msg->cached.mem_total + 1023) / 1024;
> - D("... reply\n");
> + D("... reply");
> evas_cserve_client_send(c, OP_GETINFO, len, msg);
> free(msg);
> }
> else
> {
> - D("... reply empty\n");
> + D("... reply empty");
> evas_cserve_client_send(c, OP_GETINFO, 0, NULL);
> }
> - D("... free imgs list\n");
> + D("... free imgs list");
> if (imgs) eina_list_free(imgs);
> }
> break;
> default:
> - D("OP_... UNKNOWN??? %i opcode: %i\n", c->pid, opcode);
> + D("OP_... UNKNOWN??? %i opcode: %i", c->pid, opcode);
> break;
> }
> return 0;
> @@ -1466,59 +1492,59 @@
>
> unsetenv("EVAS_CSERVE");
>
> - D("eina init...\n");
> + D("eina init...");
> eina_init();
> - D("evas init...\n");
> + D("evas init...");
> evas_init();
>
> D("img init...");
> img_init();
> - D("signal init...\n");
> + D("signal init...");
> signal_init();
> - D("cserve add...\n");
> + D("cserve add...");
> s = evas_cserve_server_add();
> if (!s)
> {
> - printf("ERROR: server socket init fail. abort.\n");
> + printf("ERROR: server socket init fail. abort.");
> goto error;
> }
> - D("mem open (status)...\n");
> + D("mem open (status)...");
> stat_mem = evas_cserve_mem_open(0, 0, "status", sizeof(int), 0);
> if (stat_mem)
> {
> - printf("WARNING: previous evas_cserve left garbage. cleaning up.\n");
> + printf("WARNING: previous evas_cserve left garbage. cleaning up.");
> stat_clean(stat_mem);
> evas_cserve_mem_close(stat_mem);
> stat_mem = NULL;
> }
> - D("mem new (status)...\n");
> + D("mem new (status)...");
> stat_mem = evas_cserve_mem_new(sizeof(int), "status");
> if (!stat_mem)
> {
> - printf("ERROR: cannot create status shmseg. abort.\n");
> + printf("ERROR: cannot create status shmseg. abort.");
> goto error;
> }
> - D("init status...\n");
> + D("init status...");
> if (!stat_init(stat_mem))
> {
> - printf("ERROR: cannot init status shmseg. abort.\n");
> + printf("ERROR: cannot init status shmseg. abort.");
> evas_cserve_mem_free(stat_mem);
> stat_mem = NULL;
> goto error;
> }
>
> - D("cset server message handler...\n");
> + D("cset server message handler...");
> evas_cserve_server_message_handler_set(s, message, NULL);
> last_check = time(NULL);
> t_next = 0;
> if (cache_item_timeout_check > 0) t_next = cache_item_timeout_check;
> - D("LOOP!!! ...\n");
> + D("LOOP!!! ...");
> for (;;)
> {
> /* fixme: timeout 0 only her - future use timeouts for timed
> * housekeping */
> if (exit_flag) break;
> - D("wait for messages...\n");
> + D("wait for messages...");
> evas_cserve_server_wait(s, t_next * 1000000);
> if (exit_flag) break;
> t = time(NULL);
> @@ -1526,20 +1552,20 @@
> if ((cache_item_timeout_check > 0) &&
> ((t_next) >= cache_item_timeout_check))
> {
> - D("check timeout of items...\n");
> + D("check timeout of items...");
> t_next = cache_item_timeout_check;
>
> last_check = t;
> - D("cache timeout...\n");
> + D("cache timeout...");
> cache_timeout(t);
> - D("meminfo check...\n");
> + D("meminfo check...");
> meminfo_check();
> - D("mem cache adjust...\n");
> + D("mem cache adjust...");
> mem_cache_adjust();
> }
> if ((t_next <= 0) && (cache_item_timeout_check > 0))
> t_next = 1;
> - D("sleep for %isec...\n", t_next);
> + D("sleep for %isec...", t_next);
>
> LKL(strshr_freeme_lock);
> if (strshr_freeme_count > 0)
> @@ -1558,7 +1584,7 @@
> Eina_List *l;
> Img *img;
> Eina_List *kills = NULL;
> -
> +
> EINA_LIST_FOREACH(cache_images, l, img)
> {
> LKL(img->lock);
> @@ -1574,40 +1600,40 @@
> cache_images = eina_list_remove(cache_images, img);
> img->incache--;
> cache_usage -= img->usage;
> - D("... IMG FREE %p\n", img);
> + D("... IMG FREE %p", img);
> img_free(img);
> }
> cache_cleanme = 0;
> }
> LKU(cache_lock);
> }
> - D("end loop...\n");
> + D("end loop...");
> error:
> - D("cleanup...\n");
> + D("cleanup...");
> if (stat_mem)
> {
> - D("clean mem stat...\n");
> + D("clean mem stat...");
> stat_clean(stat_mem);
> }
> - D("signal shutdown...\n");
> + D("signal shutdown...");
> signal_shutdown();
> - D("img shutdown...\n");
> + D("img shutdown...");
> img_shutdown();
> if (stat_mem)
> {
> - D("free stat mem...\n");
> + D("free stat mem...");
> evas_cserve_mem_free(stat_mem);
> stat_mem = NULL;
> }
> if (s)
> {
> - D("del server...\n");
> + D("del server...");
> evas_cserve_server_del(s);
> }
> - D("evas shutdown...\n");
> + D("evas shutdown...");
> evas_shutdown();
> - D("eina shutdown...\n");
> + D("eina shutdown...");
> eina_shutdown();
> - D("exit..\n");
> + D("exit..");
> return 0;
> }
>
> Modified: trunk/evas/src/lib/cache/evas_cache_image.c
> ===================================================================
> --- trunk/evas/src/lib/cache/evas_cache_image.c 2009-09-11 13:43:02 UTC
> (rev 42405)
> +++ trunk/evas/src/lib/cache/evas_cache_image.c 2009-09-11 13:44:53 UTC
> (rev 42406)
> @@ -20,7 +20,7 @@
>
> #ifdef EVAS_CSERVE
> // FIXME: cache server and threaded preload clash badly atm - disable
> -#undef BUILD_ASYNC_PRELOAD
> +//#undef BUILD_ASYNC_PRELOAD
> #endif
>
> #ifdef BUILD_ASYNC_PRELOAD
> @@ -1243,7 +1243,6 @@
> while (preload)
> {
> pthread_mutex_lock(&mutex);
> -
> if (preload)
> {
> Evas_Cache_Preload *tmp = (Evas_Cache_Preload*) preload;
> @@ -1256,12 +1255,16 @@
>
> pthread_mutex_unlock(&mutex);
>
> + printf("load loop!\n");
> if (current)
> {
> Evas_Cache_Image *cache;
> int error;
> + int pchannel;
>
> LKL(current->lock);
> + pchannel = current->channel;
> + current->channel++;
> cache = current->cache;
>
> error = cache->func.load(current);
> @@ -1281,11 +1284,13 @@
>
> current->flags.preload = 0;
>
> + current->channel = pchannel;
> LKU(current->lock);
>
> _evas_cache_image_async_call(current);
> current = NULL;
> }
> + printf("---\n");
>
> pthread_cond_signal(&cond_done);
> }
>
> Modified: trunk/evas/src/lib/cserve/evas_cs.h
> ===================================================================
> --- trunk/evas/src/lib/cserve/evas_cs.h 2009-09-11 13:43:02 UTC (rev
> 42405)
> +++ trunk/evas/src/lib/cserve/evas_cs.h 2009-09-11 13:44:53 UTC (rev
> 42406)
> @@ -58,19 +58,24 @@
> struct _Server
> {
> char *socket_path;
> - int fd;
> Eina_List *clients;
> int (*func) (void *fdata, Server *s, Client *c, int opcode, int size,
> unsigned char *data);
> void *data;
> pid_t pid;
> int server_id;
> - int req_from, req_to;
> + // for channel 2;
> + struct {
> + int fd;
> + int req_from, req_to;
> + } ch[2];
> + void *main_handle;
> };
>
> struct _Client
> {
> Server *server;
> unsigned char *buf;
> + Client *client_main;
> int bufsize, bufalloc;
> int fd;
> unsigned char *inbuf;
> @@ -121,6 +126,7 @@
> {
> pid_t pid;
> int server_id;
> + void *handle;
> } Op_Init;
> typedef struct
> {
>
> Modified: trunk/evas/src/lib/cserve/evas_cs_client.c
> ===================================================================
> --- trunk/evas/src/lib/cserve/evas_cs_client.c 2009-09-11 13:43:02 UTC
> (rev 42405)
> +++ trunk/evas/src/lib/cserve/evas_cs_client.c 2009-09-11 13:44:53 UTC
> (rev 42406)
> @@ -49,7 +49,8 @@
>
> s = calloc(1, sizeof(Server));
> if (!s) return NULL;
> - s->fd = -1;
> + s->ch[0].fd = -1;
> + s->ch[1].fd = -1;
> snprintf(buf, sizeof(buf), "/tmp/.evas-cserve-%x", getuid());
> s->socket_path = strdup(buf);
> if (!s->socket_path)
> @@ -57,18 +58,30 @@
> free(s);
> return NULL;
> }
> - s->fd = socket(AF_UNIX, SOCK_STREAM, 0);
> - if (s->fd < 0) goto error;
> - if (fcntl(s->fd, F_SETFD, FD_CLOEXEC) < 0) goto error;
> - if (setsockopt(s->fd, SOL_SOCKET, SO_REUSEADDR, &curstate,
> sizeof(curstate)) < 0)
> + s->ch[0].fd = socket(AF_UNIX, SOCK_STREAM, 0);
> + if (s->ch[0].fd < 0) goto error;
> + if (fcntl(s->ch[0].fd, F_SETFD, FD_CLOEXEC) < 0) goto error;
> + if (setsockopt(s->ch[0].fd, SOL_SOCKET, SO_REUSEADDR, &curstate,
> sizeof(curstate)) < 0)
> goto error;
> socket_unix.sun_family = AF_UNIX;
> strncpy(socket_unix.sun_path, buf, sizeof(socket_unix.sun_path));
> socket_unix_len = LENGTH_OF_SOCKADDR_UN(&socket_unix);
> - if (connect(s->fd, (struct sockaddr *)&socket_unix, socket_unix_len) < 0)
> goto error;
> + if (connect(s->ch[0].fd, (struct sockaddr *)&socket_unix,
> socket_unix_len) < 0) goto error;
> +
> + s->ch[1].fd = socket(AF_UNIX, SOCK_STREAM, 0);
> + if (s->ch[1].fd < 0) goto error;
> + if (fcntl(s->ch[1].fd, F_SETFD, FD_CLOEXEC) < 0) goto error;
> + if (setsockopt(s->ch[1].fd, SOL_SOCKET, SO_REUSEADDR, &curstate,
> sizeof(curstate)) < 0)
> + goto error;
> + socket_unix.sun_family = AF_UNIX;
> + strncpy(socket_unix.sun_path, buf, sizeof(socket_unix.sun_path));
> + socket_unix_len = LENGTH_OF_SOCKADDR_UN(&socket_unix);
> + if (connect(s->ch[1].fd, (struct sockaddr *)&socket_unix,
> socket_unix_len) < 0) goto error;
> +
> return s;
> error:
> - if (s->fd >= 0) close(s->fd);
> + if (s->ch[0].fd >= 0) close(s->ch[0].fd);
> + if (s->ch[1].fd >= 0) close(s->ch[1].fd);
> free(s->socket_path);
> free(s);
> return NULL;
> @@ -77,13 +90,14 @@
> static void
> server_disconnect(Server *s)
> {
> - close(s->fd);
> + close(s->ch[0].fd);
> + close(s->ch[1].fd);
> free(s->socket_path);
> free(s);
> }
>
> static int
> -server_send(Server *s, int opcode, int size, unsigned char *data)
> +server_send(Server *s, int channel, int opcode, int size, unsigned char
> *data)
> {
> int ints[3];
> int num;
> @@ -91,9 +105,9 @@
> pipe_handle(1);
> ints[0] = size;
> ints[1] = opcode;
> - s->req_to++;
> - ints[2] = s->req_to;
> - num = write(s->fd, ints, (sizeof(int) * 3));
> + s->ch[channel].req_to++;
> + ints[2] = s->ch[channel].req_to;
> + num = write(s->ch[channel].fd, ints, (sizeof(int) * 3));
> if (num < 0)
> {
> pipe_handle(0);
> @@ -101,7 +115,7 @@
> cserve = NULL;
> return 0;
> }
> - num = write(s->fd, data, size);
> + num = write(s->ch[channel].fd, data, size);
> if (num < 0)
> {
> pipe_handle(0);
> @@ -114,12 +128,12 @@
> }
>
> static unsigned char *
> -server_read(Server *s, int *opcode, int *size)
> +server_read(Server *s, int channel, int *opcode, int *size)
> {
> int ints[3], num, left;
> unsigned char *data;
>
> - num = read(s->fd, ints, sizeof(int) * 3);
> + num = read(s->ch[channel].fd, ints, sizeof(int) * 3);
> if (num != (sizeof(int) * 3))
> {
> if (cserve) server_disconnect(cserve);
> @@ -129,18 +143,18 @@
> *size = ints[0];
> *opcode = ints[1];
> if ((*size < 0) || (*size > (1024 * 1024))) return NULL;
> - if (ints[2] != (s->req_from + 1))
> + if (ints[2] != (s->ch[channel].req_from + 1))
> {
> printf("EEK! sequence number mismatch from serer with pid: %i\n"
> "---- num %i is not 1 more than %i\n"
> ,
> - s->pid, ints[2], s->req_from);
> + s->pid, ints[2], s->ch[channel].req_from);
> return NULL;
> }
> - s->req_from++;
> + s->ch[channel].req_from++;
> data = malloc(*size);
> if (!data) return NULL;
> - num = read(s->fd, data, *size);
> + num = read(s->ch[channel].fd, data, *size);
> if (num < 0)
> {
> free(data);
> @@ -149,7 +163,7 @@
> left = *size - num;
> while (left > 0)
> {
> - num = read(s->fd, data + (*size - left), left);
> + num = read(s->ch[channel].fd, data + (*size - left), left);
> if (num < 0)
> {
> free(data);
> @@ -169,16 +183,30 @@
>
> msg.pid = getpid();
> msg.server_id = 0;
> - if (!server_send(s, OP_INIT, sizeof(msg), (unsigned char *)(&msg)))
> + msg.handle = NULL;
> + if (!server_send(s, 0, OP_INIT, sizeof(msg), (unsigned char *)(&msg)))
> return 0;
> - rep = (Op_Init *)server_read(s, &opcode, &size);
> + rep = (Op_Init *)server_read(s, 0, &opcode, &size);
> if ((rep) && (opcode == OP_INIT) && (size == sizeof(Op_Init)))
> {
> s->pid = rep->pid;
> s->server_id = rep->server_id;
> + s->main_handle = rep->handle;
> + connect_num++;
> + msg.pid = getpid();
> + msg.server_id = 1;
> + msg.handle = rep->handle;
> free(rep);
> - connect_num++;
> - return 1;
> + if (!server_send(s, 1, OP_INIT, sizeof(msg), (unsigned char
> *)(&msg)))
> + return 0;
> + rep = (Op_Init *)server_read(s, 1, &opcode, &size);
> + if ((rep) && (opcode == OP_INIT) && (size == sizeof(Op_Init)))
> + {
> + free(rep);
> + return 1;
> + }
> + if (rep) free(rep);
> + return 0;
> }
> if (rep) free(rep);
> return 0;
> @@ -286,7 +314,7 @@
> strcpy(buf + sizeof(msg), file);
> strcpy(buf + sizeof(msg) + flen, key);
> if (!buf) return 0;
> - if (!server_send(cserve, OP_LOAD,
> + if (!server_send(cserve, ie->channel, OP_LOAD,
> sizeof(msg) + flen + klen,
> buf))
> {
> @@ -295,7 +323,7 @@
> }
> free(buf);
> if (!cserve) return 0;
> - rep = (Op_Load_Reply *)server_read(cserve, &opcode, &size);
> + rep = (Op_Load_Reply *)server_read(cserve, ie->channel, &opcode, &size);
> if ((rep) && (opcode == OP_LOAD) && (size == sizeof(Op_Load_Reply)))
> {
> ie->w = rep->image.w;
> @@ -332,10 +360,10 @@
> memset(&msg, 0, sizeof(msg));
> msg.handle = ie->data1;
> msg.server_id = cserve->server_id;
> - if (!server_send(cserve, OP_LOADDATA, sizeof(msg), (unsigned char
> *)(&msg)))
> + if (!server_send(cserve, ie->channel, OP_LOADDATA, sizeof(msg), (unsigned
> char *)(&msg)))
> return 0;
> if (!cserve) return 0;
> - rep = (Op_Loaddata_Reply *)server_read(cserve, &opcode, &size);
> + rep = (Op_Loaddata_Reply *)server_read(cserve, ie->channel, &opcode,
> &size);
> if ((rep) && (opcode == OP_LOADDATA) && (size ==
> sizeof(Op_Loaddata_Reply)))
> {
> if (rep->mem.size <= 0)
> @@ -369,7 +397,7 @@
> if (ie->connect_num == connect_num)
> {
> if (ie->server_id == cserve->server_id)
> - server_send(cserve, OP_UNLOAD, sizeof(msg), (unsigned char
> *)(&msg));
> + server_send(cserve, ie->channel, OP_UNLOAD, sizeof(msg),
> (unsigned char *)(&msg));
> }
> }
> ie->data1 = NULL;
> @@ -394,7 +422,7 @@
> if (ie->connect_num == connect_num)
> {
> if (ie->server_id == cserve->server_id)
> - server_send(cserve, OP_UNLOADDATA, sizeof(msg), (unsigned char
> *)(&msg));
> + server_send(cserve, ie->channel, OP_UNLOADDATA, sizeof(msg),
> (unsigned char *)(&msg));
> }
> }
>
> @@ -416,7 +444,7 @@
> if (ie->connect_num == connect_num)
> {
> if (ie->server_id == cserve->server_id)
> - server_send(cserve, OP_USELESSDATA, sizeof(msg), (unsigned char
> *)(&msg));
> + server_send(cserve, ie->channel, OP_USELESSDATA, sizeof(msg),
> (unsigned char *)(&msg));
> }
> }
>
> @@ -429,8 +457,8 @@
> if (csrve_init > 0) server_reinit();
> else return 0;
> if (!cserve) return 0;
> - if (!server_send(cserve, OP_GETCONFIG, 0, NULL)) return 0;
> - rep = (Op_Getconfig_Reply *)server_read(cserve, &opcode, &size);
> + if (!server_send(cserve, 0, OP_GETCONFIG, 0, NULL)) return 0;
> + rep = (Op_Getconfig_Reply *)server_read(cserve, 0, &opcode, &size);
> if ((rep) && (opcode == OP_GETCONFIG) && (size ==
> sizeof(Op_Getconfig_Reply)))
> {
> memcpy(config, rep, sizeof(Op_Getconfig_Reply));
> @@ -447,7 +475,7 @@
> if (csrve_init > 0) server_reinit();
> else return 0;
> if (!cserve) return 0;
> - if (!server_send(cserve, OP_SETCONFIG, sizeof(Op_Setconfig), (unsigned
> char *)config)) return 0;
> + if (!server_send(cserve, 0, OP_SETCONFIG, sizeof(Op_Setconfig), (unsigned
> char *)config)) return 0;
> return 1;
> }
>
> @@ -460,8 +488,8 @@
> if (csrve_init > 0) server_reinit();
> else return 0;
> if (!cserve) return 0;
> - if (!server_send(cserve, OP_GETSTATS, 0, NULL)) return 0;
> - rep = (Op_Getstats_Reply *)server_read(cserve, &opcode, &size);
> + if (!server_send(cserve, 0, OP_GETSTATS, 0, NULL)) return 0;
> + rep = (Op_Getstats_Reply *)server_read(cserve, 0, &opcode, &size);
> if ((rep) && (opcode == OP_GETSTATS) && (size ==
> sizeof(Op_Getstats_Reply)))
> {
> memcpy(stats, rep, sizeof(Op_Getstats_Reply));
> @@ -481,8 +509,8 @@
> if (csrve_init > 0) server_reinit();
> else return NULL;
> if (!cserve) return NULL;
> - if (!server_send(cserve, OP_GETINFO, 0, NULL)) return NULL;
> - rep = (Op_Getinfo_Reply *)server_read(cserve, &opcode, &size);
> + if (!server_send(cserve, 0, OP_GETINFO, 0, NULL)) return NULL;
> + rep = (Op_Getinfo_Reply *)server_read(cserve, 0, &opcode, &size);
> if ((rep) && (opcode == OP_GETINFO) && (size >= sizeof(Op_Getinfo_Reply)))
> {
> return rep;
>
> Modified: trunk/evas/src/lib/cserve/evas_cs_server.c
> ===================================================================
> --- trunk/evas/src/lib/cserve/evas_cs_server.c 2009-09-11 13:43:02 UTC
> (rev 42405)
> +++ trunk/evas/src/lib/cserve/evas_cs_server.c 2009-09-11 13:44:53 UTC
> (rev 42406)
> @@ -18,7 +18,7 @@
>
> s = calloc(1, sizeof(Server));
> if (!s) return NULL;
> - s->fd = -1;
> + s->ch[0].fd = -1;
> snprintf(buf, sizeof(buf), "/tmp/.evas-cserve-%x", getuid());
> s->socket_path = strdup(buf);
> if (!s->socket_path)
> @@ -28,34 +28,34 @@
> }
> pmode = umask(~(S_IRUSR | S_IWUSR));
> start:
> - s->fd = socket(AF_UNIX, SOCK_STREAM, 0);
> - if (s->fd < 0) goto error;
> - if (fcntl(s->fd, F_SETFL, O_NONBLOCK) < 0) goto error;
> - if (fcntl(s->fd, F_SETFD, FD_CLOEXEC) < 0) goto error;
> + s->ch[0].fd = socket(AF_UNIX, SOCK_STREAM, 0);
> + if (s->ch[0].fd < 0) goto error;
> + if (fcntl(s->ch[0].fd, F_SETFL, O_NONBLOCK) < 0) goto error;
> + if (fcntl(s->ch[0].fd, F_SETFD, FD_CLOEXEC) < 0) goto error;
> lin.l_onoff = 1;
> lin.l_linger = 0;
> - if (setsockopt(s->fd, SOL_SOCKET, SO_LINGER, &lin, sizeof(struct linger))
> < 0)
> + if (setsockopt(s->ch[0].fd, SOL_SOCKET, SO_LINGER, &lin, sizeof(struct
> linger)) < 0)
> goto error;
> socket_unix.sun_family = AF_UNIX;
> strncpy(socket_unix.sun_path, buf, sizeof(socket_unix.sun_path));
> socket_unix_len = LENGTH_OF_SOCKADDR_UN(&socket_unix);
> - if (bind(s->fd, (struct sockaddr *)&socket_unix, socket_unix_len) < 0)
> + if (bind(s->ch[0].fd, (struct sockaddr *)&socket_unix, socket_unix_len) <
> 0)
> {
> - if ((connect(s->fd, (struct sockaddr *)&socket_unix,
> socket_unix_len) < 0) &&
> + if ((connect(s->ch[0].fd, (struct sockaddr *)&socket_unix,
> socket_unix_len) < 0) &&
> (unlink(s->socket_path) >= 0))
> {
> - close(s->fd);
> + close(s->ch[0].fd);
> goto start;
> }
> else
> goto error;
> }
> - if (listen(s->fd, 4096) < 0) goto error;
> + if (listen(s->ch[0].fd, 4096) < 0) goto error;
> umask(pmode);
> return s;
> error:
> umask(pmode);
> - if (s->fd >= 0) close(s->fd);
> + if (s->ch[0].fd >= 0) close(s->ch[0].fd);
> free(s->socket_path);
> free(s);
> return NULL;
> @@ -75,7 +75,7 @@
> LKD(c->lock);
> free(c);
> }
> - close(s->fd);
> + close(s->ch[0].fd);
> unlink(s->socket_path);
> free(s->socket_path);
> free(s);
> @@ -90,7 +90,7 @@
> size_t size_in;
>
> size_in = sizeof(struct sockaddr_in);
> - new_fd = accept(s->fd, (struct sockaddr *)&incoming, (socklen_t
> *)&size_in);
> + new_fd = accept(s->ch[0].fd, (struct sockaddr *)&incoming, (socklen_t
> *)&size_in);
> if (new_fd < 0) return;
> fcntl(new_fd, F_SETFL, O_NONBLOCK);
> fcntl(new_fd, F_SETFD, FD_CLOEXEC);
> @@ -315,8 +315,8 @@
> FD_ZERO(&rset);
> FD_ZERO(&wset);
> FD_ZERO(&xset);
> - FD_SET(s->fd, &rset);
> - if (s->fd > maxfd) maxfd = s->fd;
> + FD_SET(s->ch[0].fd, &rset);
> + if (s->ch[0].fd > maxfd) maxfd = s->ch[0].fd;
> EINA_LIST_FOREACH(s->clients, l, c)
> {
> FD_SET(c->fd, &rset);
> @@ -360,7 +360,7 @@
> if (c->dead) dead = eina_list_append(dead, c);
> }
> }
> - if (FD_ISSET(s->fd, &rset))
> + if (FD_ISSET(s->ch[0].fd, &rset))
> {
> server_accept(s);
> }
>
> Modified: trunk/evas/src/lib/include/evas_common.h
> ===================================================================
> --- trunk/evas/src/lib/include/evas_common.h 2009-09-11 13:43:02 UTC (rev
> 42405)
> +++ trunk/evas/src/lib/include/evas_common.h 2009-09-11 13:44:53 UTC (rev
> 42406)
> @@ -166,6 +166,7 @@
> /* use exact rects for updates not tiles */
> /* #define RECTUPDATE */
> #define TILESIZE 8
> +#define IMG_MAX_SIZE 65536
>
> #ifdef BUILD_SMALL_DITHER_MASK
> # define DM_TABLE _evas_dither_44
> @@ -477,6 +478,7 @@
> void *data1, *data2;
> int server_id;
> int connect_num;
> + int channel;
> };
>
> struct _Engine_Image_Entry
>
> Modified: trunk/evas/src/modules/loaders/edb/evas_image_load_edb.c
> ===================================================================
> --- trunk/evas/src/modules/loaders/edb/evas_image_load_edb.c 2009-09-11
> 13:43:02 UTC (rev 42405)
> +++ trunk/evas/src/modules/loaders/edb/evas_image_load_edb.c 2009-09-11
> 13:44:53 UTC (rev 42406)
> @@ -56,7 +56,7 @@
> }
> w = header[1];
> h = header[2];
> - if ((w < 1) || (h < 1) || (w > 8192) || (h > 8192))
> + if ((w < 1) || (h < 1) || (w > IMG_MAX_SIZE) || (h > IMG_MAX_SIZE))
> {
> free(ret);
> e_db_close(db);
> @@ -120,7 +120,7 @@
> }
> w = header[1];
> h = header[2];
> - if ((w < 1) || (h < 1) || (w > 8192) || (h > 8192))
> + if ((w < 1) || (h < 1) || (w > IMG_MAX_SIZE) || (h > IMG_MAX_SIZE))
> {
> free(ret);
> e_db_close(db);
>
> Modified: trunk/evas/src/modules/loaders/gif/evas_image_load_gif.c
> ===================================================================
> --- trunk/evas/src/modules/loaders/gif/evas_image_load_gif.c 2009-09-11
> 13:43:02 UTC (rev 42405)
> +++ trunk/evas/src/modules/loaders/gif/evas_image_load_gif.c 2009-09-11
> 13:44:53 UTC (rev 42406)
> @@ -65,7 +65,7 @@
> }
> w = gif->Image.Width;
> h = gif->Image.Height;
> - if ((w < 1) || (h < 1) || (w > 8192) || (h > 8192))
> + if ((w < 1) || (h < 1) || (w > IMG_MAX_SIZE) || (h > IMG_MAX_SIZE))
> {
> DGifCloseFile(gif);
> return 0;
>
> Modified: trunk/evas/src/modules/loaders/jpeg/evas_image_load_jpeg.c
> ===================================================================
> --- trunk/evas/src/modules/loaders/jpeg/evas_image_load_jpeg.c
> 2009-09-11 13:43:02 UTC (rev 42405)
> +++ trunk/evas/src/modules/loaders/jpeg/evas_image_load_jpeg.c
> 2009-09-11 13:44:53 UTC (rev 42406)
> @@ -104,7 +104,7 @@
> /* head decoding */
> w = cinfo.output_width;
> h = cinfo.output_height;
> - if ((w < 1) || (h < 1) || (w > 8192) || (h > 8192))
> + if ((w < 1) || (h < 1) || (w > IMG_MAX_SIZE) || (h > IMG_MAX_SIZE))
> {
> jpeg_destroy_decompress(&cinfo);
> return 0;
>
> Modified: trunk/evas/src/modules/loaders/png/evas_image_load_png.c
> ===================================================================
> --- trunk/evas/src/modules/loaders/png/evas_image_load_png.c 2009-09-11
> 13:43:02 UTC (rev 42405)
> +++ trunk/evas/src/modules/loaders/png/evas_image_load_png.c 2009-09-11
> 13:44:53 UTC (rev 42406)
> @@ -85,7 +85,7 @@
> png_get_IHDR(png_ptr, info_ptr, (png_uint_32 *) (&w32),
> (png_uint_32 *) (&h32), &bit_depth, &color_type,
> &interlace_type, NULL, NULL);
> - if ((w32 < 1) || (h32 < 1) || (w32 > 8192) || (h32 > 8192))
> + if ((w32 < 1) || (h32 < 1) || (w32 > IMG_MAX_SIZE) || (h32 >
> IMG_MAX_SIZE))
> {
> png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
> goto close_file;
>
> Modified: trunk/evas/src/modules/loaders/svg/evas_image_load_svg.c
> ===================================================================
> --- trunk/evas/src/modules/loaders/svg/evas_image_load_svg.c 2009-09-11
> 13:43:02 UTC (rev 42405)
> +++ trunk/evas/src/modules/loaders/svg/evas_image_load_svg.c 2009-09-11
> 13:44:53 UTC (rev 42406)
> @@ -85,7 +85,7 @@
> rsvg_handle_get_dimensions(rsvg, &dim);
> w = dim.width;
> h = dim.height;
> - if ((w < 1) || (h < 1) || (w > 8192) || (h > 8192))
> + if ((w < 1) || (h < 1) || (w > IMG_MAX_SIZE) || (h > IMG_MAX_SIZE))
> {
> // rsvg_handle_close(rsvg, NULL);
> g_object_unref(rsvg);
> @@ -183,7 +183,7 @@
> rsvg_handle_get_dimensions(rsvg, &dim);
> w = dim.width;
> h = dim.height;
> - if ((w < 1) || (h < 1) || (w > 8192) || (h > 8192))
> + if ((w < 1) || (h < 1) || (w > IMG_MAX_SIZE) || (h > IMG_MAX_SIZE))
> {
> // rsvg_handle_close(rsvg, NULL);
> g_object_unref(rsvg);
>
> Modified: trunk/evas/src/modules/loaders/tiff/evas_image_load_tiff.c
> ===================================================================
> --- trunk/evas/src/modules/loaders/tiff/evas_image_load_tiff.c
> 2009-09-11 13:43:02 UTC (rev 42405)
> +++ trunk/evas/src/modules/loaders/tiff/evas_image_load_tiff.c
> 2009-09-11 13:44:53 UTC (rev 42406)
> @@ -174,7 +174,7 @@
> if (tiff_image.alpha != EXTRASAMPLE_UNSPECIFIED)
> ie->flags.alpha = 1;
> if ((tiff_image.width < 1) || (tiff_image.height < 1) ||
> - (tiff_image.width > 8192) || (tiff_image.height > 8192))
> + (tiff_image.width > IMG_MAX_SIZE) || (tiff_image.height >
> IMG_MAX_SIZE))
> {
> TIFFClose(tif);
> return 0;
>
> Modified: trunk/evas/src/modules/loaders/xpm/evas_image_load_xpm.c
> ===================================================================
> --- trunk/evas/src/modules/loaders/xpm/evas_image_load_xpm.c 2009-09-11
> 13:43:02 UTC (rev 42405)
> +++ trunk/evas/src/modules/loaders/xpm/evas_image_load_xpm.c 2009-09-11
> 13:44:53 UTC (rev 42406)
> @@ -227,19 +227,19 @@
> xpm_parse_done();
> return 0;
> }
> - if ((w > 8192) || (w < 1))
> + if ((w > IMG_MAX_SIZE) || (w < 1))
> {
> fprintf(stderr,
> - "XPM ERROR: Image width > 8192 or < 1
> pixels for file\n");
> + "XPM ERROR: Image width > IMG_MAX_SIZE
> or < 1 pixels for file\n");
> free(line);
> fclose(f);
> xpm_parse_done();
> return 0;
> }
> - if ((h > 8192) || (h < 1))
> + if ((h > IMG_MAX_SIZE) || (h < 1))
> {
> fprintf(stderr,
> - "XPM ERROR: Image height > 8192 or < 1
> pixels for file\n");
> + "XPM ERROR: Image height > IMG_MAX_SIZE
> or < 1 pixels for file\n");
> free(line);
> fclose(f);
> xpm_parse_done();
>
>
> ------------------------------------------------------------------------------
> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
> trial. Simplify your report design, integration and deployment - and focus on
> what you do best, core application coding. Discover what's new with
> Crystal Reports now. http://p.sf.net/sfu/bobj-july
> _______________________________________________
> enlightenment-svn mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/enlightenment-svn
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel