On Thu, 2014-09-04 at 22:04 -0400, Mathieu Trudel-Lapierre wrote:
> Signed-off-by: Mathieu Trudel-Lapierre <[email protected]>
> ---
>  introspection/nm-device-wifi.xml  |  6 ++++++
>  src/devices/wifi/nm-device-wifi.c | 12 ++++++++++++
>  src/devices/wifi/nm-device-wifi.h |  1 +
>  3 files changed, 19 insertions(+)
> 
> diff --git a/introspection/nm-device-wifi.xml 
> b/introspection/nm-device-wifi.xml
> index 65c7b71..c0ed607 100644
> --- a/introspection/nm-device-wifi.xml
> +++ b/introspection/nm-device-wifi.xml
> @@ -118,6 +118,12 @@
>          </tp:docstring>
>      </signal>
>  
> +    <signal name="ScanDone">
> +        <tp:docstring>
> +            Emitted when the device has finished scanning for new APs.
> +        </tp:docstring>
> +    </signal>
> +
>      <tp:flags name="NM_802_11_DEVICE_CAP" type="u">
>        <tp:docstring>
>          Flags describing the capabilities of a wireless device.
> diff --git a/src/devices/wifi/nm-device-wifi.c 
> b/src/devices/wifi/nm-device-wifi.c
> index 41a75da..e1d9343 100644
> --- a/src/devices/wifi/nm-device-wifi.c
> +++ b/src/devices/wifi/nm-device-wifi.c
> @@ -107,6 +107,7 @@ enum {
>       ACCESS_POINT_ADDED,
>       ACCESS_POINT_REMOVED,
>       SCANNING_ALLOWED,
> +     SCAN_DONE,
>  
>       LAST_SIGNAL
>  };
> @@ -1636,6 +1637,9 @@ supplicant_iface_scan_done_cb (NMSupplicantInterface 
> *iface,
>  
>       _LOGD (LOGD_WIFI_SCAN, "scan %s", success ? "successful" : "failed");
>  
> +     if (priv->pending_scan_id)
> +             g_signal_emit (self, signals[SCAN_DONE], 0, NULL);
> +
>       schedule_scan (self, success);

I think we'll have the same problem here as we've talked about on IRC,
where nm-supplicant-interface.c::scan_request_cb() emits SCAN_DONE a bit
too early, after the D-Bus call has returned.  So not fixing that issue
would cause the NMDeviceWifi D-Bus signal to be emitted too early too,
most of the time.

Other than that, the patch works for me.

Dan

 
>       /* Ensure that old APs get removed, which otherwise only
> @@ -3449,6 +3453,14 @@ nm_device_wifi_class_init (NMDeviceWifiClass *klass)
>                             scanning_allowed_accumulator, NULL, NULL,
>                             G_TYPE_BOOLEAN, 0);
>  
> +     signals[SCAN_DONE] =
> +             g_signal_new ("scan-done",
> +                           G_OBJECT_CLASS_TYPE (object_class),
> +                           G_SIGNAL_RUN_FIRST,
> +                           G_STRUCT_OFFSET (NMDeviceWifiClass, scan_done),
> +                           NULL, NULL, NULL,
> +                           G_TYPE_NONE, 0);
> +
>       nm_dbus_manager_register_exported_type (nm_dbus_manager_get (),
>                                               G_TYPE_FROM_CLASS (klass),
>                                               
> &dbus_glib_nm_device_wifi_object_info);
> diff --git a/src/devices/wifi/nm-device-wifi.h 
> b/src/devices/wifi/nm-device-wifi.h
> index 538aef0..d64a582 100644
> --- a/src/devices/wifi/nm-device-wifi.h
> +++ b/src/devices/wifi/nm-device-wifi.h
> @@ -80,6 +80,7 @@ struct _NMDeviceWifiClass
>       void (*access_point_added)   (NMDeviceWifi *device, NMAccessPoint *ap);
>       void (*access_point_removed) (NMDeviceWifi *device, NMAccessPoint *ap);
>       gboolean (*scanning_allowed) (NMDeviceWifi *device);
> +     void (*scan_done) (NMDeviceWifi *device);
>  };
>  
> 


_______________________________________________
networkmanager-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/networkmanager-list

Reply via email to