问题标签 [gvariant]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
133 浏览

webkit - 使用 GVariant 向另一个进程发送指针

我目前正在使用 webkit2gtk 开发一个简单的浏览器。在 webkit2gtk 中,所有与 DOM 相关的操作都在称为 WebProcess 的单独进程中完成。

我在 UI 进程中创建了一个 GTKWidget。我需要将 GTKWidget 结构传递给 WebProcess。我们可以使用 GVariant 吗?

我读过 GVariant api。我能够使用 GVariant 发送字符串、整数和其他基本类型。但是我们可以使用 GVariant 发送对象吗?

0 投票
2 回答
1704 浏览

python - 在 Python 中定义一个 GLib.Variant

我正在尝试GLib.Variant在 Python 中定义一种数据类型以将其与pydbus库一起使用。这是我的尝试:

然而它说TypeError: GLib.Variant.new_variant() takes exactly 1 argument (2 given)。我可以清楚地看到这一点。但是,我怎样才能为我将定义的值分配?不应该像字典一样{'framerate': 30}吗?

0 投票
2 回答
1270 浏览

arrays - 如何通过 gdbus 发送二维数组?

我正在尝试通过 dbus 发送一个二维字符串数组。(我使用的是 gdbus api,带有 gdbus-codegen)。
我已经定义了 dbus 接口如下。

我正在尝试以下列方式创建 GVariant:

其中 pack_string_array 将一个 c 样式字符串数组打包到一个 gvariant 中。

但是,当我测试它时,程序崩溃并出现以下错误:

如何通过 dbus 发送字符串数组?

0 投票
1 回答
231 浏览

c++ - C++ STL 容器到 Glib 的转换

我正在尝试将带有 STL 容器的 C++ 代码转换为 C 和 Glib。那是对的吗?

0 投票
2 回答
283 浏览

linux - 如何使用 Vala 从存储在 GSettings 中的字典数组中读取值?

GSettings Vala 文档不是很详细,我找不到从存储在 GSettings 中的字典数组中读取项目的方法。现在我的架构中有这个:

如何读取键的值id和数组name的第一个值?services我尝试了很多可能性(例如使用get_value("services")then get_child(0))来阅读字典,但它只是中断了,我不知道如何调试它。

0 投票
1 回答
184 浏览

dictionary - 使用 GSettings 时,{ss} 应该映射到什么 GLib 类型?

我有一个带有 type 键的 gsettings 架构a{ss}。我想将所述键绑定到对象上的属性。我已成功使用g_settings_bindg_settings_bind_with_mapping其他键,但我不知道将此键映射到什么类型。这GVariant是一个包含键字符串和值字符串的字典数组,但那是什么类型的 glib 呢?

0 投票
1 回答
243 浏览

c - GVariantBuilder 构建 a(ii) 或 a(vv)

我有这个 2 个整数的数组,我想通过 dbus 发送。它总是抱怨 value 不是 tuple 或 null 类型,具体取决于尝试。它需要看起来如何?

0 投票
1 回答
152 浏览

c - 使用 g_variant_get 时能否避免 GLib 变体引用和内存泄漏?

背景

我正在使用 GLib 和变体。

我有这种情况,我想深入了解变体中的值。

初始变体changed_properties的格式为a{sv}.

我的理解

据我了解,要提取v(这是一个变体),我必须首先从字典{sv}数组中提取第一个。在示例 3 中,我在示例 1中的注释代码之后的sv第一个函数调用中执行此操作。g_variant_get_child_value(changed_properties, 0)

现在我得到了一个形式为{sv}. 要提取变体,我必须再次调用g_variant_get_child_value(changed_property, 1)(其中索引 0 是字符串,索引 1 是{sv}字典中的变体。

问题

调用示例 1示例 2中的函数时会出现此问题。g_variant_get_child_value()从,获得的所有内存引用g_variant_get_variant(),除了最后一次将引用放入变量的调用之外,都将丢失并且不能被取消引用(如示例 3中所示)。

问题

所以我的问题是:如何在不创建这么多对象并通过引用处理这么多内存的情况下深入了解v其内容?GVariant

0 投票
0 回答
43 浏览

c - 如何创建 GVariant* 以提供给 g_variant_iter_new?

以下简单代码足以重现我遇到的错误。

它导致:

GLib:ERROR:../../../glib/gvariant-serialiser.c:1367:g_variant_serialised_n_children: 代码不应该到达保释!GLib:ERROR:../../../glib/gvariant-serialiser.c:1367:g_variant_serialised_n_children: 代码不应该到达 Aborted

我错过了什么?文档有些模糊。

g_variant_new_string ()


g_variant_iter_new ()