From: Owen Taylor Date: Mon, 3 Sep 2001 22:12:51 +0000 (+0000) Subject: Add closure_marshal/closure_callback fields to GSourceFuncs for use by X-Git-Tag: GLIB_1_3_7~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b4c3107c7a1dc5dd9e8050ed06f24d6be408e840;p=platform%2Fupstream%2Fglib.git Add closure_marshal/closure_callback fields to GSourceFuncs for use by Mon Aug 27 14:56:12 2001 Owen Taylor * glib/gmain.h: Add closure_marshal/closure_callback fields to GSourceFuncs for use by g_source_set_closure(). * glib/gmain.c glib/giounix.c glib/giowin32.c glib/gmain.h: Export the SourceFuncs vtables so GObject can use them to figure out closure callbacks/marshallers for the default source types. Mon Aug 27 14:55:27 2001 Owen Taylor * gsourceclosure.[ch] (g_source_set_closure): Implement. * gsourceclosure.[ch]: Add GType's for GIOChannel, GIOCondition. --- diff --git a/ChangeLog b/ChangeLog index c3bd76a..c7c8b83 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +Mon Aug 27 14:56:12 2001 Owen Taylor + + * glib/gmain.h: Add closure_marshal/closure_callback + fields to GSourceFuncs for use by g_source_set_closure(). + + * glib/gmain.c glib/giounix.c glib/giowin32.c + glib/gmain.h: Export the SourceFuncs vtables so GObject + can use them to figure out closure callbacks/marshallers + for the default source types. + Sun Sep 2 13:05:53 2001 Owen Taylor * glib/gstrfuncs.c (g_strchomp): Replace some uses diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index c3bd76a..c7c8b83 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,13 @@ +Mon Aug 27 14:56:12 2001 Owen Taylor + + * glib/gmain.h: Add closure_marshal/closure_callback + fields to GSourceFuncs for use by g_source_set_closure(). + + * glib/gmain.c glib/giounix.c glib/giowin32.c + glib/gmain.h: Export the SourceFuncs vtables so GObject + can use them to figure out closure callbacks/marshallers + for the default source types. + Sun Sep 2 13:05:53 2001 Owen Taylor * glib/gstrfuncs.c (g_strchomp): Replace some uses diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index c3bd76a..c7c8b83 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,13 @@ +Mon Aug 27 14:56:12 2001 Owen Taylor + + * glib/gmain.h: Add closure_marshal/closure_callback + fields to GSourceFuncs for use by g_source_set_closure(). + + * glib/gmain.c glib/giounix.c glib/giowin32.c + glib/gmain.h: Export the SourceFuncs vtables so GObject + can use them to figure out closure callbacks/marshallers + for the default source types. + Sun Sep 2 13:05:53 2001 Owen Taylor * glib/gstrfuncs.c (g_strchomp): Replace some uses diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index c3bd76a..c7c8b83 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,3 +1,13 @@ +Mon Aug 27 14:56:12 2001 Owen Taylor + + * glib/gmain.h: Add closure_marshal/closure_callback + fields to GSourceFuncs for use by g_source_set_closure(). + + * glib/gmain.c glib/giounix.c glib/giowin32.c + glib/gmain.h: Export the SourceFuncs vtables so GObject + can use them to figure out closure callbacks/marshallers + for the default source types. + Sun Sep 2 13:05:53 2001 Owen Taylor * glib/gstrfuncs.c (g_strchomp): Replace some uses diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index c3bd76a..c7c8b83 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,13 @@ +Mon Aug 27 14:56:12 2001 Owen Taylor + + * glib/gmain.h: Add closure_marshal/closure_callback + fields to GSourceFuncs for use by g_source_set_closure(). + + * glib/gmain.c glib/giounix.c glib/giowin32.c + glib/gmain.h: Export the SourceFuncs vtables so GObject + can use them to figure out closure callbacks/marshallers + for the default source types. + Sun Sep 2 13:05:53 2001 Owen Taylor * glib/gstrfuncs.c (g_strchomp): Replace some uses diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index c3bd76a..c7c8b83 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,13 @@ +Mon Aug 27 14:56:12 2001 Owen Taylor + + * glib/gmain.h: Add closure_marshal/closure_callback + fields to GSourceFuncs for use by g_source_set_closure(). + + * glib/gmain.c glib/giounix.c glib/giowin32.c + glib/gmain.h: Export the SourceFuncs vtables so GObject + can use them to figure out closure callbacks/marshallers + for the default source types. + Sun Sep 2 13:05:53 2001 Owen Taylor * glib/gstrfuncs.c (g_strchomp): Replace some uses diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index c3bd76a..c7c8b83 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,13 @@ +Mon Aug 27 14:56:12 2001 Owen Taylor + + * glib/gmain.h: Add closure_marshal/closure_callback + fields to GSourceFuncs for use by g_source_set_closure(). + + * glib/gmain.c glib/giounix.c glib/giowin32.c + glib/gmain.h: Export the SourceFuncs vtables so GObject + can use them to figure out closure callbacks/marshallers + for the default source types. + Sun Sep 2 13:05:53 2001 Owen Taylor * glib/gstrfuncs.c (g_strchomp): Replace some uses diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index c3bd76a..c7c8b83 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,13 @@ +Mon Aug 27 14:56:12 2001 Owen Taylor + + * glib/gmain.h: Add closure_marshal/closure_callback + fields to GSourceFuncs for use by g_source_set_closure(). + + * glib/gmain.c glib/giounix.c glib/giowin32.c + glib/gmain.h: Export the SourceFuncs vtables so GObject + can use them to figure out closure callbacks/marshallers + for the default source types. + Sun Sep 2 13:05:53 2001 Owen Taylor * glib/gstrfuncs.c (g_strchomp): Replace some uses diff --git a/docs/reference/glib/tmpl/main.sgml b/docs/reference/glib/tmpl/main.sgml index f754c2d..cdc3075 100644 --- a/docs/reference/glib/tmpl/main.sgml +++ b/docs/reference/glib/tmpl/main.sgml @@ -636,6 +636,8 @@ the required condition has been met, and returns TRUE if so. @check: @dispatch: @finalize: +@closure_callback: +@closure_marshal: diff --git a/glib/giochannel.h b/glib/giochannel.h index 3a89852..be6b8aa 100644 --- a/glib/giochannel.h +++ b/glib/giochannel.h @@ -284,6 +284,10 @@ GIOChannelError g_io_channel_error_from_errno (gint en); GIOChannel* g_io_channel_unix_new (int fd); gint g_io_channel_unix_get_fd (GIOChannel *channel); + +/* Hook for GClosure / GSource integration. Don't touch */ +GLIB_VAR GSourceFuncs g_io_watch_funcs; + #ifdef G_OS_WIN32 #define G_WIN32_MSG_HANDLE 19981206 diff --git a/glib/giounix.c b/glib/giounix.c index fa54b86..c2db911 100644 --- a/glib/giounix.c +++ b/glib/giounix.c @@ -95,7 +95,7 @@ static gboolean g_io_unix_dispatch (GSource *source, gpointer user_data); static void g_io_unix_finalize (GSource *source); -GSourceFuncs unix_watch_funcs = { +GSourceFuncs g_io_watch_funcs = { g_io_unix_prepare, g_io_unix_check, g_io_unix_dispatch, @@ -324,7 +324,7 @@ g_io_unix_create_watch (GIOChannel *channel, GIOUnixWatch *watch; - source = g_source_new (&unix_watch_funcs, sizeof (GIOUnixWatch)); + source = g_source_new (&g_io_watch_funcs, sizeof (GIOUnixWatch)); watch = (GIOUnixWatch *)source; watch->channel = channel; diff --git a/glib/giowin32.c b/glib/giowin32.c index 84e0009..0134a95 100644 --- a/glib/giowin32.c +++ b/glib/giowin32.c @@ -595,7 +595,7 @@ g_io_win32_finalize (GSource *source) g_io_channel_unref (watch->channel); } -static GSourceFuncs win32_watch_funcs = { +GSourceFuncs g_io_watch_funcs = { g_io_win32_prepare, g_io_win32_check, g_io_win32_dispatch, @@ -611,7 +611,7 @@ g_io_win32_create_watch (GIOChannel *channel, GIOWin32Watch *watch; GSource *source; - source = g_source_new (&win32_watch_funcs, sizeof (GIOWin32Watch)); + source = g_source_new (&g_io_watch_funcs, sizeof (GIOWin32Watch)); watch = (GIOWin32Watch *)source; watch->channel = channel; diff --git a/glib/glib-object.h b/glib/glib-object.h index 98e3dfe..dfde3d0 100644 --- a/glib/glib-object.h +++ b/glib/glib-object.h @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include diff --git a/glib/gmain.c b/glib/gmain.c index 35be1a4..2f11b1a 100644 --- a/glib/gmain.c +++ b/glib/gmain.c @@ -220,7 +220,7 @@ static gboolean g_idle_dispatch (GSource *source, G_LOCK_DEFINE_STATIC (main_loop); static GMainContext *default_main_context; -static GSourceFuncs timeout_funcs = +GSourceFuncs g_timeout_funcs = { g_timeout_prepare, g_timeout_check, @@ -228,7 +228,7 @@ static GSourceFuncs timeout_funcs = NULL }; -static GSourceFuncs idle_funcs = +GSourceFuncs g_idle_funcs = { g_idle_prepare, g_idle_check, @@ -1057,6 +1057,7 @@ g_source_callback_unref (gpointer cb_data) static void g_source_callback_get (gpointer cb_data, + GSource *source, GSourceFunc *func, gpointer *data) { @@ -1588,7 +1589,7 @@ g_main_dispatch (GMainContext *context) UNLOCK_CONTEXT (context); if (cb_funcs) - cb_funcs->get (cb_data, &callback, &user_data); + cb_funcs->get (cb_data, source, &callback, &user_data); need_destroy = ! dispatch (source, callback, @@ -2966,7 +2967,7 @@ g_timeout_dispatch (GSource *source, GSource * g_timeout_source_new (guint interval) { - GSource *source = g_source_new (&timeout_funcs, sizeof (GTimeoutSource)); + GSource *source = g_source_new (&g_timeout_funcs, sizeof (GTimeoutSource)); GTimeoutSource *timeout_source = (GTimeoutSource *)source; GTimeVal current_time; @@ -3104,7 +3105,7 @@ g_idle_dispatch (GSource *source, GSource * g_idle_source_new (void) { - return g_source_new (&idle_funcs, sizeof (GSource)); + return g_source_new (&g_idle_funcs, sizeof (GSource)); } /** @@ -3175,6 +3176,6 @@ g_idle_add (GSourceFunc function, gboolean g_idle_remove_by_data (gpointer data) { - return g_source_remove_by_funcs_user_data (&idle_funcs, data); + return g_source_remove_by_funcs_user_data (&g_idle_funcs, data); } diff --git a/glib/gmain.h b/glib/gmain.h index 5853c10..cd95288 100644 --- a/glib/gmain.h +++ b/glib/gmain.h @@ -59,10 +59,13 @@ struct _GSourceCallbackFuncs void (*ref) (gpointer cb_data); void (*unref) (gpointer cb_data); void (*get) (gpointer cb_data, + GSource *source, GSourceFunc *func, gpointer *data); }; +typedef void (*GSourceDummyMarshal) (void); + struct _GSourceFuncs { gboolean (*prepare) (GSource *source, @@ -72,6 +75,10 @@ struct _GSourceFuncs GSourceFunc callback, gpointer user_data); void (*finalize) (GSource *source); /* Can be NULL */ + + /* For use by g_source_set_closure */ + GSourceFunc closure_callback; + GSourceDummyMarshal closure_marshal; /* Really is of type GClosureMarshal */ }; /* Any definitions using GPollFD or GPollFunc are primarily @@ -286,6 +293,10 @@ guint g_idle_add_full (gint priority, GDestroyNotify notify); gboolean g_idle_remove_by_data (gpointer data); +/* Hook for GClosure / GSource integration. Don't touch */ +GLIB_VAR GSourceFuncs g_timeout_funcs; +GLIB_VAR GSourceFuncs g_idle_funcs; + #ifdef G_OS_WIN32 /* This is used to add polling for Windows messages. GDK (GTK+) programs