evas_event_callback_all_del(eo_e);
evas_event_callback_cleanup(eo_e);
+ /* Ector surface may require an existing output to finish its job */
+ e->engine.func->ector_destroy(_evas_engine_context(e), e->ector);
/* cleanup engine backend */
EINA_LIST_FREE(e->outputs, evo) efl_canvas_output_del(evo);
e->engine.func->engine_free(e->backend);
}
Ector_Surface *
-evas_ector_get(Evas_Public_Data *e, void *output)
+evas_ector_get(Evas_Public_Data *e)
{
- Efl_Canvas_Output *r;
- Eina_List *l;
-
- EINA_LIST_FOREACH(e->outputs, l, r)
- if (r->output == output)
- {
- if (!r->ector)
- r->ector = e->engine.func->ector_create(_evas_engine_context(e), output);
- return r->ector;
- }
- return NULL;
+ if (!e->ector)
+ e->ector = e->engine.func->ector_create(_evas_engine_context(e));
+ return e->ector;
}
EAPI Evas_BiDi_Direction
int x, int y, Eina_Bool do_async)
{
Evas_VG_Data *vd = type_private_data;
- Ector_Surface *ector = evas_ector_get(obj->layer->evas, output);
+ Ector_Surface *ector = evas_ector_get(obj->layer->evas);
// FIXME: Set context (that should affect Ector_Surface) and
// then call Ector_Renderer render from bottom to top. Get the
// Ector_Surface that match the output from Evas engine API.
}
// FIXME: handle damage only on changed renderer.
- s = evas_ector_get(obj->layer->evas, _evas_default_output_get(obj->layer->evas));
+ s = evas_ector_get(obj->layer->evas);
if (vd->root && s)
_evas_vg_render_pre(vd->root, s, NULL);
if (e->engine.func)
{
- e->engine.func->ector_destroy(_evas_engine_context(e),
- output->ector);
e->engine.func->output_free(_evas_engine_context(e),
output->output);
free(output->info);
Eina_Array *cur_device;
void *backend;
+ Ector_Surface *ector;
Eina_List *outputs;
Evas_Device *default_seat;
{
Eo *canvas;
- Ector_Surface *ector;
-
Evas_Engine_Info *info;
void *output;
void (*texture_image_set) (void *engine, void *texture, void *image);
void *(*texture_image_get) (void *engine, void *texture);
- Ector_Surface *(*ector_create) (void *engine, void *output);
+ Ector_Surface *(*ector_create) (void *engine);
void (*ector_destroy) (void *engine, Ector_Surface *surface);
Ector_Buffer *(*ector_buffer_wrap) (void *engine, Evas *e, void *engine_image);
Ector_Buffer *(*ector_buffer_new) (void *engine, Evas *e, int width, int height, Efl_Gfx_Colorspace cspace, Ector_Buffer_Flag flags);
void _efl_gfx_map_update(Eo *eo_obj);
/* Ector */
-Ector_Surface *evas_ector_get(Evas_Public_Data *evas, void *output);
+Ector_Surface *evas_ector_get(Evas_Public_Data *evas);
/* Temporary save/load functions */
void evas_common_load_model_from_file(Evas_Canvas3D_Mesh *model, const char *file);
static Eina_Bool use_gl = EINA_FALSE;
static Ector_Surface *
-eng_ector_create(void *engine EINA_UNUSED, void *output EINA_UNUSED)
+eng_ector_create(void *engine EINA_UNUSED)
{
Ector_Surface *ector;
const char *ector_backend;
static Eina_Bool use_cairo;
static Ector_Surface *
-eng_ector_create(void *engine EINA_UNUSED, void *output EINA_UNUSED)
+eng_ector_create(void *engine EINA_UNUSED)
{
Ector_Surface *ector;
const char *ector_backend;
+
ector_backend = getenv("ECTOR_BACKEND");
efl_domain_current_push(EFL_ID_DOMAIN_SHARED);
if (ector_backend && !strcasecmp(ector_backend, "default"))