/* local functions */ static void * _output_setup(Evas_Engine_Info_Drm *info, int w, int h) { Render_Engine *re = NULL; Outbuf *ob; /* try to allocate space for our render engine structure */ if (!(re = calloc(1, sizeof(Render_Engine)))) goto on_error; /* try to create new outbuf */ if (!(ob = evas_outbuf_setup(info, w, h))) goto on_error; if (!evas_render_engine_software_generic_init(&re->generic, ob, evas_outbuf_buffer_state_get, evas_outbuf_rot_get, evas_outbuf_reconfigure, NULL, evas_outbuf_update_region_new, evas_outbuf_update_region_push, evas_outbuf_update_region_free, NULL, evas_outbuf_flush, evas_outbuf_free, ob->w, ob->h)) goto on_error; /* return the allocated render_engine structure */ return re; on_error: if (re) evas_render_engine_software_generic_clean(&re->generic); free(re); return NULL; }
/* local functions */ static void * _output_setup(int w, int h, int rotation, void *dest) { Render_Engine *re = NULL; LOGFN(__FILE__, __LINE__, __FUNCTION__); if (!(re = calloc(1, sizeof(Render_Engine)))) return NULL; if (!(re->ob = evas_outbuf_setup(w, h, rotation, dest))) { free(re); return NULL; } if (!(re->tb = evas_common_tilebuf_new(w, h))) { evas_outbuf_free(re->ob); free(re); return NULL; } evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE); return re; }
/* local functions */ static void * _output_setup(int w, int h, unsigned int rotation, unsigned int depth, Eina_Bool alpha, int swap) { Render_Engine *re; /* try to allocate space for our render engine structure */ if (!(re = calloc(1, sizeof(Render_Engine)))) return NULL; /* try to create a new tilebuffer */ if (!(re->tb = evas_common_tilebuf_new(w, h))) { free(re); return NULL; } /* set tilesize */ evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE); if (swap) { /* free any existing outbuf */ if (re->ob) evas_outbuf_free(re->ob); /* try to create new outbuf */ if (!(re->ob = evas_outbuf_setup(w, h, rotation, depth, alpha))) { if (re->tb) evas_common_tilebuf_free(re->tb); free(re); return NULL; } } /* return the allocated render_engine structure */ return re; }