I have a small program which I use to detect device state changes,
that uses libnm-glib. A couple of days ago i updated dbus to 1.2.6 and
dbus-glib to 0.78 (this is a slackware base), and now the
"device-changed" signal among others no longer works, however, other
applications that use NM seems to work fine such as nm-applet. Here is
the code I am using, with irrelevant sections cut out:

#include <stdio.h>
#include <gtk/gtk.h>
#include <glib.h>
#include <NetworkManager.h>
#include <nm-client.h>
#include <nm-device.h>

static void device_state_changed_cb(NMDevice *device, NMDeviceState
new_state, NMDeviceState old_state, NMDeviceStateReason reason,
gpointer user_data){
        printf("device state changed\n");
        //handle_device(device, new_state);
}

static void device_update_cb(NMClient *client, NMDevice *device,
gpointer user_data){
        g_signal_connect(G_OBJECT(device), "state-changed",
G_CALLBACK(device_state_changed_cb), NULL);
}

static void init_devices(NMDevice* device, gpointer user_data){
        g_signal_connect(G_OBJECT(device), "state-changed",
G_CALLBACK(device_state_changed_cb), NULL);
        printf("device added %s\n", nm_device_get_iface(device));
        //handle_device(device, nm_device_get_state(device));
}

int main(){
        NMClient* nm_client;
        const GPtrArray* devices = NULL;
        
        gtk_init (NULL, NULL);
        
        nm_client = nm_client_new();
        
        g_signal_connect(G_OBJECT(nm_client), "device-added",
G_CALLBACK(device_update_cb), NULL);
        
        devices = nm_client_get_devices(nm_client);
        if(devices) g_ptr_array_foreach((GPtrArray*)devices,
(GFunc)init_devices, NULL);
        
        gtk_main();
        return 0;
}

Before, I could unplug my ethernet and replug it, and it would spam
"device state changed" all over the screen. Now, nothing happens on
the "state-changed" signal despite getting a valid connection handler.

Would anyone like to shed light on this strange issue?
_______________________________________________
NetworkManager-list mailing list
NetworkManager-list@gnome.org
http://mail.gnome.org/mailman/listinfo/networkmanager-list

Reply via email to