added a define G_HOOK_DEFERRED_DESTROY, to substitute a noop

Sun Jan 17 14:13:52 1999  Tim Janik  <timj@gtk.org>

        * glib.h: added a define G_HOOK_DEFERRED_DESTROY, to substitute a noop
        GHookList.hook_destroy function.

        * ghook.c (g_hook_destroy_link): don't really call hook_destroy if it
        is G_HOOK_DEFERRED_DESTROY. for the case where we invoke hook->destroy()
        we now clean up the hook completely afterwards, i.e. data, func and
        destroy are immediately set to NULL and hook_free can't play with that
        values anymore.

        * gmain.c (g_source_add): set hook_destroy to G_HOOK_DEFERRED_DESTROY,
        instead of using an ugly _noop() hack, this is to avoid an uneccessary
        function invokation. set hook_free to g_source_destroy_func, this way
        we always invoke the destroy notifiers for user_data and source_data
        after execution of dispatch(). thus, g_source_destroy_func() will always
        be called within the main_loop lock (this wasn't really assured
        before), and can release and reaquire the look around destroy notifier
        invokation.
This commit is contained in:
Tim Janik
1999-01-17 14:52:20 +00:00
committed by Tim Janik
parent 04d3d1b219
commit 5c2fb3762f
14 changed files with 198 additions and 32 deletions

View File

@@ -1,3 +1,23 @@
Sun Jan 17 14:13:52 1999 Tim Janik <timj@gtk.org>
* glib.h: added a define G_HOOK_DEFERRED_DESTROY, to substitute a noop
GHookList.hook_destroy function.
* ghook.c (g_hook_destroy_link): don't really call hook_destroy if it
is G_HOOK_DEFERRED_DESTROY. for the case where we invoke hook->destroy()
we now clean up the hook completely afterwards, i.e. data, func and
destroy are immediately set to NULL and hook_free can't play with that
values anymore.
* gmain.c (g_source_add): set hook_destroy to G_HOOK_DEFERRED_DESTROY,
instead of using an ugly _noop() hack, this is to avoid an uneccessary
function invokation. set hook_free to g_source_destroy_func, this way
we always invoke the destroy notifiers for user_data and source_data
after execution of dispatch(). thus, g_source_destroy_func() will always
be called within the main_loop lock (this wasn't really assured
before), and can release and reaquire the look around destroy notifier
invokation.
Sun Jan 17 11:01:40 1999 Tor Lillqvist <tml@iki.fi>
* config.h.win32 glibconfig.h.win32: Increment version number here
@@ -16,7 +36,7 @@ Sun Jan 17 05:12:17 1999 Tim Janik <timj@gtk.org>
* gmain.c: removed g_source_free_func and added g_source_destroy_func,
which marshalls the user_data and source_data destructors of sources
outside of the main_loop lock.
removed GIdleData struct since its single member callback can be passed
removed GIdleData struct since its sole member callback can be passed
as source_data directly.
added a gboolean return value to all g_source_remove* functions,
indicating whether the source could be removed, because these functions