From 687c74b6b8cc9eb6015c279a0c757ca3c0047697 Mon Sep 17 00:00:00 2001 From: Nick Bowler Date: Sun, 20 May 2012 15:54:24 -0400 Subject: [PATCH] uobject: Make logging more generic. The logging functions can now be used on any GObject, not just UObject subclasses. In particular, it should be possible to call it on UPkg instances which do not derive from UObject. --- src/uobject/uobject.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/uobject/uobject.c b/src/uobject/uobject.c index 331b8ae..360dd31 100644 --- a/src/uobject/uobject.c +++ b/src/uobject/uobject.c @@ -612,18 +612,20 @@ static char *prepend_fmt(const char *prefix, const char *fmt) /* Logging helpers that automatically prepend the UObject class information. */ void u_vlog_full(GObject *o, GLogLevelFlags level, const char *fmt, va_list ap) { - g_return_if_fail(IS_U_OBJECT(o)); - UObject *uo = U_OBJECT(o); - char *new_fmt = NULL; - - if (uo->pkg_name) { - new_fmt = prepend_fmt(uo->pkg_name, fmt); - if (!new_fmt) { - g_log(G_OBJECT_TYPE_NAME(o), level, "%s", - uo->pkg_file->name); - } else { + char *new_fmt = NULL, *obj_prefix = NULL; + + if (IS_U_OBJECT(o)) { + obj_prefix = U_OBJECT(o)->pkg_name; + } else if (G_IS_TYPE_MODULE(o)) { + obj_prefix = G_TYPE_MODULE(o)->name; + } + + if (obj_prefix) { + new_fmt = prepend_fmt(obj_prefix, fmt); + if (!new_fmt) + g_log(G_OBJECT_TYPE_NAME(o), level, "%s", obj_prefix); + else fmt = new_fmt; - } } g_logv(G_OBJECT_TYPE_NAME(o), level, fmt, ap); -- 2.43.2