path: root/src/lib/evas/include/evas_private.h
diff options
authorCarsten Haitzler (Rasterman) <>2016-12-30 18:55:55 +0900
committerCarsten Haitzler (Rasterman) <>2017-01-02 18:53:56 +0900
commitb0530aba4f777352cc3ae9772fb1d22f598679a5 (patch)
tree38537cbffe97e5fd1fc2b94209fcc8c66a0d1167 /src/lib/evas/include/evas_private.h
parent5a9c6d393aeda99d2691953dc978ec8b5f905fa7 (diff)
evas cutouts - quickly avoid huge per issues with large nos of cutouts
i found evas_common_draw_context_apply_cutouts() was procsessing 300+ cutouts and as it's O(n^2)/2 to try and merge adjacent rects for cutouts this really performs like complete junk. we apply cutout rects a LOT. this is not the best solution, but it's quick and much faster than doing the clipouts which drop framerate to like 1-2fps or so in the nasty case i say (tyls -m of photos in a dir with a 2160 high terminal). this figures out the target area to limit the count of rects significantly so O(n^2) is far far better when n is now < 10 most of the time. and for the few operations where it's a high value this now uses qsort to speed up merges etc. etc. @optimize
Diffstat (limited to 'src/lib/evas/include/evas_private.h')
1 files changed, 1 insertions, 0 deletions
diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h
index 7221306aae..b75ef49613 100644
--- a/src/lib/evas/include/evas_private.h
+++ b/src/lib/evas/include/evas_private.h
@@ -1375,6 +1375,7 @@ struct _Evas_Func
1375 int (*context_multiplier_get) (void *data, void *context, int *r, int *g, int *b, int *a); 1375 int (*context_multiplier_get) (void *data, void *context, int *r, int *g, int *b, int *a);
1376 void (*context_cutout_add) (void *data, void *context, int x, int y, int w, int h); 1376 void (*context_cutout_add) (void *data, void *context, int x, int y, int w, int h);
1377 void (*context_cutout_clear) (void *data, void *context); 1377 void (*context_cutout_clear) (void *data, void *context);
1378 void (*context_cutout_target) (void *data, void *context, int x, int y, int w, int h);
1378 void (*context_anti_alias_set) (void *data, void *context, unsigned char aa); 1379 void (*context_anti_alias_set) (void *data, void *context, unsigned char aa);
1379 unsigned char (*context_anti_alias_get) (void *data, void *context); 1380 unsigned char (*context_anti_alias_get) (void *data, void *context);
1380 void (*context_color_interpolation_set) (void *data, void *context, int color_space); 1381 void (*context_color_interpolation_set) (void *data, void *context, int color_space);