~elementary-os/elementaryos/os-patch-mutter-bionic

« back to all changes in this revision

Viewing changes to cogl/cogl/cogl-gtype.c

  • Committer: RabbitBot
  • Date: 2018-04-11 14:49:36 UTC
  • Revision ID: rabbitbot@elementary.io-20180411144936-hgymqa9d8d1xfpbh
Initial import, version 3.28.0-2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include "cogl-gtype-private.h"
 
2
 
 
3
#include <gobject/gvaluecollector.h>
 
4
 
 
5
void
 
6
_cogl_gtype_object_init_value (GValue *value)
 
7
{
 
8
  value->data[0].v_pointer = NULL;
 
9
}
 
10
 
 
11
void
 
12
_cogl_gtype_object_free_value (GValue *value)
 
13
{
 
14
  if (value->data[0].v_pointer != NULL)
 
15
    cogl_object_unref (value->data[0].v_pointer);
 
16
}
 
17
 
 
18
void
 
19
_cogl_gtype_object_copy_value (const GValue *src,
 
20
                               GValue       *dst)
 
21
{
 
22
  if (src->data[0].v_pointer != NULL)
 
23
    dst->data[0].v_pointer = cogl_object_ref (src->data[0].v_pointer);
 
24
  else
 
25
    dst->data[0].v_pointer = NULL;
 
26
}
 
27
 
 
28
gpointer
 
29
_cogl_gtype_object_peek_pointer (const GValue *value)
 
30
{
 
31
  return value->data[0].v_pointer;
 
32
}
 
33
 
 
34
gchar *
 
35
_cogl_gtype_object_collect_value (GValue      *value,
 
36
                                  guint        n_collect_values,
 
37
                                  GTypeCValue *collect_values,
 
38
                                  guint        collect_flags)
 
39
{
 
40
  CoglObject *object;
 
41
 
 
42
  object = collect_values[0].v_pointer;
 
43
 
 
44
  if (object == NULL)
 
45
    {
 
46
      value->data[0].v_pointer = NULL;
 
47
      return NULL;
 
48
    }
 
49
 
 
50
  if (object->klass == NULL)
 
51
    return g_strconcat ("invalid unclassed CoglObject pointer for "
 
52
                        "value type '",
 
53
                        G_VALUE_TYPE_NAME (value),
 
54
                        "'",
 
55
                        NULL);
 
56
 
 
57
  value->data[0].v_pointer = cogl_object_ref (object);
 
58
 
 
59
  return NULL;
 
60
}
 
61
 
 
62
gchar *
 
63
_cogl_gtype_object_lcopy_value (const GValue *value,
 
64
                                guint         n_collect_values,
 
65
                                GTypeCValue  *collect_values,
 
66
                                guint         collect_flags)
 
67
{
 
68
  CoglObject **object_p = collect_values[0].v_pointer;
 
69
 
 
70
  if (object_p == NULL)
 
71
    return g_strconcat ("value location for '",
 
72
                        G_VALUE_TYPE_NAME (value),
 
73
                        "' passed as NULL",
 
74
                        NULL);
 
75
 
 
76
  if (value->data[0].v_pointer == NULL)
 
77
    *object_p = NULL;
 
78
  else if (collect_flags & G_VALUE_NOCOPY_CONTENTS)
 
79
    *object_p = value->data[0].v_pointer;
 
80
  else
 
81
    *object_p = cogl_object_ref (value->data[0].v_pointer);
 
82
 
 
83
  return NULL;
 
84
}
 
85
 
 
86
void
 
87
_cogl_gtype_object_class_base_init (CoglObjectClass *klass)
 
88
{
 
89
}
 
90
 
 
91
void
 
92
_cogl_gtype_object_class_base_finalize (CoglObjectClass *klass)
 
93
{
 
94
}
 
95
 
 
96
void
 
97
_cogl_gtype_object_class_init (CoglObjectClass *klass)
 
98
{
 
99
}
 
100
 
 
101
void
 
102
_cogl_gtype_object_init (CoglObject *object)
 
103
{
 
104
}
 
105
 
 
106
void
 
107
_cogl_gtype_dummy_iface_init (gpointer iface)
 
108
{
 
109
}
 
110
 
 
111
/**
 
112
 * cogl_object_value_set_object:
 
113
 * @value: a #GValue initialized with %COGL_GTYPE_TYPE_OBJECT
 
114
 * @object: (type Cogl.GtypeObject) (allow-none): a #CoglGtypeObject, or %NULL
 
115
 *
 
116
 * Sets the contents of a #GValue initialized with %COGL_GTYPE_TYPE_OBJECT.
 
117
 *
 
118
 */
 
119
void
 
120
cogl_object_value_set_object (GValue   *value,
 
121
                              gpointer  object)
 
122
{
 
123
  CoglObject *old_object;
 
124
 
 
125
  old_object = value->data[0].v_pointer;
 
126
 
 
127
  if (object != NULL)
 
128
    {
 
129
      /* take over ownership */
 
130
      value->data[0].v_pointer = object;
 
131
    }
 
132
  else
 
133
    value->data[0].v_pointer = NULL;
 
134
 
 
135
  if (old_object != NULL)
 
136
    cogl_object_unref (old_object);
 
137
}
 
138
 
 
139
/**
 
140
 * cogl_object_value_get_object:
 
141
 * @value: a #GValue initialized with %COGL_GTYPE_TYPE_OBJECT
 
142
 *
 
143
 * Retrieves a pointer to the #CoglGtypeObject contained inside
 
144
 * the passed #GValue.
 
145
 *
 
146
 * Return value: (transfer none) (type Cogl.GtypeObject): a pointer to
 
147
 *   a #CoglGtypeObject, or %NULL
 
148
 */
 
149
gpointer
 
150
cogl_object_value_get_object (const GValue *value)
 
151
{
 
152
  return value->data[0].v_pointer;
 
153
}