forked from enlightenment/efl
evas: fix texture allocation bugs.
This commit is contained in:
parent
c9c77a4004
commit
6adb604dae
|
@ -262,12 +262,15 @@ _pool_tex_define(Evas_GL_Texture_Pool *pt, int lastx, int w, int *u, Eina_List *
|
||||||
*u = lastx;
|
*u = lastx;
|
||||||
|
|
||||||
napt = malloc(sizeof (Evas_GL_Texture_Alloca));
|
napt = malloc(sizeof (Evas_GL_Texture_Alloca));
|
||||||
if (napt) return NULL;
|
if (!napt) return NULL;
|
||||||
|
|
||||||
napt->tex = NULL;
|
napt->tex = NULL;
|
||||||
napt->x = lastx;
|
napt->x = lastx;
|
||||||
napt->w = w;
|
napt->w = w;
|
||||||
|
|
||||||
|
if (l == NULL)
|
||||||
|
pt->allocations = eina_list_append(pt->allocations, napt);
|
||||||
|
else
|
||||||
pt->allocations = eina_list_prepend_relative_list(pt->allocations, napt, l);
|
pt->allocations = eina_list_prepend_relative_list(pt->allocations, napt, l);
|
||||||
|
|
||||||
return napt;
|
return napt;
|
||||||
|
@ -315,9 +318,7 @@ _pool_tex_find(Evas_Engine_GL_Context *gc, int w, int h,
|
||||||
pt->slot = -1;
|
pt->slot = -1;
|
||||||
pt->fslot = -1;
|
pt->fslot = -1;
|
||||||
pt->whole = 1;
|
pt->whole = 1;
|
||||||
*u = 0;
|
*apt = _pool_tex_alloc(pt, w, h, u, v);;
|
||||||
*v = 0;
|
|
||||||
*apt = NULL;
|
|
||||||
return pt;
|
return pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -372,10 +373,12 @@ evas_gl_common_texture_new(Evas_Engine_GL_Context *gc, RGBA_Image *im)
|
||||||
evas_gl_common_texture_light_free(tex);
|
evas_gl_common_texture_light_free(tex);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
tex->apt->tex = tex;
|
||||||
tex->x = u + 1;
|
tex->x = u + 1;
|
||||||
tex->y = v;
|
tex->y = v;
|
||||||
tex->pt->references++;
|
tex->pt->references++;
|
||||||
evas_gl_common_texture_update(tex, im);
|
evas_gl_common_texture_update(tex, im);
|
||||||
|
|
||||||
return tex;
|
return tex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -954,7 +957,7 @@ evas_gl_common_texture_free(Evas_GL_Texture *tex, Eina_Bool force EINA_UNUSED)
|
||||||
}
|
}
|
||||||
if (tex->ptt)
|
if (tex->ptt)
|
||||||
{
|
{
|
||||||
tex->pt->allocations = eina_list_remove(tex->pt->allocations, tex->aptt);
|
tex->ptt->allocations = eina_list_remove(tex->ptt->allocations, tex->aptt);
|
||||||
free(tex->aptt);
|
free(tex->aptt);
|
||||||
tex->aptt = NULL;
|
tex->aptt = NULL;
|
||||||
pt_unref(tex->ptt);
|
pt_unref(tex->ptt);
|
||||||
|
@ -987,6 +990,7 @@ evas_gl_common_texture_alpha_new(Evas_Engine_GL_Context *gc, DATA8 *pixels,
|
||||||
evas_gl_common_texture_light_free(tex);
|
evas_gl_common_texture_light_free(tex);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
tex->apt->tex = tex;
|
||||||
tex->x = u + 1;
|
tex->x = u + 1;
|
||||||
tex->y = v;
|
tex->y = v;
|
||||||
tex->pt->references++;
|
tex->pt->references++;
|
||||||
|
|
Loading…
Reference in New Issue