mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-03-27 18:10:03 +01:00
1022 lines
20 KiB
Plaintext
1022 lines
20 KiB
Plaintext
<!-- ##### SECTION Title ##### -->
|
|
The Main Event Loop
|
|
|
|
<!-- ##### SECTION Short_Description ##### -->
|
|
manages all available sources of events
|
|
|
|
<!-- ##### SECTION Long_Description ##### -->
|
|
<para>
|
|
The main event loop manages all the available sources of events for
|
|
GLib and GTK+ applications. These events can come from any number of
|
|
different types of sources such as file descriptors (plain files,
|
|
pipes or sockets) and timeouts. New types of event sources can also
|
|
be added using g_source_attach().
|
|
</para>
|
|
<para>
|
|
To allow multiple independent sets of sources to be handled in
|
|
different threads, each source is associated with a #GMainContext.
|
|
A #GMainContext can only be running in a single thread, but
|
|
sources can be added to it and removed from it from other threads.
|
|
</para>
|
|
<para>
|
|
Each event source is assigned a priority. The default priority,
|
|
#G_PRIORITY_DEFAULT, is 0. Values less than 0 denote higher
|
|
priorities. Values greater than 0 denote lower priorities. Events
|
|
from high priority sources are always processed before events from
|
|
lower priority sources.
|
|
</para>
|
|
<para>
|
|
Idle functions can also be added, and assigned a priority. These will
|
|
be run whenever no events with a higher priority are ready to be
|
|
processed.
|
|
</para>
|
|
<para>
|
|
The #GMainLoop data type represents a main event loop. A #GMainLoop
|
|
is created with g_main_loop_new(). After adding the initial event sources,
|
|
g_main_loop_run() is called. This continuously checks for new events from
|
|
each of the event sources and dispatches them. Finally, the
|
|
processing of an event from one of the sources leads to a call to
|
|
g_main_loop_quit() to exit the main loop, and g_main_loop_run() returns.
|
|
</para>
|
|
<para>
|
|
It is possible to create new instances of #GMainLoop recursively.
|
|
This is often used in GTK+ applications when showing modal dialog
|
|
boxes. Note that event sources are associated with a particular
|
|
#GMainContext, and will be checked and dispatched for all main
|
|
loops associated with that #GMainContext.
|
|
</para>
|
|
<para>
|
|
GTK+ contains wrappers of some of these functions, e.g. gtk_main(),
|
|
gtk_main_quit() and gtk_events_pending().
|
|
</para>
|
|
<refsect2>
|
|
<title>Creating new sources types</title>
|
|
<para>
|
|
One of the unusual features of the GTK+ main loop functionality
|
|
is that new types of event source can be created and used in
|
|
addition to the builtin type of event source. A new event source
|
|
type is used for handling GDK events. A new source type is
|
|
created by <firstterm>deriving</firstterm> from the #GSource
|
|
structure. The derived type of source is represented by a
|
|
structure that has the #GSource structure as a first element,
|
|
and other elements specific to the new source type. To create
|
|
an instance of the new source type, call g_source_new() passing
|
|
in the size of the derived structure and a table of functions.
|
|
These #GSourceFuncs determine the behavior of the new source
|
|
types.
|
|
</para>
|
|
<para>
|
|
New source types basically interact with with the main context
|
|
in two ways. Their prepare function in #GSourceFuncs can set
|
|
a timeout to determine the maximum amount of time that the
|
|
main loop will sleep before checking the source again. In
|
|
addition, or as well, the source can add file descriptors to
|
|
the set that the main context checks using g_source_add_poll().
|
|
</para>
|
|
</refsect2>
|
|
<refsect2>
|
|
<title>Customizing the main loop iteration</title>
|
|
<para>
|
|
Single iterations of a #GMainContext can be run with
|
|
g_main_context_iteration(). In some cases, more detailed control
|
|
of exactly how the details of the main loop work is desired,
|
|
for instance, when integrating the #GMainLoop with an external
|
|
main loop. In such cases, you can call the component functions
|
|
of g_main_context_iteration() directly. These functions
|
|
are g_main_context_prepare(), g_main_context_query(),
|
|
g_main_context_check() and g_main_context_dispatch().
|
|
</para>
|
|
<para>
|
|
The operation of these functions can best be seen in terms
|
|
of a state diagram, as shown in <xref linkend="mainloop-states"/>.
|
|
</para>
|
|
<figure id="mainloop-states">
|
|
<title>States of a Main Context</title>
|
|
<graphic fileref="mainloop-states.gif" format="GIF"></graphic>
|
|
</figure>
|
|
</refsect2>
|
|
|
|
<!-- ##### SECTION See_Also ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
<!-- ##### SECTION Stability_Level ##### -->
|
|
|
|
|
|
<!-- ##### STRUCT GMainLoop ##### -->
|
|
<para>
|
|
The <structname>GMainLoop</structname> struct is an opaque data type
|
|
representing the main event loop of a GLib or GTK+ application.
|
|
</para>
|
|
|
|
|
|
<!-- ##### FUNCTION g_main_loop_new ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@context:
|
|
@is_running:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_main_loop_ref ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@loop:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_main_loop_unref ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@loop:
|
|
|
|
|
|
<!-- ##### FUNCTION g_main_loop_run ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@loop:
|
|
|
|
|
|
<!-- ##### FUNCTION g_main_loop_quit ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@loop:
|
|
|
|
|
|
<!-- ##### FUNCTION g_main_loop_is_running ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@loop:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_main_loop_get_context ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@loop:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### MACRO g_main_new ##### -->
|
|
<para>
|
|
Creates a new #GMainLoop for the default main loop.
|
|
</para>
|
|
|
|
@is_running: set to %TRUE to indicate that the loop is running. This is not
|
|
very important since calling g_main_run() will set this to %TRUE anyway.
|
|
@Returns: a new #GMainLoop.
|
|
@Deprecated: 2.2: Use g_main_loop_new() instead.
|
|
|
|
|
|
<!-- ##### MACRO g_main_destroy ##### -->
|
|
<para>
|
|
Frees the memory allocated for the #GMainLoop.
|
|
</para>
|
|
|
|
@loop: a #GMainLoop.
|
|
@Deprecated: 2.2: Use g_main_loop_unref() instead.
|
|
|
|
|
|
<!-- ##### MACRO g_main_run ##### -->
|
|
<para>
|
|
Runs a main loop until it stops running.
|
|
</para>
|
|
|
|
@loop: a #GMainLoop.
|
|
@Deprecated: 2.2: Use g_main_loop_run() instead.
|
|
|
|
|
|
<!-- ##### MACRO g_main_quit ##### -->
|
|
<para>
|
|
Stops the #GMainLoop. If g_main_run() was called to run the #GMainLoop,
|
|
it will now return.
|
|
</para>
|
|
|
|
@loop: a #GMainLoop.
|
|
@Deprecated: 2.2: Use g_main_loop_quit() instead.
|
|
|
|
|
|
<!-- ##### MACRO g_main_is_running ##### -->
|
|
<para>
|
|
Checks if the main loop is running.
|
|
</para>
|
|
|
|
@loop: a #GMainLoop.
|
|
@Returns: %TRUE if the main loop is running.
|
|
@Deprecated: 2.2: USe g_main_loop_is_running() instead.
|
|
|
|
|
|
<!-- ##### MACRO G_PRIORITY_HIGH ##### -->
|
|
<para>
|
|
Use this for high priority event sources.
|
|
It is not used within GLib or GTK+.
|
|
</para>
|
|
|
|
|
|
|
|
<!-- ##### MACRO G_PRIORITY_DEFAULT ##### -->
|
|
<para>
|
|
Use this for default priority event sources.
|
|
In GLib this priority is used when adding timeout functions with
|
|
g_timeout_add().
|
|
In GDK this priority is used for events from the X server.
|
|
</para>
|
|
|
|
|
|
|
|
<!-- ##### MACRO G_PRIORITY_HIGH_IDLE ##### -->
|
|
<para>
|
|
Use this for high priority idle functions.
|
|
GTK+ uses #G_PRIORITY_HIGH_IDLE + 10 for resizing operations, and
|
|
#G_PRIORITY_HIGH_IDLE + 20 for redrawing operations. (This is done to
|
|
ensure that any pending resizes are processed before any pending redraws,
|
|
so that widgets are not redrawn twice unnecessarily.)
|
|
</para>
|
|
|
|
|
|
|
|
<!-- ##### MACRO G_PRIORITY_DEFAULT_IDLE ##### -->
|
|
<para>
|
|
Use this for default priority idle functions.
|
|
In GLib this priority is used when adding idle functions with g_idle_add().
|
|
</para>
|
|
|
|
|
|
|
|
<!-- ##### MACRO G_PRIORITY_LOW ##### -->
|
|
<para>
|
|
Use this for very low priority background tasks.
|
|
It is not used within GLib or GTK+.
|
|
</para>
|
|
|
|
|
|
|
|
<!-- ##### STRUCT GMainContext ##### -->
|
|
<para>
|
|
The <structname>GMainContext</structname> struct is an opaque data type
|
|
representing a set of sources to be handled in a main loop.
|
|
</para>
|
|
|
|
|
|
<!-- ##### FUNCTION g_main_context_new ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_main_context_ref ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@context:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_main_context_unref ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@context:
|
|
|
|
|
|
<!-- ##### FUNCTION g_main_context_default ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_main_context_iteration ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@context:
|
|
@may_block:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### MACRO g_main_iteration ##### -->
|
|
<para>
|
|
Runs a single iteration for the default #GMainContext.
|
|
</para>
|
|
|
|
@may_block: set to %TRUE if it should block (i.e. wait) until an event source
|
|
becomes ready. It will return after an event source has been processed.
|
|
If set to %FALSE it will return immediately if no event source is ready to be
|
|
processed.
|
|
@Returns: %TRUE if more events are pending.
|
|
@Deprecated: 2.2: Use g_main_context_iteration() instead.
|
|
|
|
|
|
<!-- ##### FUNCTION g_main_context_pending ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@context:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### MACRO g_main_pending ##### -->
|
|
<para>
|
|
Checks if any events are pending for the default #GMainContext
|
|
(i.e. ready to be processed).
|
|
</para>
|
|
|
|
@Returns: %TRUE if any events are pending.
|
|
@Deprecated: 2.2: Use g_main_context_pending() instead.
|
|
|
|
|
|
<!-- ##### FUNCTION g_main_context_find_source_by_id ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@context:
|
|
@source_id:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_main_context_find_source_by_user_data ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@context:
|
|
@user_data:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_main_context_find_source_by_funcs_user_data ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@context:
|
|
@funcs:
|
|
@user_data:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_main_context_wakeup ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@context:
|
|
|
|
|
|
<!-- ##### FUNCTION g_main_context_acquire ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@context:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_main_context_release ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@context:
|
|
|
|
|
|
<!-- ##### FUNCTION g_main_context_is_owner ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@context:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_main_context_wait ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@context:
|
|
@cond:
|
|
@mutex:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_main_context_prepare ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@context:
|
|
@priority:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_main_context_query ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@context:
|
|
@max_priority:
|
|
@timeout_:
|
|
@fds:
|
|
@n_fds:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_main_context_check ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@context:
|
|
@max_priority:
|
|
@fds:
|
|
@n_fds:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_main_context_dispatch ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@context:
|
|
|
|
|
|
<!-- ##### FUNCTION g_main_context_set_poll_func ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@context:
|
|
@func:
|
|
|
|
|
|
<!-- ##### FUNCTION g_main_context_get_poll_func ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@context:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### USER_FUNCTION GPollFunc ##### -->
|
|
<para>
|
|
Specifies the type of function passed to g_main_context_set_poll_func().
|
|
The semantics of the function should match those of the
|
|
<function>poll()</function> system call.
|
|
</para>
|
|
|
|
@ufds: an array of #GPollFD elements.
|
|
@nfsd: the number of elements in @ufds.
|
|
@timeout_: the maximum time to wait for an event of the file descriptors.
|
|
A negative value indicates an infinite timeout.
|
|
@Returns: the number of #GPollFD elements which have events or errors reported,
|
|
or -1 if an error occurred.
|
|
|
|
|
|
<!-- ##### FUNCTION g_main_context_add_poll ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@context:
|
|
@fd:
|
|
@priority:
|
|
|
|
|
|
<!-- ##### FUNCTION g_main_context_remove_poll ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@context:
|
|
@fd:
|
|
|
|
|
|
<!-- ##### FUNCTION g_main_depth ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_main_current_source ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### MACRO g_main_set_poll_func ##### -->
|
|
<para>
|
|
Sets the function to use for the handle polling of file descriptors
|
|
for the default main context.
|
|
</para>
|
|
|
|
@func: the function to call to poll all file descriptors.
|
|
@Deprecated: 2.2: Use g_main_context_set_poll_func() instead.
|
|
|
|
|
|
<!-- ##### FUNCTION g_timeout_source_new ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@interval:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_timeout_source_new_seconds ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@interval:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_timeout_add ##### -->
|
|
<para>
|
|
</para>
|
|
|
|
@interval:
|
|
@function:
|
|
@data:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_timeout_add_full ##### -->
|
|
<para>
|
|
</para>
|
|
|
|
@priority:
|
|
@interval:
|
|
@function:
|
|
@data:
|
|
@notify:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_timeout_add_seconds ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@interval:
|
|
@function:
|
|
@data:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_timeout_add_seconds_full ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@priority:
|
|
@interval:
|
|
@function:
|
|
@data:
|
|
@notify:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_idle_source_new ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_idle_add ##### -->
|
|
<para>
|
|
</para>
|
|
|
|
@function:
|
|
@data:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_idle_add_full ##### -->
|
|
<para>
|
|
</para>
|
|
|
|
@priority:
|
|
@function:
|
|
@data:
|
|
@notify:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_idle_remove_by_data ##### -->
|
|
<para>
|
|
</para>
|
|
|
|
@data:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### TYPEDEF GPid ##### -->
|
|
<para>
|
|
A type which is used to hold a process identification.
|
|
On Unix, processes are identified by a process id (an
|
|
integer), while Windows uses process handles (which are
|
|
pointers).
|
|
</para>
|
|
|
|
|
|
<!-- ##### USER_FUNCTION GChildWatchFunc ##### -->
|
|
<para>
|
|
The type of functions to be called when a child exists.
|
|
</para>
|
|
|
|
@pid: the process id of the child process
|
|
@status: Status information about the child process,
|
|
see waitpid(2) for more information about this field
|
|
@data: user data passed to g_child_watch_add()
|
|
|
|
|
|
<!-- ##### FUNCTION g_child_watch_source_new ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@pid:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_child_watch_add ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@pid:
|
|
@function:
|
|
@data:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_child_watch_add_full ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@priority:
|
|
@pid:
|
|
@function:
|
|
@data:
|
|
@notify:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### STRUCT GPollFD ##### -->
|
|
<para>
|
|
|
|
<informaltable pgwide="1" frame="none" role="struct">
|
|
<tgroup cols="2"><colspec colwidth="2*"/><colspec colwidth="8*"/>
|
|
<tbody>
|
|
|
|
<row>
|
|
<entry>#gint fd;</entry>
|
|
<entry>the file descriptor to poll (or a <type>HANDLE</type> on Win32 platforms).</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>#gushort events;</entry>
|
|
<entry>a bitwise combination of flags from #GIOCondition, specifying which
|
|
events should be polled for. Typically for reading from a file descriptor
|
|
you would use %G_IO_IN | %G_IO_HUP | %G_IO_ERR, and for writing you would use
|
|
%G_IO_OUT | %G_IO_ERR.
|
|
</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>#gushort revents;</entry>
|
|
<entry>a bitwise combination of flags from #GIOCondition, returned from the
|
|
<function>poll()</function> function to indicate which events occurred.
|
|
</entry>
|
|
</row>
|
|
</tbody></tgroup></informaltable>
|
|
|
|
</para>
|
|
|
|
@fd:
|
|
@fd:
|
|
@events:
|
|
@revents:
|
|
|
|
<!-- ##### STRUCT GSource ##### -->
|
|
<para>
|
|
The <structname>GSource</structname> struct is an opaque data type representing
|
|
an event source.
|
|
</para>
|
|
|
|
|
|
<!-- ##### USER_FUNCTION GSourceDummyMarshal ##### -->
|
|
<para>
|
|
This is just a placeholder for #GClosureMarshal, which cannot be used here
|
|
for dependency reasons.
|
|
</para>
|
|
|
|
|
|
|
|
<!-- ##### STRUCT GSourceFuncs ##### -->
|
|
<para>
|
|
The #GSourceFuncs struct contains a table of functions used to handle
|
|
event sources in a generic manner.
|
|
</para>
|
|
<para>
|
|
For idle sources, the prepare and check functions always return %TRUE to
|
|
indicate that the source is always ready to be processed.
|
|
The prepare function also returns a timeout value of 0 to ensure that the
|
|
poll() call doesn't block (since that would be time
|
|
wasted which could have been spent running the idle function).
|
|
</para>
|
|
<para>
|
|
For timeout sources, the prepare and check functions both return %TRUE if the
|
|
timeout interval has expired. The prepare function also returns a timeout
|
|
value to ensure that the poll() call doesn't block too
|
|
long and miss the next timeout.
|
|
</para>
|
|
<para>
|
|
For file descriptor sources, the prepare function typically returns %FALSE,
|
|
since it must wait until poll() has been called before
|
|
it knows whether any events need to be processed. It sets the returned
|
|
timeout to -1 to indicate that it doesn't mind how long the
|
|
poll() call blocks.
|
|
In the check function, it tests the results of the poll()
|
|
call to see if the required condition has been met, and returns %TRUE if so.
|
|
</para>
|
|
|
|
@prepare: Called before all the file descriptors are polled.
|
|
If the source can determine that it is ready here (without waiting for the
|
|
results of the poll() call) it should return %TRUE.
|
|
It can also return a @timeout_ value which should be the maximum timeout
|
|
(in milliseconds) which should be passed to the poll() call.
|
|
The actual timeout used will be -1 if all sources returned -1, or it will
|
|
be the minimum of all the @timeout_ values returned which were >= 0.
|
|
|
|
@check: Called after all the file descriptors are polled.
|
|
The source should return %TRUE if it is ready to be dispatched.
|
|
Note that some time may have passed since the previous prepare function was
|
|
called, so the source should be checked again here.
|
|
|
|
@dispatch: Called to dispatch the event source, after it has returned %TRUE in
|
|
either its @prepare or its @check function. The @dispatch function is
|
|
passed in a callback function and data. The callback function may be
|
|
%NULL if the source was never connected to a callback using
|
|
g_source_set_callback(). The @dispatch function should call the
|
|
callback function with @user_data and whatever additional parameters are
|
|
needed for this type of event source.
|
|
|
|
@finalize: Called when the source is finalized.
|
|
|
|
|
|
<!-- ##### STRUCT GSourceCallbackFuncs ##### -->
|
|
<para>
|
|
The <structname>GSourceCallbackFuncs</structname> struct contains
|
|
functions for managing callback objects.
|
|
</para>
|
|
|
|
@ref: Called when a reference is added to the callback object.
|
|
@unref: Called when a reference to the callback object is dropped.
|
|
@get: Called to extract the callback function and data from the callback object.
|
|
|
|
<!-- ##### FUNCTION g_source_new ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@source_funcs:
|
|
@struct_size:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_source_ref ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@source:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_source_unref ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@source:
|
|
|
|
|
|
<!-- ##### FUNCTION g_source_set_funcs ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@source:
|
|
@funcs:
|
|
|
|
|
|
<!-- ##### FUNCTION g_source_attach ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@source:
|
|
@context:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_source_destroy ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@source:
|
|
|
|
|
|
<!-- ##### FUNCTION g_source_is_destroyed ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@source:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_source_set_priority ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@source:
|
|
@priority:
|
|
|
|
|
|
<!-- ##### FUNCTION g_source_get_priority ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@source:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_source_set_can_recurse ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@source:
|
|
@can_recurse:
|
|
|
|
|
|
<!-- ##### FUNCTION g_source_get_can_recurse ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@source:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_source_get_id ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@source:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_source_get_context ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@source:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_source_set_callback ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@source:
|
|
@func:
|
|
@data:
|
|
@notify:
|
|
|
|
|
|
<!-- ##### USER_FUNCTION GSourceFunc ##### -->
|
|
<para>
|
|
Specifies the type of function passed to g_timeout_add(), g_timeout_add_full(),
|
|
g_idle_add(), and g_idle_add_full().
|
|
</para>
|
|
|
|
@data: data passed to the function, set when the source was created with one
|
|
of the above functions.
|
|
@Returns: it should return %FALSE if the source should be removed.
|
|
|
|
|
|
<!-- ##### FUNCTION g_source_set_callback_indirect ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@source:
|
|
@callback_data:
|
|
@callback_funcs:
|
|
|
|
|
|
<!-- ##### FUNCTION g_source_add_poll ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@source:
|
|
@fd:
|
|
|
|
|
|
<!-- ##### FUNCTION g_source_remove_poll ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@source:
|
|
@fd:
|
|
|
|
|
|
<!-- ##### FUNCTION g_source_get_current_time ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@source:
|
|
@timeval:
|
|
|
|
|
|
<!-- ##### FUNCTION g_source_remove ##### -->
|
|
<para>
|
|
</para>
|
|
|
|
@tag:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_source_remove_by_funcs_user_data ##### -->
|
|
<para>
|
|
</para>
|
|
|
|
@funcs:
|
|
@user_data:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_source_remove_by_user_data ##### -->
|
|
<para>
|
|
</para>
|
|
|
|
@user_data:
|
|
@Returns:
|
|
|
|
<!--
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-parent-document: ("../glib-docs.sgml" "book" "refsect2" "")
|
|
End:
|
|
-->
|
|
|
|
|