*
* D-Bus helper library
*
- * Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org>
+ * Copyright (C) 2004-2011 Marcel Holtmann <marcel@holtmann.org>
*
*
* This program is free software; you can redistribute it and/or modify
#include <glib.h>
#include <dbus/dbus.h>
-#ifdef NEED_DBUS_WATCH_GET_UNIX_FD
-#define dbus_watch_get_unix_fd dbus_watch_get_fd
-#endif
-
#include "gdbus.h"
#define DISPATCH_TIMEOUT 0
{
struct watch_info *info = data;
unsigned int flags = 0;
+ DBusDispatchStatus status;
dbus_connection_ref(info->conn);
dbus_watch_handle(info->watch, flags);
+ status = dbus_connection_get_dispatch_status(info->conn);
+ queue_dispatch(info->conn, status);
+
dbus_connection_unref(info->conn);
return TRUE;
static void remove_timeout(DBusTimeout *timeout, void *data)
{
- if (dbus_timeout_get_enabled(timeout))
- return;
-
/* will trigger timeout_handler_free() */
dbus_timeout_set_data(timeout, NULL, NULL);
}
DBusError *error)
{
DBusConnection *conn;
- gboolean result;
conn = dbus_bus_get(type, error);
if (conn == NULL)
return NULL;
- result = setup_bus(conn, name, error);
-
- if (result == FALSE) {
+ if (setup_bus(conn, name, error) == FALSE) {
dbus_connection_unref(conn);
return NULL;
}
DBusError *error)
{
DBusConnection *conn;
- gboolean result;
conn = dbus_bus_get_private(type, error);
if (conn == NULL)
return NULL;
- result = setup_bus(conn, name, error);
-
- if (result == FALSE) {
+ if (setup_bus(conn, name, error) == FALSE) {
dbus_connection_unref(conn);
return NULL;
}
return FALSE;
}
- if (result != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER)
+ if (result != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) {
+ if (error != NULL)
+ dbus_set_error(error, name, "Name already in use");
+
return FALSE;
+ }
return TRUE;
}