问题标签 [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.
webkit - 使用 GVariant 向另一个进程发送指针
我目前正在使用 webkit2gtk 开发一个简单的浏览器。在 webkit2gtk 中,所有与 DOM 相关的操作都在称为 WebProcess 的单独进程中完成。
我在 UI 进程中创建了一个 GTKWidget。我需要将 GTKWidget 结构传递给 WebProcess。我们可以使用 GVariant 吗?
我读过 GVariant api。我能够使用 GVariant 发送字符串、整数和其他基本类型。但是我们可以使用 GVariant 发送对象吗?
python - 在 Python 中定义一个 GLib.Variant
我正在尝试GLib.Variant
在 Python 中定义一种数据类型以将其与pydbus
库一起使用。这是我的尝试:
然而它说TypeError: GLib.Variant.new_variant() takes exactly 1 argument (2 given)
。我可以清楚地看到这一点。但是,我怎样才能为我将定义的值分配?不应该像字典一样{'framerate': 30}
吗?
arrays - 如何通过 gdbus 发送二维数组?
我正在尝试通过 dbus 发送一个二维字符串数组。(我使用的是 gdbus api,带有 gdbus-codegen)。
我已经定义了 dbus 接口如下。
我正在尝试以下列方式创建 GVariant:
其中 pack_string_array 将一个 c 样式字符串数组打包到一个 gvariant 中。
但是,当我测试它时,程序崩溃并出现以下错误:
如何通过 dbus 发送字符串数组?
c++ - C++ STL 容器到 Glib 的转换
我正在尝试将带有 STL 容器的 C++ 代码转换为 C 和 Glib。那是对的吗?
linux - 如何使用 Vala 从存储在 GSettings 中的字典数组中读取值?
GSettings Vala 文档不是很详细,我找不到从存储在 GSettings 中的字典数组中读取项目的方法。现在我的架构中有这个:
如何读取键的值id
和数组name
的第一个值?services
我尝试了很多可能性(例如使用get_value("services")
then get_child(0)
)来阅读字典,但它只是中断了,我不知道如何调试它。
dictionary - 使用 GSettings 时,{ss} 应该映射到什么 GLib 类型?
我有一个带有 type 键的 gsettings 架构a{ss}
。我想将所述键绑定到对象上的属性。我已成功使用g_settings_bind
和g_settings_bind_with_mapping
其他键,但我不知道将此键映射到什么类型。这GVariant
是一个包含键字符串和值字符串的字典数组,但那是什么类型的 glib 呢?
c - GVariantBuilder 构建 a(ii) 或 a(vv)
我有这个 2 个整数的数组,我想通过 dbus 发送。它总是抱怨 value 不是 tuple 或 null 类型,具体取决于尝试。它需要看起来如何?
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
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
我错过了什么?文档有些模糊。