/* LOCAL FUNCTIONS */ Render_Engine * _render_engine_swapbuf_setup(int w, int h, unsigned int rotation, unsigned int depth, Eina_Bool alpha, struct wl_shm *shm, struct wl_surface *surface, struct wl_display *disp) { Render_Engine *re; Outbuf *ob; Render_Engine_Merge_Mode merge_mode = MERGE_SMART; const char *s; LOGFN(__FILE__, __LINE__, __FUNCTION__); /* try to allocate space for new render engine */ if (!(re = calloc(1, sizeof(Render_Engine)))) return NULL; ob = _evas_outbuf_setup(w, h, rotation, depth, alpha, shm, surface, disp); if (!ob) goto err; if (!evas_render_engine_software_generic_init(&re->generic, ob, _evas_outbuf_swap_mode_get, _evas_outbuf_rotation_get, NULL, NULL, _evas_outbuf_update_region_new, _evas_outbuf_update_region_push, _evas_outbuf_update_region_free, _evas_outbuf_idle_flush, _evas_outbuf_flush, _evas_outbuf_free, w, h)) goto err; re->outbuf_reconfigure = _evas_outbuf_reconfigure; s = getenv("EVAS_WAYLAND_PARTIAL_MERGE"); if (s) { if ((!strcmp(s, "bounding")) || (!strcmp(s, "b"))) merge_mode = MERGE_BOUNDING; else if ((!strcmp(s, "full")) || (!strcmp(s, "f"))) merge_mode = MERGE_FULL; else if ((!strcmp(s, "smart")) || (!strcmp(s, "s"))) merge_mode = MERGE_SMART; } evas_render_engine_software_generic_merge_mode_set(&re->generic, merge_mode); /* return allocated render engine */ return re; err: if (ob) _evas_outbuf_free(ob); free(re); return NULL; }
/* LOCAL FUNCTIONS */ Render_Engine * _render_engine_swapbuf_setup(int w, int h, unsigned int rotation, unsigned int depth, Eina_Bool alpha, struct wl_shm *shm, struct wl_surface *surface) { Render_Engine *re; Outbuf *ob; LOGFN(__FILE__, __LINE__, __FUNCTION__); /* try to allocate space for new render engine */ if (!(re = calloc(1, sizeof(Render_Engine)))) return NULL; ob = _evas_outbuf_setup(w, h, rotation, depth, alpha, shm, surface); if (!ob) goto err; if (!evas_render_engine_software_generic_init(&re->generic, ob, _evas_outbuf_swapmode_get, _evas_outbuf_rotation_get, NULL, NULL, _evas_outbuf_update_region_new, _evas_outbuf_update_region_push, _evas_outbuf_update_region_free, _evas_outbuf_idle_flush, _evas_outbuf_flush, _evas_outbuf_free, w, h)) goto err; re->outbuf_reconfigure = _evas_outbuf_reconfigure; /* return allocated render engine */ return re; err: if (ob) _evas_outbuf_free(ob); free(re); return NULL; }