mirror of
https://github.com/brl/mutter.git
synced 2024-11-26 01:50:42 -05:00
cogl-gst: allocate textures synchronously
This makes sure video textures being uploaded via video_texture_new_from_data are allocated before the function returns. This function create a CoglBitmap to wrap the data from gstreamer and by allowing cogl to allocate the texture lazily it's possible that the data being pointed to by the bitmap won't remain valid until we actually come to allocate the texture. Note: we don't simply use cogl_texture_2d_[sliced_]new_from_data() here because we need to be able to call cogl_texture_set_premultiplied() before allocating the texture. Reviewed-by: Neil Roberts <neil@linux.intel.com>
This commit is contained in:
parent
ad9db72f74
commit
9f8ab5d809
@ -455,10 +455,15 @@ video_texture_new_from_data (CoglContext *ctx,
|
||||
cogl_has_feature (ctx, COGL_FEATURE_ID_TEXTURE_NPOT_BASIC))
|
||||
{
|
||||
tex = cogl_texture_2d_new_from_bitmap (bitmap);
|
||||
if (!tex)
|
||||
|
||||
cogl_texture_set_premultiplied (tex, FALSE);
|
||||
|
||||
if (!cogl_texture_allocate (tex, &internal_error))
|
||||
{
|
||||
cogl_error_free (internal_error);
|
||||
internal_error = NULL;
|
||||
cogl_object_unref (tex);
|
||||
tex = NULL;
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -469,12 +474,14 @@ video_texture_new_from_data (CoglContext *ctx,
|
||||
/* Otherwise create a sliced texture */
|
||||
tex = cogl_texture_2d_sliced_new_from_bitmap (bitmap,
|
||||
-1); /* no maximum waste */
|
||||
|
||||
cogl_texture_set_premultiplied (tex, FALSE);
|
||||
|
||||
cogl_texture_allocate (tex, NULL);
|
||||
}
|
||||
|
||||
cogl_object_unref (bitmap);
|
||||
|
||||
cogl_texture_set_premultiplied (tex, FALSE);
|
||||
|
||||
return tex;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user