ob->w, ob->h))
goto init_err;
+ evas_render_engine_software_generic_merge_mode_set(&re->generic);
+
+ re->generic.ob->info = einfo;
+
return re;
init_err:
einfo->render_mode = EVAS_RENDER_MODE_BLOCKING;
}
-static int
-eng_output_update(void *engine EINA_UNUSED, void *data, void *einfo, unsigned int w, unsigned int h)
+static void
+eng_output_resize(void *engine EINA_UNUSED, void *data, int w, int h)
{
- Evas_Engine_Info_Drm *info = einfo;
Render_Engine *re = data;
+ Evas_Engine_Info_Drm *info;
+
+ info = re->generic.ob->info;
+ if (!info) return;
_outbuf_reconfigure(re->generic.ob, w, h,
info->info.rotation, info->info.depth);
+ evas_common_tilebuf_free(re->generic.tb);
+ if ((re->generic.tb = evas_common_tilebuf_new(w, h)))
+ evas_common_tilebuf_set_tile_size(re->generic.tb, TILESIZE, TILESIZE);
+
+ re->generic.w = w;
+ re->generic.h = h;
+}
+
+static int
+eng_output_update(void *engine, void *data, void *einfo EINA_UNUSED, unsigned int w, unsigned int h)
+{
+ Render_Engine *re = data;
+
+ eng_output_resize(engine, data, w, h);
+
evas_render_engine_software_generic_update(&re->generic,
re->generic.ob, w, h);
ORD(output_setup);
ORD(output_update);
ORD(output_free);
+ ORD(output_resize);
ORD(image_plane_assign);
ORD(image_plane_release);