Stop dithering over GPrivate

Take out the half-private g_private_init() stuff and replace it with a
G_PRIVATE_INIT macro that allows specifying a GDestroyNotify.

Expose the GPrivate structure in a public header.

Add a g_private_replace() to (sort of) match the functionality of
g_static_mutex_set().

Improve the documentation.

Deprecate g_private_new().
This commit is contained in:
Ryan Lortie
2011-09-30 14:22:04 -04:00
parent 7a75f56aa1
commit 8e43470c38
12 changed files with 273 additions and 201 deletions

View File

@@ -112,6 +112,14 @@ struct _GRecMutex
gpointer impl;
};
#define G_PRIVATE_INIT(notify) { NULL, (notify), { NULL, NULL } }
struct _GPrivate
{
gpointer p;
GDestroyNotify notify;
gpointer future[2];
};
void g_thread_init (gpointer vtable);
gboolean g_thread_get_initialized (void);
@@ -274,10 +282,11 @@ gboolean g_cond_timedwait (GCond
GMutex *mutex,
gint64 abs_time);
GPrivate * g_private_new (GDestroyNotify notify);
gpointer g_private_get (GPrivate *key);
void g_private_set (GPrivate *key,
gpointer value);
void g_private_replace (GPrivate *key,
gpointer value);
G_END_DECLS