evas: add support for alternate Ector rasterizer based on FreeType.

This commit is contained in:
Cedric BAIL 2015-04-03 16:31:48 +02:00
parent b5c0b676e2
commit e4b5167861
1 changed files with 25 additions and 3 deletions

View File

@ -19,6 +19,7 @@
#include "Evas_Engine_Software_Generic.h" #include "Evas_Engine_Software_Generic.h"
#include "cairo/Ector_Cairo.h" #include "cairo/Ector_Cairo.h"
#include "software/Ector_Software.h"
#include "ector_cairo_software_surface.eo.h" #include "ector_cairo_software_surface.eo.h"
@ -3452,13 +3453,26 @@ eng_output_idle_flush(void *data)
} }
static Ector_Surface *_software_ector = NULL; static Ector_Surface *_software_ector = NULL;
static Eina_Bool use_cairo;
static Ector_Surface * static Ector_Surface *
eng_ector_get(void *data EINA_UNUSED) eng_ector_get(void *data EINA_UNUSED)
{ {
if (!_software_ector) if (!_software_ector)
{ {
_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; return _software_ector;
} }
@ -3603,8 +3617,16 @@ _draw_thread_ector_surface_set(void *data)
h = surface->cache_entry.h; h = surface->cache_entry.h;
} }
eo_do(_software_ector, if (use_cairo)
ector_cairo_software_surface_set(pixels, w, h)); {
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(); evas_common_cpu_end_opt();