diff options
Diffstat (limited to 'src/modules')
| -rw-r--r-- | src/modules/bluetooth/bluetooth-util.c | 2 | ||||
| -rw-r--r-- | src/modules/bluetooth/module-bluetooth-device.c | 3 | ||||
| -rw-r--r-- | src/modules/bluetooth/module-bluetooth-discover.c | 2 | ||||
| -rw-r--r-- | src/modules/bluetooth/module-bluetooth-proximity.c | 2 | ||||
| -rw-r--r-- | src/modules/dbus-util.c | 437 | ||||
| -rw-r--r-- | src/modules/dbus-util.h | 68 | ||||
| -rw-r--r-- | src/modules/hal-util.c | 2 | ||||
| -rw-r--r-- | src/modules/module-console-kit.c | 2 | ||||
| -rw-r--r-- | src/modules/module-hal-detect.c | 2 | ||||
| -rw-r--r-- | src/modules/reserve-wrap.c | 3 | 
10 files changed, 8 insertions, 515 deletions
diff --git a/src/modules/bluetooth/bluetooth-util.c b/src/modules/bluetooth/bluetooth-util.c index 3dfc65e7..1cdade99 100644 --- a/src/modules/bluetooth/bluetooth-util.c +++ b/src/modules/bluetooth/bluetooth-util.c @@ -25,7 +25,7 @@  #include <pulsecore/core-util.h>  #include <pulsecore/shared.h> -#include <modules/dbus-util.h> +#include <pulsecore/dbus-shared.h>  #include "bluetooth-util.h" diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c index 2500fb09..2ff64ba9 100644 --- a/src/modules/bluetooth/module-bluetooth-device.c +++ b/src/modules/bluetooth/module-bluetooth-device.c @@ -46,8 +46,7 @@  #include <pulsecore/time-smoother.h>  #include <pulsecore/rtclock.h>  #include <pulsecore/namereg.h> - -#include <modules/dbus-util.h> +#include <pulsecore/dbus-shared.h>  #include "module-bluetooth-device-symdef.h"  #include "ipc.h" diff --git a/src/modules/bluetooth/module-bluetooth-discover.c b/src/modules/bluetooth/module-bluetooth-discover.c index 3288cc55..46f8b723 100644 --- a/src/modules/bluetooth/module-bluetooth-discover.c +++ b/src/modules/bluetooth/module-bluetooth-discover.c @@ -34,7 +34,7 @@  #include <pulsecore/macro.h>  #include <pulsecore/llist.h>  #include <pulsecore/core-util.h> -#include <modules/dbus-util.h> +#include <pulsecore/dbus-shared.h>  #include "module-bluetooth-discover-symdef.h"  #include "bluetooth-util.h" diff --git a/src/modules/bluetooth/module-bluetooth-proximity.c b/src/modules/bluetooth/module-bluetooth-proximity.c index c8d7b4d9..9993c8dc 100644 --- a/src/modules/bluetooth/module-bluetooth-proximity.c +++ b/src/modules/bluetooth/module-bluetooth-proximity.c @@ -42,8 +42,8 @@  #include <pulsecore/core-util.h>  #include <pulsecore/core-error.h>  #include <pulsecore/start-child.h> +#include <pulsecore/dbus-shared.h> -#include "../dbus-util.h"  #include "module-bluetooth-proximity-symdef.h"  PA_MODULE_AUTHOR("Lennart Poettering"); diff --git a/src/modules/dbus-util.c b/src/modules/dbus-util.c deleted file mode 100644 index e2d45803..00000000 --- a/src/modules/dbus-util.c +++ /dev/null @@ -1,437 +0,0 @@ -/*** -  This file is part of PulseAudio. - -  Copyright 2006 Lennart Poettering -  Copyright 2006 Shams E. King - -  PulseAudio is free software; you can redistribute it and/or modify -  it under the terms of the GNU Lesser General Public License as published -  by the Free Software Foundation; either version 2.1 of the License, -  or (at your option) any later version. - -  PulseAudio is distributed in the hope that it will be useful, but -  WITHOUT ANY WARRANTY; without even the implied warranty of -  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -  General Public License for more details. - -  You should have received a copy of the GNU Lesser General Public License -  along with PulseAudio; if not, write to the Free Software -  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -  USA. -***/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <stdarg.h> - -#include <pulse/xmalloc.h> -#include <pulse/timeval.h> -#include <pulsecore/log.h> -#include <pulsecore/shared.h> - -#include "dbus-util.h" - -struct pa_dbus_connection { -    PA_REFCNT_DECLARE; - -    pa_core *core; -    DBusConnection *connection; -    const char *property_name; -    pa_defer_event* dispatch_event; -}; - -static void dispatch_cb(pa_mainloop_api *ea, pa_defer_event *ev, void *userdata) { -    DBusConnection *conn = userdata; - -    if (dbus_connection_dispatch(conn) == DBUS_DISPATCH_COMPLETE) { -        /* no more data to process, disable the deferred */ -        ea->defer_enable(ev, 0); -    } -} - -/* DBusDispatchStatusFunction callback for the pa mainloop */ -static void dispatch_status(DBusConnection *conn, DBusDispatchStatus status, void *userdata) { -    pa_dbus_connection *c = userdata; - -    pa_assert(c); - -    switch(status) { - -        case DBUS_DISPATCH_COMPLETE: -            c->core->mainloop->defer_enable(c->dispatch_event, 0); -            break; - -        case DBUS_DISPATCH_DATA_REMAINS: -        case DBUS_DISPATCH_NEED_MEMORY: -        default: -            c->core->mainloop->defer_enable(c->dispatch_event, 1); -            break; -    } -} - -static pa_io_event_flags_t get_watch_flags(DBusWatch *watch) { -    unsigned int flags; -    pa_io_event_flags_t events = 0; - -    pa_assert(watch); - -    flags = dbus_watch_get_flags(watch); - -    /* no watch flags for disabled watches */ -    if (!dbus_watch_get_enabled(watch)) -        return PA_IO_EVENT_NULL; - -    if (flags & DBUS_WATCH_READABLE) -        events |= PA_IO_EVENT_INPUT; -    if (flags & DBUS_WATCH_WRITABLE) -        events |= PA_IO_EVENT_OUTPUT; - -    return events | PA_IO_EVENT_HANGUP | PA_IO_EVENT_ERROR; -} - -/* pa_io_event_cb_t IO event handler */ -static void handle_io_event(pa_mainloop_api *ea, pa_io_event *e, int fd, pa_io_event_flags_t events, void *userdata) { -    unsigned int flags = 0; -    DBusWatch *watch = userdata; - -#if HAVE_DBUS_WATCH_GET_UNIX_FD -    pa_assert(fd == dbus_watch_get_unix_fd(watch)); -#else -    pa_assert(fd == dbus_watch_get_fd(watch)); -#endif - -    if (!dbus_watch_get_enabled(watch)) { -        pa_log_warn("Asked to handle disabled watch: %p %i", (void*) watch, fd); -        return; -    } - -    if (events & PA_IO_EVENT_INPUT) -        flags |= DBUS_WATCH_READABLE; -    if (events & PA_IO_EVENT_OUTPUT) -        flags |= DBUS_WATCH_WRITABLE; -    if (events & PA_IO_EVENT_HANGUP) -        flags |= DBUS_WATCH_HANGUP; -    if (events & PA_IO_EVENT_ERROR) -        flags |= DBUS_WATCH_ERROR; - -    dbus_watch_handle(watch, flags); -} - -/* pa_time_event_cb_t timer event handler */ -static void handle_time_event(pa_mainloop_api *ea, pa_time_event* e, const struct timeval *tv, void *userdata) { -    DBusTimeout *timeout = userdata; - -    if (dbus_timeout_get_enabled(timeout)) { -        struct timeval next = *tv; -        dbus_timeout_handle(timeout); - -        /* restart it for the next scheduled time */ -        pa_timeval_add(&next, (pa_usec_t) dbus_timeout_get_interval(timeout) * 1000); -        ea->time_restart(e, &next); -    } -} - -/* DBusAddWatchFunction callback for pa mainloop */ -static dbus_bool_t add_watch(DBusWatch *watch, void *data) { -    pa_core *c = PA_CORE(data); -    pa_io_event *ev; - -    pa_assert(watch); -    pa_assert(c); - -    ev = c->mainloop->io_new( -            c->mainloop, -#if HAVE_DBUS_WATCH_GET_UNIX_FD -            dbus_watch_get_unix_fd(watch), -#else -            dbus_watch_get_fd(watch), -#endif -            get_watch_flags(watch), handle_io_event, watch); - -    dbus_watch_set_data(watch, ev, NULL); - -    return TRUE; -} - -/* DBusRemoveWatchFunction callback for pa mainloop */ -static void remove_watch(DBusWatch *watch, void *data) { -    pa_core *c = PA_CORE(data); -    pa_io_event *ev; - -    pa_assert(watch); -    pa_assert(c); - -    if ((ev = dbus_watch_get_data(watch))) -        c->mainloop->io_free(ev); -} - -/* DBusWatchToggledFunction callback for pa mainloop */ -static void toggle_watch(DBusWatch *watch, void *data) { -    pa_core *c = PA_CORE(data); -    pa_io_event *ev; - -    pa_assert(watch); -    pa_core_assert_ref(c); - -    pa_assert_se(ev = dbus_watch_get_data(watch)); - -    /* get_watch_flags() checks if the watch is enabled */ -    c->mainloop->io_enable(ev, get_watch_flags(watch)); -} - -/* DBusAddTimeoutFunction callback for pa mainloop */ -static dbus_bool_t add_timeout(DBusTimeout *timeout, void *data) { -    pa_core *c = PA_CORE(data); -    pa_time_event *ev; -    struct timeval tv; - -    pa_assert(timeout); -    pa_assert(c); - -    if (!dbus_timeout_get_enabled(timeout)) -        return FALSE; - -    pa_gettimeofday(&tv); -    pa_timeval_add(&tv, (pa_usec_t) dbus_timeout_get_interval(timeout) * 1000); - -    ev = c->mainloop->time_new(c->mainloop, &tv, handle_time_event, timeout); - -    dbus_timeout_set_data(timeout, ev, NULL); - -    return TRUE; -} - -/* DBusRemoveTimeoutFunction callback for pa mainloop */ -static void remove_timeout(DBusTimeout *timeout, void *data) { -    pa_core *c = PA_CORE(data); -    pa_time_event *ev; - -    pa_assert(timeout); -    pa_assert(c); - -    if ((ev = dbus_timeout_get_data(timeout))) -        c->mainloop->time_free(ev); -} - -/* DBusTimeoutToggledFunction callback for pa mainloop */ -static void toggle_timeout(DBusTimeout *timeout, void *data) { -    pa_core *c = PA_CORE(data); -    pa_time_event *ev; - -    pa_assert(timeout); -    pa_assert(c); - -    pa_assert_se(ev = dbus_timeout_get_data(timeout)); - -    if (dbus_timeout_get_enabled(timeout)) { -        struct timeval tv; - -        pa_gettimeofday(&tv); -        pa_timeval_add(&tv, (pa_usec_t) dbus_timeout_get_interval(timeout) * 1000); - -        c->mainloop->time_restart(ev, &tv); -    } else -        c->mainloop->time_restart(ev, NULL); -} - -static void wakeup_main(void *userdata) { -    pa_dbus_connection *c = userdata; - -    pa_assert(c); - -    /* this will wakeup the mainloop and dispatch events, although -     * it may not be the cleanest way of accomplishing it */ -    c->core->mainloop->defer_enable(c->dispatch_event, 1); -} - -static pa_dbus_connection* pa_dbus_connection_new(pa_core* c, DBusConnection *conn, const char* name) { -    pa_dbus_connection *pconn; - -    pconn = pa_xnew(pa_dbus_connection, 1); -    PA_REFCNT_INIT(pconn); -    pconn->core = c; -    pconn->property_name = name; -    pconn->connection = conn; -    pconn->dispatch_event = c->mainloop->defer_new(c->mainloop, dispatch_cb, conn); - -    pa_shared_set(c, name, pconn); - -    return pconn; -} - -DBusConnection* pa_dbus_connection_get(pa_dbus_connection *c){ -    pa_assert(c); -    pa_assert(PA_REFCNT_VALUE(c) > 0); -    pa_assert(c->connection); - -    return c->connection; -} - -void pa_dbus_connection_unref(pa_dbus_connection *c) { -    pa_assert(c); -    pa_assert(PA_REFCNT_VALUE(c) > 0); - -    if (PA_REFCNT_DEC(c) > 0) -        return; - -    if (dbus_connection_get_is_connected(c->connection)) { -        dbus_connection_close(c->connection); -         /* must process remaining messages, bit of a kludge to handle -         * both unload and shutdown */ -        while (dbus_connection_read_write_dispatch(c->connection, -1)); -    } - -    /* already disconnected, just free */ -    pa_shared_remove(c->core, c->property_name); -    c->core->mainloop->defer_free(c->dispatch_event); -    dbus_connection_unref(c->connection); -    pa_xfree(c); -} - -pa_dbus_connection* pa_dbus_connection_ref(pa_dbus_connection *c) { -    pa_assert(c); -    pa_assert(PA_REFCNT_VALUE(c) > 0); - -    PA_REFCNT_INC(c); - -    return c; -} - -pa_dbus_connection* pa_dbus_bus_get(pa_core *c, DBusBusType type, DBusError *error) { - -    static const char *const prop_name[] = { -        [DBUS_BUS_SESSION] = "dbus-connection-session", -        [DBUS_BUS_SYSTEM] = "dbus-connection-system", -        [DBUS_BUS_STARTER] = "dbus-connection-starter" -    }; -    DBusConnection *conn; -    pa_dbus_connection *pconn; - -    pa_assert(type == DBUS_BUS_SYSTEM || type == DBUS_BUS_SESSION || type == DBUS_BUS_STARTER); - -    if ((pconn = pa_shared_get(c, prop_name[type]))) -        return pa_dbus_connection_ref(pconn); - -    if (!(conn = dbus_bus_get_private(type, error))) -        return NULL; - -    pconn = pa_dbus_connection_new(c, conn, prop_name[type]); - -    dbus_connection_set_exit_on_disconnect(conn, FALSE); -    dbus_connection_set_dispatch_status_function(conn, dispatch_status, pconn, NULL); -    dbus_connection_set_watch_functions(conn, add_watch, remove_watch, toggle_watch, c, NULL); -    dbus_connection_set_timeout_functions(conn, add_timeout, remove_timeout, toggle_timeout, c, NULL); -    dbus_connection_set_wakeup_main_function(conn, wakeup_main, pconn, NULL); - -    return pconn; -} - -int pa_dbus_add_matches(DBusConnection *c, DBusError *error, ...) { -    const char *t; -    va_list ap; -    unsigned k = 0; - -    pa_assert(c); -    pa_assert(error); - -    va_start(ap, error); -    while ((t = va_arg(ap, const char*))) { -        dbus_bus_add_match(c, t, error); - -        if (dbus_error_is_set(error)) -            goto fail; - -        k++; -    } -    va_end(ap); -    return 0; - -fail: - -    va_end(ap); -    va_start(ap, error); -    for (; k > 0; k--) { -        DBusError e; - -        pa_assert_se(t = va_arg(ap, const char*)); - -        dbus_error_init(&e); -        dbus_bus_remove_match(c, t, &e); -        dbus_error_free(&e); -    } -    va_end(ap); - -    return -1; -} - -void pa_dbus_remove_matches(DBusConnection *c, ...) { -    const char *t; -    va_list ap; -    DBusError error; - -    pa_assert(c); - -    dbus_error_init(&error); - -    va_start(ap, c); -    while ((t = va_arg(ap, const char*))) { -        dbus_bus_remove_match(c, t, &error); -        dbus_error_free(&error); -    } -    va_end(ap); -} - -pa_dbus_pending *pa_dbus_pending_new( -        DBusConnection *c, -        DBusMessage *m, -        DBusPendingCall *pending, -        void *context_data, -        void *call_data) { - -    pa_dbus_pending *p; - -    pa_assert(pending); - -    p = pa_xnew(pa_dbus_pending, 1); -    p->connection = c; -    p->message = m; -    p->pending = pending; -    p->context_data = context_data; -    p->call_data = call_data; - -    PA_LLIST_INIT(pa_dbus_pending, p); - -    return p; -} - -void pa_dbus_pending_free(pa_dbus_pending *p) { -    pa_assert(p); - -    if (p->pending) -        dbus_pending_call_cancel(p->pending); /* p->pending is freed by cancel() */ - -    if (p->message) -        dbus_message_unref(p->message); - -    pa_xfree(p); -} - -void pa_dbus_sync_pending_list(pa_dbus_pending **p) { -    pa_assert(p); - -    while (*p && dbus_connection_read_write_dispatch((*p)->connection, -1)) -        ; -} - -void pa_dbus_free_pending_list(pa_dbus_pending **p) { -    pa_dbus_pending *i; - -    pa_assert(p); - -    while ((i = *p)) { -        PA_LLIST_REMOVE(pa_dbus_pending, *p, i); -        pa_dbus_pending_free(i); -    } -} diff --git a/src/modules/dbus-util.h b/src/modules/dbus-util.h deleted file mode 100644 index 554f41a4..00000000 --- a/src/modules/dbus-util.h +++ /dev/null @@ -1,68 +0,0 @@ -#ifndef foodbusutilhfoo -#define foodbusutilhfoo - -/*** -  This file is part of PulseAudio. - -  Copyright 2006 Shams E. King - -  PulseAudio is free software; you can redistribute it and/or modify -  it under the terms of the GNU Lesser General Public License as published -  by the Free Software Foundation; either version 2.1 of the License, -  or (at your option) any later version. - -  PulseAudio is distributed in the hope that it will be useful, but -  WITHOUT ANY WARRANTY; without even the implied warranty of -  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -  General Public License for more details. - -  You should have received a copy of the GNU Lesser General Public License -  along with PulseAudio; if not, write to the Free Software -  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -  USA. -***/ - -#include <dbus/dbus.h> - -#include <pulsecore/core.h> -#include <pulsecore/llist.h> - -typedef struct pa_dbus_connection pa_dbus_connection; - -/* return the DBusConnection of the specified type for the given core, - * like dbus_bus_get(), but integrates the connection with the pa_core */ -pa_dbus_connection* pa_dbus_bus_get(pa_core *c, DBusBusType type, DBusError *error); - -DBusConnection* pa_dbus_connection_get(pa_dbus_connection *conn); - -pa_dbus_connection* pa_dbus_connection_ref(pa_dbus_connection *conn); -void pa_dbus_connection_unref(pa_dbus_connection *conn); - -int pa_dbus_add_matches(DBusConnection *c, DBusError *error, ...) PA_GCC_SENTINEL; -void pa_dbus_remove_matches(DBusConnection *c,  ...) PA_GCC_SENTINEL; - -typedef struct pa_dbus_pending pa_dbus_pending; - -struct userdata; /* We leave the actual definition to the caller */ - -struct pa_dbus_pending { -    DBusConnection *connection; -    DBusMessage *message; -    DBusPendingCall *pending; - -    void *context_data; -    void *call_data; - -    PA_LLIST_FIELDS(pa_dbus_pending); -}; - -pa_dbus_pending *pa_dbus_pending_new(DBusConnection *c, DBusMessage *m, DBusPendingCall *pending, void *context_data, void *call_data); -void pa_dbus_pending_free(pa_dbus_pending *p); - -/* Sync up a list of pa_dbus_pending_call objects */ -void pa_dbus_sync_pending_list(pa_dbus_pending **p); - -/* Free up a list of pa_dbus_pending_call objects */ -void pa_dbus_free_pending_list(pa_dbus_pending **p); - -#endif diff --git a/src/modules/hal-util.c b/src/modules/hal-util.c index 422ae4ec..e2a2d8d7 100644 --- a/src/modules/hal-util.c +++ b/src/modules/hal-util.c @@ -24,10 +24,10 @@  #endif  #include <pulsecore/log.h> +#include <pulsecore/dbus-shared.h>  #include <hal/libhal.h> -#include "dbus-util.h"  #include "hal-util.h"  int pa_hal_get_info(pa_core *core, pa_proplist *p, int card) { diff --git a/src/modules/module-console-kit.c b/src/modules/module-console-kit.c index 3fba7ef6..a666073c 100644 --- a/src/modules/module-console-kit.c +++ b/src/modules/module-console-kit.c @@ -44,8 +44,8 @@  #include <pulsecore/namereg.h>  #include <pulsecore/core-scache.h>  #include <pulsecore/modargs.h> +#include <pulsecore/dbus-shared.h> -#include "dbus-util.h"  #include "module-console-kit-symdef.h"  PA_MODULE_AUTHOR("Lennart Poettering"); diff --git a/src/modules/module-hal-detect.c b/src/modules/module-hal-detect.c index 9b0d71c9..0dd22cbd 100644 --- a/src/modules/module-hal-detect.c +++ b/src/modules/module-hal-detect.c @@ -45,10 +45,10 @@  #include <pulsecore/namereg.h>  #include <pulsecore/core-scache.h>  #include <pulsecore/modargs.h> +#include <pulsecore/dbus-shared.h>  #include <hal/libhal.h> -#include "dbus-util.h"  #include "module-hal-detect-symdef.h"  PA_MODULE_AUTHOR("Shahms King"); diff --git a/src/modules/reserve-wrap.c b/src/modules/reserve-wrap.c index c956673b..1927342b 100644 --- a/src/modules/reserve-wrap.c +++ b/src/modules/reserve-wrap.c @@ -29,8 +29,7 @@  #include <pulsecore/core-error.h>  #include <pulsecore/core-util.h>  #include <pulsecore/shared.h> - -#include <modules/dbus-util.h> +#include <pulsecore/dbus-shared.h>  #include "reserve.h"  #include "reserve-wrap.h"  | 
