{
struct gbm_device *gbm;
- /* HWC: for hwc */
- struct gbm_surface *surface;
- Eina_Bool wait_for_showup : 1;
- Eina_Bool outbuf_flushed : 1;
- Eina_Bool hwc_enable : 1;
-
unsigned int rotation, depth;
unsigned int crtc_id, conn_id, buffer_id;
unsigned int format, flags;
return NULL;
}
- /* HWC: set the gbm_surface to the engine_info */
- if (info->info.hwc_enable) info->info.surface = ob->surface;
-
return ob;
}
if (ob->info->callback.post_swap)
ob->info->callback.post_swap(ob->info->callback.data, ob->evas);
- /* HWC: do not display the ecore_evas at gl_drm engine
- hwc at enlightenment will update the display device */
- if (ob->info->info.hwc_enable)
- {
- /* The pair of evas_outbuf_flush and post_render has to be matched */
- ob->info->info.outbuf_flushed = EINA_TRUE;
- INF("HWC: evas outbuf flushed");
- }
- else
+ if (rects)
{
- if (rects)
- {
- Tilebuf_Rect *r;
- Eina_Rectangle *res;
- int num, i = 0;
-
- num = eina_inlist_count(EINA_INLIST_GET(rects));
- res = alloca(sizeof(Eina_Rectangle) * num);
- EINA_INLIST_FOREACH(EINA_INLIST_GET(rects), r)
- {
- res[i].x = r->x;
- res[i].y = r->y;
- res[i].w = r->w;
- res[i].h = r->h;
- i++;
- }
+ Tilebuf_Rect *r;
+ Eina_Rectangle *res;
+ int num, i = 0;
- _evas_outbuf_buffer_swap(ob, res, num);
+ num = eina_inlist_count(EINA_INLIST_GET(rects));
+ res = alloca(sizeof(Eina_Rectangle) * num);
+ EINA_INLIST_FOREACH(EINA_INLIST_GET(rects), r)
+ {
+ res[i].x = r->x;
+ res[i].y = r->y;
+ res[i].w = r->w;
+ res[i].h = r->h;
+ i++;
}
- else
- //Flush GL Surface data to Framebuffer
- _evas_outbuf_buffer_swap(ob, NULL, 0);
+
+ _evas_outbuf_buffer_swap(ob, res, num);
}
+ else
+ //Flush GL Surface data to Framebuffer
+ _evas_outbuf_buffer_swap(ob, NULL, 0);
+
ob->priv.frame_cnt++;
end: