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);
}
Beispiel #3
0
/* 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;
}