<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'>
Hello "DBUS-People",<BR>
&nbsp;<BR>
it is my first post about smth. new for me, so please be patient :)<BR>
&nbsp;<BR>
1- I took an example from the web, and I began to experiment a little. And I found smth. that I do not understand, and I found nowhere help.<BR>
2- The following code is a client application ( the server source code Iīm going to ignore for the moment). The problem is in the "<FONT color=#ff0000>g_main_context_new"</FONT> line.<BR>
&nbsp;<BR>
Problem:<BR>
If I comment this line, this client application receive the signals from the server. I mean, I work with the default context.<BR>
If I leave this line, this client application receive the signals no more. I mean, I define a new context.<BR>
&nbsp;<BR>
Questions:<BR>
Why the proxy stop to receive the signals from the server, when a new context (NOT the dafault one) is created and attached to the main loop?<BR>
&nbsp;<BR>
Thanks a lot in advance, and if this is the wrong place to post this... sorry and please tell me where can I find help about this topic.<BR>
&nbsp;<BR>
Thanks again<BR>
Bart<BR>
&nbsp;<BR>
#include &lt;dbus/dbus-glib.h&gt;<BR>
...<BR>
&nbsp;<BR>
// Timer callback function to call every second the setvalue1 serverīs method. Until localValue &gt; 10.<BR>
gboolean timerCallback(gpointer data)<BR>{<BR>&nbsp;static gint localValue = -80;<BR>&nbsp;GError* error = NULL;<BR>&nbsp;TimerData* timerData = (TimerData*)data;<BR>
&nbsp;org_maemo_Value_setvalue1(timerData-&gt;pProxy, localValue , &amp;error);<BR>
&nbsp;.....<BR>
&nbsp;<BR>
&nbsp;localValue += 10;<BR>
&nbsp;if(10 &lt; localValue)<BR>&nbsp;{<BR>&nbsp;&nbsp;g_print("timerCallback quit:%d.\n", quit);<BR>&nbsp;&nbsp;quit = 1;<BR>&nbsp;&nbsp;return FALSE;<BR>&nbsp;}<BR>
&nbsp;return TRUE;<BR>}<BR>
&nbsp;<BR>
// Signal handler that receive the signals from server with a string parameter.<BR>
static void valueChangedSignalHandler(DBusGProxy* proxy, const char* valueName, gpointer userData)<BR>{<BR>&nbsp;g_print("valueChangedSignalHandler - changed (%s).\n", valueName);<BR>&nbsp;if(quit)<BR>&nbsp;{<BR>&nbsp;&nbsp;g_print("valueChangedSignalHandler quit:%d.\n", quit);<BR>&nbsp;&nbsp;g_main_loop_quit((GMainLoop*)userData);<BR>&nbsp;}<BR>}<BR>
&nbsp;<BR>
int main(int argc , char ** argv)<BR>{<BR>&nbsp;GMainLoop* mainloop = NULL;<BR>&nbsp;GMainContext* context = NULL; <BR>&nbsp;GError* gerror = NULL;<BR>&nbsp;DBusGConnection* pGConnection = NULL;<BR>&nbsp;DBusGProxy* pGProxy = NULL;<BR>&nbsp; GSource* source = NULL;<BR>&nbsp;int id;<BR>
&nbsp;g_type_init();<BR>
&nbsp;<BR>
&nbsp;// Create connection / proxy.<BR>&nbsp;g_print("Creating a GConnection\n");<BR>&nbsp;pGConnection = dbus_g_bus_get(DBUS_BUS_SESSION, &amp;gerror);<BR>
&nbsp;if(gerror != NULL)<BR>&nbsp;{<BR>&nbsp;&nbsp;g_printerr("could not open connection: %s\n", gerror-&gt;message);<BR>&nbsp;&nbsp;return 1;<BR>&nbsp;}<BR>
&nbsp;g_print("Creating a GProxy\n");<BR>&nbsp;pGProxy = dbus_g_proxy_new_for_name(&nbsp;pGConnection,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"org.maemo.Platdev_ex", // name<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"/GlobalValue", // obj path<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"org.maemo.Value"); // interface<BR>&nbsp;if(pGProxy == NULL)<BR>&nbsp;{<BR>&nbsp;&nbsp;g_printerr("Couldn ’t create the proxy object ");<BR>&nbsp;&nbsp;return NULL;<BR>&nbsp;}<BR>
&nbsp;<BR>
&nbsp;//create a new time-out source<BR>&nbsp;source = g_timeout_source_new(1000);<BR>&nbsp;<BR>&nbsp;//create a main loop with context<BR>&nbsp;<FONT color=#ff0000>context = g_main_context_new(); &lt;=== Problematic line :):) Not Commented: Stop receive signals</FONT><BR>
//&nbsp;<FONT color=#ff0000>context = g_main_context_new(); &lt;=== Problematic line :):) Commented : Receive signals</FONT><BR>
<FONT color=#ff0000></FONT>&nbsp;<BR>
&nbsp; //attach source to context<BR>&nbsp; id = g_source_attach(source, context);<BR>&nbsp; <BR>&nbsp;mainloop = g_main_loop_new(context, FALSE);<BR>
&nbsp;if(mainloop == NULL)<BR>&nbsp;{<BR>&nbsp;&nbsp;g_printerr("Failed to create the mainloop.\n");<BR>&nbsp;&nbsp;return 0;<BR>&nbsp;}<BR>&nbsp; <BR>&nbsp;//set the callback for this source<BR>&nbsp;TimerData timerData;<BR>&nbsp;timerData.mainLoop = mainloop;<BR>&nbsp;timerData.pProxy = pGProxy;<BR>
&nbsp;g_source_set_callback(source, timerCallback, (gpointer)&amp;timerData, NULL);<BR>
&nbsp;<BR>
&nbsp;g_print("Registering signal handler signatures.\n");<BR>
&nbsp;dbus_g_proxy_add_signal(pGProxy, SIGNAL_CHANGED_VALUE1, G_TYPE_STRING, G_TYPE_INVALID);<BR>
&nbsp;<BR>
&nbsp;g_print("Registering D-Bus signal handlers. Thd %p\n");<BR>
&nbsp;dbus_g_proxy_connect_signal(pGProxy, SIGNAL_CHANGED_VALUE1,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;G_CALLBACK(valueChangedSignalHandler),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(gpointer)mainloop, NULL);<BR>
&nbsp;<BR>
&nbsp;g_main_loop_run(mainloop);<BR>&nbsp;<BR>
&nbsp;g_source_destroy(source);<BR>&nbsp;<BR>&nbsp;g_source_unref(source);<BR>&nbsp;<BR>&nbsp;g_print("Exiting main loop\n");<BR>&nbsp;g_main_loop_unref(mainloop);<BR>&nbsp;g_print("Bye ...\n");<BR>
&nbsp;return 0;<BR>}<BR><BR>
&nbsp;<BR>                                               </body>
</html>