All pastes #157342 Raw Edit

dbus prolem

public text v1 · immutable
·published 2006-09-01 14:47 UTC
rendered paste body
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;

}