+Mon Aug 27 14:56:12 2001 Owen Taylor <otaylor@redhat.com>
+
+ * 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 <otaylor@redhat.com>
* glib/gstrfuncs.c (g_strchomp): Replace some uses
+Mon Aug 27 14:56:12 2001 Owen Taylor <otaylor@redhat.com>
+
+ * 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 <otaylor@redhat.com>
* glib/gstrfuncs.c (g_strchomp): Replace some uses
+Mon Aug 27 14:56:12 2001 Owen Taylor <otaylor@redhat.com>
+
+ * 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 <otaylor@redhat.com>
* glib/gstrfuncs.c (g_strchomp): Replace some uses
+Mon Aug 27 14:56:12 2001 Owen Taylor <otaylor@redhat.com>
+
+ * 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 <otaylor@redhat.com>
* glib/gstrfuncs.c (g_strchomp): Replace some uses
+Mon Aug 27 14:56:12 2001 Owen Taylor <otaylor@redhat.com>
+
+ * 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 <otaylor@redhat.com>
* glib/gstrfuncs.c (g_strchomp): Replace some uses
+Mon Aug 27 14:56:12 2001 Owen Taylor <otaylor@redhat.com>
+
+ * 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 <otaylor@redhat.com>
* glib/gstrfuncs.c (g_strchomp): Replace some uses
+Mon Aug 27 14:56:12 2001 Owen Taylor <otaylor@redhat.com>
+
+ * 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 <otaylor@redhat.com>
* glib/gstrfuncs.c (g_strchomp): Replace some uses
+Mon Aug 27 14:56:12 2001 Owen Taylor <otaylor@redhat.com>
+
+ * 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 <otaylor@redhat.com>
* glib/gstrfuncs.c (g_strchomp): Replace some uses
@check:
@dispatch:
@finalize:
+@closure_callback:
+@closure_marshal:
<!-- ##### STRUCT GSourceCallbackFuncs ##### -->
<para>
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
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,
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;
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,
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;
#include <gobject/gparam.h>
#include <gobject/gparamspecs.h>
#include <gobject/gsignal.h>
+#include <gobject/gsourceclosure.h>
#include <gobject/gtype.h>
#include <gobject/gtypemodule.h>
#include <gobject/gtypeplugin.h>
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,
NULL
};
-static GSourceFuncs idle_funcs =
+GSourceFuncs g_idle_funcs =
{
g_idle_prepare,
g_idle_check,
static void
g_source_callback_get (gpointer cb_data,
+ GSource *source,
GSourceFunc *func,
gpointer *data)
{
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,
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;
GSource *
g_idle_source_new (void)
{
- return g_source_new (&idle_funcs, sizeof (GSource));
+ return g_source_new (&g_idle_funcs, sizeof (GSource));
}
/**
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);
}
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,
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
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