eina: alloc ABI2 to reduce risk for futur ABI change.

SVN revision: 58582
This commit is contained in:
Cedric BAIL 2011-04-12 08:52:59 +00:00
parent 892994005b
commit d7800c23e3
2 changed files with 13 additions and 5 deletions

View File

@ -63,7 +63,7 @@ struct _Eina_Mempool
{
Eina_Mempool_Backend_ABI1 backend;
void *backend_data;
Eina_Mempool_Backend_ABI2 backend2;
Eina_Mempool_Backend_ABI2 *backend2;
};
/**

View File

@ -91,8 +91,14 @@ _new_va(const char *name,
SBP(statistics);
SBP(shutdown);
#undef SBP
mp->backend2.repack = be->repack;
if (be->repack)
{
mp->backend2 = calloc(1, sizeof (Eina_Mempool_Backend_ABI2));
if (mp->backend2)
mp->backend2->repack = be->repack;
}
mp->backend_data = mp->backend.init(context, options, args);
return mp;
@ -327,15 +333,17 @@ EAPI void eina_mempool_del(Eina_Mempool *mp)
EINA_SAFETY_ON_NULL_RETURN(mp->backend.shutdown);
DBG("mp=%p", mp);
mp->backend.shutdown(mp->backend_data);
free(mp->backend2);
free(mp);
}
EAPI void eina_mempool_repack(Eina_Mempool *mp, Eina_Mempool_Repack_Cb cb, void *data)
{
EINA_SAFETY_ON_NULL_RETURN(mp);
EINA_SAFETY_ON_NULL_RETURN(mp->backend.shutdown);
EINA_SAFETY_ON_NULL_RETURN(mp->backend2);
EINA_SAFETY_ON_NULL_RETURN(mp->backend2->repack);
DBG("mp=%p", mp);
mp->backend2.repack(mp->backend_data, cb, data);
mp->backend2->repack(mp->backend_data, cb, data);
}
EAPI void eina_mempool_gc(Eina_Mempool *mp)