Allocate immediately in _cogl_egl_texture_2d_new_from_image
The _cogl_egl_texture_2d_new_from_image function has a CoglError argument which implies that it is unlike the other texture constructors and returns errors immediately rather than having a delayed-allocation mechanism. cogl_wayland_texture_2d_new_from_buffer which calls it is also like this. We can't rely on delayed-allocation semantics for this without changing the applications because the texture needs to be allocated before the corresponding EGLImage is destroyed. This patch just makes it immediately allocate. A better patch might be to remove the error argument to make it obvious that there are delayed-allocation semantics and then fix all of the applications. This was breaking Cogland and Mutter. Reviewed-by: Robert Bragg <robert@linux.intel.com> (cherry picked from commit 0206c03d54823b2f6cbb2aa420d07a4db9bcd8a3)
This commit is contained in:
parent
7bf0fe9df8
commit
dd7b1d53db
@ -234,6 +234,7 @@ _cogl_egl_texture_2d_new_from_image (CoglContext *ctx,
|
|||||||
CoglError **error)
|
CoglError **error)
|
||||||
{
|
{
|
||||||
CoglTextureLoader *loader;
|
CoglTextureLoader *loader;
|
||||||
|
CoglTexture2D *tex;
|
||||||
|
|
||||||
_COGL_RETURN_VAL_IF_FAIL (_cogl_context_get_winsys (ctx)->constraints &
|
_COGL_RETURN_VAL_IF_FAIL (_cogl_context_get_winsys (ctx)->constraints &
|
||||||
COGL_RENDERER_CONSTRAINT_USES_EGL,
|
COGL_RENDERER_CONSTRAINT_USES_EGL,
|
||||||
@ -251,7 +252,15 @@ _cogl_egl_texture_2d_new_from_image (CoglContext *ctx,
|
|||||||
loader->src.egl_image.height = height;
|
loader->src.egl_image.height = height;
|
||||||
loader->src.egl_image.format = format;
|
loader->src.egl_image.format = format;
|
||||||
|
|
||||||
return _cogl_texture_2d_create_base (ctx, width, height, format, loader);
|
tex = _cogl_texture_2d_create_base (ctx, width, height, format, loader);
|
||||||
|
|
||||||
|
if (!cogl_texture_allocate (COGL_TEXTURE (tex), error))
|
||||||
|
{
|
||||||
|
cogl_object_unref (tex);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return tex;
|
||||||
}
|
}
|
||||||
#endif /* defined (COGL_HAS_EGL_SUPPORT) && defined (EGL_KHR_image_base) */
|
#endif /* defined (COGL_HAS_EGL_SUPPORT) && defined (EGL_KHR_image_base) */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user