{
if (G_IS_KDBUS_CONNECTION (connection->stream))
{
- //_g_kdbus_unsubscribe_name_lost_and_acquired (connection, arg0);
+ if (g_strcmp0 (signal_data->member, "NameAcquired") == 0)
+ _g_kdbus_unsubscribe_name_acquired (connection);
+ else if (g_strcmp0 (signal_data->member, "NameLost") == 0)
+ _g_kdbus_unsubscribe_name_lost (connection);
}
}
/*
+ * _g_kdbus_match_remove:
+ *
+ */
+static void
+_g_kdbus_match_remove (GDBusConnection *connection,
+ guint cookie)
+{
+ GKdbus *kdbus;
+ struct kdbus_cmd_match cmd_match = {};
+ gint ret;
+
+ kdbus = _g_kdbus_connection_get_kdbus (G_KDBUS_CONNECTION (g_dbus_connection_get_stream (connection)));
+
+ cmd_match.size = sizeof (cmd_match);
+ cmd_match.cookie = cookie;
+
+ ret = ioctl(kdbus->priv->fd, KDBUS_CMD_MATCH_REMOVE, &cmd_match);
+ if (ret < 0)
+ g_warning ("ERROR - %d\n", (int) errno);
+}
+
+
+/*
* _g_kdbus_subscribe_name_acquired:
*
*/
}
+/*
+ * _g_kdbus_unsubscribe_name_acquired:
+ *
+ */
+void
+_g_kdbus_unsubscribe_name_acquired (GDBusConnection *connection)
+{
+ guint64 cookie;
+
+ cookie = 0xbeefbeefbeefbeef;
+ _g_kdbus_match_remove (connection, cookie);
+}
+
+
+/*
+ * _g_kdbus_unsubscribe_name_lost:
+ *
+ */
+void
+_g_kdbus_unsubscribe_name_lost (GDBusConnection *connection)
+{
+ guint64 cookie;
+
+ cookie = 0xdeafdeafdeafdeaf;
+ _g_kdbus_match_remove (connection, cookie);
+}
+
+
/**
* g_kdbus_decode_kernel_msg:
*
void _g_kdbus_subscribe_name_lost (GDBusConnection *connection,
const gchar *name);
+void _g_kdbus_unsubscribe_name_acquired (GDBusConnection *connection);
+
+void _g_kdbus_unsubscribe_name_lost (GDBusConnection *connection);
+
gssize _g_kdbus_receive (GKdbus *kdbus,
GCancellable *cancellable,
GError **error);