[glib] gsourceclosure: use g_cclosure_marshal_generic
- From: Dan Winship <danw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] gsourceclosure: use g_cclosure_marshal_generic
- Date: Sat, 13 Jul 2013 20:40:23 +0000 (UTC)
commit 1da47d5ede3384105c035638fb4eb533d8989e20
Author: Dan Winship <danw gnome org>
Date: Sun Jun 2 19:59:23 2013 -0300
gsourceclosure: use g_cclosure_marshal_generic
For the glib-defined source types, and any source type that defines a
closure callback but not a closure marshal, use
g_cclosure_marshal_generic. And then remove all the other remaining
source closure marshals.
https://bugzilla.gnome.org/show_bug.cgi?id=701511
gio/gasynchelper.c | 25 -------------------------
gio/gcancellable.c | 1 -
gio/gpollableutils.c | 1 -
gio/gsocket.c | 1 -
gobject/gsourceclosure.c | 35 ++---------------------------------
5 files changed, 2 insertions(+), 61 deletions(-)
---
diff --git a/gio/gasynchelper.c b/gio/gasynchelper.c
index ab8bd2c..d75111b 100644
--- a/gio/gasynchelper.c
+++ b/gio/gasynchelper.c
@@ -109,37 +109,12 @@ fd_source_closure_callback (int fd,
return result;
}
-static void
-fd_source_closure_marshal (GClosure *closure,
- GValue *return_value,
- guint n_param_values,
- const GValue *param_values,
- gpointer invocation_hint,
- gpointer marshal_data)
-{
- GFDSourceFunc callback;
- GCClosure *cc = (GCClosure*) closure;
- gboolean v_return;
-
- g_return_if_fail (return_value != NULL);
- g_return_if_fail (n_param_values == 0);
-
- callback = (GFDSourceFunc) (marshal_data ? marshal_data : cc->callback);
-
- v_return = callback (g_value_get_int (param_values),
- g_value_get_flags (param_values + 1),
- closure->data);
-
- g_value_set_boolean (return_value, v_return);
-}
-
static GSourceFuncs fd_source_funcs = {
fd_source_prepare,
fd_source_check,
fd_source_dispatch,
fd_source_finalize,
(GSourceFunc)fd_source_closure_callback,
- (GSourceDummyMarshal)fd_source_closure_marshal,
};
GSource *
diff --git a/gio/gcancellable.c b/gio/gcancellable.c
index 4e7a449..3186ea6 100644
--- a/gio/gcancellable.c
+++ b/gio/gcancellable.c
@@ -713,7 +713,6 @@ static GSourceFuncs cancellable_source_funcs =
cancellable_source_dispatch,
cancellable_source_finalize,
(GSourceFunc)cancellable_source_closure_callback,
- (GSourceDummyMarshal)g_cclosure_marshal_generic,
};
/**
diff --git a/gio/gpollableutils.c b/gio/gpollableutils.c
index d351034..1aa4fd0 100644
--- a/gio/gpollableutils.c
+++ b/gio/gpollableutils.c
@@ -105,7 +105,6 @@ static GSourceFuncs pollable_source_funcs =
pollable_source_dispatch,
pollable_source_finalize,
(GSourceFunc)pollable_source_closure_callback,
- (GSourceDummyMarshal)g_cclosure_marshal_generic,
};
/**
diff --git a/gio/gsocket.c b/gio/gsocket.c
index de67390..20f4b30 100644
--- a/gio/gsocket.c
+++ b/gio/gsocket.c
@@ -3231,7 +3231,6 @@ static GSourceFuncs socket_source_funcs =
socket_source_dispatch,
socket_source_finalize,
(GSourceFunc)socket_source_closure_callback,
- (GSourceDummyMarshal)g_cclosure_marshal_generic,
};
static GSource *
diff --git a/gobject/gsourceclosure.c b/gobject/gsourceclosure.c
index 16f34ee..f5425f2 100644
--- a/gobject/gsourceclosure.c
+++ b/gobject/gsourceclosure.c
@@ -48,31 +48,6 @@ g_io_condition_get_type (void)
return etype;
}
-/* We need to hand-write this marshaler, since it doesn't have an
- * instance object.
- */
-static void
-source_closure_marshal_BOOLEAN__VOID (GClosure *closure,
- GValue *return_value,
- guint n_param_values,
- const GValue *param_values,
- gpointer invocation_hint,
- gpointer marshal_data)
-{
- GSourceFunc callback;
- GCClosure *cc = (GCClosure*) closure;
- gboolean v_return;
-
- g_return_if_fail (return_value != NULL);
- g_return_if_fail (n_param_values == 0);
-
- callback = (GSourceFunc) (marshal_data ? marshal_data : cc->callback);
-
- v_return = callback (closure->data);
-
- g_value_set_boolean (return_value, v_return);
-}
-
static gboolean
io_watch_closure_callback (GIOChannel *channel,
GIOCondition condition,
@@ -188,16 +163,10 @@ g_source_set_closure (GSource *source,
if (G_CLOSURE_NEEDS_MARSHAL (closure))
{
GClosureMarshal marshal = (GClosureMarshal)source->source_funcs->closure_marshal;
- if (!marshal)
- {
- if (source->source_funcs == &g_idle_funcs ||
- source->source_funcs == &g_timeout_funcs)
- marshal = source_closure_marshal_BOOLEAN__VOID;
- else if (source->source_funcs == &g_io_watch_funcs)
- marshal = g_cclosure_marshal_BOOLEAN__FLAGS;
- }
if (marshal)
g_closure_set_marshal (closure, marshal);
+ else
+ g_closure_set_marshal (closure, g_cclosure_marshal_generic);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]