{
public:
- Message(DBusMessage* m);
+ Message(DBusMessage* m, bool ref);
Message(const Message& m);
~Message();
MessageMethodCall(const char* service, const char* object, const char* interface,
const char* method)
- : Message(dbus_message_new_method_call(service, object, interface, method))
+ : Message(dbus_message_new_method_call(service, object, interface, method), false)
{
}
public:
MessageMethodReturn(Message& m)
- : Message(dbus_message_new_method_return(m.get_message()))
+ : Message(dbus_message_new_method_return(m.get_message()), false)
{
if (m.get_type() != DBUS_MESSAGE_TYPE_METHOD_CALL)
throw FatalException();
public:
MessageError(Message& m, const char* error_msg, const char* error_code)
- : Message(dbus_message_new_error(m.get_message(), error_msg, error_code))
+ : Message(dbus_message_new_error(m.get_message(), error_msg, error_code), false)
{
if (m.get_type() != DBUS_MESSAGE_TYPE_METHOD_CALL)
throw FatalException();
public:
MessageSignal(const char* path, const char* interface, const char* name)
- : Message(dbus_message_new_signal(path, interface, name))
+ : Message(dbus_message_new_signal(path, interface, name), false)
{
}
*/
+#include <unistd.h>
#include <poll.h>
#include <time.h>
{
if (it2->fd == it->fd)
{
- if ((it2->revents & POLLIN) && (it->flags & DBUS_WATCH_READABLE))
- dbus_watch_handle(it->dbus_watch, DBUS_WATCH_READABLE);
+ unsigned int flags = 0;
- if ((it2->revents & POLLOUT) && (it->flags & DBUS_WATCH_WRITABLE))
- dbus_watch_handle(it->dbus_watch, DBUS_WATCH_WRITABLE);
+ if (it2->revents & POLLIN)
+ flags |= DBUS_WATCH_READABLE;
+
+ if (it2->revents & POLLOUT)
+ flags |= DBUS_WATCH_WRITABLE;
+
+ if (flags != 0)
+ dbus_watch_handle(it->dbus_watch, flags);
}
}
}
{
DBus::Server* s = static_cast<DBus::Server*>(data);
- DBus::Message msg(message);
+ DBus::Message msg(message, true);
if (msg.get_type() == DBUS_MESSAGE_TYPE_METHOD_CALL)
{
{
DBus::Server* s = static_cast<DBus::Server*>(data);
- DBus::Message msg(message);
+ DBus::Message msg(message, true);
if (msg.get_type() == DBUS_MESSAGE_TYPE_SIGNAL)
{