evas_event_callback_all_del(eo_e);
evas_event_callback_cleanup(eo_e);
+ /* cleanup engine backend */
EINA_LIST_FREE(e->outputs, evo) efl_canvas_output_del(evo);
+ e->engine.func->engine_free(e->backend);
if (e->common_init)
{
if (e->engine.module) evas_module_unref(e->engine.module);
e->engine.module = em;
evas_module_ref(em);
+
+ /* Initialize the engine first */
+ e->backend = e->engine.func->engine_new();
+
/* get the engine info struct */
if (e->engine.func->info_size)
{
obj->cur->cache.clip.w,
obj->cur->cache.clip.h);
if ((w > 0) && (h > 0))
- obj->layer->evas->engine.func->output_redraws_rect_add(ENC, ENDT,
+ obj->layer->evas->engine.func->output_redraws_rect_add(ENC,
x + e->framespace.x,
y + e->framespace.y,
w, h);
obj->prev->cache.clip.w,
obj->prev->cache.clip.h);
if ((w > 0) && (h > 0))
- obj->layer->evas->engine.func->output_redraws_rect_add(ENC, ENDT,
+ obj->layer->evas->engine.func->output_redraws_rect_add(ENC,
x + e->framespace.x,
y + e->framespace.y,
w, h);
obj->cur->cache.clip.w,
obj->cur->cache.clip.h);
if ((w > 0) && (h > 0))
- obj->layer->evas->engine.func->output_redraws_rect_add(ENC, ENDT,
+ obj->layer->evas->engine.func->output_redraws_rect_add(ENC,
x + e->framespace.x,
y + e->framespace.y,
w, h);
obj->prev->cache.clip.w,
obj->prev->cache.clip.h);
if ((w > 0) && (h > 0))
- obj->layer->evas->engine.func->output_redraws_rect_add(ENC, ENDT,
+ obj->layer->evas->engine.func->output_redraws_rect_add(ENC,
x + e->framespace.x,
y + e->framespace.y,
w, h);
_evas_render_prev_cur_clip_cache_add(Evas_Public_Data *evas, Evas_Object_Protected_Data *obj)
{
// FIXME: Iterate over each output
- ENFN->output_redraws_rect_add(ENC, ENDT,
+ ENFN->output_redraws_rect_add(ENC,
obj->prev->cache.clip.x + evas->framespace.x,
obj->prev->cache.clip.y + evas->framespace.y,
obj->prev->cache.clip.w,
obj->prev->cache.clip.h);
- ENFN->output_redraws_rect_add(ENC, ENDT,
+ ENFN->output_redraws_rect_add(ENC,
obj->cur->cache.clip.x + evas->framespace.x,
obj->cur->cache.clip.y + evas->framespace.y,
obj->cur->cache.clip.w,
obj->prev->clipper->prev->cache.clip.w,
obj->prev->clipper->prev->cache.clip.h);
}
- ENFN->output_redraws_rect_add(ENC, ENDT, x + fx, y + fy, w, h);
+ ENFN->output_redraws_rect_add(ENC, x + fx, y + fy, w, h);
x = obj->map->cur.map->normal_geometry.x;
y = obj->map->cur.map->normal_geometry.y;
w = obj->map->cur.map->normal_geometry.w;
obj->cur->clipper->cur->cache.clip.w,
obj->cur->clipper->cur->cache.clip.h);
}
- ENFN->output_redraws_rect_add(ENC, ENDT, x + fx, y + fy, w, h);
+ ENFN->output_redraws_rect_add(ENC, x + fx, y + fy, w, h);
}
else if (hmap)
{
obj->prev->clipper->prev->cache.clip.w,
obj->prev->clipper->prev->cache.clip.h);
}
- ENFN->output_redraws_rect_add(ENC, ENDT, x + fx, y + fy, w, h);
+ ENFN->output_redraws_rect_add(ENC, x + fx, y + fy, w, h);
x = obj->cur->cache.clip.x;
y = obj->cur->cache.clip.y;
w = obj->cur->cache.clip.w;
obj->cur->clipper->cur->cache.clip.w,
obj->cur->clipper->cur->cache.clip.h);
}
- ENFN->output_redraws_rect_add(ENC, ENDT, x + fx, y + fy, w, h);
+ ENFN->output_redraws_rect_add(ENC, x + fx, y + fy, w, h);
}
}
// FIXME: handle multiple output
if (EINA_LIKELY((evas->update_del_redirect_array == NULL)))
{
- ENFN->output_redraws_rect_del(ENC, ENDT, x, y, w, h);
+ ENFN->output_redraws_rect_del(ENC, x, y, w, h);
}
else
{
{
// FIXME: Only add necessary rects (if object itself hasn't changed)
// FIXME: handle multiple output
- ENFN->output_redraws_rect_add(ENC, ENDT, x, y, w, h);
+ ENFN->output_redraws_rect_add(ENC, x, y, w, h);
}
end:
eina_evlog("+render_phase3", eo_e, 0.0, NULL);
EINA_LIST_FREE(e->damages, r)
{
- ENFN->output_redraws_rect_add(ENC, ENDT, r->x, r->y, r->w, r->h);
+ ENFN->output_redraws_rect_add(ENC, r->x, r->y, r->w, r->h);
eina_rectangle_free(r);
}
eina_evlog("-render_phase3", eo_e, 0.0, NULL);
eina_evlog("+render_phase4", eo_e, 0.0, NULL);
if (e->viewport.changed)
{
- ENFN->output_redraws_rect_add(ENC, ENDT, 0, 0, e->output.w, e->output.h);
+ ENFN->output_redraws_rect_add(ENC, 0, 0, e->output.w, e->output.h);
}
if (e->output.changed)
{
ENFN->output_resize(ENC, ENDT, e->output.w, e->output.h);
- ENFN->output_redraws_rect_add(ENC, ENDT, 0, 0, e->output.w, e->output.h);
+ ENFN->output_redraws_rect_add(ENC, 0, 0, e->output.w, e->output.h);
}
if ((e->output.w != e->viewport.w) || (e->output.h != e->viewport.h))
{
* which covers the Whole viewport. This is because 'framespace' is
* defined as "the space IN the viewport which is Occupied by the
* window frame" */
- ENFN->output_redraws_rect_add(ENC, ENDT,
+ ENFN->output_redraws_rect_add(ENC,
e->viewport.x, e->viewport.y,
e->viewport.w, e->viewport.h);
}
if (redraw_all)
{
- ENFN->output_redraws_rect_add(ENC, ENDT, 0, 0, e->output.w, e->output.h);
+ ENFN->output_redraws_rect_add(ENC, 0, 0, e->output.w, e->output.h);
}
eina_evlog("-render_phase4", eo_e, 0.0, NULL);
static inline void *
_evas_engine_context(Evas_Public_Data *e)
{
- // Need to split between engine context
- // and output context, use one for now.
- Efl_Canvas_Output *output;
-
- if (!e->outputs) return NULL;
- output = eina_list_data_get(e->outputs);
- return output->output;
+ return e->backend;
}
#define _EVAS_COLOR_CLAMP(x, y) do { \
Eina_List *devices;
Eina_Array *cur_device;
+ void *backend;
Eina_List *outputs;
Evas_Device *default_seat;
struct _Evas_Func
{
+ void *(*engine_new) (void);
+ void (*engine_free) (void *engine);
+
void (*output_info_setup) (void *info);
void *(*output_setup) (void *engine, void *info, unsigned int w, unsigned int h);
int (*output_update) (void *engine, void *data, void *info, unsigned int w, unsigned int h);
-
void (*output_free) (void *engine, void *data);
void (*output_resize) (void *engine, void *data, int w, int h);
- void (*output_redraws_rect_add) (void *engine, void *data, int x, int y, int w, int h);
- void (*output_redraws_rect_del) (void *engine, void *data, int x, int y, int w, int h);
+
+ /* The redraws are automatically propagated on all output */
+ void (*output_redraws_rect_add) (void *engine, int x, int y, int w, int h);
+ void (*output_redraws_rect_del) (void *engine, int x, int y, int w, int h);
+
void (*output_redraws_clear) (void *engine, void *data);
void *(*output_redraws_next_update_get) (void *engine, void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch);
void (*output_redraws_next_update_push) (void *engine, void *data, void *surface, int x, int y, int w, int h, Evas_Render_Mode render_mode);
/* engine api this module provides */
static void *
-eng_output_setup(void *engine EINA_UNUSED, void *in, unsigned int w, unsigned int h)
+eng_output_setup(void *engine, void *in, unsigned int w, unsigned int h)
{
Evas_Engine_Info_Buffer *info = in;
Outbuf *ob;
info->info.switch_data);
if (!ob) goto on_error;
- if (!evas_render_engine_software_generic_init(re, ob,
+ if (!evas_render_engine_software_generic_init(engine, re, ob,
evas_buffer_outbuf_buf_swap_mode_get,
evas_buffer_outbuf_buf_rot_get,
evas_buffer_outbuf_reconfigure,
}
static void
-eng_output_free(void *engine EINA_UNUSED, void *data)
+eng_output_free(void *engine, void *data)
{
Render_Engine *re;
if ((re = (Render_Engine *)data))
{
- evas_render_engine_software_generic_clean(re);
+ evas_render_engine_software_generic_clean(engine, re);
free(re);
}
}
int _evas_engine_drm_log_dom;
static void *
-eng_output_setup(void *engine EINA_UNUSED, void *einfo, unsigned int w, unsigned int h)
+eng_output_setup(void *engine, void *einfo, unsigned int w, unsigned int h)
{
Evas_Engine_Info_Drm *info = einfo;
Render_Engine *re;
re->dev = info->info.dev;
- if (!evas_render_engine_software_generic_init(&re->generic, ob,
+ if (!evas_render_engine_software_generic_init(engine, &re->generic, ob,
_outbuf_state_get,
_outbuf_rotation_get,
_outbuf_reconfigure,
return re;
init_err:
- evas_render_engine_software_generic_clean(&re->generic);
+ evas_render_engine_software_generic_clean(engine, &re->generic);
err:
free(re);
return NULL;
}
static void
-eng_output_free(void *engine EINA_UNUSED, void *data)
+eng_output_free(void *engine, void *data)
{
Render_Engine *re = data;
- evas_render_engine_software_generic_clean(&re->generic);
+ evas_render_engine_software_generic_clean(engine, &re->generic);
free(re);
}
}
static void *
-eng_output_setup(void *engine EINA_UNUSED, void *in, unsigned int w, unsigned int h)
+eng_output_setup(void *engine, void *in, unsigned int w, unsigned int h)
{
Evas_Engine_Info_Eglfs *info = in;
Render_Engine *re = NULL;
ob->evas = evas;
- if (!evas_render_engine_gl_generic_init(&re->generic, ob,
+ if (!evas_render_engine_gl_generic_init(engine, &re->generic, ob,
evas_outbuf_buffer_state_get,
evas_outbuf_rot_get,
evas_outbuf_reconfigure,
}
static void
-eng_output_free(void *engine EINA_UNUSED, void *data)
+eng_output_free(void *engine, void *data)
{
Render_Engine *re;
if (gl_wins == 1) glsym_evgl_engine_shutdown(re);
/* NB: evas_render_engine_software_generic_clean() frees ob */
- evas_render_engine_software_generic_clean(&re->generic.software);
+ evas_render_engine_software_generic_clean(engine, &re->generic.software);
gl_wins--;
/* engine api this module provides */
static void *
-eng_output_setup(void *engine EINA_UNUSED, void *in, unsigned int w, unsigned int h)
+eng_output_setup(void *engine, void *in, unsigned int w, unsigned int h)
{
Evas_Engine_Info_FB *info = in;
Render_Engine *re;
info->info.refresh);
if (!ob) goto on_error;
- if (!evas_render_engine_software_generic_init(re, ob, NULL,
+ if (!evas_render_engine_software_generic_init(engine, re, ob, NULL,
evas_fb_outbuf_fb_get_rot,
evas_fb_outbuf_fb_reconfigure,
NULL,
}
static void
-eng_output_free(void *engine EINA_UNUSED, void *data)
+eng_output_free(void *engine, void *data)
{
Render_Engine *re;
if (re)
{
_outbufs = eina_list_remove(_outbufs, re->ob);
- evas_render_engine_software_generic_clean(re);
+ evas_render_engine_software_generic_clean(engine, re);
free(re);
}
}
};
static void *
-eng_output_setup(void *engine EINA_UNUSED, void *in, unsigned int w, unsigned int h)
+eng_output_setup(void *engine, void *in, unsigned int w, unsigned int h)
{
Evas_Engine_Info_GL_Cocoa *const info = in;
Render_Engine *re;
info->view = ob->ns_gl_view;
- chk = evas_render_engine_gl_generic_init(&re->generic, ob,
+ chk = evas_render_engine_gl_generic_init(engine, &re->generic, ob,
evas_outbuf_buffer_state_get,
evas_outbuf_rot_get,
evas_outbuf_reconfigure,
}
static void *
-eng_output_setup(void *engine EINA_UNUSED, void *in, unsigned int w, unsigned int h)
+eng_output_setup(void *engine, void *in, unsigned int w, unsigned int h)
{
Evas_Engine_Info_GL_Drm *info = in;
Render_Engine *re = NULL;
return NULL;
}
- if (!evas_render_engine_gl_generic_init(&re->generic, ob,
+ if (!evas_render_engine_gl_generic_init(engine, &re->generic, ob,
evas_outbuf_buffer_state_get,
evas_outbuf_rot_get,
evas_outbuf_reconfigure,
}
static void
-eng_output_free(void *engine EINA_UNUSED, void *data)
+eng_output_free(void *engine, void *data)
{
Render_Engine *re;
info = eng_get_ob(re)->info;
/* NB: evas_render_engine_software_generic_clean() frees ob */
- evas_render_engine_software_generic_clean(&re->generic.software);
+ evas_render_engine_software_generic_clean(engine, &re->generic.software);
eng_gbm_shutdown(info);
gl_wins--;
};
static inline Eina_Bool
-evas_render_engine_gl_generic_init(Render_Output_GL_Generic *re,
+evas_render_engine_gl_generic_init(Render_Engine_Software_Generic *engine,
+ Render_Output_GL_Generic *re,
Outbuf *ob,
Outbuf_Swap_Mode_Get outbuf_swap_mode_get,
Outbuf_Get_Rot outbuf_get_rot,
const EVGL_Interface *evgl_funcs,
int w, int h)
{
- if (!evas_render_engine_software_generic_init(&re->software, ob,
+ if (!evas_render_engine_software_generic_init(engine, &re->software, ob,
outbuf_swap_mode_get,
outbuf_get_rot,
outbuf_reconfigure,
};
static void *
-eng_output_setup(void *engine EINA_UNUSED, void *in, unsigned int w, unsigned int h)
+eng_output_setup(void *engine, void *in, unsigned int w, unsigned int h)
{
Render_Engine *re = NULL;
Outbuf *ob = NULL;
re = calloc(1, sizeof (Render_Engine));
if (!re) goto on_error;
- if (!evas_render_engine_gl_generic_init(&re->generic, ob, NULL,
+ if (!evas_render_engine_gl_generic_init(engine, &re->generic, ob, NULL,
_outbuf_get_rot,
_outbuf_reconfigure,
_outbuf_region_first_rect,
}
static void
-eng_output_free(void *engine EINA_UNUSED, void *data)
+eng_output_free(void *engine, void *data)
{
Render_Engine *re = data;
- evas_render_engine_software_generic_clean(&re->generic.software);
+ evas_render_engine_software_generic_clean(engine, &re->generic.software);
}
static void
}
static void *
-eng_output_setup(void *engine EINA_UNUSED, void *in, unsigned int w, unsigned int h)
+eng_output_setup(void *engine, void *in, unsigned int w, unsigned int h)
{
Evas_Engine_Info_GL_X11 *info = in;
Render_Engine *re = NULL;
info->msaa_bits);
if (!ob) goto on_error;
- if (!evas_render_engine_gl_generic_init(&re->generic, ob,
+ if (!evas_render_engine_gl_generic_init(engine, &re->generic, ob,
eng_outbuf_swap_mode,
eng_outbuf_get_rot,
eng_outbuf_reconfigure,
}
static void
-eng_output_free(void *engine EINA_UNUSED, void *data)
+eng_output_free(void *engine, void *data)
{
Render_Engine *re;
if (gl_wins == 1) glsym_evgl_engine_shutdown(re);
- evas_render_engine_software_generic_clean(&re->generic.software);
+ evas_render_engine_software_generic_clean(engine, &re->generic.software);
#ifndef GL_GLES
if (glsym_glXReleaseBuffersMESA)
/* engine api this module provides */
static void *
-eng_output_setup(void *engine EINA_UNUSED, void *in, unsigned int w, unsigned int h)
+eng_output_setup(void *engine, void *in, unsigned int w, unsigned int h)
{
Evas_Engine_Info_Software_DDraw *info = in;
Render_Engine *re;
info->info.fullscreen);
if (!ob) goto on_error;
- if (!evas_render_engine_software_generic_init(&re->generic, ob, NULL,
+ if (!evas_render_engine_software_generic_init(engine, &re->generic, ob, NULL,
evas_software_ddraw_outbuf_rot_get,
evas_software_ddraw_outbuf_reconfigure,
NULL,
}
static void
-eng_output_free(void *engine EINA_UNUSED, void *data)
+eng_output_free(void *engine, void *data)
{
Render_Engine *re;
if (!data) return;
re = (Render_Engine *)data;
- evas_render_engine_software_generic_clean(&re->generic);
+ evas_render_engine_software_generic_clean(engine, &re->generic);
free(re);
}
/* engine api this module provides */
static void *
-eng_output_setup(void *engine EINA_UNUSED, void *in, unsigned int w, unsigned int h)
+eng_output_setup(void *engine, void *in, unsigned int w, unsigned int h)
{
Evas_Engine_Info_Software_Gdi *info = in;
Render_Engine *re;
0, 0);
if (!ob) goto on_error;
- if (!evas_render_engine_software_generic_init(&re->generic, ob, NULL,
+ if (!evas_render_engine_software_generic_init(engine, &re->generic, ob, NULL,
evas_software_gdi_outbuf_rot_get,
evas_software_gdi_outbuf_reconfigure,
NULL,
}
static void
-eng_output_free(void *engine EINA_UNUSED, void *data)
+eng_output_free(void *engine, void *data)
{
Render_Engine *re;
if (!data) return;
re = (Render_Engine *)data;
- evas_render_engine_software_generic_clean(&re->generic);
+ evas_render_engine_software_generic_clean(engine, &re->generic);
free(re);
}
MERGE_SMART = 4
} Render_Output_Merge_Mode;
+typedef struct _Render_Engine_Software_Generic Render_Engine_Software_Generic;
typedef struct _Render_Output_Software_Generic Render_Output_Software_Generic;
typedef struct _Outbuf Outbuf;
unsigned char tile_strict : 1;
};
+struct _Render_Engine_Software_Generic
+{
+ Eina_List *outputs;
+
+ struct {
+ int w, h;
+ Eina_Bool strict;
+ } tile;
+};
+
static inline Eina_Bool
-evas_render_engine_software_generic_init(Render_Output_Software_Generic *re,
+evas_render_engine_software_generic_init(Render_Engine_Software_Generic *engine,
+ Render_Output_Software_Generic *re,
Outbuf *ob,
Outbuf_Swap_Mode_Get outbuf_swap_mode_get,
Outbuf_Get_Rot outbuf_get_rot,
/* in preliminary tests 16x16 gave highest framerates */
evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+ engine->outputs = eina_list_append(engine->outputs, re);
+
return EINA_TRUE;
}
static inline void
-evas_render_engine_software_generic_clean(Render_Output_Software_Generic *re)
+evas_render_engine_software_generic_clean(Render_Engine_Software_Generic *engine,
+ Render_Output_Software_Generic *re)
{
if (re->tb) evas_common_tilebuf_free(re->tb);
if (re->ob) re->outbuf_free(re->ob);
if (re->rects_prev[2]) evas_common_tilebuf_free_render_rects(re->rects_prev[2]);
if (re->rects_prev[3]) evas_common_tilebuf_free_render_rects(re->rects_prev[3]);
+ engine->outputs = eina_list_remove(engine->outputs, re);
+
memset(re, 0, sizeof (Render_Output_Software_Generic));
}
initialized by evas_render_engine_software_generic_init().
*/
+static void *
+eng_engine_new(void)
+{
+ Render_Engine_Software_Generic *engine;
+
+ engine = calloc(1, sizeof (Render_Engine_Software_Generic));
+ if (!engine) return NULL;
+
+ return engine;
+}
+
+static void
+eng_engine_free(void *engine)
+{
+ Render_Engine_Software_Generic *e = engine;
+ Render_Output_Software_Generic *output;
+
+ EINA_LIST_FREE(e->outputs, output)
+ ERR("Output %p not properly cleaned before engine destruction.", output);
+
+ free(e);
+}
+
static void
eng_output_resize(void *engine EINA_UNUSED, void *data, int w, int h)
{
}
static void
-eng_output_redraws_rect_add(void *engine EINA_UNUSED, void *data, int x, int y, int w, int h)
+eng_output_redraws_rect_add(void *engine, int x, int y, int w, int h)
{
+ Render_Engine_Software_Generic *backend = engine;
Render_Output_Software_Generic *re;
+ Eina_List *l;
- re = (Render_Output_Software_Generic *)data;
- evas_common_tilebuf_add_redraw(re->tb, x, y, w, h);
+ EINA_LIST_FOREACH(backend->outputs, l, re)
+ evas_common_tilebuf_add_redraw(re->tb, x, y, w, h);
}
static void
-eng_output_redraws_rect_del(void *engine EINA_UNUSED, void *data, int x, int y, int w, int h)
+eng_output_redraws_rect_del(void *engine, int x, int y, int w, int h)
{
+ Render_Engine_Software_Generic *backend = engine;
Render_Output_Software_Generic *re;
+ Eina_List *l;
- re = (Render_Output_Software_Generic *)data;
- evas_common_tilebuf_del_redraw(re->tb, x, y, w, h);
+ EINA_LIST_FOREACH(backend->outputs, l, re)
+ evas_common_tilebuf_del_redraw(re->tb, x, y, w, h);
}
static void
static Evas_Func func =
{
+ eng_engine_new,
+ eng_engine_free,
NULL, // eng_info_setup
NULL, // eng_setup
NULL, // eng_update
}
static void *
-_output_xlib_setup(int w, int h, int rot, Display *disp, Drawable draw,
+_output_xlib_setup(void *engine, int w, int h, int rot, Display *disp, Drawable draw,
Visual *vis, Colormap cmap, int depth, int debug,
int grayscale, int max_colors, Pixmap mask,
int shape_dither, int destination_alpha)
// re->ob->onebuf = 1;
evas_software_xlib_outbuf_debug_set(ob, debug);
- if (!evas_render_engine_software_generic_init(&re->generic, ob, NULL,
+ if (!evas_render_engine_software_generic_init(engine, &re->generic, ob, NULL,
evas_software_xlib_outbuf_get_rot,
evas_software_xlib_outbuf_reconfigure,
NULL,
}
static void *
-_output_swapbuf_setup(int w, int h, int rot, Display *disp, Drawable draw,
+_output_swapbuf_setup(void *engine, int w, int h, int rot, Display *disp, Drawable draw,
Visual *vis, Colormap cmap, int depth,
int debug EINA_UNUSED,
int grayscale, int max_colors, Pixmap mask,
destination_alpha);
if (!ob) goto on_error;
- if (!evas_render_engine_software_generic_init(&re->generic, ob,
+ if (!evas_render_engine_software_generic_init(engine, &re->generic, ob,
evas_software_xlib_swapbuf_buffer_state_get,
evas_software_xlib_swapbuf_get_rot,
evas_software_xlib_swapbuf_reconfigure,
}
static void *
-eng_output_setup(void *engine EINA_UNUSED, void *in, unsigned int w, unsigned int h)
+eng_output_setup(void *engine, void *in, unsigned int w, unsigned int h)
{
Evas_Engine_Info_Software_X11 *info = in;
Render_Engine *re = NULL;
}
if (try_swapbuf)
- re = _output_swapbuf_setup(w, h,
+ re = _output_swapbuf_setup(engine, w, h,
info->info.rotation, info->info.connection,
info->info.drawable, info->info.visual,
info->info.colormap,
if (re) re->outbuf_alpha_get = evas_software_xlib_swapbuf_alpha_get;
else
{
- re = _output_xlib_setup(w, h,
+ re = _output_xlib_setup(engine, w, h,
info->info.rotation, info->info.connection,
info->info.drawable, info->info.visual,
info->info.colormap,
}
static void
-eng_output_free(void *engine EINA_UNUSED, void *data)
+eng_output_free(void *engine, void *data)
{
Render_Engine *re;
if ((re = (Render_Engine *)data))
{
_outbufs = eina_list_remove(_outbufs, re->generic.ob);
- evas_render_engine_software_generic_clean(&re->generic);
+ evas_render_engine_software_generic_clean(engine, &re->generic);
_output_egl_shutdown(re);
free(re);
}
}
static void *
-eng_output_setup(void *engine EINA_UNUSED, void *info, unsigned int w, unsigned int h)
+eng_output_setup(void *engine, void *info, unsigned int w, unsigned int h)
{
Evas_Engine_Info_Wayland *inf = info;
Render_Engine *re;
ob = eng_window_new(inf, w, h, swap_mode);
if (!ob) goto ob_err;
- if (!evas_render_engine_gl_generic_init(&re->generic, ob,
+ if (!evas_render_engine_gl_generic_init(engine, &re->generic, ob,
eng_outbuf_swap_mode_get,
eng_outbuf_rotation_get,
eng_outbuf_reconfigure,
}
static void
-eng_output_free(void *engine EINA_UNUSED, void *data)
+eng_output_free(void *engine, void *data)
{
Render_Engine *re;
if (gl_wins == 1) glsym_evgl_engine_shutdown(re);
- evas_render_engine_software_generic_clean(&re->generic.software);
+ evas_render_engine_software_generic_clean(engine, &re->generic.software);
gl_wins--;
};
static void *
-eng_output_setup(void *engine EINA_UNUSED, void *info, unsigned int w, unsigned int h)
+eng_output_setup(void *engine, void *info, unsigned int w, unsigned int h)
{
Evas_Engine_Info_Wayland *einfo = info;
Render_Engine *re;
ob = _evas_outbuf_setup(w, h, einfo);
if (!ob) goto err;
- if (!evas_render_engine_software_generic_init(&re->generic, ob,
+ if (!evas_render_engine_software_generic_init(engine, &re->generic, ob,
_evas_outbuf_swap_mode_get,
_evas_outbuf_rotation_get,
NULL,
}
static void
-eng_output_free(void *engine EINA_UNUSED, void *data)
+eng_output_free(void *engine, void *data)
{
Render_Engine *re;
if ((re = (Render_Engine *)data))
{
- evas_render_engine_software_generic_clean(&re->generic);
+ evas_render_engine_software_generic_clean(engine, &re->generic);
free(re);
}
}