summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMartin Baulig <martin@src.gnome.org>2001-04-20 15:47:25 +0000
committerMartin Baulig <martin@src.gnome.org>2001-04-20 15:47:25 +0000
commit407514e4d7a93b38ae03f3820a0f058e56c4b243 (patch)
tree6dc80eadb585582f8dda65df548209d0c0da4e2d /lib
parent1491ccc594d66654006750c247748529f427aef0 (diff)
downloadlibgtop-407514e4d7a93b38ae03f3820a0f058e56c4b243.tar.gz
Things are such much easier with the new g_signal_newc().
Diffstat (limited to 'lib')
-rw-r--r--lib/glibtop-client.c85
1 files changed, 21 insertions, 64 deletions
diff --git a/lib/glibtop-client.c b/lib/glibtop-client.c
index 8fabf9b0..49d8955c 100644
--- a/lib/glibtop-client.c
+++ b/lib/glibtop-client.c
@@ -95,77 +95,34 @@ glibtop_client_warning_handler (glibtop_client *client, GError *error)
}
static void
-glibtop_client_marshal_VOID__POINTER (GClosure *closure,
- GValue *return_value,
- guint n_param_values,
- const GValue *param_values,
- gpointer invocation_hint,
- gpointer marshal_data)
-{
- typedef void (*GSignalFunc_VOID__POINTER) (gpointer data1,
- gpointer arg_1,
- gpointer data2);
- register GSignalFunc_VOID__POINTER callback;
- register GCClosure *cc = (GCClosure*) closure;
- register gpointer data1, data2;
-
- g_return_if_fail (n_param_values >= 2);
-
- if (G_CCLOSURE_SWAP_DATA (closure))
- {
- data1 = closure->data;
- data2 = g_value_get_as_pointer (param_values + 0);
- }
- else
- {
- data1 = g_value_get_as_pointer (param_values + 0);
- data2 = closure->data;
- }
- callback = (GSignalFunc_VOID__POINTER) (marshal_data ? marshal_data : cc->callback);
-
- callback (data1,
- g_value_get_as_pointer (param_values + 1),
- data2);
-}
-
-static void
-glibtop_client_class_init (glibtop_client_class *class)
+glibtop_client_class_init (glibtop_client_class *klass)
{
GObjectClass *gobject_class;
- GType *param_types;
- GClosure *closure;
- gobject_class = (GObjectClass *) class;
+ gobject_class = (GObjectClass *) klass;
- parent_class = g_type_class_ref (G_TYPE_OBJECT);
-
- closure = g_signal_type_closure_new (G_TYPE_FROM_CLASS (class),
- G_STRUCT_OFFSET (glibtop_client_class,
- error));
+ parent_class = g_type_class_peek_parent (klass);
- param_types = g_new0 (GType, 1);
- param_types [0] = G_TYPE_POINTER;
-
glibtop_client_signals [GLIBTOP_CLIENT_SIGNAL_ERROR] =
- g_signal_newv ("error", G_TYPE_FROM_CLASS (class),
- G_SIGNAL_RUN_LAST, closure, NULL,
- glibtop_client_marshal_VOID__POINTER,
- G_TYPE_NONE, 1, param_types);
-
- closure = g_signal_type_closure_new (G_TYPE_FROM_CLASS (class),
- G_STRUCT_OFFSET (glibtop_client_class,
- warning));
-
- glibtop_client_signals [GLIBTOP_CLIENT_SIGNAL_WARNING] =
- g_signal_newv ("warning", G_TYPE_FROM_CLASS (class),
- G_SIGNAL_RUN_LAST, closure, NULL,
- glibtop_client_marshal_VOID__POINTER,
- G_TYPE_NONE, 1, param_types);
+ g_signal_newc ("error",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (glibtop_client_class, error),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1, G_TYPE_POINTER);
- g_free (param_types);
-
- class->error = glibtop_client_error_handler;
- class->warning = glibtop_client_warning_handler;
+ glibtop_client_signals [GLIBTOP_CLIENT_SIGNAL_WARNING] =
+ g_signal_newc ("warning",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (glibtop_client_class, warning),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1, G_TYPE_POINTER);
+
+ klass->error = glibtop_client_error_handler;
+ klass->warning = glibtop_client_warning_handler;
gobject_class->finalize = glibtop_client_finalize;
}