evas - gl engine - async texture upload - protect null tex handle access

this stops a very blantant segv when accessing async->tex when it is
NULL on _evas_gl_preload_main_loop_wakeup().
This commit is contained in:
Carsten Haitzler 2013-11-25 22:29:12 +09:00
parent 2f322e1273
commit e03ab668a1
1 changed files with 17 additions and 9 deletions

View File

@ -102,18 +102,26 @@ _evas_gl_preload_main_loop_wakeup(void)
{
Eo *target;
EINA_LIST_FREE(async->tex->targets, target)
eo_do(target, evas_obj_image_pixels_dirty_set(EINA_TRUE));
if (async->tex)
{
EINA_LIST_FREE(async->tex->targets, target)
eo_do(target, evas_obj_image_pixels_dirty_set(EINA_TRUE));
}
async->im->cache_entry.flags.preload_done = 0;
async->tex->was_preloaded = EINA_TRUE;
if (async->tex)
{
async->tex->was_preloaded = EINA_TRUE;
async->tex->ptt->allocations = eina_list_remove(async->tex->ptt->allocations, async->tex->aptt);
pt_unref(async->tex->ptt);
async->tex->ptt = NULL;
free(async->tex->aptt);
async->tex->aptt = NULL;
async->tex->ptt->allocations =
eina_list_remove(async->tex->ptt->allocations,
async->tex->aptt);
pt_unref(async->tex->ptt);
async->tex->ptt = NULL;
free(async->tex->aptt);
async->tex->aptt = NULL;
evas_gl_common_texture_free(async->tex, EINA_FALSE);
evas_gl_common_texture_free(async->tex, EINA_FALSE);
}
#ifdef EVAS_CSERVE2
if (evas_cache2_image_cached(&async->im->cache_entry))
evas_cache2_image_close(&async->im->cache_entry);