unsigned char swap_mode : 4;
} info;
+ struct
+ {
+ void (*pre_swap)(void *data, Evas *evas);
+ void (*post_swap)(void *data, Evas *evas);
+ void *data;
+ } callback;
+
/* non-blocking or blocking mode */
Evas_Engine_Render_Mode render_mode;
};
return 0;
}
+ ob->evas = evas;
+
if (!evas_render_engine_gl_generic_init(&re->generic, ob,
evas_outbuf_buffer_state_get,
evas_outbuf_rot_get,
evas_outbuf_use(ob);
if (ob)
{
+ ob->evas = evas;
+
evas_render_engine_software_generic_update(&re->generic.software, ob,
epd->output.w, epd->output.h);
evas_outbuf_use(ob);
if (ob)
{
+ ob->evas = evas;
+
evas_render_engine_software_generic_update(&re->generic.software, ob,
epd->output.w, epd->output.h);
Evas_Engine_Info_GL_Drm *info;
Evas_Engine_GL_Context *gl_context;
+ Evas *evas; // used for pre_swap, post_swap
+
int w, h;
unsigned int rotation, depth;
Render_Engine_Swap_Mode swap_mode;
ob->depth = info->info.depth;
ob->rotation = info->info.rotation;
ob->destination_alpha = info->info.destination_alpha;
- ob->vsync = info->info.vsync;
+ /* ob->vsync = info->info.vsync; */
ob->gbm = info->info.gbm;
ob->surface = info->info.surface;
ob->swap_mode = swap_mode;
ob->vsync = 1;
}
- /* if (ob->info->callback.pre_swap) */
- /* ob->info->callback.pre_swap(ob->info->callback.data, ob->evas); */
+ if (ob->info->callback.pre_swap)
+ ob->info->callback.pre_swap(ob->info->callback.data, ob->evas);
// TODO: Check eglSwapBuffersWithDamage for gl_drm and apply
#if 0
#endif
eglSwapBuffers(ob->egl.disp, ob->egl.surface[0]);
- /* if (ob->info->callback.post_swap) */
- /* ob->info->callback.post_swap(ob->info->callback.data, ob->evas); */
+ if (ob->info->callback.post_swap)
+ ob->info->callback.post_swap(ob->info->callback.data, ob->evas);
//Flush GL Surface data to Framebuffer
_evas_outbuf_buffer_swap(ob, NULL, 0);