diff options
author | Cedric BAIL <cedric@osg.samsung.com> | 2015-02-10 18:05:41 +0100 |
---|---|---|
committer | ChunEon Park <chuneon.park@samsung.com> | 2015-02-11 17:00:47 +0900 |
commit | 5b6bf75ad0b6f5b86843704c490e5d19838e5997 (patch) | |
tree | 714766df2591b31eb4ea32c5dd05bbf8daf79b96 | |
parent | 23f6e759b03fd48e9aed7c6d765b4c46ac00037f (diff) | |
download | efl-5b6bf75ad0b6f5b86843704c490e5d19838e5997.tar.gz |
evas: add support for alternate Ector rasterizer based on FreeType.
Conflicts:
src/modules/evas/engines/software_generic/evas_engine.c
-rw-r--r-- | src/modules/evas/engines/software_generic/evas_engine.c | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/src/modules/evas/engines/software_generic/evas_engine.c b/src/modules/evas/engines/software_generic/evas_engine.c index 1f794eb6bd..b8d9604246 100644 --- a/src/modules/evas/engines/software_generic/evas_engine.c +++ b/src/modules/evas/engines/software_generic/evas_engine.c @@ -19,6 +19,7 @@ #include "Evas_Engine_Software_Generic.h" #include "cairo/Ector_Cairo.h" +#include "software/Ector_Software.h" #include "ector_cairo_software_surface.eo.h" @@ -3110,15 +3111,26 @@ eng_output_idle_flush(void *data) } static Ector_Surface *_software_ector = NULL; +static Eina_Bool use_cairo; static Ector_Surface * eng_ector_get(void *data EINA_UNUSED) { if (!_software_ector) { - //TODO FIX it Properly - _software_ector = eo_add(ECTOR_SOFTWARE_SURFACE_CLASS, NULL); - //_software_ector = eo_add(ECTOR_CAIRO_SOFTWARE_SURFACE_CLASS, NULL); + const char *ector_backend; + + ector_backend = getenv("ECTOR_BACKEND"); + if (ector_backend && !strcasecmp(ector_backend, "freetype")) + { + _software_ector = eo_add(ECTOR_SOFTWARE_SURFACE_CLASS, NULL); + use_cairo = EINA_FALSE; + } + else + { + _software_ector = eo_add(ECTOR_CAIRO_SOFTWARE_SURFACE_CLASS, NULL); + use_cairo = EINA_TRUE; + } } return _software_ector; } @@ -3265,8 +3277,16 @@ _draw_thread_ector_surface_set(void *data) h = surface->cache_entry.h; } - eo_do(_software_ector, - ector_cairo_software_surface_set(pixels, w, h)); + if (use_cairo) + { + eo_do(_software_ector, + ector_cairo_software_surface_set(pixels, w, h)); + } + else + { + eo_do(_software_ector, + ector_software_surface_set(pixels, w, h)); + } evas_common_cpu_end_opt(); |