static void eng_output_free(void *data) { Render_Engine *re; if (!data) return; re = (Render_Engine *)data; evas_software_ddraw_outbuf_free(re->ob); evas_common_tilebuf_free(re->tb); if (re->rects) evas_common_tilebuf_free_render_rects(re->rects); free(re); evas_common_font_shutdown(); evas_common_image_shutdown(); }
static void eng_output_resize(void *data, int width, int height) { Render_Engine *re; re = (Render_Engine *)data; evas_software_ddraw_outbuf_reconfigure(re->ob, width, height, evas_software_ddraw_outbuf_rot_get(re->ob), OUTBUF_DEPTH_INHERIT); evas_common_tilebuf_free(re->tb); re->tb = evas_common_tilebuf_new(width, height); if (re->tb) evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE); }
/* 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; }