Hi,

This looks fine to me, but wouldn't the compiler give a notice about:

   if (foo = bar)

(when it thinks that you meant foo == bar instead?)

On Monday 02 September 2013 16:53:14 Shih-Yuan Lee wrote:
> From: "Shih-Yuan Lee (FourDollars)" <sy...@canonical.com>
> 
> First, checking the device path. If it contains 'bluetooth', it is a
> bluetooth devices. Second, checking if there is an input folder. If there
> is mouse folder under the input folder, it is a mouse device. Otherwise, it
> is a keyboard device.
> ---
>  src/linux/up-device-supply.c | 51
> +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 50
> insertions(+), 1 deletion(-)
> 
> diff --git a/src/linux/up-device-supply.c b/src/linux/up-device-supply.c
> index 98536f4..41a49ff 100644
> --- a/src/linux/up-device-supply.c
> +++ b/src/linux/up-device-supply.c
> @@ -861,10 +861,16 @@ up_device_supply_coldplug (UpDevice *device)
>  {
>       UpDeviceSupply *supply = UP_DEVICE_SUPPLY (device);
>       gboolean ret = FALSE;
> +     GUdevDevice *bluetooth;
>       GUdevDevice *native;
> +     const gchar *file;
>       const gchar *native_path;
>       const gchar *scope;
>       gchar *device_type = NULL;
> +     gchar *device_path = NULL;
> +     gchar *input_path = NULL;
> +     GDir *dir = NULL;
> +     GError *error = NULL;
>       UpDeviceKind type = UP_DEVICE_KIND_UNKNOWN;
> 
>       up_device_supply_reset_values (supply);
> @@ -894,7 +900,50 @@ up_device_supply_coldplug (UpDevice *device)
>               if (g_ascii_strcasecmp (device_type, "mains") == 0) {
>                       type = UP_DEVICE_KIND_LINE_POWER;
>               } else if (g_ascii_strcasecmp (device_type, "battery") == 0) {
> -                     type = UP_DEVICE_KIND_BATTERY;
> +
> +                     /* Detect if the battery comes from bluetooth keyboard 
> or mouse. 
*/
> +                     bluetooth = g_udev_device_get_parent_with_subsystem 
> (native,
> "bluetooth", NULL); +                 if (bluetooth != NULL) {
> +                             device_path = g_udev_device_get_sysfs_path 
> (bluetooth);
> +                             if (dir = g_dir_open (device_path, 0, &error)) {

Here

> +                                     while (file = g_dir_read_name (dir)) {

and here

> +                                             /* Check if it is an input 
> device. */
> +                                             if (g_str_has_prefix (file, 
> "input")) {
> +                                                     input_path = 
> g_build_filename (device_path, 
file, NULL);
> +                                                     break;
> +                                             }
> +                                     }
> +                                     g_dir_close (dir);
> +                             } else {
> +                                     g_warning ("Can not open folder %s: 
> %s", device_path, 
error->message);
> +                                     g_error_free (error);
> +                             }
> +                             g_object_unref (bluetooth);
> +                     }
> +
> +                     if (input_path != NULL) {
> +                             if (dir = g_dir_open (input_path, 0, &error)) {

and here

> +                                     while (file = g_dir_read_name (dir)) {

and here.

> +                                             /* Check if it is a mouse 
> device. */
> +                                             if (g_str_has_prefix (file, 
> "mouse")) {
> +                                                     type = 
> UP_DEVICE_KIND_MOUSE;
> +                                                     break;
> +                                             }
> +                                     }
> +                                     g_dir_close (dir);
> +                             } else {
> +                                     g_warning ("Can not open folder %s: 
> %s", input_path, 
error->message);
> +                                     g_error_free (error);
> +                             }
> +                             g_free (input_path);
> +                             if (type == UP_DEVICE_KIND_UNKNOWN) {
> +                                     type = UP_DEVICE_KIND_KEYBOARD;
> +                             }
> +                     }
> +
> +                     if (type == UP_DEVICE_KIND_UNKNOWN) {
> +                             type = UP_DEVICE_KIND_BATTERY;
> +                     }
>               } else if (g_ascii_strcasecmp (device_type, "USB") == 0) {
> 
>                       /* use a heuristic to find the device type */

Regards,
Peter
_______________________________________________
devkit-devel mailing list
devkit-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/devkit-devel

Reply via email to