summaryrefslogtreecommitdiff
path: root/legacy/evas/src/lib/engines/common/evas_scale_sample.c
diff options
context:
space:
mode:
authorCarsten Haitzler <raster@rasterman.com>2006-11-13 23:23:44 +0000
committerCarsten Haitzler <raster@rasterman.com>2006-11-13 23:23:44 +0000
commit9781eb9b3841811efa5afff72d34001c44f2106c (patch)
tree3e7078ee2ac85d0647356ec7c80706b201466e20 /legacy/evas/src/lib/engines/common/evas_scale_sample.c
parent13ba0a5f57b6e9e0d036fa1af7e3131ede6f3aa0 (diff)
1. evas gets a pipeline with deferred rendering ability (sometimes faster,
sometimes slower) 2. --enable-pthreads will enable multi-threaded rendering (current support is for up to 4 threads so if you have a new fanled quad core or dual cpu dual core box or whatever you will in theory be able to max moe of its cpu grunt with the software rendering engine. this can only be done because i added the pipelines which means almsot entirely lock-free multithreading internally in evas. the only locks are for fonts but with a little work i might be able to remove some/most of those too) for now pthreaded rendering likely will be linux only (it relies on sched.h for setting scheduler params to force the slave threads to run on separate cpu's as linux likes to keep them on the same cpu otherwise and thus we get no speedups at all - only slowdowns). aso note that it is a bit of a mixed bag. complex ops (like smooth scaling with alpha blending) get speedups, but simple ops (like blits/fills) slow down. this all neds examination and tweaking still - but it's a start. SVN revision: 27098
Diffstat (limited to '')
-rw-r--r--legacy/evas/src/lib/engines/common/evas_scale_sample.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/legacy/evas/src/lib/engines/common/evas_scale_sample.c b/legacy/evas/src/lib/engines/common/evas_scale_sample.c
index 306997431b..c864e5d760 100644
--- a/legacy/evas/src/lib/engines/common/evas_scale_sample.c
+++ b/legacy/evas/src/lib/engines/common/evas_scale_sample.c
@@ -283,7 +283,7 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst,
283#endif 283#endif
284 { 284 {
285 /* a scanline buffer */ 285 /* a scanline buffer */
286 buf = malloc(dst_clip_w * sizeof(DATA32)); 286 buf = alloca(dst_clip_w * sizeof(DATA32));
287 if (!buf) goto no_buf; 287 if (!buf) goto no_buf;
288 288
289 for (y = 0; y < dst_clip_h; y++) 289 for (y = 0; y < dst_clip_h; y++)
@@ -299,7 +299,6 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst,
299 func(buf, NULL, dc->mul.col, dptr, dst_clip_w); 299 func(buf, NULL, dc->mul.col, dptr, dst_clip_w);
300 dptr += dst_w; 300 dptr += dst_w;
301 } 301 }
302 free(buf);
303 } 302 }
304 } 303 }
305 304