diff options
author | Leo Tenenbaum <pommicket@gmail.com> | 2018-08-20 21:12:06 -0400 |
---|---|---|
committer | Leo Tenenbaum <pommicket@gmail.com> | 2018-08-20 21:12:06 -0400 |
commit | 63e87c2d0c9d263f14c77b68f85c67d46ece82a9 (patch) | |
tree | 6260365cbf7d24f37d27669e8538227fcb72e243 /gtk+-mingw/share/gtk-doc/html/gobject/howto-gobject-destruction.html | |
parent | a4460f6d9453bbd7e584937686449cef3e19f052 (diff) |
Diffstat (limited to 'gtk+-mingw/share/gtk-doc/html/gobject/howto-gobject-destruction.html')
-rw-r--r-- | gtk+-mingw/share/gtk-doc/html/gobject/howto-gobject-destruction.html | 122 |
1 files changed, 0 insertions, 122 deletions
diff --git a/gtk+-mingw/share/gtk-doc/html/gobject/howto-gobject-destruction.html b/gtk+-mingw/share/gtk-doc/html/gobject/howto-gobject-destruction.html deleted file mode 100644 index 3a8b030..0000000 --- a/gtk+-mingw/share/gtk-doc/html/gobject/howto-gobject-destruction.html +++ /dev/null @@ -1,122 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>Object Destruction</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> -<link rel="home" href="index.html" title="GObject Reference Manual"> -<link rel="up" href="howto-gobject.html" title="How to define and implement a new GObject"> -<link rel="prev" href="howto-gobject-construction.html" title="Object Construction"> -<link rel="next" href="howto-gobject-methods.html" title="Object methods"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> -<link rel="stylesheet" href="style.css" type="text/css"> -</head> -<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> -<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"> -<td><a accesskey="p" href="howto-gobject-construction.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> -<td><a accesskey="u" href="howto-gobject.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> -<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> -<th width="100%" align="center">GObject Reference Manual</th> -<td><a accesskey="n" href="howto-gobject-methods.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> -</tr></table> -<div class="sect1"> -<div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="howto-gobject-destruction"></a>Object Destruction</h2></div></div></div> -<p> - Again, it is often difficult to figure out which mechanism to use to - hook into the object's destruction process: when the last - <code class="function"><a class="link" href="gobject-The-Base-Object-Type.html#g-object-unref" title="g_object_unref ()">g_object_unref</a></code> - function call is made, a lot of things happen as described in - <a class="xref" href="gobject-memory.html#gobject-destruction-table" title="Table 5. g_object_unref">Table 5, “g_object_unref”</a>. - </p> -<p> - The destruction process of your object might be split in two different - phases: dispose and the finalize. -</p> -<pre class="programlisting"> -#define MAMAN_BAR_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), MAMAN_TYPE_BAR, MamanBarPrivate)) - -struct _MamanBarPrivate -{ - GObject *an_object; - - gchar *a_string; -}; - -G_DEFINE_TYPE (MamanBar, maman_bar, G_TYPE_OBJECT); - -static void -maman_bar_dispose (GObject *gobject) -{ - MamanBar *self = MAMAN_BAR (gobject); - - /* - * In dispose, you are supposed to free all types referenced from this - * object which might themselves hold a reference to self. Generally, - * the most simple solution is to unref all members on which you own a - * reference. - */ - - /* dispose might be called multiple times, so we must guard against - * calling g_object_unref() on an invalid GObject. - */ - if (self->priv->an_object) - { - g_object_unref (self->priv->an_object); - - self->priv->an_object = NULL; - } - - /* Chain up to the parent class */ - G_OBJECT_CLASS (maman_bar_parent_class)->dispose (gobject); -} - -static void -maman_bar_finalize (GObject *gobject) -{ - MamanBar *self = MAMAN_BAR (gobject); - - g_free (self->priv->a_string); - - /* Chain up to the parent class */ - G_OBJECT_CLASS (maman_bar_parent_class)->finalize (gobject); -} - -static void -maman_bar_class_init (MamanBarClass *klass) -{ - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - - gobject_class->dispose = maman_bar_dispose; - gobject_class->finalize = maman_bar_finalize; - - g_type_class_add_private (klass, sizeof (MamanBarPrivate)); -} - -static void -maman_bar_init (MamanBar *self); -{ - self->priv = MAMAN_BAR_GET_PRIVATE (self); - - self->priv->an_object = g_object_new (MAMAN_TYPE_BAZ, NULL); - self->priv->a_string = g_strdup ("Maman"); -} -</pre> -<p> - </p> -<p> - Add similar code to your GObject, make sure the code still builds - and runs: dispose and finalize must be called during the last unref. - </p> -<p> - It is possible that object methods might be invoked after dispose is - run and before finalize runs. GObject does not consider this to be a - program error: you must gracefully detect this and neither crash nor - warn the user. - </p> -</div> -<div class="footer"> -<hr> - Generated by GTK-Doc V1.18</div> -</body> -</html>
\ No newline at end of file |