diff options
author | Tony Crisci <tony@dubstepdish.com> | 2017-12-16 14:00:23 -0500 |
---|---|---|
committer | Tony Crisci <tony@dubstepdish.com> | 2017-12-16 14:03:58 -0500 |
commit | 9e4fc7253e5e82f443ae8e1a27ced12fb13f8a67 (patch) | |
tree | 840b75e5ebb75a0dac97d85da6bb4d350d9a612f /sway/input/input-manager.c | |
parent | b0ed1ad28d8c87a9ca0e5eacb1e7b840ed924117 (diff) |
get device id correctly
Diffstat (limited to 'sway/input/input-manager.c')
-rw-r--r-- | sway/input/input-manager.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/sway/input/input-manager.c b/sway/input/input-manager.c index 34766ee6..6a49b13b 100644 --- a/sway/input/input-manager.c +++ b/sway/input/input-manager.c @@ -5,6 +5,7 @@ #include <stdio.h> #include <string.h> #include <libinput.h> +#include <math.h> #include "sway/config.h" #include "sway/input/input-manager.h" #include "sway/input/seat.h" @@ -33,6 +34,13 @@ static struct sway_seat *input_manager_get_seat( return sway_seat_create(input, seat_name); } +static inline int strlen_num(int num) { + if (num == 0) { + return 2; + } + return (int)((ceil(log10(abs(num)))+2)); +} + static char *get_device_identifier(struct wlr_input_device *device) { int vendor = device->vendor; int product = device->product; @@ -46,9 +54,12 @@ static char *get_device_identifier(struct wlr_input_device *device) { } } - sway_log(L_DEBUG, "rewritten name %s", name); + int len = + (strlen(name) + + strlen_num(device->vendor) + + strlen_num(device->product) + + 3) * sizeof(char); - int len = strlen(name) + sizeof(char) * 6; char *identifier = malloc(len); if (!identifier) { sway_log(L_ERROR, "Unable to allocate unique input device name"); |