summaryrefslogtreecommitdiff
path: root/src/lib/evas/common/evas_scale_sample.c
diff options
context:
space:
mode:
authorUlisses Furquim <ulisses@profusion.mobi>2013-01-11 19:57:09 +0000
committerUlisses Furquim <ulisses@profusion.mobi>2013-01-11 19:57:09 +0000
commit48c15aaa743e5fba9a909a1d9dff980369561f4d (patch)
tree3a0c082a9e0eb05c3fccdf6e320be35aa13eab35 /src/lib/evas/common/evas_scale_sample.c
parentf0f9f7b7a6dd631e0499c757147f7565d33a07ac (diff)
evas/async_render: only get a ref if a thread cmd was issued
This patch should make us get a reference on images, maps and glyphs which are sent in a command to the render thread. Before we were doing some useless ref and unref operations. SVN revision: 82666
Diffstat (limited to '')
-rw-r--r--src/lib/evas/common/evas_scale_sample.c36
1 files changed, 19 insertions, 17 deletions
diff --git a/src/lib/evas/common/evas_scale_sample.c b/src/lib/evas/common/evas_scale_sample.c
index f9fc650376..5e699dc0bb 100644
--- a/src/lib/evas/common/evas_scale_sample.c
+++ b/src/lib/evas/common/evas_scale_sample.c
@@ -1,7 +1,7 @@
1#include "evas_common.h" 1#include "evas_common.h"
2#include "evas_blend_private.h" 2#include "evas_blend_private.h"
3 3
4static void scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst, RGBA_Draw_Context *dc, int src_region_x, int src_region_y, int src_region_w, int src_region_h, int dst_region_x, int dst_region_y, int dst_region_w, int dst_region_h); 4static Eina_Bool scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst, RGBA_Draw_Context *dc, int src_region_x, int src_region_y, int src_region_w, int src_region_h, int dst_region_x, int dst_region_y, int dst_region_w, int dst_region_h);
5 5
6EAPI void 6EAPI void
7evas_common_scale_rgba_in_to_out_clip_sample(RGBA_Image *src, RGBA_Image *dst, 7evas_common_scale_rgba_in_to_out_clip_sample(RGBA_Image *src, RGBA_Image *dst,
@@ -242,7 +242,7 @@ evas_common_scale_rgba_sample_draw(RGBA_Image *src, RGBA_Image *dst, int dst_cli
242 } 242 }
243} 243}
244 244
245static void 245static Eina_Bool
246scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst, 246scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst,
247 RGBA_Draw_Context *dc, 247 RGBA_Draw_Context *dc,
248 int src_region_x, int src_region_y, 248 int src_region_x, int src_region_y,
@@ -260,9 +260,9 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst,
260 RGBA_Gfx_Func func; 260 RGBA_Gfx_Func func;
261 261
262 if (!(RECTS_INTERSECT(dst_region_x, dst_region_y, dst_region_w, dst_region_h, 0, 0, dst->cache_entry.w, dst->cache_entry.h))) 262 if (!(RECTS_INTERSECT(dst_region_x, dst_region_y, dst_region_w, dst_region_h, 0, 0, dst->cache_entry.w, dst->cache_entry.h)))
263 return; 263 return EINA_FALSE;
264 if (!(RECTS_INTERSECT(src_region_x, src_region_y, src_region_w, src_region_h, 0, 0, src->cache_entry.w, src->cache_entry.h))) 264 if (!(RECTS_INTERSECT(src_region_x, src_region_y, src_region_w, src_region_h, 0, 0, src->cache_entry.w, src->cache_entry.h)))
265 return; 265 return EINA_FALSE;
266 266
267 src_w = src->cache_entry.w; 267 src_w = src->cache_entry.w;
268 src_h = src->cache_entry.h; 268 src_h = src->cache_entry.h;
@@ -319,7 +319,7 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst,
319 if ((src_region_w <= 0) || (src_region_h <= 0) || 319 if ((src_region_w <= 0) || (src_region_h <= 0) ||
320 (dst_region_w <= 0) || (dst_region_h <= 0) || 320 (dst_region_w <= 0) || (dst_region_h <= 0) ||
321 (dst_clip_w <= 0) || (dst_clip_h <= 0)) 321 (dst_clip_w <= 0) || (dst_clip_h <= 0))
322 return; 322 return EINA_FALSE;
323 323
324 /* sanitise x */ 324 /* sanitise x */
325 if (src_region_x < 0) 325 if (src_region_x < 0)
@@ -329,21 +329,21 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst,
329 src_region_w += src_region_x; 329 src_region_w += src_region_x;
330 src_region_x = 0; 330 src_region_x = 0;
331 } 331 }
332 if (src_region_x >= src_w) return; 332 if (src_region_x >= src_w) return EINA_FALSE;
333 if ((src_region_x + src_region_w) > src_w) 333 if ((src_region_x + src_region_w) > src_w)
334 { 334 {
335 dst_region_w = (dst_region_w * (src_w - src_region_x)) / (src_region_w); 335 dst_region_w = (dst_region_w * (src_w - src_region_x)) / (src_region_w);
336 src_region_w = src_w - src_region_x; 336 src_region_w = src_w - src_region_x;
337 } 337 }
338 if (dst_region_w <= 0) return; 338 if (dst_region_w <= 0) return EINA_FALSE;
339 if (src_region_w <= 0) return; 339 if (src_region_w <= 0) return EINA_FALSE;
340 if (dst_clip_x < 0) 340 if (dst_clip_x < 0)
341 { 341 {
342 dst_clip_w += dst_clip_x; 342 dst_clip_w += dst_clip_x;
343 dst_clip_x = 0; 343 dst_clip_x = 0;
344 } 344 }
345 if (dst_clip_w <= 0) return; 345 if (dst_clip_w <= 0) return EINA_FALSE;
346 if (dst_clip_x >= dst_w) return; 346 if (dst_clip_x >= dst_w) return EINA_FALSE;
347 if (dst_clip_x < dst_region_x) 347 if (dst_clip_x < dst_region_x)
348 { 348 {
349 dst_clip_w += (dst_clip_x - dst_region_x); 349 dst_clip_w += (dst_clip_x - dst_region_x);
@@ -353,7 +353,7 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst,
353 { 353 {
354 dst_clip_w = dst_w - dst_clip_x; 354 dst_clip_w = dst_w - dst_clip_x;
355 } 355 }
356 if (dst_clip_w <= 0) return; 356 if (dst_clip_w <= 0) return EINA_FALSE;
357 357
358 /* sanitise y */ 358 /* sanitise y */
359 if (src_region_y < 0) 359 if (src_region_y < 0)
@@ -363,21 +363,21 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst,
363 src_region_h += src_region_y; 363 src_region_h += src_region_y;
364 src_region_y = 0; 364 src_region_y = 0;
365 } 365 }
366 if (src_region_y >= src_h) return; 366 if (src_region_y >= src_h) return EINA_FALSE;
367 if ((src_region_y + src_region_h) > src_h) 367 if ((src_region_y + src_region_h) > src_h)
368 { 368 {
369 dst_region_h = (dst_region_h * (src_h - src_region_y)) / (src_region_h); 369 dst_region_h = (dst_region_h * (src_h - src_region_y)) / (src_region_h);
370 src_region_h = src_h - src_region_y; 370 src_region_h = src_h - src_region_y;
371 } 371 }
372 if (dst_region_h <= 0) return; 372 if (dst_region_h <= 0) return EINA_FALSE;
373 if (src_region_h <= 0) return; 373 if (src_region_h <= 0) return EINA_FALSE;
374 if (dst_clip_y < 0) 374 if (dst_clip_y < 0)
375 { 375 {
376 dst_clip_h += dst_clip_y; 376 dst_clip_h += dst_clip_y;
377 dst_clip_y = 0; 377 dst_clip_y = 0;
378 } 378 }
379 if (dst_clip_h <= 0) return; 379 if (dst_clip_h <= 0) return EINA_FALSE;
380 if (dst_clip_y >= dst_h) return; 380 if (dst_clip_y >= dst_h) return EINA_FALSE;
381 if (dst_clip_y < dst_region_y) 381 if (dst_clip_y < dst_region_y)
382 { 382 {
383 dst_clip_h += (dst_clip_y - dst_region_y); 383 dst_clip_h += (dst_clip_y - dst_region_y);
@@ -387,7 +387,7 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst,
387 { 387 {
388 dst_clip_h = dst_h - dst_clip_y; 388 dst_clip_h = dst_h - dst_clip_y;
389 } 389 }
390 if (dst_clip_h <= 0) return; 390 if (dst_clip_h <= 0) return EINA_FALSE;
391 391
392 /* allocate scale lookup tables */ 392 /* allocate scale lookup tables */
393 lin_ptr = alloca(dst_clip_w * sizeof(int)); 393 lin_ptr = alloca(dst_clip_w * sizeof(int));
@@ -491,4 +491,6 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst,
491 } 491 }
492 } 492 }
493 } 493 }
494
495 return EINA_TRUE;
494} 496}