[gjs: 1/2] Support interface signal handlers
- From: Philip Chimento <pchimento src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gjs: 1/2] Support interface signal handlers
- Date: Thu, 10 May 2018 05:23:49 +0000 (UTC)
commit 7b5e1f4516354ca4b8f039176f3ffca366d4fd77
Author: Tomasz Miąsko <tomasz miasko gmail com>
Date: Wed May 9 00:00:00 2018 +0000
Support interface signal handlers
Use get_signal_info_if_available to obtain details about signal. It
takes into account if signal is defined for an object or an interface
and uses g_object_info_find_signal or g_interface_info_find_signal as
appropriate.
Fixes issue #147.
gi/value.cpp | 14 ++------------
1 file changed, 2 insertions(+), 12 deletions(-)
---
diff --git a/gi/value.cpp b/gi/value.cpp
index b264cc71..861b00f3 100644
--- a/gi/value.cpp
+++ b/gi/value.cpp
@@ -934,24 +934,15 @@ gjs_value_from_g_value_internal(JSContext *context,
bool res;
GArgument arg;
GIArgInfo *arg_info;
- GIBaseInfo *obj;
GISignalInfo *signal_info;
GITypeInfo type_info;
- obj = g_irepository_find_by_gtype(NULL, signal_query->itype);
- if (!obj) {
- gjs_throw(context, "Signal argument with GType %s isn't introspectable",
- g_type_name(signal_query->itype));
- return false;
- }
-
- signal_info = g_object_info_find_signal((GIObjectInfo*)obj, signal_query->signal_name);
-
+ signal_info = get_signal_info_if_available(signal_query);
if (!signal_info) {
gjs_throw(context, "Unknown signal.");
- g_base_info_unref((GIBaseInfo*)obj);
return false;
}
+
arg_info = g_callable_info_get_arg(signal_info, arg_n - 1);
g_arg_info_load_type(arg_info, &type_info);
@@ -965,7 +956,6 @@ gjs_value_from_g_value_internal(JSContext *context,
g_base_info_unref((GIBaseInfo*)arg_info);
g_base_info_unref((GIBaseInfo*)signal_info);
- g_base_info_unref((GIBaseInfo*)obj);
return res;
} else if (g_type_is_a(gtype, G_TYPE_POINTER)) {
gpointer pointer;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]