Advertisement
Guest User

Untitled

a guest
Jul 18th, 2015
369
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 16.08 KB | None | 0 0
  1. /* cogl-hello.c generated by valac 0.28.0, the Vala compiler
  2.  * generated from cogl-hello.vala, do not modify */
  3.  
  4.  
  5. #include <glib.h>
  6. #include <glib-object.h>
  7. #include <cogl/cogl.h>
  8. #include <float.h>
  9. #include <math.h>
  10. #include <stdlib.h>
  11. #include <string.h>
  12. #include <stdio.h>
  13. #include <gobject/gvaluecollector.h>
  14.  
  15.  
  16. #define TYPE_HELLO (hello_get_type ())
  17. #define HELLO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_HELLO, Hello))
  18. #define HELLO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_HELLO, HelloClass))
  19. #define IS_HELLO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_HELLO))
  20. #define IS_HELLO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_HELLO))
  21. #define HELLO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_HELLO, HelloClass))
  22.  
  23. typedef struct _Hello Hello;
  24. typedef struct _HelloClass HelloClass;
  25. typedef struct _HelloPrivate HelloPrivate;
  26. #define _cogl_object_unref0(var) ((var == NULL) ? NULL : (var = (cogl_object_unref (var), NULL)))
  27. #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
  28. #define _g_main_loop_unref0(var) ((var == NULL) ? NULL : (var = (g_main_loop_unref (var), NULL)))
  29. #define _g_source_unref0(var) ((var == NULL) ? NULL : (var = (g_source_unref (var), NULL)))
  30. #define __vala_CoglFrameClosure_free0(var) ((var == NULL) ? NULL : (var = (_vala_CoglFrameClosure_free (var), NULL)))
  31. #define __vala_CoglOnscreenDirtyClosure_free0(var) ((var == NULL) ? NULL : (var = (_vala_CoglOnscreenDirtyClosure_free (var), NULL)))
  32. typedef struct _ParamSpecHello ParamSpecHello;
  33.  
  34. struct _Hello {
  35.     GTypeInstance parent_instance;
  36.     volatile int ref_count;
  37.     HelloPrivate * priv;
  38. };
  39.  
  40. struct _HelloClass {
  41.     GTypeClass parent_class;
  42.     void (*finalize) (Hello *self);
  43. };
  44.  
  45. struct _ParamSpecHello {
  46.     GParamSpec parent_instance;
  47. };
  48.  
  49.  
  50. static gpointer hello_parent_class = NULL;
  51. extern CoglContext* hello_ctx;
  52. CoglContext* hello_ctx = NULL;
  53. extern CoglFramebuffer* hello_fb;
  54. CoglFramebuffer* hello_fb = NULL;
  55. extern CoglPrimitive* hello_triangle;
  56. CoglPrimitive* hello_triangle = NULL;
  57. extern CoglPipeline* hello_pipeline;
  58. CoglPipeline* hello_pipeline = NULL;
  59. extern guint hello_redraw_idle;
  60. guint hello_redraw_idle = 0U;
  61. extern gboolean hello_is_dirty;
  62. gboolean hello_is_dirty = FALSE;
  63. extern gboolean hello_draw_ready;
  64. gboolean hello_draw_ready = FALSE;
  65.  
  66. gpointer hello_ref (gpointer instance);
  67. void hello_unref (gpointer instance);
  68. GParamSpec* param_spec_hello (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
  69. void value_set_hello (GValue* value, gpointer v_object);
  70. void value_take_hello (GValue* value, gpointer v_object);
  71. gpointer value_get_hello (const GValue* value);
  72. GType hello_get_type (void) G_GNUC_CONST;
  73. enum  {
  74.     HELLO_DUMMY_PROPERTY
  75. };
  76. void hello_maybe_redraw (void);
  77. static gboolean ___lambda4_ (void);
  78. static gboolean ____lambda4__gsource_func (gpointer self);
  79. gint hello_main (gchar** args, int args_length1);
  80. static void __lambda5_ (CoglOnscreen* onscreen, CoglFrameEvent event, CoglFrameInfo* info);
  81. static void ___lambda5__cogl_frame_callback (CoglOnscreen* onscreen, CoglFrameEvent event, CoglFrameInfo* info, gpointer self);
  82. static void _vala_CoglFrameClosure_free (CoglFrameClosure* self);
  83. static void __lambda6_ (CoglOnscreen* onscreen, CoglOnscreenDirtyInfo* info);
  84. static void ___lambda6__cogl_onscreen_dirty_callback (CoglOnscreen* onscreen, CoglOnscreenDirtyInfo* info, gpointer self);
  85. static void _vala_CoglOnscreenDirtyClosure_free (CoglOnscreenDirtyClosure* self);
  86. Hello* hello_new (void);
  87. Hello* hello_construct (GType object_type);
  88. static void hello_finalize (Hello* obj);
  89.  
  90. const CoglVertexP2C4 HELLO_triangle_vertices[3] = {{(gfloat) 0, 0.7f, (guint8) 0xff, (guint8) 0x00, (guint8) 0x00, (guint8) 0xff}, {-0.7f, -0.7f, (guint8) 0x00, (guint8) 0xff, (guint8) 0x00, (guint8) 0xff}, {0.7f, -0.7f, (guint8) 0x00, (guint8) 0x00, (guint8) 0xff, (guint8) 0xff}};
  91.  
  92. static gboolean ___lambda4_ (void) {
  93.     gboolean result = FALSE;
  94.     CoglFramebuffer* _tmp0_ = NULL;
  95.     CoglPrimitive* _tmp1_ = NULL;
  96.     CoglFramebuffer* _tmp2_ = NULL;
  97.     CoglPipeline* _tmp3_ = NULL;
  98.     CoglFramebuffer* _tmp4_ = NULL;
  99.     hello_redraw_idle = (guint) 0;
  100.     hello_is_dirty = FALSE;
  101.     hello_draw_ready = FALSE;
  102.     _tmp0_ = hello_fb;
  103.     cogl_framebuffer_clear4f (_tmp0_, (gulong) COGL_BUFFER_BIT_COLOR, (gfloat) 0, (gfloat) 0, (gfloat) 0, (gfloat) 1);
  104.     _tmp1_ = hello_triangle;
  105.     _tmp2_ = hello_fb;
  106.     _tmp3_ = hello_pipeline;
  107.     cogl_primitive_draw (_tmp1_, _tmp2_, _tmp3_);
  108.     _tmp4_ = hello_fb;
  109.     cogl_onscreen_swap_buffers (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, cogl_onscreen_get_gtype (), CoglOnscreen));
  110.     result = FALSE;
  111.     return result;
  112. }
  113.  
  114.  
  115. static gboolean ____lambda4__gsource_func (gpointer self) {
  116.     gboolean result;
  117.     result = ___lambda4_ ();
  118.     return result;
  119. }
  120.  
  121.  
  122. void hello_maybe_redraw (void) {
  123.     gboolean _tmp0_ = FALSE;
  124.     gboolean _tmp1_ = FALSE;
  125.     gboolean _tmp2_ = FALSE;
  126.     _tmp2_ = hello_is_dirty;
  127.     if (_tmp2_) {
  128.         gboolean _tmp3_ = FALSE;
  129.         _tmp3_ = hello_draw_ready;
  130.         _tmp1_ = _tmp3_;
  131.     } else {
  132.         _tmp1_ = FALSE;
  133.     }
  134.     if (_tmp1_) {
  135.         guint _tmp4_ = 0U;
  136.         _tmp4_ = hello_redraw_idle;
  137.         _tmp0_ = _tmp4_ == ((guint) 0);
  138.     } else {
  139.         _tmp0_ = FALSE;
  140.     }
  141.     if (_tmp0_) {
  142.         guint _tmp5_ = 0U;
  143.         _tmp5_ = g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, ____lambda4__gsource_func, NULL, NULL);
  144.         hello_redraw_idle = _tmp5_;
  145.     }
  146. }
  147.  
  148.  
  149. static gpointer _cogl_object_ref0 (gpointer self) {
  150.     return self ? cogl_object_ref (self) : NULL;
  151. }
  152.  
  153.  
  154. static void __lambda5_ (CoglOnscreen* onscreen, CoglFrameEvent event, CoglFrameInfo* info) {
  155.     CoglFrameEvent _tmp0_ = 0;
  156.     g_return_if_fail (onscreen != NULL);
  157.     g_return_if_fail (info != NULL);
  158.     _tmp0_ = event;
  159.     if (_tmp0_ == COGL_FRAME_EVENT_SYNC) {
  160.         hello_draw_ready = TRUE;
  161.         hello_maybe_redraw ();
  162.     }
  163. }
  164.  
  165.  
  166. static void ___lambda5__cogl_frame_callback (CoglOnscreen* onscreen, CoglFrameEvent event, CoglFrameInfo* info, gpointer self) {
  167.     __lambda5_ (onscreen, event, info);
  168. }
  169.  
  170.  
  171. static void _vala_CoglFrameClosure_free (CoglFrameClosure* self) {
  172.     g_boxed_free (cogl_frame_closure_get_gtype (), self);
  173. }
  174.  
  175.  
  176. static void __lambda6_ (CoglOnscreen* onscreen, CoglOnscreenDirtyInfo* info) {
  177.     g_return_if_fail (onscreen != NULL);
  178.     g_return_if_fail (info != NULL);
  179.     hello_is_dirty = TRUE;
  180.     hello_maybe_redraw ();
  181. }
  182.  
  183.  
  184. static void ___lambda6__cogl_onscreen_dirty_callback (CoglOnscreen* onscreen, CoglOnscreenDirtyInfo* info, gpointer self) {
  185.     __lambda6_ (onscreen, info);
  186. }
  187.  
  188.  
  189. static void _vala_CoglOnscreenDirtyClosure_free (CoglOnscreenDirtyClosure* self) {
  190.     g_boxed_free (cogl_onscreen_dirty_closure_get_gtype (), self);
  191. }
  192.  
  193.  
  194. gint hello_main (gchar** args, int args_length1) {
  195.     gint result = 0;
  196.     CoglOnscreen* onscreen = NULL;
  197.     GSource* cogl_source = NULL;
  198.     GMainLoop* loop = NULL;
  199.     CoglContext* _tmp6_ = NULL;
  200.     CoglOnscreen* _tmp7_ = NULL;
  201.     CoglOnscreen* _tmp8_ = NULL;
  202.     CoglOnscreen* _tmp9_ = NULL;
  203.     CoglFramebuffer* _tmp10_ = NULL;
  204.     CoglOnscreen* _tmp11_ = NULL;
  205.     CoglContext* _tmp12_ = NULL;
  206.     CoglPrimitive* _tmp13_ = NULL;
  207.     CoglContext* _tmp14_ = NULL;
  208.     CoglPipeline* _tmp15_ = NULL;
  209.     CoglContext* _tmp16_ = NULL;
  210.     GSource* _tmp17_ = NULL;
  211.     GSource* _tmp18_ = NULL;
  212.     CoglFramebuffer* _tmp19_ = NULL;
  213.     CoglFrameClosure* _tmp20_ = NULL;
  214.     CoglFrameClosure* _tmp21_ = NULL;
  215.     CoglFramebuffer* _tmp22_ = NULL;
  216.     CoglOnscreenDirtyClosure* _tmp23_ = NULL;
  217.     CoglOnscreenDirtyClosure* _tmp24_ = NULL;
  218.     GMainLoop* _tmp25_ = NULL;
  219.     GMainLoop* _tmp26_ = NULL;
  220.     GError * _inner_error_ = NULL;
  221.     hello_redraw_idle = (guint) 0;
  222.     hello_is_dirty = FALSE;
  223.     hello_draw_ready = TRUE;
  224.     {
  225.         CoglContext* _tmp0_ = NULL;
  226.         CoglContext* _tmp1_ = NULL;
  227.         CoglContext* _tmp2_ = NULL;
  228.         _tmp1_ = cogl_context_new (NULL, &_inner_error_);
  229.         _tmp0_ = _tmp1_;
  230.         if (G_UNLIKELY (_inner_error_ != NULL)) {
  231.             goto __catch0_g_error;
  232.         }
  233.         _tmp2_ = _tmp0_;
  234.         _tmp0_ = NULL;
  235.         _cogl_object_unref0 (hello_ctx);
  236.         hello_ctx = _tmp2_;
  237.         _cogl_object_unref0 (_tmp0_);
  238.     }
  239.     goto __finally0;
  240.     __catch0_g_error:
  241.     {
  242.         GError* e = NULL;
  243.         FILE* _tmp3_ = NULL;
  244.         GError* _tmp4_ = NULL;
  245.         const gchar* _tmp5_ = NULL;
  246.         e = _inner_error_;
  247.         _inner_error_ = NULL;
  248.         _tmp3_ = stderr;
  249.         _tmp4_ = e;
  250.         _tmp5_ = _tmp4_->message;
  251.         fprintf (_tmp3_, "Failed to create context: %s\n", _tmp5_);
  252.         result = 1;
  253.         _g_error_free0 (e);
  254.         _g_main_loop_unref0 (loop);
  255.         _g_source_unref0 (cogl_source);
  256.         _cogl_object_unref0 (onscreen);
  257.         return result;
  258.     }
  259.     __finally0:
  260.     if (G_UNLIKELY (_inner_error_ != NULL)) {
  261.         _g_main_loop_unref0 (loop);
  262.         _g_source_unref0 (cogl_source);
  263.         _cogl_object_unref0 (onscreen);
  264.         g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
  265.         g_clear_error (&_inner_error_);
  266.         return 0;
  267.     }
  268.     _tmp6_ = hello_ctx;
  269.     _tmp7_ = cogl_onscreen_new (_tmp6_, 640, 480);
  270.     _cogl_object_unref0 (onscreen);
  271.     onscreen = _tmp7_;
  272.     _tmp8_ = onscreen;
  273.     cogl_onscreen_show (_tmp8_);
  274.     _tmp9_ = onscreen;
  275.     _tmp10_ = _cogl_object_ref0 ((CoglFramebuffer*) _tmp9_);
  276.     _cogl_object_unref0 (hello_fb);
  277.     hello_fb = _tmp10_;
  278.     _tmp11_ = onscreen;
  279.     cogl_onscreen_set_resizable (_tmp11_, (CoglBool) TRUE);
  280.     _tmp12_ = hello_ctx;
  281.     _tmp13_ = cogl_primitive_new_p2c4 (_tmp12_, COGL_VERTICES_MODE_TRIANGLES, G_N_ELEMENTS (HELLO_triangle_vertices), HELLO_triangle_vertices);
  282.     _cogl_object_unref0 (hello_triangle);
  283.     hello_triangle = _tmp13_;
  284.     _tmp14_ = hello_ctx;
  285.     _tmp15_ = cogl_pipeline_new (_tmp14_);
  286.     _cogl_object_unref0 (hello_pipeline);
  287.     hello_pipeline = _tmp15_;
  288.     _tmp16_ = hello_ctx;
  289.     _tmp17_ = cogl_glib_source_new (_tmp16_, G_PRIORITY_DEFAULT);
  290.     _g_source_unref0 (cogl_source);
  291.     cogl_source = _tmp17_;
  292.     _tmp18_ = cogl_source;
  293.     g_source_attach (_tmp18_, NULL);
  294.     _tmp19_ = hello_fb;
  295.     _tmp20_ = cogl_onscreen_add_frame_callback (G_TYPE_CHECK_INSTANCE_CAST (_tmp19_, cogl_onscreen_get_gtype (), CoglOnscreen), ___lambda5__cogl_frame_callback, NULL, NULL);
  296.     _tmp21_ = _tmp20_;
  297.     __vala_CoglFrameClosure_free0 (_tmp21_);
  298.     _tmp22_ = hello_fb;
  299.     _tmp23_ = cogl_onscreen_add_dirty_callback (G_TYPE_CHECK_INSTANCE_CAST (_tmp22_, cogl_onscreen_get_gtype (), CoglOnscreen), ___lambda6__cogl_onscreen_dirty_callback, NULL, NULL);
  300.     _tmp24_ = _tmp23_;
  301.     __vala_CoglOnscreenDirtyClosure_free0 (_tmp24_);
  302.     _tmp25_ = g_main_loop_new (NULL, TRUE);
  303.     _g_main_loop_unref0 (loop);
  304.     loop = _tmp25_;
  305.     _tmp26_ = loop;
  306.     g_main_loop_run (_tmp26_);
  307.     result = 0;
  308.     _g_main_loop_unref0 (loop);
  309.     _g_source_unref0 (cogl_source);
  310.     _cogl_object_unref0 (onscreen);
  311.     return result;
  312. }
  313.  
  314.  
  315. int main (int argc, char ** argv) {
  316. #if !GLIB_CHECK_VERSION (2,35,0)
  317.     g_type_init ();
  318. #endif
  319.     return hello_main (argv, argc);
  320. }
  321.  
  322.  
  323. Hello* hello_construct (GType object_type) {
  324.     Hello* self = NULL;
  325.     self = (Hello*) g_type_create_instance (object_type);
  326.     return self;
  327. }
  328.  
  329.  
  330. Hello* hello_new (void) {
  331.     return hello_construct (TYPE_HELLO);
  332. }
  333.  
  334.  
  335. static void value_hello_init (GValue* value) {
  336.     value->data[0].v_pointer = NULL;
  337. }
  338.  
  339.  
  340. static void value_hello_free_value (GValue* value) {
  341.     if (value->data[0].v_pointer) {
  342.         hello_unref (value->data[0].v_pointer);
  343.     }
  344. }
  345.  
  346.  
  347. static void value_hello_copy_value (const GValue* src_value, GValue* dest_value) {
  348.     if (src_value->data[0].v_pointer) {
  349.         dest_value->data[0].v_pointer = hello_ref (src_value->data[0].v_pointer);
  350.     } else {
  351.         dest_value->data[0].v_pointer = NULL;
  352.     }
  353. }
  354.  
  355.  
  356. static gpointer value_hello_peek_pointer (const GValue* value) {
  357.     return value->data[0].v_pointer;
  358. }
  359.  
  360.  
  361. static gchar* value_hello_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
  362.     if (collect_values[0].v_pointer) {
  363.         Hello* object;
  364.         object = collect_values[0].v_pointer;
  365.         if (object->parent_instance.g_class == NULL) {
  366.             return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
  367.         } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
  368.             return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
  369.         }
  370.         value->data[0].v_pointer = hello_ref (object);
  371.     } else {
  372.         value->data[0].v_pointer = NULL;
  373.     }
  374.     return NULL;
  375. }
  376.  
  377.  
  378. static gchar* value_hello_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
  379.     Hello** object_p;
  380.     object_p = collect_values[0].v_pointer;
  381.     if (!object_p) {
  382.         return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
  383.     }
  384.     if (!value->data[0].v_pointer) {
  385.         *object_p = NULL;
  386.     } else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
  387.         *object_p = value->data[0].v_pointer;
  388.     } else {
  389.         *object_p = hello_ref (value->data[0].v_pointer);
  390.     }
  391.     return NULL;
  392. }
  393.  
  394.  
  395. GParamSpec* param_spec_hello (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) {
  396.     ParamSpecHello* spec;
  397.     g_return_val_if_fail (g_type_is_a (object_type, TYPE_HELLO), NULL);
  398.     spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
  399.     G_PARAM_SPEC (spec)->value_type = object_type;
  400.     return G_PARAM_SPEC (spec);
  401. }
  402.  
  403.  
  404. gpointer value_get_hello (const GValue* value) {
  405.     g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_HELLO), NULL);
  406.     return value->data[0].v_pointer;
  407. }
  408.  
  409.  
  410. void value_set_hello (GValue* value, gpointer v_object) {
  411.     Hello* old;
  412.     g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_HELLO));
  413.     old = value->data[0].v_pointer;
  414.     if (v_object) {
  415.         g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_HELLO));
  416.         g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
  417.         value->data[0].v_pointer = v_object;
  418.         hello_ref (value->data[0].v_pointer);
  419.     } else {
  420.         value->data[0].v_pointer = NULL;
  421.     }
  422.     if (old) {
  423.         hello_unref (old);
  424.     }
  425. }
  426.  
  427.  
  428. void value_take_hello (GValue* value, gpointer v_object) {
  429.     Hello* old;
  430.     g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_HELLO));
  431.     old = value->data[0].v_pointer;
  432.     if (v_object) {
  433.         g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_HELLO));
  434.         g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
  435.         value->data[0].v_pointer = v_object;
  436.     } else {
  437.         value->data[0].v_pointer = NULL;
  438.     }
  439.     if (old) {
  440.         hello_unref (old);
  441.     }
  442. }
  443.  
  444.  
  445. static void hello_class_init (HelloClass * klass) {
  446.     hello_parent_class = g_type_class_peek_parent (klass);
  447.     ((HelloClass *) klass)->finalize = hello_finalize;
  448. }
  449.  
  450.  
  451. static void hello_instance_init (Hello * self) {
  452.     self->ref_count = 1;
  453. }
  454.  
  455.  
  456. static void hello_finalize (Hello* obj) {
  457.     Hello * self;
  458.     self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_HELLO, Hello);
  459.     g_signal_handlers_destroy (self);
  460. }
  461.  
  462.  
  463. GType hello_get_type (void) {
  464.     static volatile gsize hello_type_id__volatile = 0;
  465.     if (g_once_init_enter (&hello_type_id__volatile)) {
  466.         static const GTypeValueTable g_define_type_value_table = { value_hello_init, value_hello_free_value, value_hello_copy_value, value_hello_peek_pointer, "p", value_hello_collect_value, "p", value_hello_lcopy_value };
  467.         static const GTypeInfo g_define_type_info = { sizeof (HelloClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) hello_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (Hello), 0, (GInstanceInitFunc) hello_instance_init, &g_define_type_value_table };
  468.         static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
  469.         GType hello_type_id;
  470.         hello_type_id = g_type_register_fundamental (g_type_fundamental_next (), "Hello", &g_define_type_info, &g_define_type_fundamental_info, 0);
  471.         g_once_init_leave (&hello_type_id__volatile, hello_type_id);
  472.     }
  473.     return hello_type_id__volatile;
  474. }
  475.  
  476.  
  477. gpointer hello_ref (gpointer instance) {
  478.     Hello* self;
  479.     self = instance;
  480.     g_atomic_int_inc (&self->ref_count);
  481.     return instance;
  482. }
  483.  
  484.  
  485. void hello_unref (gpointer instance) {
  486.     Hello* self;
  487.     self = instance;
  488.     if (g_atomic_int_dec_and_test (&self->ref_count)) {
  489.         HELLO_GET_CLASS (self)->finalize (self);
  490.         g_type_free_instance ((GTypeInstance *) self);
  491.     }
  492. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement