From 67c26414558f75474b7bdbacbce32026a9c168bb Mon Sep 17 00:00:00 2001 From: cedric Date: Thu, 26 Apr 2012 09:53:03 +0000 Subject: [PATCH] evas: remove EVAS_FRAME_QUEUING. NOTE: This should be part of evas_render itself and not delegated to the engine. So cleaning things to make it easier during evas_render rewrite. git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/evas@70503 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- ChangeLog | 2 +- NEWS | 2 +- src/lib/cache/evas_cache.h | 3 - src/lib/cache/evas_cache_image.c | 174 ---- src/lib/canvas/evas_main.c | 18 - src/lib/canvas/evas_object_image.c | 25 - src/lib/canvas/evas_object_main.c | 3 - src/lib/canvas/evas_object_text.c | 8 - src/lib/canvas/evas_object_textblock.c | 3 - src/lib/canvas/evas_render.c | 50 +- src/lib/engines/common/evas_font.h | 4 - src/lib/engines/common/evas_font_draw.c | 13 - src/lib/engines/common/evas_font_load.c | 27 - src/lib/engines/common/evas_font_main.c | 3 - src/lib/engines/common/evas_font_private.h | 11 - src/lib/engines/common/evas_image_main.c | 11 - src/lib/engines/common/evas_image_scalecache.c | 80 +- src/lib/engines/common/evas_pipe.c | 930 +-------------------- src/lib/engines/common/evas_pipe.h | 77 -- src/lib/include/evas_common.h | 15 - src/modules/engines/software_generic/evas_engine.c | 36 +- src/modules/engines/software_x11/evas_engine.c | 121 +-- src/modules/engines/software_x11/evas_engine.h | 5 - src/modules/engines/software_x11/evas_xcb_buffer.c | 4 +- src/modules/engines/software_x11/evas_xcb_outbuf.c | 50 +- src/modules/engines/software_x11/evas_xcb_outbuf.h | 4 - .../engines/software_x11/evas_xlib_buffer.c | 4 +- .../engines/software_x11/evas_xlib_outbuf.c | 45 +- .../engines/software_x11/evas_xlib_outbuf.h | 5 - 29 files changed, 59 insertions(+), 1674 deletions(-) diff --git a/ChangeLog b/ChangeLog index cadb472..468a201 100644 --- a/ChangeLog +++ b/ChangeLog @@ -711,4 +711,4 @@ 2012-04-26 Cedric Bail * Lock less font rendering. - * Removing EVAS_SLI, METRIC_CACHE and WORD_CACHE. + * Removing EVAS_FRAME_QUEUING, EVAS_SLI, METRIC_CACHE and WORD_CACHE. diff --git a/NEWS b/NEWS index 75f3c07..c8b5631 100644 --- a/NEWS +++ b/NEWS @@ -7,7 +7,7 @@ Improvements: * Lock less font rendering. Removal: - * Remove EVAS_SLI, METRIC_CACHE and WORD_CACHE. + * Remove EVAS_FRAME_QUEUING, EVAS_SLI, METRIC_CACHE and WORD_CACHE. Evas 1.2.0 diff --git a/src/lib/cache/evas_cache.h b/src/lib/cache/evas_cache.h index 0947a6d..474f64e 100644 --- a/src/lib/cache/evas_cache.h +++ b/src/lib/cache/evas_cache.h @@ -60,9 +60,6 @@ struct _Evas_Cache_Image int usage; unsigned int limit; int references; -#ifdef EVAS_FRAME_QUEUING - LK(lock); -#endif }; struct _Evas_Cache_Engine_Image_Func diff --git a/src/lib/cache/evas_cache_image.c b/src/lib/cache/evas_cache_image.c index d5b72c5..8ebe806 100644 --- a/src/lib/cache/evas_cache_image.c +++ b/src/lib/cache/evas_cache_image.c @@ -65,13 +65,7 @@ _evas_cache_image_dirty_add(Image_Entry *im) _evas_cache_image_lru_nodata_del(im); im->flags.dirty = 1; im->flags.cached = 1; -#ifdef EVAS_FRAME_QUEUING - LKL(im->cache->lock); -#endif im->cache->dirty = eina_inlist_prepend(im->cache->dirty, EINA_INLIST_GET(im)); -#ifdef EVAS_FRAME_QUEUING - LKU(im->cache->lock); -#endif if (im->cache_key) { eina_stringshare_del(im->cache_key); @@ -85,13 +79,7 @@ _evas_cache_image_dirty_del(Image_Entry *im) if (!im->flags.dirty) return; im->flags.dirty = 0; im->flags.cached = 0; -#ifdef EVAS_FRAME_QUEUING - LKL(im->cache->lock); -#endif im->cache->dirty = eina_inlist_remove(im->cache->dirty, EINA_INLIST_GET(im)); -#ifdef EVAS_FRAME_QUEUING - LKU(im->cache->lock); -#endif } static void @@ -104,13 +92,7 @@ _evas_cache_image_activ_add(Image_Entry *im) if (!im->cache_key) return; im->flags.activ = 1; im->flags.cached = 1; -#ifdef EVAS_FRAME_QUEUING - LKL(im->cache->lock); -#endif eina_hash_direct_add(im->cache->activ, im->cache_key, im); -#ifdef EVAS_FRAME_QUEUING - LKU(im->cache->lock); -#endif } static void @@ -120,13 +102,7 @@ _evas_cache_image_activ_del(Image_Entry *im) if (!im->cache_key) return; im->flags.activ = 0; im->flags.cached = 0; -#ifdef EVAS_FRAME_QUEUING - LKL(im->cache->lock); -#endif eina_hash_del(im->cache->activ, im->cache_key, im); -#ifdef EVAS_FRAME_QUEUING - LKU(im->cache->lock); -#endif } static void @@ -139,15 +115,9 @@ _evas_cache_image_lru_add(Image_Entry *im) if (!im->cache_key) return; im->flags.lru = 1; im->flags.cached = 1; -#ifdef EVAS_FRAME_QUEUING - LKL(im->cache->lock); -#endif eina_hash_direct_add(im->cache->inactiv, im->cache_key, im); im->cache->lru = eina_inlist_prepend(im->cache->lru, EINA_INLIST_GET(im)); im->cache->usage += im->cache->func.mem_size_get(im); -#ifdef EVAS_FRAME_QUEUING - LKU(im->cache->lock); -#endif } static void @@ -157,15 +127,9 @@ _evas_cache_image_lru_del(Image_Entry *im) if (!im->cache_key) return; im->flags.lru = 0; im->flags.cached = 0; -#ifdef EVAS_FRAME_QUEUING - LKL(im->cache->lock); -#endif eina_hash_del(im->cache->inactiv, im->cache_key, im); im->cache->lru = eina_inlist_remove(im->cache->lru, EINA_INLIST_GET(im)); im->cache->usage -= im->cache->func.mem_size_get(im); -#ifdef EVAS_FRAME_QUEUING - LKU(im->cache->lock); -#endif } static void @@ -177,13 +141,7 @@ _evas_cache_image_lru_nodata_add(Image_Entry *im) _evas_cache_image_lru_del(im); im->flags.lru = 1; im->flags.cached = 1; -#ifdef EVAS_FRAME_QUEUING - LKL(im->cache->lock); -#endif im->cache->lru_nodata = eina_inlist_prepend(im->cache->lru_nodata, EINA_INLIST_GET(im)); -#ifdef EVAS_FRAME_QUEUING - LKU(im->cache->lock); -#endif } static void @@ -192,13 +150,7 @@ _evas_cache_image_lru_nodata_del(Image_Entry *im) if (!im->flags.lru_nodata) return; im->flags.lru = 0; im->flags.cached = 0; -#ifdef EVAS_FRAME_QUEUING - LKL(im->cache->lock); -#endif im->cache->lru_nodata = eina_inlist_remove(im->cache->lru_nodata, EINA_INLIST_GET(im)); -#ifdef EVAS_FRAME_QUEUING - LKU(im->cache->lock); -#endif } static void @@ -232,9 +184,6 @@ _evas_cache_image_entry_delete(Evas_Cache_Image *cache, Image_Entry *ie) LKD(ie->lock); LKD(ie->lock_cancel); #endif -#ifdef EVAS_FRAME_QUEUING - LKD(ie->lock_references); -#endif cache->func.dealloc(ie); } @@ -300,9 +249,6 @@ _evas_cache_image_entry_new(Evas_Cache_Image *cache, if (tstamp) ie->tstamp = *tstamp; else memset(&ie->tstamp, 0, sizeof(Image_Timestamp)); -#ifdef EVAS_FRAME_QUEUING - LKI(ie->lock_references); -#endif #ifdef BUILD_ASYNC_PRELOAD LKI(ie->lock); LKI(ie->lock_cancel); @@ -439,17 +385,11 @@ _evas_cache_image_async_cancel(void *data) return; } if (ie->flags.loaded) _evas_cache_image_async_end(ie); -#ifdef EVAS_FRAME_QUEUING - LKL(ie->lock_references); -#endif if (ie->references == 0) { _evas_cache_image_lru_add(ie); cache = ie->cache; } -#ifdef EVAS_FRAME_QUEUING - LKU(ie->lock_references); -#endif if (cache) evas_cache_image_flush(cache); } @@ -539,20 +479,11 @@ evas_cache_image_get(Evas_Cache_Image *cache) EAPI void evas_cache_image_set(Evas_Cache_Image *cache, unsigned int limit) { -#ifdef EVAS_FRAME_QUEUING - LKL(cache->lock); -#endif if (cache->limit == limit) { -#ifdef EVAS_FRAME_QUEUING - LKU(cache->lock); -#endif return; } cache->limit = limit; -#ifdef EVAS_FRAME_QUEUING - LKU(cache->lock); -#endif evas_cache_image_flush(cache); } @@ -576,9 +507,6 @@ evas_cache_image_init(const Evas_Cache_Image_Func *cb) cache->inactiv = eina_hash_string_superfast_new(NULL); cache->activ = eina_hash_string_superfast_new(NULL); cache->references = 1; -#ifdef EVAS_FRAME_QUEUING - LKI(cache->lock); -#endif return cache; } @@ -596,22 +524,11 @@ evas_cache_image_shutdown(Evas_Cache_Image *cache) Eina_List *delete_list; Image_Entry *im; -#ifdef EVAS_FRAME_QUEUING - LKL(cache->lock); -#endif cache->references--; if (cache->references != 0) { -#ifdef EVAS_FRAME_QUEUING - LKU(cache->lock); -#endif return; } -#ifdef EVAS_FRAME_QUEUING - /* Release and destroy lock early ! */ - LKU(cache->lock); - LKD(cache->lock); -#endif #ifdef BUILD_ASYNC_PRELOAD EINA_LIST_FREE(cache->preload, im) @@ -755,13 +672,7 @@ evas_cache_image_request(Evas_Cache_Image *cache, const char *file, hkey[size] = '\0'; /* find image by key in active hash */ -#ifdef EVAS_FRAME_QUEUING - LKL(cache->lock); -#endif im = eina_hash_find(cache->activ, hkey); -#ifdef EVAS_FRAME_QUEUING - LKU(cache->lock); -#endif if (im) { int ok = 1; @@ -784,13 +695,7 @@ evas_cache_image_request(Evas_Cache_Image *cache, const char *file, } /* find image by key in inactive/lru hash */ -#ifdef EVAS_FRAME_QUEUING - LKL(cache->lock); -#endif im = eina_hash_find(cache->inactiv, hkey); -#ifdef EVAS_FRAME_QUEUING - LKU(cache->lock); -#endif if (im) { int ok = 1; @@ -834,13 +739,7 @@ evas_cache_image_request(Evas_Cache_Image *cache, const char *file, on_ok: *error = EVAS_LOAD_ERROR_NONE; -#ifdef EVAS_FRAME_QUEUING - LKL(im->lock_references); -#endif im->references++; -#ifdef EVAS_FRAME_QUEUING - LKU(im->lock_references); -#endif return im; on_stat_error: @@ -872,33 +771,14 @@ evas_cache_image_drop(Image_Entry *im) Evas_Cache_Image *cache; int references; -#ifdef EVAS_FRAME_QUEUING - LKL(im->lock_references); -#endif im->references--; if (im->references < 0) im->references = 0; references = im->references; -#ifdef EVAS_FRAME_QUEUING - LKU(im->lock_references); -#endif cache = im->cache; if (references == 0) { -#ifdef EVAS_FRAME_QUEUING - LKL(im->ref_fq_add); - LKL(im->ref_fq_del); - if (im->ref_fq[0] != im->ref_fq[1]) - { - LKU(im->ref_fq_add); - LKU(im->ref_fq_del); - return; - } - LKU(im->ref_fq_add); - LKU(im->ref_fq_del); -#endif - #ifdef BUILD_ASYNC_PRELOAD if (im->preload) { @@ -922,13 +802,7 @@ evas_cache_image_data_not_needed(Image_Entry *im) { int references; -#ifdef EVAS_FRAME_QUEUING - LKL(im->lock_references); -#endif references = im->references; -#ifdef EVAS_FRAME_QUEUING - LKU(im->lock_references); -#endif if (references > 1) return; if ((im->flags.dirty) || (!im->flags.need_data)) return; _evas_cache_image_lru_nodata_add(im); @@ -945,13 +819,7 @@ evas_cache_image_dirty(Image_Entry *im, unsigned int x, unsigned int y, unsigned { #ifndef EVAS_CSERVE int references; -#ifdef EVAS_FRAME_QUEUING - LKL(im->lock_references); -#endif references = im->references; -#ifdef EVAS_FRAME_QUEUING - LKU(im->lock_references); -#endif // if ref 1 also copy if using shared cache as its read-only if (references == 1) im_dirty = im; else @@ -965,13 +833,7 @@ evas_cache_image_dirty(Image_Entry *im, unsigned int x, unsigned int y, unsigned if (cache->func.debug) cache->func.debug("dirty-src", im); cache->func.dirty(im_dirty, im); if (cache->func.debug) cache->func.debug("dirty-out", im_dirty); -#ifdef EVAS_FRAME_QUEUING - LKL(im_dirty->lock_references); -#endif im_dirty->references = 1; -#ifdef EVAS_FRAME_QUEUING - LKU(im_dirty->lock_references); -#endif evas_cache_image_drop(im); } _evas_cache_image_dirty_add(im_dirty); @@ -996,13 +858,7 @@ evas_cache_image_alone(Image_Entry *im) int references; cache = im->cache; -#ifdef EVAS_FRAME_QUEUING - LKL(im->lock_references); -#endif references = im->references; -#ifdef EVAS_FRAME_QUEUING - LKU(im->lock_references); -#endif if (references <= 1) { @@ -1018,13 +874,7 @@ evas_cache_image_alone(Image_Entry *im) if (cache->func.debug) cache->func.debug("dirty-src", im); cache->func.dirty(im_dirty, im); if (cache->func.debug) cache->func.debug("dirty-out", im_dirty); -#ifdef EVAS_FRAME_QUEUING - LKL(im_dirty->lock_references); -#endif im_dirty->references = 1; -#ifdef EVAS_FRAME_QUEUING - LKU(im_dirty->lock_references); -#endif evas_cache_image_drop(im); } return im_dirty; @@ -1057,13 +907,7 @@ evas_cache_image_copied_data(Evas_Cache_Image *cache, _evas_cache_image_entry_delete(cache, im); return NULL; } -#ifdef EVAS_FRAME_QUEUING - LKL(im->lock_references); -#endif im->references = 1; -#ifdef EVAS_FRAME_QUEUING - LKU(im->lock_references); -#endif if (cache->func.debug) cache->func.debug("copied-data", im); return im; } @@ -1088,13 +932,7 @@ evas_cache_image_data(Evas_Cache_Image *cache, unsigned int w, unsigned int h, D _evas_cache_image_entry_delete(cache, im); return NULL; } -#ifdef EVAS_FRAME_QUEUING - LKL(im->lock_references); -#endif im->references = 1; -#ifdef EVAS_FRAME_QUEUING - LKU(im->lock_references); -#endif if (cache->func.debug) cache->func.debug("data", im); return im; } @@ -1136,13 +974,7 @@ evas_cache_image_size_set(Image_Entry *im, unsigned int w, unsigned int h) _evas_cache_image_entry_surface_alloc(cache, im2, w, h); error = cache->func.size_set(im2, im, w, h); if (error != 0) goto on_error; -#ifdef EVAS_FRAME_QUEUING - LKL(im2->lock_references); -#endif im2->references = 1; -#ifdef EVAS_FRAME_QUEUING - LKU(im2->lock_references); -#endif evas_cache_image_drop(im); if (cache->func.debug) cache->func.debug("size_set", im2); return im2; @@ -1376,13 +1208,7 @@ evas_cache_image_empty(Evas_Cache_Image *cache) im = _evas_cache_image_entry_new(cache, NULL, NULL, NULL, NULL, NULL, NULL); if (!im) return NULL; -#ifdef EVAS_FRAME_QUEUING - LKL(im->lock_references); -#endif im->references = 1; -#ifdef EVAS_FRAME_QUEUING - LKU(im->lock_references); -#endif return im; } diff --git a/src/lib/canvas/evas_main.c b/src/lib/canvas/evas_main.c index e7f06a9..309eb98 100644 --- a/src/lib/canvas/evas_main.c +++ b/src/lib/canvas/evas_main.c @@ -50,9 +50,6 @@ evas_init(void) #ifdef BUILD_ASYNC_PRELOAD _evas_preload_thread_init(); #endif -#ifdef EVAS_FRAME_QUEUING - evas_common_frameq_init(); -#endif return _evas_init_count; @@ -77,13 +74,6 @@ evas_shutdown(void) if (--_evas_init_count != 0) return _evas_init_count; -#ifdef EVAS_FRAME_QUEUING - if (evas_common_frameq_enabled()) - { - evas_common_frameq_finish(); - evas_common_frameq_destroy(); - } -#endif #ifdef BUILD_ASYNC_EVENTS _evas_preload_thread_shutdown(); #endif @@ -158,10 +148,6 @@ evas_free(Evas *e) return; MAGIC_CHECK_END(); -#ifdef EVAS_FRAME_QUEUING - evas_common_frameq_flush(); -#endif - if (e->walking_list == 0) evas_render_idle_flush(e); if (e->walking_list > 0) return; @@ -344,10 +330,6 @@ evas_output_size_set(Evas *e, int w, int h) if (w < 1) w = 1; if (h < 1) h = 1; -#ifdef EVAS_FRAME_QUEUING - evas_common_frameq_flush(); -#endif - e->output.w = w; e->output.h = h; e->output.changed = 1; diff --git a/src/lib/canvas/evas_object_image.c b/src/lib/canvas/evas_object_image.c index bef47df..571570b 100644 --- a/src/lib/canvas/evas_object_image.c +++ b/src/lib/canvas/evas_object_image.c @@ -888,10 +888,6 @@ evas_object_image_data_set(Evas_Object *obj, void *data) return; MAGIC_CHECK_END(); _evas_object_image_cleanup(obj, o); -#ifdef EVAS_FRAME_QUEUING - if (o->engine_data) - evas_common_pipe_op_image_flush(o->engine_data); -#endif p_data = o->engine_data; if (data) { @@ -968,9 +964,6 @@ evas_object_image_data_get(const Evas_Object *obj, Eina_Bool for_writing) return NULL; MAGIC_CHECK_END(); if (!o->engine_data) return NULL; -#ifdef EVAS_FRAME_QUEUING - evas_common_pipe_op_image_flush(o->engine_data); -#endif data = NULL; if (obj->layer->evas->engine.func->image_scale_hint_set) @@ -1153,9 +1146,6 @@ evas_object_image_alpha_set(Evas_Object *obj, Eina_Bool has_alpha) { int stride = 0; -#ifdef EVAS_FRAME_QUEUING - evas_common_pipe_op_image_flush(o->engine_data); -#endif o->engine_data = obj->layer->evas->engine.func->image_alpha_set(obj->layer->evas->engine.data.output, o->engine_data, o->cur.has_alpha); @@ -1676,13 +1666,6 @@ evas_object_image_colorspace_set(Evas_Object *obj, Evas_Colorspace cspace) MAGIC_CHECK_END(); _evas_object_image_cleanup(obj, o); -#ifdef EVAS_FRAME_QUEUING - if ((Evas_Colorspace)o->cur.cspace != cspace) - { - if (o->engine_data) - evas_common_pipe_op_image_flush(o->engine_data); - } -#endif o->cur.cspace = cspace; if (o->engine_data) @@ -1823,10 +1806,6 @@ evas_object_image_scale_hint_set(Evas_Object *obj, Evas_Image_Scale_Hint hint) return; MAGIC_CHECK_END(); if (o->scale_hint == hint) return; -#ifdef EVAS_FRAME_QUEUING - if (o->engine_data) - evas_common_pipe_op_image_flush(o->engine_data); -#endif o->scale_hint = hint; if (o->engine_data) { @@ -1874,10 +1853,6 @@ evas_object_image_content_hint_set(Evas_Object *obj, Evas_Image_Content_Hint hin return; MAGIC_CHECK_END(); if (o->content_hint == hint) return; -#ifdef EVAS_FRAME_QUEUING - if (o->engine_data) - evas_common_pipe_op_image_flush(o->engine_data); -#endif o->content_hint = hint; if (o->engine_data) { diff --git a/src/lib/canvas/evas_object_main.c b/src/lib/canvas/evas_object_main.c index a0b9ad7..0c9df6c 100644 --- a/src/lib/canvas/evas_object_main.c +++ b/src/lib/canvas/evas_object_main.c @@ -408,9 +408,6 @@ evas_object_del(Evas_Object *obj) obj->del_ref = EINA_TRUE; return; } -#ifdef EVAS_FRAME_QUEUING - evas_common_frameq_flush(); -#endif evas_object_hide(obj); if (obj->focused) diff --git a/src/lib/canvas/evas_object_text.c b/src/lib/canvas/evas_object_text.c index dbe5e08..3b881c5 100644 --- a/src/lib/canvas/evas_object_text.c +++ b/src/lib/canvas/evas_object_text.c @@ -352,11 +352,6 @@ evas_object_text_font_set(Evas_Object *obj, const char *font, Evas_Font_Size siz obj->layer->evas->pointer.y, 1, 1); } -#ifdef EVAS_FRAME_QUEUING - if (o->font) - evas_common_pipe_op_text_flush((RGBA_Font *) o->font); -#endif - /* DO IT */ if (o->font) { @@ -1874,9 +1869,6 @@ _evas_object_text_rehint(Evas_Object *obj) o = (Evas_Object_Text *)(obj->object_data); if (!o->font) return; -#ifdef EVAS_FRAME_QUEUING - evas_common_pipe_op_text_flush((RGBA_Font *) o->font); -#endif evas_font_load_hinting_set(obj->layer->evas, o->font, obj->layer->evas->hinting); was = evas_object_is_in_output_rect(obj, diff --git a/src/lib/canvas/evas_object_textblock.c b/src/lib/canvas/evas_object_textblock.c index ee1b105..cdfef46 100644 --- a/src/lib/canvas/evas_object_textblock.c +++ b/src/lib/canvas/evas_object_textblock.c @@ -9942,9 +9942,6 @@ _evas_object_textblock_rehint(Evas_Object *obj) Evas_Object_Textblock_Text_Item *ti = _ITEM_TEXT(it); if (ti->parent.format->font.font) { -#ifdef EVAS_FRAME_QUEUING - evas_common_pipe_op_text_flush((RGBA_Font *) ti->parent.format->font.font); -#endif evas_font_load_hinting_set(obj->layer->evas, ti->parent.format->font.font, obj->layer->evas->hinting); diff --git a/src/lib/canvas/evas_render.c b/src/lib/canvas/evas_render.c index cbfcf32..460d0fe 100644 --- a/src/lib/canvas/evas_render.c +++ b/src/lib/canvas/evas_render.c @@ -264,14 +264,9 @@ _evas_render_phase1_object_process(Evas *e, Evas_Object *obj, obj->rect_del = 0; obj->render_pre = 0; -#ifndef EVAS_FRAME_QUEUING - /* because of clip objects - delete 2 cycles later */ if (obj->delete_me == 2) -#else - if (obj->delete_me == evas_common_frameq_get_frameq_sz() + 2) -#endif - eina_array_push(delete_objects, obj); - else if (obj->delete_me != 0) obj->delete_me++; + eina_array_push(delete_objects, obj); + else if (obj->delete_me != 0) obj->delete_me++; /* If the object will be removed, we should not cache anything during this run. */ if (obj->delete_me != 0) clean_them = EINA_TRUE; @@ -1755,10 +1750,6 @@ evas_render_updates(Evas *e) return NULL; MAGIC_CHECK_END(); -#ifdef EVAS_FRAME_QUEUING - evas_common_frameq_flush_ready (); -#endif - if (!e->changed) return NULL; return evas_render_updates_internal(e, 1, 1); } @@ -1770,10 +1761,6 @@ evas_render(Evas *e) return; MAGIC_CHECK_END(); -#ifdef EVAS_FRAME_QUEUING - evas_common_frameq_flush_ready (); -#endif - if (!e->changed) return; evas_render_updates_internal(e, 0, 1); } @@ -1817,15 +1804,7 @@ evas_render_idle_flush(Evas *e) EAPI void evas_sync(Evas *e) { -#ifdef EVAS_FRAME_QUEUING - MAGIC_CHECK(e, Evas, MAGIC_EVAS); - return; - MAGIC_CHECK_END(); - - evas_common_frameq_flush(); -#else - (void) e; -#endif + (void) e; } static void @@ -1895,22 +1874,15 @@ evas_render_object_recalc(Evas_Object *obj) return; MAGIC_CHECK_END(); -#ifndef EVAS_FRAME_QUEUING if ((!obj->changed) && (obj->delete_me < 2)) -#else - if ((!obj->changed)) -#endif - { - Evas *e; - - e = obj->layer->evas; - if ((!e) || (e->cleanup)) return; -#ifdef EVAS_FRAME_QUEUING - if (obj->delete_me >= evas_common_frameq_get_frameq_sz() + 2) return; -#endif - eina_array_push(&e->pending_objects, obj); - obj->changed = 1; - } + { + Evas *e; + + e = obj->layer->evas; + if ((!e) || (e->cleanup)) return; + eina_array_push(&e->pending_objects, obj); + obj->changed = 1; + } } /* vim:set ts=8 sw=3 sts=3 expandtab cino=>5n-2f0^-2{2(0W1st0 :*/ diff --git a/src/lib/engines/common/evas_font.h b/src/lib/engines/common/evas_font.h index f8f2afd..b02f672 100644 --- a/src/lib/engines/common/evas_font.h +++ b/src/lib/engines/common/evas_font.h @@ -67,10 +67,6 @@ EAPI int evas_common_font_query_char_at_coords (RGBA_Font *fn, con EAPI int evas_common_font_query_last_up_to_pos (RGBA_Font *fn, const Evas_Text_Props *intl_props, int x, int y); EAPI int evas_common_font_query_run_font_end_get(RGBA_Font *fn, RGBA_Font_Int **script_fi, RGBA_Font_Int **cur_fi, Evas_Script_Type script, const Eina_Unicode *text, int run_len); -#ifdef EVAS_FRAME_QUEUING -EAPI void evas_common_font_draw_finish(void); -#endif - void evas_common_font_load_init(void); void evas_common_font_load_shutdown(void); diff --git a/src/lib/engines/common/evas_font_draw.c b/src/lib/engines/common/evas_font_draw.c index b8b2a3b..d6a859f 100644 --- a/src/lib/engines/common/evas_font_draw.c +++ b/src/lib/engines/common/evas_font_draw.c @@ -42,13 +42,6 @@ evas_common_font_draw_init(void) { } -#ifdef EVAS_FRAME_QUEUING -EAPI void -evas_common_font_draw_finish(void) -{ -} -#endif - /* * BiDi handling: We receive the shaped string + other props from text_props, * we need to reorder it so we'll have the visual string (the way we draw) @@ -341,9 +334,6 @@ evas_common_font_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font *fn, int if (ext_w <= 0) return; if (ext_h <= 0) return; -#ifdef EVAS_FRAME_QUEUING - LKL(fn->lock); -#endif // evas_common_font_size_use(fn); func = evas_common_gfx_func_composite_mask_color_span_get(dc->col.col, dst, 1, dc->render_op); @@ -373,7 +363,4 @@ evas_common_font_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font *fn, int } dc->clip.use = c; dc->clip.x = cx; dc->clip.y = cy; dc->clip.w = cw; dc->clip.h = ch; } -#ifdef EVAS_FRAME_QUEUING - LKU(fn->lock); -#endif } diff --git a/src/lib/engines/common/evas_font_load.c b/src/lib/engines/common/evas_font_load.c index abba9e3..f5988bb 100644 --- a/src/lib/engines/common/evas_font_load.c +++ b/src/lib/engines/common/evas_font_load.c @@ -475,11 +475,6 @@ evas_common_font_memory_load(const char *name, int size, const void *data, int d fi->hinting = fn->hinting; fn->references = 1; LKI(fn->lock); -#ifdef EVAS_FRAME_QUEUING - LKI(fn->ref_fq_add); - LKI(fn->ref_fq_del); - eina_condition_new(&(fn->cond_fq_del), &(fn->ref_fq_del)); -#endif if (fi->inuse) evas_common_font_int_promote(fi); else { @@ -539,11 +534,6 @@ evas_common_font_load(const char *name, int size, Font_Rend_Flags wanted_rend) fi->hinting = fn->hinting; fn->references = 1; LKI(fn->lock); -#ifdef EVAS_FRAME_QUEUING - LKI(fn->ref_fq_add); - LKI(fn->ref_fq_del); - eina_condition_new(&(fn->cond_fq_del), &(fn->ref_fq_del)); -#endif if (fi->inuse) evas_common_font_int_promote(fi); else { @@ -607,18 +597,6 @@ evas_common_font_free(RGBA_Font *fn) if (!fn) return; fn->references--; if (fn->references > 0) return; -#ifdef EVAS_FRAME_QUEUING - LKL(fn->ref_fq_add); - LKL(fn->ref_fq_del); - if (fn->ref_fq[0] != fn->ref_fq[1]) - { - LKU(fn->ref_fq_add); - LKU(fn->ref_fq_del); - return; - } - LKU(fn->ref_fq_add); - LKU(fn->ref_fq_del); -#endif EINA_LIST_FOREACH(fn->fonts, l, fi) { fi->references--; @@ -632,11 +610,6 @@ evas_common_font_free(RGBA_Font *fn) eina_list_free(fn->fonts); if (fn->fash) fn->fash->freeme(fn->fash); LKD(fn->lock); -#ifdef EVAS_FRAME_QUEUING - LKD(fn->ref_fq_add); - LKD(fn->ref_fq_del); - eina_condition_free(&(fn->cond_fq_del)); -#endif free(fn); } diff --git a/src/lib/engines/common/evas_font_main.c b/src/lib/engines/common/evas_font_main.c index 7b3dabe..be8b4c0 100644 --- a/src/lib/engines/common/evas_font_main.c +++ b/src/lib/engines/common/evas_font_main.c @@ -52,9 +52,6 @@ evas_common_font_shutdown(void) evas_common_font_flush(); FT_Done_FreeType(evas_ft_lib); -#ifdef EVAS_FRAME_QUEUING - evas_common_font_draw_finish(); -#endif evas_ft_lib = 0; } diff --git a/src/lib/engines/common/evas_font_private.h b/src/lib/engines/common/evas_font_private.h index eed3faf..e00bd9b 100644 --- a/src/lib/engines/common/evas_font_private.h +++ b/src/lib/engines/common/evas_font_private.h @@ -8,16 +8,6 @@ extern LK(lock_bidi); // for fribidi API calls extern LK(lock_ot); // for harfbuzz calls #endif -# if defined(EVAS_FRAME_QUEUING) || defined(BUILD_PIPE_RENDER) -# define FTLOCK() LKL(lock_font_draw) -# define FTUNLOCK() LKU(lock_font_draw) - -# define BIDILOCK() LKL(lock_bidi) -# define BIDIUNLOCK() LKU(lock_bidi) - -# define OTLOCK() LKL(lock_ot) -# define OTUNLOCK() LKU(lock_ot) -# else # define FTLOCK(x) # define FTUNLOCK(x) @@ -27,7 +17,6 @@ extern LK(lock_ot); // for harfbuzz calls /* Macros for text walking */ # define OTLOCK() # define OTUNLOCK() -# endif void evas_common_font_source_unload(RGBA_Font_Source *fs); void evas_common_font_source_reload(RGBA_Font_Source *fs); diff --git a/src/lib/engines/common/evas_image_main.c b/src/lib/engines/common/evas_image_main.c index 9c233b3..0fcb3df 100644 --- a/src/lib/engines/common/evas_image_main.c +++ b/src/lib/engines/common/evas_image_main.c @@ -139,12 +139,6 @@ _evas_common_rgba_image_new(void) if (!im) return NULL; im->flags = RGBA_IMAGE_NOTHING; im->ref = 1; -#ifdef EVAS_FRAME_QUEUING - LKI(im->cache_entry.ref_fq_add); - LKI(im->cache_entry.ref_fq_del); - eina_condition_new(&(im->cache_entry.cond_fq_del), - &(im->cache_entry.ref_fq_del)); -#endif evas_common_rgba_image_scalecache_init(&im->cache_entry); @@ -158,11 +152,6 @@ _evas_common_rgba_image_delete(Image_Entry *ie) #ifdef BUILD_PIPE_RENDER evas_common_pipe_free(im); -# ifdef EVAS_FRAME_QUEUING - LKD(im->cache_entry.ref_fq_add); - LKD(im->cache_entry.ref_fq_del); - eina_condition_free(&(im->cache_entry.cond_fq_del)); -# endif #endif evas_common_rgba_image_scalecache_shutdown(&im->cache_entry); if (ie->info.module) evas_module_unref((Evas_Module *)ie->info.module); diff --git a/src/lib/engines/common/evas_image_scalecache.c b/src/lib/engines/common/evas_image_scalecache.c index e4e4790..0a6b4e6 100644 --- a/src/lib/engines/common/evas_image_scalecache.c +++ b/src/lib/engines/common/evas_image_scalecache.c @@ -37,9 +37,6 @@ struct _Scaleitem unsigned int dst_w, dst_h; unsigned int flop; unsigned int size_adjust; -#ifdef EVAS_FRAME_QUEUING - RWLK(lock); -#endif Eina_Bool forced_unload : 1; Eina_Bool smooth : 1; Eina_Bool populate_me : 1; @@ -124,9 +121,6 @@ evas_common_rgba_image_scalecache_dirty(Image_Entry *ie) { Scaleitem *sci; sci = im->cache.list->data; -#ifdef EVAS_FRAME_QUEUING - WRLKL(sci->lock); -#endif im->cache.list = eina_list_remove(im->cache.list, sci); if (sci->im) { @@ -140,10 +134,6 @@ evas_common_rgba_image_scalecache_dirty(Image_Entry *ie) cache_list = eina_inlist_remove(cache_list, (Eina_Inlist *)sci); LKU(cache_lock); } -#ifdef EVAS_FRAME_QUEUING - RWLKU(sci->lock); - RWLKD(sci->lock); -#endif free(sci); } LKU(im->cache.lock); @@ -238,9 +228,6 @@ _sci_find(RGBA_Image *im, { l = eina_list_last(im->cache.list); sci = l->data; -#ifdef EVAS_FRAME_QUEUING - WRLKL(sci->lock); -#endif im->cache.list = eina_list_remove_list(im->cache.list, l); if ((sci->usage == im->cache.newest_usage) || (sci->usage_count == im->cache.newest_usage_count)) @@ -255,9 +242,6 @@ _sci_find(RGBA_Image *im, // INF(" 1- %i", sci->dst_w * sci->dst_h * 4); cache_list = eina_inlist_remove(cache_list, (Eina_Inlist *)sci); } -#ifdef EVAS_FRAME_QUEUING - RWLKU(sci->lock); -#endif if (max_scale_items < 1) return NULL; } else @@ -268,9 +252,6 @@ _sci_find(RGBA_Image *im, return NULL; sci = calloc(1, sizeof(Scaleitem)); sci->parent_im = im; -#ifdef EVAS_FRAME_QUEUING - RWLKI(sci->lock); -#endif } sci->usage = 0; sci->usage_count = 0; @@ -304,9 +285,6 @@ _cache_prune(Scaleitem *notsci, Eina_Bool copies_only) if (!sci) return; } if (sci == notsci) return; -#ifdef EVAS_FRAME_QUEUING - WRLKL(sci->lock); -#endif if (sci->im) { evas_common_rgba_image_free(&sci->im->cache_entry); @@ -322,10 +300,6 @@ _cache_prune(Scaleitem *notsci, Eina_Bool copies_only) cache_list = eina_inlist_remove(cache_list, (Eina_Inlist *)sci); memset(sci, 0, sizeof(Eina_Inlist)); } -#ifdef EVAS_FRAME_QUEUING - RWLKU(sci->lock); -#endif - // INF("FLUSH %i > %i", cache_size, max_cache_size); } } @@ -548,14 +522,10 @@ evas_common_rgba_image_scalecache_do(Image_Entry *ie, RGBA_Image *dst, LKL(im->cache.lock); if ((src_region_w == dst_region_w) && (src_region_h == dst_region_h)) { -#ifdef EVAS_FRAME_QUEUING - if (!evas_common_frameq_enabled()) -#endif - { - if (im->cache_entry.space == EVAS_COLORSPACE_ARGB8888) - evas_cache_image_load_data(&im->cache_entry); - evas_common_image_colorspace_normalize(im); - } + if (im->cache_entry.space == EVAS_COLORSPACE_ARGB8888) + evas_cache_image_load_data(&im->cache_entry); + evas_common_image_colorspace_normalize(im); + // noscales++; LKU(im->cache.lock); if (im->image.data) @@ -575,14 +545,10 @@ evas_common_rgba_image_scalecache_do(Image_Entry *ie, RGBA_Image *dst, LKU(cache_lock); if (!sci) { -#ifdef EVAS_FRAME_QUEUING - if (!evas_common_frameq_enabled()) -#endif - { - if (im->cache_entry.space == EVAS_COLORSPACE_ARGB8888) - evas_cache_image_load_data(&im->cache_entry); - evas_common_image_colorspace_normalize(im); - } + if (im->cache_entry.space == EVAS_COLORSPACE_ARGB8888) + evas_cache_image_load_data(&im->cache_entry); + evas_common_image_colorspace_normalize(im); + // misses++; LKU(im->cache.lock); if (im->image.data) @@ -740,9 +706,6 @@ evas_common_rgba_image_scalecache_do(Image_Entry *ie, RGBA_Image *dst, if (sci->flop >= FLOP_DEL) sci->flop -= FLOP_DEL; } // INF("use cached!"); -#ifdef EVAS_FRAME_QUEUING - RDLKL(sci->lock); -#endif LKU(im->cache.lock); evas_common_scale_rgba_in_to_out_clip_sample (sci->im, dst, dc, @@ -750,15 +713,11 @@ evas_common_rgba_image_scalecache_do(Image_Entry *ie, RGBA_Image *dst, dst_region_w, dst_region_h, dst_region_x, dst_region_y, dst_region_w, dst_region_h); -#ifdef EVAS_FRAME_QUEUING - RWLKU(sci->lock); -#endif // hits++; // INF("check %p %i < %i", // im, // (int)im->cache.orig_usage, // (int)im->cache.newest_usage); -#ifndef EVAS_FRAME_QUEUING /* while framequeuing is applied, * original image data is loaded by the main thread * just before enqueuing the rendering op into the pipe. @@ -785,18 +744,12 @@ evas_common_rgba_image_scalecache_do(Image_Entry *ie, RGBA_Image *dst, } } } -#endif } else { -#ifdef EVAS_FRAME_QUEUING - if (!evas_common_frameq_enabled()) -#endif - { - if (im->cache_entry.space == EVAS_COLORSPACE_ARGB8888) - evas_cache_image_load_data(&im->cache_entry); - evas_common_image_colorspace_normalize(im); - } + if (im->cache_entry.space == EVAS_COLORSPACE_ARGB8888) + evas_cache_image_load_data(&im->cache_entry); + evas_common_image_colorspace_normalize(im); // misses++; LKU(im->cache.lock); if (im->image.data) @@ -817,14 +770,9 @@ evas_common_rgba_image_scalecache_do(Image_Entry *ie, RGBA_Image *dst, } #else RGBA_Image *im = (RGBA_Image *)ie; -#ifdef EVAS_FRAME_QUEUING - if (!evas_common_frameq_enabled()) -#endif - { - if (im->cache_entry.space == EVAS_COLORSPACE_ARGB8888) - evas_cache_image_load_data(&im->cache_entry); - evas_common_image_colorspace_normalize(im); - } + if (im->cache_entry.space == EVAS_COLORSPACE_ARGB8888) + evas_cache_image_load_data(&im->cache_entry); + evas_common_image_colorspace_normalize(im); if (im->image.data) { if (smooth) diff --git a/src/lib/engines/common/evas_pipe.c b/src/lib/engines/common/evas_pipe.c index 9b4b5af..e0208a5 100644 --- a/src/lib/engines/common/evas_pipe.c +++ b/src/lib/engines/common/evas_pipe.c @@ -4,207 +4,6 @@ #include #ifdef BUILD_PIPE_RENDER - -#ifdef EVAS_FRAME_QUEUING -#define SCALECACHE -static Evas_FrameQ gframeq; // global frameQ - -static Evas_Surface * -evas_common_surface_alloc(void *surface, int x, int y, int w, int h) -{ - Evas_Surface *e_surface; - - e_surface = calloc(1, sizeof(Evas_Surface)); - e_surface->im = surface; - LKL(e_surface->im->cache_entry.ref_fq_add); - e_surface->im->cache_entry.ref_fq[0]++; - LKU(e_surface->im->cache_entry.ref_fq_add); - e_surface->x = x; - e_surface->y = y; - e_surface->w = w; - e_surface->h = h; - - return e_surface; -} - -static void -evas_common_surface_dealloc(Evas_Surface *surface) -{ - Evas_Surface *d_surface; - - while (surface) - { - d_surface = surface; - surface = (Evas_Surface *)eina_inlist_remove(EINA_INLIST_GET(surface), EINA_INLIST_GET(d_surface)); - LKL(d_surface->im->cache_entry.ref_fq_del); - d_surface->im->cache_entry.ref_fq[1]++; - LKU(d_surface->im->cache_entry.ref_fq_del); - free(d_surface); - } -} - -static void -evas_common_surface_add(Evas_Frame *frame, Evas_Surface *surface) -{ - frame->surfaces = (Evas_Surface *)eina_inlist_append(EINA_INLIST_GET(frame->surfaces), EINA_INLIST_GET(surface)); -} - -static Evas_Frame * -evas_common_frame_alloc(void) -{ - Evas_Frame *frame; - - frame = calloc(1, sizeof(Evas_Frame)); - frame->surfaces = NULL; - return frame; -} - -static void -evas_common_frame_dealloc(Evas_Frame *frame) -{ - evas_common_surface_dealloc(frame->surfaces); - free(frame); -} - -static void -evas_common_frame_add(Evas_FrameQ *frameq, Evas_Frame *frame) -{ - Evas_Frame *temp_frame; - - LKL(frameq->mutex); - while ((int)eina_inlist_count(EINA_INLIST_GET(frameq->frames)) >= frameq->frameq_sz) - { - /* wait a worker thread finish previous frame */ - eina_condition_wait(&(frameq->cond_done)); - } - frameq->frames = (Evas_Frame *) eina_inlist_append(EINA_INLIST_GET(frameq->frames), EINA_INLIST_GET(frame)); - - // this frame need not to be scheduled for flushing time - EINA_INLIST_FOREACH(EINA_INLIST_GET(frameq->frames), temp_frame) - { - if (!temp_frame->ready) - { - break; - } - } - if (temp_frame && temp_frame == frame) - frame->dont_schedule = 1; - - LKU(frameq->mutex); - - eina_condition_signal(&(frameq->cond_new)); -} - -EAPI Evas_Surface * -evas_common_frameq_new_surface(void *surface, int x, int y, int w, int h) -{ - return evas_common_surface_alloc(surface, x, y, w, h); -} - -EAPI void -evas_common_frameq_add_surface(Evas_Surface *surface) -{ - evas_common_surface_add(gframeq.cur_frame, surface); -} - -EAPI void -evas_common_frameq_set_frame_data(void *data, - void (*fn_output_redraws_next_update_push) (void *data, void *surface, int x, int y, int w, int h), - void (*fn_output_flush) (void *data), - void (*fn_output_set_priv)(void *data, void *cur, void *prev)) -{ - if (gframeq.cur_frame) - { - gframeq.cur_frame->data = data; - gframeq.cur_frame->output_redraws_next_update_push = fn_output_redraws_next_update_push; - gframeq.cur_frame->output_flush = fn_output_flush; - gframeq.cur_frame->output_set_priv = fn_output_set_priv; - } -} - -EAPI void -evas_common_frameq_prepare_frame(void) -{ - if (!gframeq.cur_frame ) - { - gframeq.cur_frame = evas_common_frame_alloc(); - } -} - -EAPI void -evas_common_frameq_ready_frame(void) -{ - if (gframeq.cur_frame) - { - evas_common_frame_add(&gframeq, gframeq.cur_frame); - gframeq.cur_frame = NULL; // create a new frame for the next frame later - } -} - - -EAPI void -evas_common_frameq_init(void) -{ - gframeq.frames = NULL; - LKI(gframeq.mutex); - eina_condition_new(&(gframeq.cond_new), &(gframeq.mutex)); - eina_condition_new(&(gframeq.cond_ready), &(gframeq.mutex)); - eina_condition_new(&(gframeq.cond_done), &(gframeq.mutex)); - gframeq.initialised = 0; // worker thread are not created yet - gframeq.frameq_sz = 1; // this value ensures the first frame can be enqueued. -} - -EAPI void -evas_common_frameq_destroy(void) -{ -#if 0 // let them destroyed indirectly with program exit - LKL(gframeq.mutex); - eina_condition_free(&(gframeq.cond_new)); - eina_condition_free(&(gframeq.cond_ready)); - eina_condition_free(&(gframeq.cond_done)); - LKU(gframeq.mutex); -#endif - LKD(gframeq.mutex); - - gframeq.frames = NULL; - gframeq.initialised = 0; -} - -EAPI void -evas_common_frameq_flush(void) -{ - if (! evas_common_frameq_enabled()) - return; - - LKL(gframeq.mutex); - while(eina_inlist_count(EINA_INLIST_GET(gframeq.frames)) > 0) - { - /* wait a worker thread finish previous frame */ - eina_condition_wait(&(gframeq.cond_done)); - } - LKU(gframeq.mutex); -} - - -EAPI void -evas_common_frameq_flush_ready(void) -{ - return; -} - -EAPI int -evas_common_frameq_get_frameq_sz(void) -{ - return gframeq.frameq_sz; -} - -EAPI int -evas_common_frameq_enabled(void) -{ - return gframeq.initialised; -} -#endif - static RGBA_Pipe *evas_common_pipe_add(RGBA_Pipe *pipe, RGBA_Pipe_Op **op); static void evas_common_pipe_draw_context_copy(RGBA_Draw_Context *dc, RGBA_Pipe_Op *op); static void evas_common_pipe_op_free(RGBA_Pipe_Op *op); @@ -300,501 +99,6 @@ evas_common_pipe_thread(void *data) } return NULL; } - -#ifdef EVAS_FRAME_QUEUING -static void -evas_common_frameq_release(void *data) -{ - Evas_FrameQ *frameq; - Evas_Frameq_Thread_Info *fq_info; - Thinfo *thinfo; - - thinfo = data; - fq_info = (Evas_Frameq_Thread_Info *)(thinfo->fq_info); - frameq = fq_info->frameq; - - /* This thread may or may not own the mutex. - * But there's no way to determine the ownership of the mutex, so release it anyway - */ - LKU(frameq->mutex); -} - -static void * -evas_common_frameq_thread(void *data) -{ - Evas_FrameQ *frameq; - Evas_Frame *frame; - Evas_Surface *surface; - RGBA_Pipe *p; - Thinfo *thinfo; - Evas_Frameq_Thread_Info *fq_info; - RGBA_Pipe_Thread_Info p_info; - - thinfo = data; - fq_info = (Evas_Frameq_Thread_Info *)(thinfo->fq_info); - frameq = fq_info->frameq; - - pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL); - pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); - /* install thread cancelation cleanup handler */ - pthread_cleanup_push(evas_common_frameq_release, data); - - for (;;) - { - frame = NULL; - - /* 1. pick a frame to draw */ - LKL(frameq->mutex); - while(!frame) - { - EINA_INLIST_FOREACH(EINA_INLIST_GET(frameq->frames), frame) - { - if (!frame->in_process) - { - frame->in_process = 1; - break; - } - } - if (frame) - { - break; - } - pthread_testcancel(); - eina_condition_wait(&(frameq->cond_new)); - } - LKU(frameq->mutex); - - /* 2. draw selected frame */ - EINA_INLIST_FOREACH(EINA_INLIST_GET(frame->surfaces), surface) - { - p_info.im = surface->im; - p_info.x = 0; - p_info.y = 0; - p_info.w = surface->im->cache_entry.w; - p_info.h = surface->im->cache_entry.h; - - EINA_INLIST_FOREACH(EINA_INLIST_GET(p_info.im->cache_entry.pipe), p) - { - int i; - - for (i = 0; i < p->op_num; i++) - { - if (p->op[i].op_func) - { - p->op[i].op_func(p_info.im, &(p->op[i]), &p_info); - } - } - } - - /* push surface out */ - if (! surface->dontpush) - { - frame->output_redraws_next_update_push(frame->data, - surface->im, surface->x, surface->y, surface->w, surface->h); - } - } - - // record frame ready time, will be used in post worker thread, evas_common_frameq_thread_post() - gettimeofday(&frame->ready_time, NULL); - - LKL(frameq->mutex); - frame->ready = 1; - eina_condition_signal(&(frameq->cond_ready)); - LKU(frameq->mutex); - } - - // Remove cleanup handler - pthread_cleanup_pop(0); - return NULL; -} - - -#define INTERVAL_QSIZE 17 // Actual size is 'INTERVAL_QSIZE - 1' because of not using index -#define SATISFACTION_THRESHOLD 4 // 4 ms --> 250 FPS -#define RESET_RATIO 4 // RESET_RATIO * [Average Ready Gap | get_max_interval()] --> Reset Threshold -#define DOUBLE_RESET_TIME_INTERVAL_THRESHOLD 16000 // make it double in case of less 16ms -#define RESET_ABSOLUTE_INTERVAL 600000 // 600 msec - -struct iq_node -{ - long long rt; - long long ri; -}; - -static struct iq_node _IQ[INTERVAL_QSIZE]; -static int _IQ_head = 0, _IQ_tail = 0; -static int _IQ_length = 0; -static long long min_ready, max_ready; -static long long average_interval; - -static int -_IQ_next_index(int i) -{ - return (i + 1) % INTERVAL_QSIZE; -} - -static int -_IQ_previous_index(int i) -{ - if (--i < 0) i += INTERVAL_QSIZE; - return i; -} - -static void -_IQ_init(void) -{ - _IQ_length = _IQ_head = _IQ_tail = 0; - min_ready = LLONG_MAX, max_ready = LLONG_MIN; - average_interval = 0; -} - -static int -_IQ_empty(void) -{ - return (_IQ_head == _IQ_tail) ? 1 : 0; -} - -static int -_IQ_full(void) -{ - return (_IQ_head == ((_IQ_tail + 1) % INTERVAL_QSIZE)) ? 1 : 0; -} - -static void -_IQ_insert(long long ready_time, long long last_interval) -{ - if (_IQ_full()) return; - - if (_IQ_empty()) - { - if (last_interval < 0) - { - last_interval = -last_interval; - } - _IQ[_IQ_tail].rt = ready_time; - _IQ[_IQ_tail].ri = last_interval; - min_ready = ready_time - last_interval; - max_ready = ready_time; - _IQ_tail = _IQ_next_index(_IQ_tail); - _IQ_length++; - } - else - { - if (max_ready < ready_time) - { - _IQ[_IQ_tail].rt = ready_time; - _IQ[_IQ_tail].ri = ready_time - max_ready; - _IQ_tail = _IQ_next_index(_IQ_tail); - _IQ_length++; - max_ready = ready_time; - } - else if (ready_time < min_ready) - { - last_interval = _IQ[_IQ_head].ri; - _IQ[_IQ_head].ri = _IQ[_IQ_head].rt - ready_time; - _IQ_head = _IQ_previous_index(_IQ_head); - _IQ[_IQ_head].rt = ready_time; - _IQ[_IQ_head].ri = last_interval; - min_ready = ready_time; - _IQ_length++; - } - else - { - int i, j, k, l = 0; - for (i = _IQ_head; i != _IQ_tail; i = j) - { - j = _IQ_next_index(i); - if (_IQ[j].rt < ready_time) - { - continue; - } - break; - } - for (k = _IQ_tail; k != j; k = l) - { - l = _IQ_previous_index(k); - _IQ[k] = _IQ[l]; - } - i = _IQ_next_index(j); - _IQ[j].ri -= (_IQ[j].rt - ready_time); - _IQ[j].rt = ready_time; - _IQ[i].ri = _IQ[i].rt - ready_time; - _IQ_tail = _IQ_next_index(_IQ_tail); - _IQ_length++; - } - } - average_interval = (max_ready - min_ready) / _IQ_length; -} - -static long long -_IQ_delete(void) -{ - struct iq_node oldest; - - if (_IQ_empty()) return 0; - oldest = _IQ[_IQ_head]; - _IQ_head = (_IQ_head + 1) % INTERVAL_QSIZE; - if ((--_IQ_length) == 0) - { - _IQ_init(); - } - else - { - min_ready = _IQ[_IQ_head].rt; - average_interval = (max_ready - min_ready) / _IQ_length; - } - - return oldest.ri; -} - -static long long -get_max_interval(void) -{ - int i; - long long max = LLONG_MIN; - - for ( i= _IQ_head ; i != _IQ_tail ; i = _IQ_next_index(i)) - { - if (_IQ[i].ri > max) - { - max = _IQ[i].ri; - } - } - - return max; -} - -static long long -tv_to_long_long(struct timeval *tv) -{ - if (!tv) - { - return 0; - } - - return tv->tv_sec * 1000000LL + tv->tv_usec; -} - -static long long -evas_common_frameq_schedule_flush_time(int frameq_sz, int thread_no, - long long last_ready_time, long long current_ready_time, - long long last_flush_time, int ready_frames_num, - int dont_schedule) -{ - // to get each time and to do others - long long current_time = 0LL; - long long current_ready_interval = 0LL; - long long theshold_time = SATISFACTION_THRESHOLD * 1000LL; // ms -> usec - long long reset_time_interval = 0LL; - long long sleep_time = 0LL; - long long saved_ready_time, saved_ready_interval; - long long time_slept = 0LL; - static long long time_lag = 0; - struct timeval now; - int frameq_full_threshold =0; - int need_reset = 0; - int need_schedule = 0; - - frameq_full_threshold = frameq_sz -thread_no; // Qsize - threads# - - /* 1.5 defer flush time of current frame if need */ - // in case of the first time, just keep ready time only - if (last_ready_time == 0LL) - { - last_ready_time = current_ready_time; - } - else - { - /* 1.5.1 get current ready time & interval */ - saved_ready_time = current_ready_time; - saved_ready_interval = current_ready_interval = current_ready_time - last_ready_time; - // compensate a case which current ready time is older than previous one, - // doesn't work on the interval queue - if (current_ready_interval < 0) - { - current_ready_time = last_ready_time; - current_ready_interval = 0; - } - - /* 1.5.2 get the reset time interval before keeping a new one */ - if (!_IQ_empty()) - { - reset_time_interval = RESET_RATIO * average_interval; - if (average_interval < DOUBLE_RESET_TIME_INTERVAL_THRESHOLD) - { - reset_time_interval *= 2; - } - } - - /* 1.5.3 reset - if too late, discard all saved interval and start from here */ - if (current_ready_interval > RESET_ABSOLUTE_INTERVAL) - { - need_reset = 1; - } - else if (_IQ_length >= thread_no * 2 && current_ready_interval > reset_time_interval) - { - need_reset = 1; - } - else if (_IQ_length >= thread_no && _IQ_length < thread_no * 2 - && current_ready_interval > get_max_interval() * RESET_RATIO) - { - need_reset = 1; - } - - if (need_reset) - { - _IQ_init(); - } - else - { - /* 1.5.4 enqueue - keep a new interval for next average interval */ - if (_IQ_full()) - { - _IQ_delete(); - } - _IQ_insert(saved_ready_time, saved_ready_interval); - - /* 1.5.5 schedule - if faster than average interval, figure out sleep time to meet it */ - if (!dont_schedule) - { - need_schedule = 0; - sleep_time = 0; - if (_IQ_length >= thread_no * 2 && average_interval > theshold_time) - { - need_schedule = 1; - } - // compensate the case that postworker blocks the workers from getting a new fresh frame - // It's actually occurred when during the wait time of postworker, the frame queue is full - // Consequently check the number of currently ready frames and apply some time drop to average time according to the number - if (ready_frames_num >= frameq_full_threshold) - { - need_schedule = 0; - } - if (need_schedule) - { - gettimeofday(&now, NULL); - current_time = tv_to_long_long(&now); - time_lag += (current_time - last_flush_time); - sleep_time = (average_interval < time_lag) ? 0 : (average_interval - time_lag); - } - } - - /* 1.5.6 sleep - actually sleep and get over-slept time (time_lag) for next frame */ - if (sleep_time > 0) - { - sleep_time = sleep_time * 9 / 10; - usleep((unsigned int)sleep_time); - gettimeofday(&now, NULL); - time_slept = tv_to_long_long(&now) - current_time; - time_lag = time_slept - sleep_time; - } - else - { - time_lag = 0; - } - } - last_ready_time = current_ready_time; - } - - return last_ready_time; -} - -static void * -evas_common_frameq_thread_post(void *data) -{ - Evas_FrameQ *frameq; - Evas_Frame *frame; - Evas_Surface *surface; - Thinfo *thinfo; - Evas_Frameq_Thread_Info *fq_info; - Eina_List *pending_writes = NULL; - Eina_List *prev_pending_writes = NULL; - - long long last_ready_time = 0LL; - long long current_ready_time; - Evas_Frame *temp_frame = NULL; - int ready_frames_num; - long long last_flush_time = 0LL; - struct timeval now; - int dont_schedule = 0; - - thinfo = data; - fq_info = (Evas_Frameq_Thread_Info *)(thinfo->fq_info); - frameq = fq_info->frameq; - - pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL); - pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL); - /* install thread cancelation cleanup handler */ - pthread_cleanup_push(evas_common_frameq_release, data); - - _IQ_init(); - - for (;;) - { - /* 1. wait the first frame being done */ - LKL(frameq->mutex); - while(!frameq->frames || !frameq->frames->ready) - { - eina_condition_wait(&(frameq->cond_ready)); - } - frame = frameq->frames; - - /* 1.5. prepare to schedule flush time */ - current_ready_time = tv_to_long_long(&frame->ready_time); - ready_frames_num = 0; - EINA_INLIST_FOREACH(EINA_INLIST_GET(frameq->frames), temp_frame) - { - if (temp_frame->ready == 1) - { - ready_frames_num++; - } - } - dont_schedule = (frame->dont_schedule)?1:0; - LKU(frameq->mutex); - - /* 2. generate pending_writes */ - EINA_INLIST_FOREACH(EINA_INLIST_GET(frame->surfaces), surface) - { - evas_common_pipe_flush(surface->im); - if (! surface->dontpush) - { - pending_writes = eina_list_append(pending_writes, surface->im); - } - } - - /* 2.5. schedule flush time */ - last_ready_time = evas_common_frameq_schedule_flush_time( - frameq->frameq_sz, frameq->thread_num, - last_ready_time, current_ready_time, - last_flush_time, ready_frames_num, dont_schedule); - - /* 3. flush redraws */ - frame->output_set_priv(frame->data, pending_writes, prev_pending_writes); - frame->output_flush(frame->data); - gettimeofday(&now, NULL); - // keep as the last flush time - last_flush_time = now.tv_sec * 1000000LL + now.tv_usec; - - prev_pending_writes = pending_writes; - pending_writes = NULL; - - /* 4. remove this frame from the frame queue */ - LKL(frameq->mutex); - frameq->frames = - (Evas_Frame *)eina_inlist_remove(EINA_INLIST_GET(frameq->frames), - EINA_INLIST_GET(frame)); - - LKU(frameq->mutex); - eina_condition_broadcast(&frameq->cond_done); - evas_common_frame_dealloc(frame); - } - - // Remove cleanup handler - pthread_cleanup_pop(0); - return NULL; -} - -#endif /* EVAS_FRAME_QUEUING */ #endif #ifdef BUILD_PTHREAD @@ -809,10 +113,6 @@ evas_common_pipe_begin(RGBA_Image *im) #ifdef BUILD_PTHREAD int i, y, h; -#ifdef EVAS_FRAME_QUEUING - return; -#endif - if (!im->cache_entry.pipe) return; if (thread_num == 1) return; y = 0; @@ -844,138 +144,35 @@ evas_common_pipe_begin(RGBA_Image *im) #endif } -#ifdef EVAS_FRAME_QUEUING -EAPI void -evas_common_frameq_begin(void) -{ -#ifdef BUILD_PTHREAD - int i; - Evas_Frameq_Thread_Info *fp_info; - pthread_attr_t attr; - cpu_set_t cpu; - - if (!gframeq.initialised) - { - int cpunum, set_cpu_affinity = 0; - - cpunum = eina_cpu_count(); - gframeq.thread_num = cpunum; - gframeq.frameq_sz = cpunum * FRAMEQ_SZ_PER_THREAD; - - eina_threads_init(); - - for (i = 0; i < gframeq.thread_num; i++) - { - - fp_info = calloc(1, sizeof(Evas_Frameq_Thread_Info)); - fp_info->frameq = &gframeq; - - gframeq.thinfo[i].thread_num = i; - gframeq.thinfo[i].fq_info = fp_info; - - pthread_attr_init(&attr); - if (set_cpu_affinity) - { - CPU_ZERO(&cpu); - CPU_SET((i+1) % cpunum, &cpu); - pthread_attr_setaffinity_np(&attr, sizeof(cpu), &cpu); - } - - pthread_create(&(gframeq.thinfo[i].thread_id), &attr, - evas_common_frameq_thread, &(gframeq.thinfo[i])); - - pthread_attr_destroy(&attr); - pthread_detach(gframeq.thinfo[i].thread_id); - } - - { - fp_info = calloc(1, sizeof(Evas_Frameq_Thread_Info)); - fp_info->frameq = &gframeq; - - gframeq.thinfo[i].thread_num = i; - gframeq.thinfo[i].fq_info = fp_info; - - pthread_attr_init(&attr); - if (set_cpu_affinity) - { - CPU_ZERO(&cpu); - CPU_SET((i+1) % cpunum, &cpu); - pthread_attr_setaffinity_np(&attr, sizeof(cpu), &cpu); - } - - pthread_create(&(gframeq.thinfo[i].thread_id), &attr, - evas_common_frameq_thread_post, &(gframeq.thinfo[i])); - pthread_attr_destroy(&attr); - pthread_detach(gframeq.thinfo[i].thread_id); - } - gframeq.initialised = 1; // now worker threads are created. - - INF("initialised"); - DBG("%d cpus, set_cpu_affinity=%d, frameq_sz=%d", - cpunum, set_cpu_affinity, gframeq.frameq_sz); - } -#endif /* BUILD_PTHREAD */ -} - -EAPI void -evas_common_frameq_finish(void) -{ - int i; - - /* 1. cancel all worker threads */ - for (i = 0; i < gframeq.thread_num; i++) - { - pthread_cancel(gframeq.thinfo[i].thread_id); - } - // cancel post-worker thread - pthread_cancel(gframeq.thinfo[i].thread_id); - - /* 2. send signal to worker threads so that they enter to the thread cancelation cleanup handler */ - for (i = 0; i < gframeq.thread_num; i++) - { - eina_condition_signal(&(gframeq.cond_new)); - } - // send signal to post-worker thread - eina_condition_signal(&(gframeq.cond_ready)); - - /* all the workers were created and detached before - * so don't need to join them here. - */ - -} - -#endif /* EVAS_FRAME_QUEUING */ - EAPI void evas_common_pipe_flush(RGBA_Image *im) { if (!im->cache_entry.pipe) return; -#ifndef EVAS_FRAME_QUEUING #ifdef BUILD_PTHREAD if (thread_num > 1) { - /* sync worker threads */ - pthread_barrier_wait(&(thbarrier[1])); + /* sync worker threads */ + pthread_barrier_wait(&(thbarrier[1])); } else #endif { RGBA_Pipe *p; int i; - - /* process pipe - 1 thead */ - for (p = im->cache_entry.pipe; p; p = (RGBA_Pipe *)(EINA_INLIST_GET(p))->next) - { - for (i = 0; i < p->op_num; i++) - { - if (p->op[i].op_func) - { - p->op[i].op_func(im, &(p->op[i]), NULL); - } - } - } + + /* process pipe - 1 thead */ + for (p = im->cache_entry.pipe; p; p = (RGBA_Pipe *)(EINA_INLIST_GET(p))->next) + { + for (i = 0; i < p->op_num; i++) + { + if (p->op[i].op_func) + { + p->op[i].op_func(im, &(p->op[i]), NULL); + } + } + } } -#endif /* !EVAS_FRAME_QUEUING */ + evas_common_cpu_end_opt(); evas_common_pipe_free(im); } @@ -1153,37 +350,11 @@ evas_common_pipe_poly_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, static void evas_common_pipe_op_text_free(RGBA_Pipe_Op *op) { -#ifdef EVAS_FRAME_QUEUING - LKL(op->op.text.font->ref_fq_del); - op->op.text.font->ref_fq[1]++; - LKU(op->op.text.font->ref_fq_del); - eina_condition_signal(&(op->op.text.font->cond_fq_del)); -#else evas_common_font_free(op->op.text.font); -#endif evas_common_text_props_content_unref(&(op->op.text.intl_props)); evas_common_pipe_op_free(op); } -#ifdef EVAS_FRAME_QUEUING -/* flush all op using @fn */ -EAPI void -evas_common_pipe_op_text_flush(RGBA_Font *fn) -{ - if (! evas_common_frameq_enabled()) - return; - - LKL(fn->ref_fq_add); - LKL(fn->ref_fq_del); - - while (fn->ref_fq[0] != fn->ref_fq[1]) - eina_condition_wait(&(fn->cond_fq_del)); - - LKU(fn->ref_fq_del); - LKU(fn->ref_fq_add); -} -#endif - static void evas_common_pipe_text_draw_do(RGBA_Image *dst, RGBA_Pipe_Op *op, RGBA_Pipe_Thread_Info *info) { @@ -1218,13 +389,7 @@ evas_common_pipe_text_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, op->op.text.y = y; evas_common_text_props_content_copy_and_ref(&(op->op.text.intl_props), intl_props); -#ifdef EVAS_FRAME_QUEUING - LKL(fn->ref_fq_add); - fn->ref_fq[0]++; - LKU(fn->ref_fq_add); -#else fn->references++; -#endif op->op.text.font = fn; op->op_func = evas_common_pipe_text_draw_do; op->free_func = evas_common_pipe_op_text_free; @@ -1236,39 +401,14 @@ evas_common_pipe_text_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, static void evas_common_pipe_op_image_free(RGBA_Pipe_Op *op) { -#ifdef EVAS_FRAME_QUEUING - LKL(op->op.image.src->cache_entry.ref_fq_del); - op->op.image.src->cache_entry.ref_fq[1]++; - LKU(op->op.image.src->cache_entry.ref_fq_del); - eina_condition_signal(&(op->op.image.src->cache_entry.cond_fq_del)); -#else op->op.image.src->ref--; if (op->op.image.src->ref == 0) { evas_cache_image_drop(&op->op.image.src->cache_entry); } -#endif evas_common_pipe_op_free(op); } -#ifdef EVAS_FRAME_QUEUING -EAPI void -evas_common_pipe_op_image_flush(RGBA_Image *im) -{ - if (! evas_common_frameq_enabled()) - return; - - LKL(im->cache_entry.ref_fq_add); - LKL(im->cache_entry.ref_fq_del); - - while (im->cache_entry.ref_fq[0] != im->cache_entry.ref_fq[1]) - eina_condition_wait(&(im->cache_entry.cond_fq_del)); - - LKU(im->cache_entry.ref_fq_del); - LKU(im->cache_entry.ref_fq_add); -} -#endif - static void evas_common_pipe_image_draw_do(RGBA_Image *dst, RGBA_Pipe_Op *op, RGBA_Pipe_Thread_Info *info) { @@ -1388,44 +528,21 @@ evas_common_pipe_image_draw(RGBA_Image *src, RGBA_Image *dst, op->op.image.dy = dst_region_y; op->op.image.dw = dst_region_w; op->op.image.dh = dst_region_h; -#ifdef EVAS_FRAME_QUEUING - LKL(src->cache_entry.ref_fq_add); - src->cache_entry.ref_fq[0]++; - LKU(src->cache_entry.ref_fq_add); -#else src->ref++; -#endif op->op.image.src = src; op->op_func = evas_common_pipe_image_draw_do; op->free_func = evas_common_pipe_op_image_free; evas_common_pipe_draw_context_copy(dc, op); -#ifdef EVAS_FRAME_QUEUING - /* laod every src image here. - * frameq utilize all cpu cores already by worker threads - * so another threads and barrier waiting can't be of any benefit. - * therefore, not instantiate loader threads. - */ - if (src->cache_entry.space == EVAS_COLORSPACE_ARGB8888) - evas_cache_image_load_data(&src->cache_entry); - evas_common_image_colorspace_normalize(src); -#else evas_common_pipe_image_load(src); -#endif } static void evas_common_pipe_op_map_free(RGBA_Pipe_Op *op) { -#ifdef EVAS_FRAME_QUEUING - LKL(op->op.image.src->cache_entry.ref_fq_del); - op->op.image.src->cache_entry.ref_fq[1]++; - LKU(op->op.image.src->cache_entry.ref_fq_del); -#else op->op.map.src->ref--; if (op->op.map.src->ref == 0) evas_cache_image_drop(&op->op.map.src->cache_entry); -#endif free(op->op.map.p); evas_common_pipe_op_free(op); } @@ -1477,31 +594,14 @@ evas_common_pipe_map_draw(RGBA_Image *src, RGBA_Image *dst, op->op.map.npoints = npoints; op->op.map.smooth = smooth; op->op.map.level = level; -#ifdef EVAS_FRAME_QUEUING - LKL(src->cache_entry.ref_fq_add); - src->cache_entry.ref_fq[0]++; - LKU(src->cache_entry.ref_fq_add); -#else src->ref++; -#endif op->op.map.src = src; op->op.map.p = pts_copy; op->op_func = evas_common_pipe_map_draw_do; op->free_func = evas_common_pipe_op_map_free; evas_common_pipe_draw_context_copy(dc, op); -#ifdef EVAS_FRAME_QUEUING - /* laod every src image here. - * frameq utilize all cpu cores already by worker threads - * so another threads and barrier waiting can't be of any benefit. - * therefore, not instantiate loader threads. - */ - if (src->cache_entry.space == EVAS_COLORSPACE_ARGB8888) - evas_cache_image_load_data(&src->cache_entry); - evas_common_image_colorspace_normalize(src); -#else evas_common_pipe_image_load(src); -#endif } static void diff --git a/src/lib/engines/common/evas_pipe.h b/src/lib/engines/common/evas_pipe.h index 9680542..d648626 100644 --- a/src/lib/engines/common/evas_pipe.h +++ b/src/lib/engines/common/evas_pipe.h @@ -11,81 +11,9 @@ typedef struct _Thinfo pthread_t thread_id; pthread_barrier_t *barrier; RGBA_Pipe_Thread_Info *info; -# ifdef EVAS_FRAME_QUEUING - void *fq_info; -#endif } Thinfo; #endif -#ifdef EVAS_FRAME_QUEUING -struct _Evas_Surface -{ - EINA_INLIST; - RGBA_Image *im; - int x, y, w, h; - int dontpush; // dont push the surface out after drawing done -}; -typedef struct _Evas_Surface Evas_Surface; - -struct _Evas_Frame -{ - EINA_INLIST; - Evas_Surface *surfaces; - void *data; - int in_process; - int ready; - int dont_schedule; - struct timeval ready_time; - - void (*output_redraws_next_update_push) (void *data, void *surface, int x, int y, int w, int h); - void (*output_flush) (void *data); - void (*output_set_priv)(void *data, void *cur, void *prev); -}; -typedef struct _Evas_Frame Evas_Frame; - - -struct _Evas_FrameQ -{ - int initialised; - Evas_Frame *frames; - Eina_Condition cond_new; - Eina_Condition cond_ready; - Eina_Condition cond_done; - LK(mutex); - - int thread_num; - Thinfo thinfo[TH_MAX]; - int frameq_sz; - - Evas_Frame *cur_frame; -}; -typedef struct _Evas_FrameQ Evas_FrameQ; -#define FRAMEQ_SZ_PER_THREAD 2 - -struct _Evas_Frameq_Thread_Info -{ - Evas_FrameQ *frameq; -}; -typedef struct _Evas_Frameq_Thread_Info Evas_Frameq_Thread_Info; - -EAPI Evas_Surface *evas_common_frameq_new_surface(void *surface, int x, int y, int w, int h); -EAPI void evas_common_frameq_add_surface(Evas_Surface *surface); -EAPI void evas_common_frameq_set_frame_data(void *data, - void (*fn_output_redraws_next_update_push) (void *data, void *surface, int x, int y, int w, int h), - void (*fn_output_flush) (void *data), - void (*fn_output_set_priv)(void *data, void *cur, void *prev)); -EAPI void evas_common_frameq_prepare_frame(void); -EAPI void evas_common_frameq_ready_frame(void); -EAPI void evas_common_frameq_init(void); -EAPI void evas_common_frameq_destroy(void); -EAPI void evas_common_frameq_flush(void); -EAPI void evas_common_frameq_flush_ready(void); -EAPI int evas_common_frameq_get_frameq_sz(void); -EAPI int evas_common_frameq_enabled(void); -EAPI void evas_common_frameq_begin(void); -EAPI void evas_common_frameq_finish(void); -#endif - /* image rendering pipelines... new optional system - non-immediate and * threadable */ @@ -104,9 +32,4 @@ EAPI void evas_common_pipe_map_draw(RGBA_Image *src, RGBA_Image *dst, int smooth, int level); EAPI void evas_common_pipe_flush(RGBA_Image *im); -#ifdef EVAS_FRAME_QUEUING -EAPI void evas_common_pipe_op_text_flush(RGBA_Font *fn); -EAPI void evas_common_pipe_op_image_flush(RGBA_Image *im); -#endif - #endif /* _EVAS_PIPE_H */ diff --git a/src/lib/include/evas_common.h b/src/lib/include/evas_common.h index 6439144..915507e 100644 --- a/src/lib/include/evas_common.h +++ b/src/lib/include/evas_common.h @@ -581,18 +581,9 @@ struct _Image_Entry Image_Timestamp tstamp; int references; -#ifdef EVAS_FRAME_QUEUING - LK(lock_references); // needed for accessing references -#endif #ifdef BUILD_PIPE_RENDER RGBA_Pipe *pipe; -#ifdef EVAS_FRAME_QUEUING - LK(ref_fq_add); - LK(ref_fq_del); - Eina_Condition cond_fq_del; - int ref_fq[2]; // ref_fq[0] is for addition, ref_fq[1] is for deletion -#endif #endif unsigned char scale; @@ -912,12 +903,6 @@ struct _RGBA_Font Fash_Int *fash; Font_Hint_Flags hinting; int references; -#ifdef EVAS_FRAME_QUEUING - int ref_fq[2]; //ref_fq[0] is for addition, ref_fq[1] is for deletion - Eina_Condition cond_fq_del; - LK(ref_fq_add); - LK(ref_fq_del); -#endif LK(lock); unsigned char sizeok : 1; }; diff --git a/src/modules/engines/software_generic/evas_engine.c b/src/modules/engines/software_generic/evas_engine.c index 4667f6b..89627dd 100644 --- a/src/modules/engines/software_generic/evas_engine.c +++ b/src/modules/engines/software_generic/evas_engine.c @@ -438,11 +438,7 @@ static void eng_rectangle_draw(void *data __UNUSED__, void *context, void *surface, int x, int y, int w, int h) { #ifdef BUILD_PIPE_RENDER - if ((cpunum > 1) -#ifdef EVAS_FRAME_QUEUING - && evas_common_frameq_enabled() -#endif - ) + if ((cpunum > 1)) evas_common_pipe_rectangle_draw(surface, context, x, y, w, h); else #endif @@ -456,11 +452,7 @@ static void eng_line_draw(void *data __UNUSED__, void *context, void *surface, int x1, int y1, int x2, int y2) { #ifdef BUILD_PIPE_RENDER - if ((cpunum > 1) - #ifdef EVAS_FRAME_QUEUING - && evas_common_frameq_enabled() -#endif - ) + if ((cpunum > 1)) evas_common_pipe_line_draw(surface, context, x1, y1, x2, y2); else #endif @@ -486,11 +478,7 @@ static void eng_polygon_draw(void *data __UNUSED__, void *context, void *surface, void *polygon, int x, int y) { #ifdef BUILD_PIPE_RENDER - if ((cpunum > 1) -#ifdef EVAS_FRAME_QUEUING - && evas_common_frameq_enabled() -#endif - ) + if ((cpunum > 1)) evas_common_pipe_poly_draw(surface, context, polygon, x, y); else #endif @@ -820,11 +808,7 @@ eng_image_draw(void *data __UNUSED__, void *context, void *surface, void *image, if (!image) return; im = image; #ifdef BUILD_PIPE_RENDER - if ((cpunum > 1) -#ifdef EVAS_FRAME_QUEUING - && evas_common_frameq_enabled() -#endif - ) + if ((cpunum > 1)) { evas_common_rgba_image_scalecache_prepare((Image_Entry *)(im), surface, context, smooth, @@ -903,11 +887,7 @@ eng_image_map_draw(void *data __UNUSED__, void *context, void *surface, void *im else { #ifdef BUILD_PIPE_RENDER - if ((cpunum > 1) -# ifdef EVAS_FRAME_QUEUING - && evas_common_frameq_enabled() -# endif - ) + if ((cpunum > 1)) evas_common_pipe_map_draw(im, surface, context, npoints, p, smooth, level); else #endif @@ -1187,11 +1167,7 @@ static void eng_font_draw(void *data __UNUSED__, void *context, void *surface, Evas_Font_Set *font, int x, int y, int w __UNUSED__, int h __UNUSED__, int ow __UNUSED__, int oh __UNUSED__, const Evas_Text_Props *text_props) { #ifdef BUILD_PIPE_RENDER - if ((cpunum > 1) -#ifdef EVAS_FRAME_QUEUING - && evas_common_frameq_enabled() -#endif - ) + if ((cpunum > 1)) evas_common_pipe_text_draw(surface, context, (RGBA_Font *) font, x, y, text_props); else diff --git a/src/modules/engines/software_x11/evas_engine.c b/src/modules/engines/software_x11/evas_engine.c index 0a2d2a3..94e78ac 100644 --- a/src/modules/engines/software_x11/evas_engine.c +++ b/src/modules/engines/software_x11/evas_engine.c @@ -93,10 +93,6 @@ struct _Render_Engine int dpi; } xr; */ -#ifdef EVAS_FRAME_QUEUING - Evas_Engine_Render_Mode render_mode; -#endif - void (*outbuf_free)(Outbuf *ob); void (*outbuf_reconfigure)(Outbuf *ob, int w, int h, int rot, Outbuf_Depth depth); int (*outbuf_get_rot)(Outbuf *ob); @@ -106,9 +102,6 @@ struct _Render_Engine void (*outbuf_flush)(Outbuf *ob); void (*outbuf_idle_flush)(Outbuf *ob); Eina_Bool (*outbuf_alpha_get)(Outbuf *ob); -#ifdef EVAS_FRAME_QUEUING - void (*outbuf_set_priv)(Outbuf *ob, void *cur, void *prev); -#endif }; /* prototypes we will use here */ @@ -483,10 +476,6 @@ eng_setup(Evas *e, void *in) re->outbuf_flush = evas_software_xlib_outbuf_flush; re->outbuf_idle_flush = evas_software_xlib_outbuf_idle_flush; re->outbuf_alpha_get = evas_software_xlib_outbuf_alpha_get; -# ifdef EVAS_FRAME_QUEUING - re->outbuf_set_priv = evas_software_xlib_outbuf_set_priv; - re->render_mode = info->render_mode; -# endif } #endif @@ -515,10 +504,6 @@ eng_setup(Evas *e, void *in) re->outbuf_flush = evas_software_xcb_outbuf_flush; re->outbuf_idle_flush = evas_software_xcb_outbuf_idle_flush; re->outbuf_alpha_get = evas_software_xcb_outbuf_alpha_get; -# ifdef EVAS_FRAME_QUEUING - re->outbuf_set_priv = evas_software_xcb_outbuf_priv_set; - re->render_mode = info->render_mode; -# endif } #endif @@ -528,9 +513,6 @@ eng_setup(Evas *e, void *in) { int ponebuf = 0; -#ifdef EVAS_FRAME_QUEUING - evas_common_frameq_flush(); -#endif re = e->engine.data.output; ponebuf = re->ob->onebuf; @@ -554,9 +536,6 @@ eng_setup(Evas *e, void *in) info->info.destination_alpha); evas_software_xlib_outbuf_debug_set(re->ob, info->info.debug); -# ifdef EVAS_FRAME_QUEUING - re->render_mode = info->render_mode; -# endif } #endif @@ -581,9 +560,6 @@ eng_setup(Evas *e, void *in) info->info.destination_alpha); evas_software_xcb_outbuf_debug_set(re->ob, info->info.debug); -#ifdef EVAS_FRAME_QUEUING - re->render_mode = info->render_mode; -#endif } #endif re->ob->onebuf = ponebuf; @@ -713,112 +689,24 @@ static void eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h) { Render_Engine *re; -#ifdef EVAS_FRAME_QUEUING - Evas_Surface *e_surface; -#endif re = (Render_Engine *)data; -#if defined(BUILD_PIPE_RENDER) && !defined(EVAS_FRAME_QUEUING) +#if defined(BUILD_PIPE_RENDER) evas_common_pipe_map_begin(surface); -#endif /* BUILD_PIPE_RENDER && !EVAS_FRAME_QUEUING*/ - -#ifdef EVAS_FRAME_QUEUING - if (re->render_mode == EVAS_RENDER_MODE_NONBLOCKING) - { - /* create a new frame if this is the first surface of this frame */ - evas_common_frameq_prepare_frame(); - /* add surface into the frame */ - e_surface = evas_common_frameq_new_surface(surface, x, y, w, h); - evas_common_frameq_add_surface(e_surface); - return; - } -#endif - - re->outbuf_push_updated_region(re->ob, surface, x, y, w, h); - re->outbuf_free_region_for_update(re->ob, surface); - evas_common_cpu_end_opt(); -} - -#ifdef EVAS_FRAME_QUEUING -static void * -eng_image_map_surface_new(void *data , int w, int h, int alpha) -{ - void *surface; - DATA32 *pixels; - Render_Engine *re; - Evas_Surface *e_surface; - - re = (Render_Engine *)data; - - surface = - evas_cache_image_copied_data(evas_common_image_cache_get(), w, h, NULL, - alpha, EVAS_COLORSPACE_ARGB8888); - pixels = evas_cache_image_pixels(surface); - - if (re->render_mode == EVAS_RENDER_MODE_NONBLOCKING) - { - /* create a new frame if this is the first surface of this frame */ - evas_common_frameq_prepare_frame(); - - /* add surface into the frame */ - e_surface = evas_common_frameq_new_surface(surface, 0, 0, w, h); - - /* this surface is not going to be pushed to screen */ - e_surface->dontpush = 1; - evas_common_frameq_add_surface(e_surface); - } - return surface; -} +#endif /* BUILD_PIPE_RENDER */ -static void -eng_output_frameq_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h) -{ - Render_Engine *re; - - re = (Render_Engine *)data; re->outbuf_push_updated_region(re->ob, surface, x, y, w, h); re->outbuf_free_region_for_update(re->ob, surface); evas_common_cpu_end_opt(); } static void -eng_output_frameq_flush(void *data) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - re->outbuf_flush(re->ob); -} - -static void -eng_output_frameq_set_priv(void *data, void *cur, void *prev) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - re->outbuf_set_priv(re->ob, cur, prev); -} -#endif - -static void eng_output_flush(void *data) { Render_Engine *re; re = (Render_Engine *)data; -#ifdef EVAS_FRAME_QUEUING - if (re->render_mode == EVAS_RENDER_MODE_NONBLOCKING) - { - evas_common_frameq_set_frame_data(data, - eng_output_frameq_redraws_next_update_push, - eng_output_frameq_flush, - eng_output_frameq_set_priv); - evas_common_frameq_ready_frame(); - evas_common_frameq_begin(); - } - else -#endif - re->outbuf_flush(re->ob); + re->outbuf_flush(re->ob); } static void @@ -887,9 +775,6 @@ module_open(Evas_Module *em) ORD(output_redraws_next_update_push); ORD(output_flush); ORD(output_idle_flush); -#ifdef EVAS_FRAME_QUEUING - ORD(image_map_surface_new); -#endif /* now advertise out own api */ em->functions = (void *)(&func); diff --git a/src/modules/engines/software_x11/evas_engine.h b/src/modules/engines/software_x11/evas_engine.h index 80b71b7..ce60ea7 100644 --- a/src/modules/engines/software_x11/evas_engine.h +++ b/src/modules/engines/software_x11/evas_engine.h @@ -119,11 +119,6 @@ struct _Outbuf /* a list of previous frame pending regions to write to the target */ Eina_List *prev_pending_writes; -# ifdef EVAS_FRAME_QUEUING - /* protecting prev_pending_writes */ - LK(lock); -# endif - unsigned char mask_dither : 1; unsigned char destination_alpha : 1; unsigned char debug : 1; diff --git a/src/modules/engines/software_x11/evas_xcb_buffer.c b/src/modules/engines/software_x11/evas_xcb_buffer.c index 49ce721..9136eb5 100644 --- a/src/modules/engines/software_x11/evas_xcb_buffer.c +++ b/src/modules/engines/software_x11/evas_xcb_buffer.c @@ -297,13 +297,13 @@ evas_software_xcb_output_buffer_new(xcb_connection_t *conn, xcb_visualtype_t *vi /* Sync only needed for testing */ if (try_shm == 2) _xcbob_sync(conn); -#if defined(EVAS_FRAME_QUEUING) && defined(LIBXEXT_VERSION_LOW) +#if defined(LIBXEXT_VERSION_LOW) if (evas_common_frameq_enabled()) xcb_grab_server(conn); #endif xcb_shm_attach(conn, xcbob->shm_info->shmseg, xcbob->shm_info->shmid, 0); -#if defined(EVAS_FRAME_QUEUING) && defined(LIBXEXT_VERSION_LOW) +#if defined(LIBXEXT_VERSION_LOW) if (evas_common_frameq_enabled()) xcb_ungrab_server(conn); #endif diff --git a/src/modules/engines/software_x11/evas_xcb_outbuf.c b/src/modules/engines/software_x11/evas_xcb_outbuf.c index 71759be..b02df10 100644 --- a/src/modules/engines/software_x11/evas_xcb_outbuf.c +++ b/src/modules/engines/software_x11/evas_xcb_outbuf.c @@ -25,29 +25,17 @@ static int _shmsize = 0; static int _shmlimit = (10 * 1024 * 1024); static const unsigned int _shmcountlimit = 32; -#ifdef EVAS_FRAME_QUEUING -static LK(lock_shmpool); -# define SHMPOOL_LOCK() LKL(lock_shmpool); -# define SHMPOOL_UNLOCK() LKU(lock_shmpool); -#else -# define SHMPOOL_LOCK() -# define SHMPOOL_UNLOCK() -#endif +#define SHMPOOL_LOCK() +#define SHMPOOL_UNLOCK() void evas_software_xcb_outbuf_init(void) { -#ifdef EVAS_FRAME_QUEUING - LKI(lock_shmpool); -#endif } void evas_software_xcb_outbuf_free(Outbuf *buf) { -#ifdef EVAS_FRAME_QUEUING - LKL(buf->priv.lock); -#endif while (buf->priv.pending_writes) { RGBA_Image *im = NULL; @@ -63,9 +51,6 @@ evas_software_xcb_outbuf_free(Outbuf *buf) if (obr->mask) _unfind_xcbob(obr->mask, EINA_FALSE); free(obr); } -#ifdef EVAS_FRAME_QUEUING - LKU(buf->priv.lock); -#endif evas_software_xcb_outbuf_idle_flush(buf); evas_software_xcb_outbuf_flush(buf); if (buf->priv.x11.xcb.gc) @@ -77,9 +62,6 @@ evas_software_xcb_outbuf_free(Outbuf *buf) buf->priv.x11.xcb.cmap, buf->priv.x11.xcb.visual, buf->priv.pal); -#ifdef EVAS_FRAME_QUEUING - LKD(buf->priv.lock); -#endif free(buf); _clear_xcbob(EINA_FALSE); } @@ -231,10 +213,6 @@ evas_software_xcb_outbuf_setup(int w, int h, int rot, Outbuf_Depth depth, xcb_co evas_software_xcb_outbuf_drawable_set(buf, draw); evas_software_xcb_outbuf_mask_set(buf, mask); -#ifdef EVAS_FRAME_QUEUING - LKI(buf->priv.lock); -#endif - return buf; } @@ -470,10 +448,7 @@ evas_software_xcb_outbuf_new_region_for_update(Outbuf *buf, int x, int y, int w, // memset(im->image.data, 0, (w * h * sizeof(DATA32))); } -#ifdef EVAS_FRAME_QUEUING - if (!evas_common_frameq_enabled()) -#endif - buf->priv.pending_writes = eina_list_append(buf->priv.pending_writes, im); + buf->priv.pending_writes = eina_list_append(buf->priv.pending_writes, im); return im; } @@ -585,9 +560,6 @@ evas_software_xcb_outbuf_flush(Outbuf *buf) buf->priv.x11.xcb.gcm, obr->x, obr->y, 0); } -# ifdef EVAS_FRAME_QUEUING - LKL(buf->priv.lock); -# endif while (buf->priv.prev_pending_writes) { im = buf->priv.prev_pending_writes->data; @@ -601,9 +573,6 @@ evas_software_xcb_outbuf_flush(Outbuf *buf) free(obr); } buf->priv.prev_pending_writes = buf->priv.pending_writes; -# ifdef EVAS_FRAME_QUEUING - LKU(buf->priv.lock); -# endif buf->priv.pending_writes = NULL; xcb_flush(buf->priv.x11.xcb.conn); #else @@ -648,9 +617,6 @@ evas_software_xcb_outbuf_idle_flush(Outbuf *buf) } else { -#ifdef EVAS_FRAME_QUEUING - LKL(buf->priv.lock); -#endif if (buf->priv.prev_pending_writes) _xcbob_sync(buf->priv.x11.xcb.conn); while (buf->priv.prev_pending_writes) @@ -668,9 +634,6 @@ evas_software_xcb_outbuf_idle_flush(Outbuf *buf) if (obr->mask) _unfind_xcbob(obr->mask, EINA_FALSE); free(obr); } -#ifdef EVAS_FRAME_QUEUING - LKU(buf->priv.lock); -#endif _clear_xcbob(EINA_FALSE); } } @@ -967,13 +930,6 @@ evas_software_xcb_outbuf_debug_show(Outbuf *buf, xcb_drawable_t drawable, int x, } } -#ifdef EVAS_FRAME_QUEUING -void -evas_software_xcb_outbuf_priv_set(Outbuf *buf, void *cur, void *prev __UNUSED__) -{ - buf->priv.pending_writes = (Eina_List *)cur; -} -#endif /* local functions */ static Xcb_Output_Buffer * diff --git a/src/modules/engines/software_x11/evas_xcb_outbuf.h b/src/modules/engines/software_x11/evas_xcb_outbuf.h index b711848..e9f3001 100644 --- a/src/modules/engines/software_x11/evas_xcb_outbuf.h +++ b/src/modules/engines/software_x11/evas_xcb_outbuf.h @@ -23,8 +23,4 @@ Eina_Bool evas_software_xcb_outbuf_alpha_get(Outbuf *buf); void evas_software_xcb_outbuf_debug_set(Outbuf *buf, Eina_Bool debug); void evas_software_xcb_outbuf_debug_show(Outbuf *buf, xcb_drawable_t drawable, int x, int y, int w, int h); -# ifdef EVAS_FRAME_QUEUING -void evas_software_xcb_outbuf_priv_set(Outbuf *buf, void *cur, void *prev); -# endif - #endif diff --git a/src/modules/engines/software_x11/evas_xlib_buffer.c b/src/modules/engines/software_x11/evas_xlib_buffer.c index 594041c..756ffb7 100644 --- a/src/modules/engines/software_x11/evas_xlib_buffer.c +++ b/src/modules/engines/software_x11/evas_xlib_buffer.c @@ -305,13 +305,13 @@ evas_software_xlib_x_output_buffer_new(Display *d, Visual *v, int depth, int w, ph = XSetErrorHandler((XErrorHandler) x_output_tmp_x_err); } -#if defined(EVAS_FRAME_QUEUING) && defined(LIBXEXT_VERSION_LOW) +#if defined(LIBXEXT_VERSION_LOW) /* workaround for libXext of lower then 1.1.1 */ if (evas_common_frameq_enabled()) XLockDisplay(d); #endif XShmAttach(d, xob->shm_info); -#if defined(EVAS_FRAME_QUEUING) && defined(LIBXEXT_VERSION_LOW) +#if defined(LIBXEXT_VERSION_LOW) /* workaround for libXext of lower then 1.1.1 */ if (evas_common_frameq_enabled()) XUnlockDisplay(d); diff --git a/src/modules/engines/software_x11/evas_xlib_outbuf.c b/src/modules/engines/software_x11/evas_xlib_outbuf.c index 24c45df..9662bb3 100644 --- a/src/modules/engines/software_x11/evas_xlib_outbuf.c +++ b/src/modules/engines/software_x11/evas_xlib_outbuf.c @@ -29,14 +29,8 @@ static int shmsize = 0; static int shmmemlimit = 10 * 1024 * 1024; static const unsigned int shmcountlimit = 32; -#ifdef EVAS_FRAME_QUEUING -static LK(lock_shmpool); -#define SHMPOOL_LOCK() LKL(lock_shmpool) -#define SHMPOOL_UNLOCK() LKU(lock_shmpool) -#else #define SHMPOOL_LOCK() #define SHMPOOL_UNLOCK() -#endif static X_Output_Buffer * _find_xob(Display *d, Visual *v, int depth, int w, int h, int shm, void *data) @@ -150,17 +144,11 @@ _clear_xob(int psync) void evas_software_xlib_outbuf_init(void) { -#ifdef EVAS_FRAME_QUEUING - LKI(lock_shmpool); -#endif } void evas_software_xlib_outbuf_free(Outbuf *buf) { -#ifdef EVAS_FRAME_QUEUING - LKL(buf->priv.lock); -#endif while (buf->priv.pending_writes) { RGBA_Image *im; @@ -174,9 +162,6 @@ evas_software_xlib_outbuf_free(Outbuf *buf) if (obr->mxob) _unfind_xob(obr->mxob, 0); free(obr); } -#ifdef EVAS_FRAME_QUEUING - LKU(buf->priv.lock); -#endif evas_software_xlib_outbuf_idle_flush(buf); evas_software_xlib_outbuf_flush(buf); if (buf->priv.x11.xlib.gc) @@ -186,9 +171,6 @@ evas_software_xlib_outbuf_free(Outbuf *buf) if (buf->priv.pal) evas_software_xlib_x_color_deallocate(buf->priv.x11.xlib.disp, buf->priv.x11.xlib.cmap, buf->priv.x11.xlib.vis, buf->priv.pal); -#ifdef EVAS_FRAME_QUEUING - LKD(buf->priv.lock); -#endif free(buf); _clear_xob(0); } @@ -361,9 +343,6 @@ evas_software_xlib_outbuf_setup_x(int w, int h, int rot, Outbuf_Depth depth, evas_software_xlib_outbuf_drawable_set(buf, draw); evas_software_xlib_outbuf_mask_set(buf, mask); } -#ifdef EVAS_FRAME_QUEUING - LKI(buf->priv.lock); -#endif return buf; } @@ -636,10 +615,7 @@ evas_software_xlib_outbuf_new_region_for_update(Outbuf *buf, int x, int y, int w // memset(im->image.data, 0, w * h * sizeof(DATA32)); } -#ifdef EVAS_FRAME_QUEUING - if (!evas_common_frameq_enabled()) -#endif - buf->priv.pending_writes = eina_list_append(buf->priv.pending_writes, im); + buf->priv.pending_writes = eina_list_append(buf->priv.pending_writes, im); return im; } @@ -740,9 +716,6 @@ evas_software_xlib_outbuf_flush(Outbuf *buf) buf->priv.x11.xlib.gcm, obr->x, obr->y, 0); } -#ifdef EVAS_FRAME_QUEUING - LKL(buf->priv.lock); -#endif while (buf->priv.prev_pending_writes) { im = buf->priv.prev_pending_writes->data; @@ -756,9 +729,6 @@ evas_software_xlib_outbuf_flush(Outbuf *buf) free(obr); } buf->priv.prev_pending_writes = buf->priv.pending_writes; -#ifdef EVAS_FRAME_QUEUING - LKU(buf->priv.lock); -#endif buf->priv.pending_writes = NULL; XFlush(buf->priv.x11.xlib.disp); #else @@ -819,9 +789,6 @@ evas_software_xlib_outbuf_idle_flush(Outbuf *buf) } else { -#ifdef EVAS_FRAME_QUEUING - LKL(buf->priv.lock); -#endif if (buf->priv.prev_pending_writes) XSync(buf->priv.x11.xlib.disp, False); while (buf->priv.prev_pending_writes) { @@ -838,9 +805,6 @@ evas_software_xlib_outbuf_idle_flush(Outbuf *buf) if (obr->mxob) _unfind_xob(obr->mxob, 0); free(obr); } -#ifdef EVAS_FRAME_QUEUING - LKU(buf->priv.lock); -#endif _clear_xob(0); } } @@ -1128,10 +1092,3 @@ evas_software_xlib_outbuf_alpha_get(Outbuf *buf) return buf->priv.x11.xlib.mask; } -#ifdef EVAS_FRAME_QUEUING -void -evas_software_xlib_outbuf_set_priv(Outbuf *buf, void *cur, void *prev __UNUSED__) -{ - buf->priv.pending_writes = (Eina_List *)cur; -} -#endif diff --git a/src/modules/engines/software_x11/evas_xlib_outbuf.h b/src/modules/engines/software_x11/evas_xlib_outbuf.h index d70eb8d..8745a1a 100644 --- a/src/modules/engines/software_x11/evas_xlib_outbuf.h +++ b/src/modules/engines/software_x11/evas_xlib_outbuf.h @@ -83,10 +83,5 @@ void evas_software_xlib_outbuf_debug_show (Outbuf *buf, int h); Eina_Bool evas_software_xlib_outbuf_alpha_get (Outbuf *buf); -#ifdef EVAS_FRAME_QUEUING -void evas_software_xlib_outbuf_set_priv (Outbuf *buf, - void *cur, - void *prev); -#endif #endif -- 2.7.4