gobject: Use a destructor rather than g_atexit() for refcount debugging

https://bugzilla.gnome.org/show_bug.cgi?id=669671
This commit is contained in:
Dan Winship 2012-02-10 08:24:28 -05:00
parent d4992b3d10
commit ab59739e11

View File

@ -33,6 +33,7 @@
#include "gparamspecs.h" #include "gparamspecs.h"
#include "gvaluetypes.h" #include "gvaluetypes.h"
#include "gobject_trace.h" #include "gobject_trace.h"
#include "gconstructor.h"
/** /**
* SECTION:objects * SECTION:objects
@ -329,6 +330,13 @@ debug_objects_foreach (gpointer key,
object->ref_count); object->ref_count);
} }
#ifdef G_HAS_CONSTRUCTORS
#ifdef G_DEFINE_DESTRUCTOR_NEEDS_PRAGMA
#pragma G_DEFINE_DESTRUCTOR_PRAGMA_ARGS(debug_objects_atexit)
#endif
G_DEFINE_DESTRUCTOR(debug_objects_atexit)
#endif /* G_HAS_CONSTRUCTORS */
static void static void
debug_objects_atexit (void) debug_objects_atexit (void)
{ {
@ -387,7 +395,9 @@ _g_object_type_init (void)
IF_DEBUG (OBJECTS) IF_DEBUG (OBJECTS)
{ {
debug_objects_ht = g_hash_table_new (g_direct_hash, NULL); debug_objects_ht = g_hash_table_new (g_direct_hash, NULL);
#ifndef G_HAS_CONSTRUCTORS
g_atexit (debug_objects_atexit); g_atexit (debug_objects_atexit);
#endif /* G_HAS_CONSTRUCTORS */
} }
#endif /* G_ENABLE_DEBUG */ #endif /* G_ENABLE_DEBUG */
} }