mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-29 05:40:27 -04:00
spa: move dbus helpers out of bluez plugin
The file is moved into a new "include-private" directory. This is done because otherwise adjustments would have to be made to the list of installed headers, the way include tests currently work and which files are used for generating documentation.
This commit is contained in:
parent
ddf3be0a39
commit
4aa2e44796
9 changed files with 12 additions and 11 deletions
72
spa/include-private/spa-private/dbus-helpers.h
Normal file
72
spa/include-private/spa-private/dbus-helpers.h
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
/* Spa DBus helpers */
|
||||
/* SPDX-FileCopyrightText: Copyright © 2023 PipeWire authors */
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
|
||||
#ifndef SPA_PRIVATE_DBUS_HELPERS_H
|
||||
#define SPA_PRIVATE_DBUS_HELPERS_H
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
#include <dbus/dbus.h>
|
||||
|
||||
#include <spa/utils/cleanup.h>
|
||||
|
||||
static inline void cancel_and_unref(DBusPendingCall **pp)
|
||||
{
|
||||
DBusPendingCall *pending_call = spa_steal_ptr(*pp);
|
||||
|
||||
if (pending_call) {
|
||||
dbus_pending_call_cancel(pending_call);
|
||||
dbus_pending_call_unref(pending_call);
|
||||
}
|
||||
}
|
||||
|
||||
static inline DBusMessage *steal_reply_and_unref(DBusPendingCall **pp)
|
||||
{
|
||||
DBusPendingCall *pending_call = spa_steal_ptr(*pp);
|
||||
|
||||
DBusMessage *reply = dbus_pending_call_steal_reply(pending_call);
|
||||
dbus_pending_call_unref(pending_call);
|
||||
|
||||
return reply;
|
||||
}
|
||||
|
||||
SPA_DEFINE_AUTOPTR_CLEANUP(DBusMessage, DBusMessage, {
|
||||
spa_clear_ptr(*thing, dbus_message_unref);
|
||||
})
|
||||
|
||||
static inline bool reply_with_error(DBusConnection *conn,
|
||||
DBusMessage *reply_to,
|
||||
const char *error_name, const char *error_message)
|
||||
{
|
||||
spa_autoptr(DBusMessage) reply = dbus_message_new_error(reply_to, error_name, error_message);
|
||||
|
||||
return reply && dbus_connection_send(conn, reply, NULL);
|
||||
}
|
||||
|
||||
static inline DBusPendingCall *send_with_reply(DBusConnection *conn,
|
||||
DBusMessage *m,
|
||||
DBusPendingCallNotifyFunction callback, void *user_data)
|
||||
{
|
||||
DBusPendingCall *pending_call;
|
||||
|
||||
if (!dbus_connection_send_with_reply(conn, m, &pending_call, DBUS_TIMEOUT_USE_DEFAULT))
|
||||
return NULL;
|
||||
|
||||
if (!pending_call)
|
||||
return NULL;
|
||||
|
||||
if (!dbus_pending_call_set_notify(pending_call, callback, user_data, NULL)) {
|
||||
dbus_pending_call_cancel(pending_call);
|
||||
dbus_pending_call_unref(pending_call);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return pending_call;
|
||||
}
|
||||
|
||||
SPA_DEFINE_AUTO_CLEANUP(DBusError, DBusError, {
|
||||
dbus_error_free(thing);
|
||||
})
|
||||
|
||||
#endif /* SPA_PRIVATE_DBUS_HELPERS_H */
|
||||
Loading…
Add table
Add a link
Reference in a new issue