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:
parent
9dbaea6dd1
commit
377cc2368a
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 :*/
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
@ -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 */
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 *
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue