On Fri, 2014-05-30 at 14:19 +0200, Greg Knoll wrote: > This is my first time sending a message to this list, so I apologize > if I do not follow the protocols correctly. > > > I have successfully called other methods by first getting a DBUS > session connection and using the server_lookup1 object. However, I am > having trouble receiving signals from the pulse server using the ! > ListenForSignal method in C/C++. If I want, for instance, to listen > for new modules. The documentation says that the ListenForSignal > method takes a string and an array of object paths as arguments, > sa[o], but that the array can be empty to receive messages from all > objects. > > > So far I have this: > > > msg = dbus_message_new_method_call( > "org.PulseAudio1", //Destination > "/org/pulseaudio/core1", //Object path to call on > "org.PulseAudio.Core1", //Interface to call on > "ListenForSignal"); //Method > > > //Add arguments: s, [] > dbus_message_iter_init_append(msg, &msgIter); > > //string > dbus_message_iter_append_basic(&msgIter, DBUS_TYPE_STRING,&signalName); > > //empty array to listen to all > dbus_message_iter_open_container(&msgIter,DBUS_TYPE_ARRAY,"o",&arrayIter); > dbus_message_iter_close_container(&msgIter, &arrayIter); > > I don't get any errors from DBUS about incorrect signatures or objects not being found. However, where/how do I listen for the signal? I also tried setting a dbus match rule: > dbus_bus_add_match(system_bus, "type='signal',interface='org.PulseAudio.Core1'", &err); > > > It listens on the system bus, but I've also tried listening on the pulse server session bus. I still don't receive anything. After reading the server address from the session bus, do you connect to that address as instructed on [1]? I see the instructions aren't very clear, but look at the Python example, you need to do that same thing in your C code. It sounds like you're currently trying to use the session bus for communicating with the server, but you are not supposed to do that except for getting the server address in the beginning. The rest of the communication is done via a peer-to-peer link. [1] http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/Developer/Clients/DBus/ConnectingToServer/ -- Tanu