mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-09-27 17:52:58 +02:00
prefix internal functions with '_'. renamed g_signal_connect_closure() to
Fri Nov 3 07:35:00 2000 Tim Janik <timj@gtk.org> * gsignal.[hc]: prefix internal functions with '_'. renamed g_signal_connect_closure() to g_signal_connect_closure_by_id(). added g_signal_parse_name() to retrive signal_id and detail quark from a signal name (internal). Fri Nov 3 07:33:15 2000 Tim Janik <timj@gtk.org> * gobject/gobject-docs.sgml: added &gobject-closures; section. * gobject/Makefile.am (tmpl_sources): add tmpl/clsoures.sgml * gobject/gobject-sections.txt: added Closure section. * gobject/tmpl/closures.sgml: new file with template description for GClosure functions.
This commit is contained in:
@@ -1,3 +1,10 @@
|
||||
Fri Nov 3 07:35:00 2000 Tim Janik <timj@gtk.org>
|
||||
|
||||
* gsignal.[hc]: prefix internal functions with '_'. renamed
|
||||
g_signal_connect_closure() to g_signal_connect_closure_by_id().
|
||||
added g_signal_parse_name() to retrive signal_id and detail quark
|
||||
from a signal name (internal).
|
||||
|
||||
Wed Nov 1 03:36:54 2000 Tim Janik <timj@gtk.org>
|
||||
|
||||
* gobject.c (g_object_base_class_finalize): destroy all signals that
|
||||
|
@@ -145,7 +145,7 @@ void g_closure_invoke (GClosure *closure,
|
||||
gpointer invocation_hint);
|
||||
|
||||
|
||||
/*
|
||||
/* FIXME:
|
||||
data_object::destroy -> closure_invalidate();
|
||||
closure_invalidate() -> disconnect(closure);
|
||||
disconnect(closure) -> (unlink) closure_unref();
|
||||
|
@@ -164,7 +164,7 @@ g_object_base_class_finalize (GObjectClass *class)
|
||||
|
||||
g_message ("finallizing base class of %s", G_OBJECT_CLASS_NAME (class));
|
||||
|
||||
g_signals_destroy (G_OBJECT_CLASS_TYPE (class));
|
||||
_g_signals_destroy (G_OBJECT_CLASS_TYPE (class));
|
||||
|
||||
for (i = 0; i < class->n_param_specs; i++)
|
||||
{
|
||||
@@ -295,7 +295,7 @@ g_object_do_shutdown (GObject *object)
|
||||
static void
|
||||
g_object_do_finalize (GObject *object)
|
||||
{
|
||||
g_signal_handlers_destroy (object);
|
||||
_g_signal_handlers_destroy (object);
|
||||
g_datalist_clear (&object->qdata);
|
||||
|
||||
#ifdef DEBUG_OBJECTS
|
||||
|
@@ -433,7 +433,7 @@ handler_unref_R (guint signal_id,
|
||||
{
|
||||
if (handler->next)
|
||||
handler->next->prev = handler->prev;
|
||||
if (handler->prev) /* watch out for g_signal_handlers_destroy()! */
|
||||
if (handler->prev) /* watch out for _g_signal_handlers_destroy()! */
|
||||
handler->prev->next = handler->next;
|
||||
else
|
||||
{
|
||||
@@ -568,7 +568,7 @@ g_signal_init (void) /* sync with gtype.c */
|
||||
}
|
||||
|
||||
void
|
||||
g_signals_destroy (GType itype)
|
||||
_g_signals_destroy (GType itype)
|
||||
{
|
||||
guint i;
|
||||
|
||||
@@ -630,6 +630,80 @@ g_signal_stop_emission (gpointer instance,
|
||||
G_UNLOCK (g_signal_mutex);
|
||||
}
|
||||
|
||||
static inline guint
|
||||
signal_parse_name (const gchar *name,
|
||||
GType itype,
|
||||
GQuark *detail_p,
|
||||
gboolean force_quark)
|
||||
{
|
||||
const gchar *colon = strchr (name, ':');
|
||||
guint signal_id;
|
||||
|
||||
if (!colon)
|
||||
{
|
||||
signal_id = signal_id_lookup (g_quark_try_string (name), itype);
|
||||
if (signal_id && detail_p)
|
||||
*detail_p = 0;
|
||||
}
|
||||
else if (colon[1] == ':')
|
||||
{
|
||||
gchar buffer[32];
|
||||
guint l = colon - name;
|
||||
|
||||
if (l < 32)
|
||||
{
|
||||
memcpy (buffer, name, l);
|
||||
buffer[l] = 0;
|
||||
signal_id = signal_id_lookup (g_quark_try_string (buffer), itype);
|
||||
}
|
||||
else
|
||||
{
|
||||
gchar *signal = g_new (gchar, l + 1);
|
||||
|
||||
memcpy (signal, name, l);
|
||||
signal[l] = 0;
|
||||
signal_id = signal_id_lookup (g_quark_try_string (signal), itype);
|
||||
g_free (signal);
|
||||
}
|
||||
|
||||
if (signal_id && detail_p)
|
||||
*detail_p = colon[2] ? (force_quark ? g_quark_from_string : g_quark_try_string) (colon + 2) : 0;
|
||||
}
|
||||
else
|
||||
signal_id = 0;
|
||||
return signal_id;
|
||||
}
|
||||
|
||||
gboolean
|
||||
g_signal_parse_name (const gchar *detailed_signal,
|
||||
GType itype,
|
||||
guint *signal_id_p,
|
||||
GQuark *detail_p,
|
||||
gboolean force_detail_quark)
|
||||
{
|
||||
GQuark detail = 0;
|
||||
guint signal_id;
|
||||
|
||||
g_return_val_if_fail (detailed_signal != NULL, FALSE);
|
||||
g_return_val_if_fail (G_TYPE_IS_INSTANTIATABLE (itype) || G_TYPE_IS_INTERFACE (itype), FALSE);
|
||||
|
||||
G_LOCK (g_signal_mutex);
|
||||
signal_id = signal_parse_name (detailed_signal, itype, &detail, force_detail_quark);
|
||||
G_UNLOCK (g_signal_mutex);
|
||||
|
||||
if (signal_id)
|
||||
{
|
||||
if (signal_id_p)
|
||||
*signal_id_p = signal_id;
|
||||
if (detail_p)
|
||||
*detail_p = detail;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
guint
|
||||
g_signal_lookup (const gchar *name,
|
||||
GType itype)
|
||||
@@ -871,11 +945,11 @@ signal_destroy_R (SignalNode *signal_node)
|
||||
}
|
||||
|
||||
guint
|
||||
g_signal_connect_closure (gpointer instance,
|
||||
guint signal_id,
|
||||
GQuark detail,
|
||||
GClosure *closure,
|
||||
gboolean after)
|
||||
g_signal_connect_closure_by_id (gpointer instance,
|
||||
guint signal_id,
|
||||
GQuark detail,
|
||||
GClosure *closure,
|
||||
gboolean after)
|
||||
{
|
||||
SignalNode *node;
|
||||
guint handler_id = 0;
|
||||
@@ -982,7 +1056,7 @@ g_signal_handler_disconnect (gpointer instance,
|
||||
}
|
||||
|
||||
void
|
||||
g_signal_handlers_destroy (gpointer instance)
|
||||
_g_signal_handlers_destroy (gpointer instance)
|
||||
{
|
||||
GBSearchArray *hlbsa;
|
||||
|
||||
|
@@ -122,7 +122,7 @@ gboolean g_signal_has_handler_pending (gpointer instance,
|
||||
guint signal_id,
|
||||
GQuark detail,
|
||||
gboolean may_be_blocked);
|
||||
guint g_signal_connect_closure (gpointer instance,
|
||||
guint g_signal_connect_closure_by_id (gpointer instance,
|
||||
guint signal_id,
|
||||
GQuark detail,
|
||||
GClosure *closure,
|
||||
@@ -164,8 +164,13 @@ guint g_signal_handlers_disconnect_matched (gpointer instance,
|
||||
|
||||
|
||||
/*< private >*/
|
||||
void g_signal_handlers_destroy (gpointer instance);
|
||||
void g_signals_destroy (GType itype);
|
||||
gboolean g_signal_parse_name (const gchar *detailed_signal,
|
||||
GType itype,
|
||||
guint *signal_id_p,
|
||||
GQuark *detail_p,
|
||||
gboolean force_detail_quark);
|
||||
void _g_signal_handlers_destroy (gpointer instance);
|
||||
void _g_signals_destroy (GType itype);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
Reference in New Issue
Block a user