[cogl/wip/neil/pipeline-uniforms: 10/15] cogl-boxed-value: Add _cogl_boxed_value_copy
- From: Neil Roberts <nroberts src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [cogl/wip/neil/pipeline-uniforms: 10/15] cogl-boxed-value: Add _cogl_boxed_value_copy
- Date: Fri, 4 Nov 2011 16:28:32 +0000 (UTC)
commit 3bc6cff47a6bc12ca77945320621fc5a255b3e5b
Author: Neil Roberts <neil linux intel com>
Date: Fri Nov 4 16:21:28 2011 +0000
cogl-boxed-value: Add _cogl_boxed_value_copy
This adds a function to copy one boxed value to another. It is assumed
that the destination boxed value is totally initialised (so it won't
try to free any memory in it).
cogl/cogl-boxed-value.c | 34 ++++++++++++++++++++++++++++++++++
cogl/cogl-boxed-value.h | 11 +++++++++++
2 files changed, 45 insertions(+), 0 deletions(-)
---
diff --git a/cogl/cogl-boxed-value.c b/cogl/cogl-boxed-value.c
index a728caa..b15ad7b 100644
--- a/cogl/cogl-boxed-value.c
+++ b/cogl/cogl-boxed-value.c
@@ -202,6 +202,40 @@ _cogl_boxed_value_set_matrix (CoglBoxedValue *bv,
}
void
+_cogl_boxed_value_copy (CoglBoxedValue *dst,
+ const CoglBoxedValue *src)
+{
+ *dst = *src;
+
+ if (src->count > 1)
+ {
+ switch (src->type)
+ {
+ case COGL_BOXED_NONE:
+ break;
+
+ case COGL_BOXED_INT:
+ dst->v.int_array = g_memdup (src->v.int_array,
+ src->size * src->count * sizeof (int));
+ break;
+
+ case COGL_BOXED_FLOAT:
+ dst->v.float_array = g_memdup (src->v.float_array,
+ src->size *
+ src->count *
+ sizeof (float));
+ break;
+
+ case COGL_BOXED_MATRIX:
+ dst->v.float_array = g_memdup (src->v.float_array,
+ src->size * src->size *
+ src->count * sizeof (float));
+ break;
+ }
+ }
+}
+
+void
_cogl_boxed_value_destroy (CoglBoxedValue *bv)
{
if (bv->count > 1)
diff --git a/cogl/cogl-boxed-value.h b/cogl/cogl-boxed-value.h
index 1e05c72..179b17c 100644
--- a/cogl/cogl-boxed-value.h
+++ b/cogl/cogl-boxed-value.h
@@ -89,6 +89,17 @@ _cogl_boxed_value_set_matrix (CoglBoxedValue *bv,
gboolean transpose,
const float *value);
+/*
+ * _cogl_boxed_value_copy:
+ * @dst: The destination boxed value
+ * @src: The source boxed value
+ *
+ * This copies @src to @dst. It is assumed that @dst is initialised.
+ */
+void
+_cogl_boxed_value_copy (CoglBoxedValue *dst,
+ const CoglBoxedValue *src);
+
void
_cogl_boxed_value_destroy (CoglBoxedValue *bv);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]