Receiving dbus signals using low-level C API
hp at redhat.com
Wed Jan 24 13:27:22 PST 2007
Krishna R wrote:
> 4. In my filter function, i read the message using
> dbus_message_get_args() and return DBUS_HANDLER_RESULT_HANDLED.
It usually makes more sense to return NOT_YET_HANDLED from a signal
handler, since other handlers may also be interested. Though if your app
isn't using any libraries that may also be interested, it doesn't matter.
> 1. Is this a correct way to recv signals? Do i have to do
> dbus_message_unref(message) in the filter function after handling it
> before i return?
I don't believe so, I could misremember, but it would be documented if
you did have to probably.
> 2. I also see that as soon as i call the match rule api, the filter
> function gets called. I further found that the message has a argument
> which a string, which is 2. Is this expected? I had assumed that the
> filter function will only be called when i send a signal and not before
> that. Why is this?
The filter function will be called for any kind of message.
> Seperate point: Also in the tutorial the send signal function closes the
> dbus connection and the dbus version 1.0.2 complains about this. Can
> someone pls fix the tutorial for this. I assume from the error message
> we dont close the connection anymore?
Yes, if it's a shared connection you should unref but not close. (The
documentation goes into more detail.)
More information about the dbus