summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Zeuthen <davidz@redhat.com>2011-06-01 18:19:13 -0400
committerDavid Zeuthen <davidz@redhat.com>2011-06-01 18:19:13 -0400
commitbeebca2f9a48e87dfbc989c1a34cfde1b664f589 (patch)
treeb0400bc82fcb3c4ab5df00477000d2a1ce88b1bb
parent490757bfc60cad6079c121b8633c02151124794b (diff)
Catch up with latest GDBus and gobject-introspection
Signed-off-by: David Zeuthen <davidz@redhat.com>
-rw-r--r--configure.ac4
-rw-r--r--src/Makefile.am60
-rw-r--r--src/gdbusgi.c59
-rw-r--r--src/myfrobnicator.c16
-rw-r--r--src/test.c5
5 files changed, 65 insertions, 79 deletions
diff --git a/configure.ac b/configure.ac
index cddd86a..83c5cf4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -84,11 +84,11 @@ if test "x$GCC" = "xyes"; then
changequote([,])dnl
fi
-PKG_CHECK_MODULES(GLIB2, glib-2.0 gio-2.0)
+PKG_CHECK_MODULES(GLIB2, glib-2.0 gio-2.0 >= 2.26.0)
AC_SUBST(GLIB2_CFLAGS)
AC_SUBST(GLIB2_LIBS)
-PKG_CHECK_MODULES([INTROSPECTION], [gobject-introspection-1.0 >= 0.6.2])
+GOBJECT_INTROSPECTION_CHECK([0.10.0])
AC_OUTPUT([
Makefile
diff --git a/src/Makefile.am b/src/Makefile.am
index 0cc9721..13a0e64 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,5 +1,6 @@
NULL =
+CLEANFILES =
noinst_PROGRAMS = test
@@ -16,49 +17,60 @@ test_CFLAGS = \
test_LDADD = \
$(GLIB2_LIBS) \
$(INTROSPECTION_LIBS) \
- libmy.la \
+ libmy-1.0.la \
$(NULL)
# ----------------------------------------------------------------------------------------------------
-noinst_LTLIBRARIES = libmy.la
+noinst_LTLIBRARIES = libmy-1.0.la
-libmy_la_SOURCES = \
+libmy_1_0_la_SOURCES = \
myfrobnicator.h myfrobnicator.c \
gdbusgi.h gdbusgi.c \
$(NULL)
-libmy_la_CFLAGS = \
+libmy_1_0_la_CFLAGS = \
$(GLIB2_CFLAGS) \
$(INTROSPECTION_CFLAGS) \
$(NULL)
-libmy_la_LIBADD = \
+libmy_1_0_la_LIBADD = \
$(GLIB2_LIBS) \
$(INTROSPECTION_LIBS) \
$(NULL)
# ----------------------------------------------------------------------------------------------------
-My-1.0.gir: libmy.la Makefile.am
- g-ir-scanner -v -v \
- --namespace My \
- --nsversion=1.0 \
- --include=Gio-2.0 \
- --library=libmy.la \
- --libtool ../libtool \
- --output $@ \
- --pkg=glib-2.0 \
- --pkg=gobject-2.0 \
- --pkg=gio-2.0 \
- -I$(top_builddir)/src \
- -I$(top_srcdir)/src \
- $(top_srcdir)/src/myfrobnicator.h \
- $(top_srcdir)/src/myfrobnicator.c \
- $(NULL)
-
-My-1.0.typelib: My-1.0.gir
- g-ir-compiler $< -o $@
+if HAVE_INTROSPECTION
+girdir = $(INTROSPECTION_GIRDIR)
+gir_DATA = My-1.0.gir
+
+typelibsdir = $(INTROSPECTION_TYPELIBDIR)
+typelibs_DATA = My-1.0.typelib
+
+My-1.0.gir: libmy-1.0.la $(INTROSPECTION_SCANNER) Makefile.am
+ $(INTROSPECTION_SCANNER) -v \
+ --warn-all \
+ --namespace My \
+ --nsversion=1.0 \
+ --include=Gio-2.0 \
+ --library=libmy-1.0.la \
+ --output $@ \
+ --pkg=glib-2.0 \
+ --pkg=gobject-2.0 \
+ --pkg=gio-2.0 \
+ --libtool=$(top_builddir)/libtool \
+ -I$(top_srcdir)/src \
+ -I$(top_builddir)/src \
+ $(libmy_1_0_la_SOURCES) \
+ $(NULL)
+
+My-1.0.typelib: My-1.0.gir $(INTROSPECTION_COMPILER)
+ $(INTROSPECTION_COMPILER) $< -o $@
+
+CLEANFILES += $(gir_DATA) $(typelibs_DATA)
+
+endif # HAVE_INTROSPECTION
# ----------------------------------------------------------------------------------------------------
diff --git a/src/gdbusgi.c b/src/gdbusgi.c
index 387a4a3..7d82aa7 100644
--- a/src/gdbusgi.c
+++ b/src/gdbusgi.c
@@ -61,12 +61,10 @@ get_gvariant_type_for_gi_type (GITypeInfo *gi_type,
gvariant_type = g_variant_type_new ("q");
break;
- case GI_TYPE_TAG_INT:
case GI_TYPE_TAG_INT32:
gvariant_type = g_variant_type_new ("i");
break;
- case GI_TYPE_TAG_UINT:
case GI_TYPE_TAG_UINT32:
gvariant_type = g_variant_type_new ("u");
break;
@@ -142,8 +140,6 @@ get_gvariant_type_for_gi_type (GITypeInfo *gi_type,
case GI_TYPE_TAG_UINT32:
case GI_TYPE_TAG_INT64:
case GI_TYPE_TAG_UINT64:
- case GI_TYPE_TAG_INT:
- case GI_TYPE_TAG_UINT:
case GI_TYPE_TAG_DOUBLE:
case GI_TYPE_TAG_UTF8:
/* ^^^ Only these types are OK */
@@ -183,8 +179,6 @@ get_gvariant_type_for_gi_type (GITypeInfo *gi_type,
case GI_TYPE_TAG_UINT32:
case GI_TYPE_TAG_INT64:
case GI_TYPE_TAG_UINT64:
- case GI_TYPE_TAG_INT:
- case GI_TYPE_TAG_UINT:
case GI_TYPE_TAG_DOUBLE:
/* ^^^ Only these types are OK */
break;
@@ -326,14 +320,6 @@ get_scalar_element_size (GITypeInfo *type)
ret = sizeof (guint64);
break;
- case GI_TYPE_TAG_INT:
- ret = sizeof (gint);
- break;
-
- case GI_TYPE_TAG_UINT:
- ret = sizeof (guint);
- break;
-
case GI_TYPE_TAG_DOUBLE:
ret = sizeof (gdouble);
break;
@@ -389,14 +375,6 @@ argument_get_number (GArgument *arg,
ret = arg->v_uint64;
break;
- case GI_TYPE_TAG_INT:
- ret = arg->v_int;
- break;
-
- case GI_TYPE_TAG_UINT:
- ret = arg->v_uint;
- break;
-
default:
g_assert_not_reached ();
break;
@@ -465,13 +443,11 @@ convert_gi_to_gvariant (GArgument *value,
ret = g_variant_new_uint16 (value->v_uint16);
break;
- case GI_TYPE_TAG_INT:
case GI_TYPE_TAG_INT32:
g_assert (g_variant_type_equal (expected_gvariant_type, G_VARIANT_TYPE_INT32));
ret = g_variant_new_int32 (value->v_int32);
break;
- case GI_TYPE_TAG_UINT:
case GI_TYPE_TAG_UINT32:
g_assert (g_variant_type_equal (expected_gvariant_type, G_VARIANT_TYPE_UINT32));
ret = g_variant_new_uint32 (value->v_uint32);
@@ -733,14 +709,6 @@ argument_put_number (GArgument *arg,
arg->v_uint64 = val;
break;
- case GI_TYPE_TAG_INT:
- arg->v_int = val;
- break;
-
- case GI_TYPE_TAG_UINT:
- arg->v_uint = val;
- break;
-
default:
g_assert_not_reached ();
break;
@@ -807,13 +775,11 @@ convert_gvariant_to_gi (GVariant *variant,
value->v_uint16 = g_variant_get_uint16 (variant);
break;
- case GI_TYPE_TAG_INT:
case GI_TYPE_TAG_INT32:
g_assert (g_variant_type_equal (gvariant_type, G_VARIANT_TYPE_INT32));
value->v_int32 = g_variant_get_int32 (variant);
break;
- case GI_TYPE_TAG_UINT:
case GI_TYPE_TAG_UINT32:
g_assert (g_variant_type_equal (gvariant_type, G_VARIANT_TYPE_UINT32));
value->v_uint32 = g_variant_get_uint32 (variant);
@@ -1348,8 +1314,8 @@ prepare_args (GVariant *parameters,
array_len_arg_type = NULL;
if (ad->array_len_position != -1)
{
- array_len_arg = args[ad->array_len_position];
- array_len_arg_type = ((ArgData *) data->args->pdata[ad->array_len_position])->type_info;
+ array_len_arg = args[ad->array_len_position + 1];
+ array_len_arg_type = ((ArgData *) data->args->pdata[ad->array_len_position + 1])->type_info;
}
convert_gvariant_to_gi (item,
@@ -1411,8 +1377,8 @@ process_args (GArgument *return_value,
array_len_arg_type = NULL;
if (ad->array_len_position != -1)
{
- array_len_arg = args[ad->array_len_position];
- array_len_arg_type = ((ArgData *) data->args->pdata[ad->array_len_position])->type_info;
+ array_len_arg = args[ad->array_len_position + 1];
+ array_len_arg_type = ((ArgData *) data->args->pdata[ad->array_len_position + 1])->type_info;
}
gvariant_type = g_variant_type_new (ad->dbus_arg_info->signature);
@@ -1457,8 +1423,6 @@ free_one_arg (GArgument *arg,
case GI_TYPE_TAG_UINT32:
case GI_TYPE_TAG_INT64:
case GI_TYPE_TAG_UINT64:
- case GI_TYPE_TAG_INT:
- case GI_TYPE_TAG_UINT:
case GI_TYPE_TAG_DOUBLE:
/* do nothing */
break;
@@ -1514,7 +1478,8 @@ free_one_arg (GArgument *arg,
else if ((array_length = g_type_info_get_array_length (type)) != -1)
{
guint64 array_len;
- array_len = argument_get_number (all_args[array_length], all_args_data[array_length]->type_info);
+ array_len = argument_get_number (all_args[array_length + 1],
+ all_args_data[array_length + 1]->type_info);
/* We only support scalar types and strings here */
if (g_type_info_get_tag (element_type) == GI_TYPE_TAG_UTF8)
{
@@ -1901,8 +1866,8 @@ process_signal_args (guint n_param_values,
array_len_arg_type = NULL;
if (ad->array_len_position != -1)
{
- array_len_arg = args[ad->array_len_position];
- array_len_arg_type = ((ArgData *) data->args->pdata[ad->array_len_position])->type_info;
+ array_len_arg = args[ad->array_len_position + 1];
+ array_len_arg_type = ((ArgData *) data->args->pdata[ad->array_len_position + 1])->type_info;
}
gvariant_type = g_variant_type_new (ad->dbus_arg_info->signature);
@@ -2155,7 +2120,7 @@ get_method_data (GIFunctionInfo *method,
other_arg = g_callable_info_get_arg (callable, m);
other_type = g_arg_info_get_type (other_arg);
/* get_array_length() assumes first arg is this/self */
- if (g_type_info_get_array_length (other_type) == (gint) n + 1)
+ if (g_type_info_get_array_length (other_type) == (gint) n)
{
not_on_dbus = TRUE;
ad->is_array_len_for_position = n;
@@ -2533,6 +2498,12 @@ compute_interface_data_for_gtype (GType gtype,
if (data->interface_info == NULL)
goto fail;
+ //GString *str;
+ //str = g_string_new (NULL);
+ //g_dbus_interface_info_generate_xml (data->interface_info, 2, str);
+ //g_print ("xml:\n%s\n\n", str->str);
+ //g_string_free (str, TRUE);
+
return data;
fail:
diff --git a/src/myfrobnicator.c b/src/myfrobnicator.c
index 2b901b0..14398b6 100644
--- a/src/myfrobnicator.c
+++ b/src/myfrobnicator.c
@@ -55,7 +55,7 @@ my_frobnicator_class_init (MyFrobnicatorClass *klass)
* @frobnicator: A #MyFrobnicator.
* @str: A string.
* @carray_as: (array) (element-type utf8):
- * @garray_ai: (array zero-terminated="0") (element-type gint):
+ * @garray_ai: (array zero-terminated=0) (element-type gint):
*
* Check that signal parameters are marshalled correctly onto the
* bus. Btw, Hmm, apparently (array length=carray_ai_len) doesn't
@@ -172,8 +172,8 @@ my_frobnicator_hello_world_with_gerror (MyFrobnicator *frobnicator,
* @v_uint: Value.
* @v_double: Value.
* @v_string: Value.
- * @v_object_path: (gdbus.signature o) (foo.bar baz): Value.
- * @v_signature: (gdbus.signature g): Value.
+ * @v_object_path: (attribute gdbus.signature o) (attribute foo.bar baz): Value.
+ * @v_signature: (attribute gdbus.signature g): Value.
* @out_boolean: (out): Return location for value.
* @out_int16: (out): Return location for value.
* @out_uint16: (out): Return location for value.
@@ -185,8 +185,8 @@ my_frobnicator_hello_world_with_gerror (MyFrobnicator *frobnicator,
* @out_uint: (out): Return location for value.
* @out_double: (out): Return location for value.
* @out_string: (out): Return location for value.
- * @out_object_path: (out) (gdbus.signature o): Return location for value.
- * @out_signature: (out) (gdbus.signature g): Return location for value.
+ * @out_object_path: (out) (attribute gdbus.signature o): Return location for value.
+ * @out_signature: (out) (attribute gdbus.signature g): Return location for value.
*
* Method demonstrating simple types.
*
@@ -292,11 +292,11 @@ my_frobnicator_return_const_str (MyFrobnicator *frobnicator,
/**
* my_frobnicator_poke_path:
* @frobnicator: A #MyFrobnicator
- * @object_path: (gdbus.signature o) (foo.bar bat): An object path.
+ * @object_path: (attribute gdbus.signature o) (attribute foo.bar bat): An object path.
*
* Manipulate an object path.
*
- * Returns: (gdbus.signature o): A new object path. Free with g_free().
+ * Returns: (attribute gdbus.signature o): A new object path. Free with g_free().
*
* Attributes: (gdbus.method PokePath)
*/
@@ -313,7 +313,7 @@ my_frobnicator_poke_path (MyFrobnicator *frobnicator,
* @frobnicator:
* @carray_ai: (array length=carray_ai_len):
* @carray_ai_len:
- * @carray_as:
+ * @carray_as: (array) (element-type utf8):
* @gbytearray_ay: (element-type guint8):
* @garray_ai: (element-type gint):
* @garray_ad: (element-type gdouble):
diff --git a/src/test.c b/src/test.c
index 1893f4d..de680a6 100644
--- a/src/test.c
+++ b/src/test.c
@@ -321,6 +321,7 @@ run_test (GDBusConnection *connection)
"LaserFired",
"/org/My/Frobnicator",
NULL, /* arg0 */
+ G_DBUS_SIGNAL_FLAGS_NONE,
run_tests_on_signal_received,
&signal_params,
NULL); /* user_data_free_func */
@@ -413,7 +414,9 @@ load_typelib (void)
&error);
g_assert_no_error (error);
- lib = g_typelib_new_from_mapped_file (mfile);
+ lib = g_typelib_new_from_mapped_file (mfile, &error);
+ g_assert_no_error (error);
+
g_irepository_load_typelib (g_irepository_get_default (),
lib,
0, /* GIRepositoryLoadFlags */