DBusGProxy* nvclock_applet_dbus_init() { pthread_t *dthread; DBusGProxy* remote_object; DBusGConnection *bus; GError *error = NULL; GMainLoop *mainloop; gint32 value=0; gdouble temp=0; gint32 count=0; gchar *tmp; dbus_g_thread_init(); g_type_init (); bus = dbus_g_bus_get (DBUS_BUS_SESSION, &error); if (!bus) lose_gerror ("Couldn't connect to session bus", error); remote_object = dbus_g_proxy_new_for_name (bus, "org.nvclock", "/org/nvclock/object", "org.nvclock"); if (!remote_object) lose_gerror ("Failed to get name owner", error); return remote_object; } static void signal_handler(DBusGProxy *proxy, gint changes) { GError *error = NULL; fprintf(stderr,"hello dbus ;)\n"); int card=GET_CARD_NUMBER(changes); int temp; char *text; if((changes & CAP_GPU_TEMP) && (card==0)) { if(!dbus_g_proxy_call (remote_object, "getGpuTemperature", &error, G_TYPE_UINT, card, G_TYPE_INVALID,G_TYPE_UINT, &temp, G_TYPE_INVALID)) lose_gerror ("Failed to complete GetTuple", error); } fprintf(stderr,"temp:%d\n"temp); } static gboolean nvclock_applet_fill (PanelApplet *applet, const gchar *iid, GtkWidget *widget,gpointer data) { GtkTooltips *tooltips; remote_object=nvclock_applet_dbus_init(); nv_applet_gconf_init(applet); nvclock_applet_init_menu(applet); appletw=applet; //store applet pointer dbus_g_proxy_add_signal (remote_object, "UpdateNotificationEvent", G_TYPE_INT, G_TYPE_INVALID); dbus_g_proxy_connect_signal (remote_object, "UpdateNotificationEvent", G_CALLBACK (signal_handler), NULL, NULL); if(strcmp(iid, "OAFIID:NVClockApplet") != 0) return FALSE; draw_applet(FALSE); tooltips = gtk_tooltips_new (); gtk_tooltips_set_tip (tooltips, GTK_WIDGET(applet), "nvclock monitoring applet", NULL); gtk_tooltips_enable (tooltips); gtk_widget_show_all (GTK_WIDGET (applet)); return TRUE; }