[pulseaudio-discuss] [PATCH 1/2] [paprefs] Port from dbus-glib to gdbus
Jan Tojnar
jtojnar at gmail.com
Sun Jul 15 13:56:06 UTC 2018
dbus-glib has been deprecated in favour of D-Bus library built into
GLib for a while now.
---
meson.build | 2 +-
src/meson.build | 2 +-
src/paprefs.cc | 53 +++++++++++++++++++++----------------------------
3 files changed, 25 insertions(+), 32 deletions(-)
diff --git a/meson.build b/meson.build
index d2d002e..6368165 100644
--- a/meson.build
+++ b/meson.build
@@ -14,7 +14,7 @@ i18n = import('i18n')
gtkmm = dependency('gtkmm-3.0')
giomm = dependency('giomm-2.4', version: '>= 2.26')
sigc = dependency('sigc++-2.0')
-dbus_glib = dependency('dbus-glib-1')
+libdbus = dependency('dbus-1')
libpulse = dependency('libpulse')
lynx = find_program('lynx', required: with_lynx)
diff --git a/src/meson.build b/src/meson.build
index 54740eb..7d61175 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -6,7 +6,7 @@ paprefs_dependencies = [
giomm,
gtkmm,
sigc,
- dbus_glib,
+ libdbus,
libpulse,
]
diff --git a/src/paprefs.cc b/src/paprefs.cc
index 123fea5..29fb1bb 100644
--- a/src/paprefs.cc
+++ b/src/paprefs.cc
@@ -25,8 +25,9 @@
#include <gtkmm.h>
#include <libintl.h>
-#include <dbus/dbus-glib.h>
#include <dbus/dbus.h>
+#include <giomm/dbusconnection.h>
+#include <giomm/dbusproxy.h>
#include <gdk/gdkx.h>
#include <pulse/version.h>
@@ -339,36 +340,28 @@ void MainWindow::showInstallButton(Gtk::Button *button, bool available) {
}
void MainWindow::installFiles(const char *a, const char *b = NULL) {
- DBusGConnection *connection;
- DBusGProxy *proxy;
- gboolean ret;
- GError *error = NULL;
- const gchar *packages[] = {a, b, NULL};
-
- connection = dbus_g_bus_get(DBUS_BUS_SESSION, NULL);
-
- proxy = dbus_g_proxy_new_for_name(connection,
- "org.freedesktop.PackageKit",
- "/org/freedesktop/PackageKit",
- "org.freedesktop.PackageKit.Modify");
-
- ret = dbus_g_proxy_call(
- proxy, "InstallProvideFiles", &error,
- G_TYPE_UINT, GDK_WINDOW_XID(get_window()->gobj()),
- G_TYPE_STRV, packages,
- G_TYPE_STRING, "show-confirm-search,hide-finished",
- G_TYPE_INVALID, G_TYPE_INVALID);
-
- if (!ret) {
- g_warning("Installation failed: %s", error->message);
- g_error_free(error);
+ Glib::RefPtr<Gio::DBus::Proxy> proxy;
+ const std::vector<Glib::ustring> packages = {a, b};
+
+ proxy = Gio::DBus::Proxy::create_for_bus_sync(Gio::DBus::BusType::BUS_TYPE_SESSION,
+ "org.freedesktop.PackageKit",
+ "/org/freedesktop/PackageKit",
+ "org.freedesktop.PackageKit.Modify");
+
+ Glib::VariantContainerBase params = Glib::VariantContainerBase::create_tuple(std::vector<Glib::VariantBase>({
+ Glib::Variant<guint>::create(GDK_WINDOW_XID(get_window()->gobj())),
+ Glib::Variant<std::vector<Glib::ustring>>::create(packages),
+ Glib::Variant<Glib::ustring>::create("show-confirm-search,hide-finished")
+ }));
+
+ try {
+ proxy->call_sync("InstallProvideFiles", params);
+
+ checkForModules();
+ updateSensitive();
+ } catch (const Glib::Error& err) {
+ g_warning("Installation failed: %s", err.what().c_str());
}
-
- g_object_unref(proxy);
- dbus_g_connection_unref(connection);
-
- checkForModules();
- updateSensitive();
}
void MainWindow::installModules(const char *a, const char *b = NULL) {
--
2.18.0
More information about the pulseaudio-discuss
mailing list