[cogl/wip/rig: 1/34] cogl-gst: allocate textures synchronously
- From: Robert Bragg <rbragg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [cogl/wip/rig: 1/34] cogl-gst: allocate textures synchronously
- Date: Thu, 20 Mar 2014 18:01:45 +0000 (UTC)
commit e3bbb113e70b6d6bd34cdf49ac3646840577c854
Author: Robert Bragg <robert linux intel com>
Date: Fri Jan 10 20:44:00 2014 +0000
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.
cogl-gst/cogl-gst-video-sink.c | 13 ++++++++++---
1 files changed, 10 insertions(+), 3 deletions(-)
---
diff --git a/cogl-gst/cogl-gst-video-sink.c b/cogl-gst/cogl-gst-video-sink.c
index 9a8eace..96ccdd3 100644
--- a/cogl-gst/cogl-gst-video-sink.c
+++ b/cogl-gst/cogl-gst-video-sink.c
@@ -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;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]