g_variant_builder_new使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | static void ListExtraVideoDirectories(cDBusObject *Object, GVariant *Parameters, GDBusMethodInvocation *Invocation) { int replyCode = 500; cString replyMessage = "Missing extra-video-directories patch" ; cStringList dirs; #ifdef EXTRA_VIDEO_DIRECTORIES_PATCH if (!LockExtraVideoDirectories( false )) { replyCode = 550; replyMessage = "Unable to lock extra video directory list" ; } else { if (ExtraVideoDirectories.Size() == 0) { replyCode = 550; replyMessage = "no extra video directories in list" ; } else { replyCode = 250; replyMessage = "" ; for ( int i = 0; i < ExtraVideoDirectories.Size(); i++) dirs.Append(strdup(ExtraVideoDirectories.At(i))); } UnlockExtraVideoDirectories(); } #endif GVariantBuilder *builder = g_variant_builder_new(G_VARIANT_TYPE( "(isas)" )); g_variant_builder_add(builder, "i" , replyCode); g_variant_builder_add(builder, "s" , *replyMessage); GVariantBuilder *array = g_variant_builder_new(G_VARIANT_TYPE( "as" )); for ( int i = 0; i < dirs.Size(); i++) g_variant_builder_add(array, "s" , dirs.At(i)); g_variant_builder_add_value(builder, g_variant_builder_end(array)); g_dbus_method_invocation_return_value(Invocation, g_variant_builder_end(builder)); g_variant_builder_unref(array); g_variant_builder_unref(builder); }; |
static void List(cDBusObject *Object, GVariant *Parameters, GDBusMethodInvocation *Invocation) { if (g_strcmp0(g_dbus_method_invocation_get_interface_name(Invocation), DBUS_VDR_PLUGIN_INTERFACE) == 0) esyslog("dbus2vdr: use of deprecated interface: 'List' should be called with the interface '%s'!", DBUS_VDR_PLUGINMANAGER_INTERFACE); #define EMPTY(s) (s == NULL ? "" : s) GVariantBuilder *array = g_variant_builder_new(G_VARIANT_TYPE("a(ss)")); int index = 0; do { cPlugin *plugin = cPluginManager::GetPlugin(index); if (plugin == NULL) break; const char *name = plugin->Name(); const char *version = plugin->Version(); g_variant_builder_add(array, "(ss)", EMPTY(name), EMPTY(version)); index++; } while (true); #undef EMPTY GVariantBuilder *builder = g_variant_builder_new(G_VARIANT_TYPE("(a(ss))")); g_variant_builder_add_value(builder, g_variant_builder_end(array)); g_dbus_method_invocation_return_value(Invocation, g_variant_builder_end(builder)); g_variant_builder_unref(array); g_variant_builder_unref(builder); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2020-04-24 #include <corecrt.h>
2020-04-24 Visual Studio 2017 - Windows XP (v141_xp)
2020-04-24 prolog
2019-04-24 PKI
2019-04-24 从别人的软件中_你能看到什么
2019-04-24 begintransaction EndTransaction
2019-04-24 hid.dll