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.


SVN revision: 70503
This commit is contained in:
Cedric BAIL 2012-04-26 09:53:03 +00:00
parent 9dbaea6dd1
commit 377cc2368a
29 changed files with 59 additions and 1674 deletions

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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
@ -231,9 +183,6 @@ _evas_cache_image_entry_delete(Evas_Cache_Image *cache, Image_Entry *ie)
#ifdef BUILD_ASYNC_PRELOAD
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;
}

View File

@ -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;

View File

@ -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)
{

View File

@ -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)

View File

@ -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,

View File

@ -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);

View File

@ -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 :*/

View File

@ -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);

View File

@ -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
}

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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);

View File

@ -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);

View File

@ -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)

File diff suppressed because it is too large Load Diff

View File

@ -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 */

View File

@ -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;
};

View File

@ -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

View File

@ -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
#endif /* BUILD_PIPE_RENDER */
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;
}
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);

View File

@ -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;

View File

@ -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

View File

@ -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 *

View File

@ -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

View File

@ -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);

View File

@ -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

View File

@ -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