From 36652158ade12cb3e7b06b9a9e233629b88fa557 Mon Sep 17 00:00:00 2001 From: Alexis Date: Fri, 23 Nov 2018 10:46:58 +0100 Subject: [PATCH] refactor(tray): more cpp binding --- include/modules/sni/watcher.hpp | 4 ++-- src/modules/sni/watcher.cpp | 33 ++++++++++++--------------------- 2 files changed, 14 insertions(+), 23 deletions(-) diff --git a/include/modules/sni/watcher.hpp b/include/modules/sni/watcher.hpp index 6e925fb..79f5cbf 100644 --- a/include/modules/sni/watcher.hpp +++ b/include/modules/sni/watcher.hpp @@ -8,7 +8,7 @@ namespace waybar::modules::SNI { class Watcher { public: Watcher(); - ~Watcher(); + ~Watcher() = default; private: typedef enum { GF_WATCH_TYPE_HOST, GF_WATCH_TYPE_ITEM } GfWatchType; @@ -22,7 +22,7 @@ private: guint watch_id; } GfWatch; - static void busAcquired(GDBusConnection *, const gchar *, gpointer); + void busAcquired(const Glib::RefPtr&, Glib::ustring); static gboolean handleRegisterHost(Watcher *, GDBusMethodInvocation *, const gchar *); static gboolean handleRegisterItem(Watcher *, GDBusMethodInvocation *, diff --git a/src/modules/sni/watcher.cpp b/src/modules/sni/watcher.cpp index 0cb714e..59dc213 100644 --- a/src/modules/sni/watcher.cpp +++ b/src/modules/sni/watcher.cpp @@ -5,37 +5,28 @@ using namespace waybar::modules::SNI; Watcher::Watcher() -{ - GBusNameOwnerFlags flags = static_cast( - G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT - | G_BUS_NAME_OWNER_FLAGS_REPLACE); - bus_name_id_ = g_bus_own_name(G_BUS_TYPE_SESSION, - "org.kde.StatusNotifierWatcher", flags, - &Watcher::busAcquired, nullptr, nullptr, this, nullptr); - watcher_ = sn_watcher_skeleton_new(); - sn_watcher_set_protocol_version(watcher_, 1); -} - -Watcher::~Watcher() + : bus_name_id_(Gio::DBus::own_name(Gio::DBus::BusType::BUS_TYPE_SESSION, + "org.kde.StatusNotifierWatcher", sigc::mem_fun(*this, &Watcher::busAcquired), + Gio::DBus::SlotNameAcquired(), Gio::DBus::SlotNameLost(), + Gio::DBus::BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT | Gio::DBus::BUS_NAME_OWNER_FLAGS_REPLACE)), + watcher_(sn_watcher_skeleton_new()) { } -void Watcher::busAcquired(GDBusConnection* connection, const gchar* name, - gpointer data) +void Watcher::busAcquired(const Glib::RefPtr& conn, Glib::ustring name) { GError* error = nullptr; - auto host = static_cast(data); - g_dbus_interface_skeleton_export(G_DBUS_INTERFACE_SKELETON(host->watcher_), - connection, "/StatusNotifierWatcher", &error); + g_dbus_interface_skeleton_export(G_DBUS_INTERFACE_SKELETON(watcher_), + conn->gobj(), "/StatusNotifierWatcher", &error); if (error != nullptr) { std::cerr << error->message << std::endl; g_error_free(error); return; } - g_signal_connect_swapped(host->watcher_, "handle-register-item", - G_CALLBACK(&Watcher::handleRegisterItem), data); - g_signal_connect_swapped(host->watcher_, "handle-register-host", - G_CALLBACK(&Watcher::handleRegisterHost), data); + g_signal_connect_swapped(watcher_, "handle-register-item", + G_CALLBACK(&Watcher::handleRegisterItem), this); + g_signal_connect_swapped(watcher_, "handle-register-host", + G_CALLBACK(&Watcher::handleRegisterHost), this); } gboolean Watcher::handleRegisterHost(Watcher* obj,