[gjs] gi: Do not assume all gtypes with signals are objects
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gjs] gi: Do not assume all gtypes with signals are objects
- Date: Wed, 17 Feb 2016 13:23:45 +0000 (UTC)
commit 92f84061528636515b3d4ad75164d9ab15bba462
Author: Florian Müllner <fmuellner gnome org>
Date: Wed Feb 17 11:19:01 2016 +0100
gi: Do not assume all gtypes with signals are objects
Commit 67d7d2d55 added get_signal_info_if_available(), which looks
up a GISignalInfo matching a given GType and name. Currently it
assumes that the type corresponds to an object, however interfaces
may have signals as well - make sure to use the right method to
lookup the signal info in that case instead of spamming my logs :-)
gi/value.cpp | 12 +++++++++---
1 files changed, 9 insertions(+), 3 deletions(-)
---
diff --git a/gi/value.cpp b/gi/value.cpp
index aad2cd0..73f3669 100644
--- a/gi/value.cpp
+++ b/gi/value.cpp
@@ -57,7 +57,8 @@ static GISignalInfo *
get_signal_info_if_available(GSignalQuery *signal_query)
{
GIBaseInfo *obj;
- GISignalInfo *signal_info;
+ GIInfoType info_type;
+ GISignalInfo *signal_info = NULL;
if (!signal_query->itype)
return NULL;
@@ -66,8 +67,13 @@ get_signal_info_if_available(GSignalQuery *signal_query)
if (!obj)
return NULL;
- signal_info = g_object_info_find_signal((GIObjectInfo*)obj,
- signal_query->signal_name);
+ info_type = g_base_info_get_type (obj);
+ if (info_type == GI_INFO_TYPE_OBJECT)
+ signal_info = g_object_info_find_signal((GIObjectInfo*)obj,
+ signal_query->signal_name);
+ else if (info_type == GI_INFO_TYPE_INTERFACE)
+ signal_info = g_interface_info_find_signal((GIInterfaceInfo*)obj,
+ signal_query->signal_name);
g_base_info_unref((GIBaseInfo*)obj);
return signal_info;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]