Another round of feedback from acrisci

master
Markus Ongyerth 6 years ago
parent 43b20bfea2
commit 74ca2f8fcf

@ -0,0 +1,9 @@
#ifndef UTIL_ARRAY_H
#define UTIL_ARRAY_H
#include <stdint.h>
#include <stdlib.h>
size_t push_zeroes_to_end(uint32_t arr[], size_t n);
#endif

@ -3,6 +3,7 @@
#endif #endif
#include "tablet-unstable-v2-protocol.h" #include "tablet-unstable-v2-protocol.h"
#include "util/array.h"
#include <assert.h> #include <assert.h>
#include <stdlib.h> #include <stdlib.h>
#include <types/wlr_tablet_v2.h> #include <types/wlr_tablet_v2.h>
@ -231,25 +232,8 @@ struct wlr_tablet_tool_client_v2 *tablet_tool_client_from_resource(struct wl_res
/* Actual protocol foo */ /* Actual protocol foo */
// https://www.geeksforgeeks.org/move-zeroes-end-array/
static size_t push_zeroes_to_end(uint32_t arr[], size_t n) {
size_t count = 0;
for (size_t i = 0; i < n; i++) {
if (arr[i] != 0) {
arr[count++] = arr[i];
}
}
size_t ret = count;
while (count < n) {
arr[count++] = 0;
}
return ret;
}
// Button 0 is KEY_RESERVED in input-event-codes on linux (and freebsd)
static ssize_t tablet_tool_button_update(struct wlr_tablet_v2_tablet_tool *tool, static ssize_t tablet_tool_button_update(struct wlr_tablet_v2_tablet_tool *tool,
uint32_t button, enum zwp_tablet_pad_v2_button_state state) { uint32_t button, enum zwp_tablet_pad_v2_button_state state) {
bool found = false; bool found = false;
@ -261,11 +245,16 @@ static ssize_t tablet_tool_button_update(struct wlr_tablet_v2_tablet_tool *tool,
} }
} }
if (state == ZWP_TABLET_PAD_V2_BUTTON_STATE_PRESSED && !found && if (state == ZWP_TABLET_PAD_V2_BUTTON_STATE_PRESSED && !found) {
tool->num_buttons < WLR_TABLET_V2_TOOL_BUTTONS_CAP) { if (tool->num_buttons < WLR_TABLET_V2_TOOL_BUTTONS_CAP) {
i = tool->num_buttons++; i = tool->num_buttons++;
tool->pressed_buttons[i] = button; tool->pressed_buttons[i] = button;
tool->pressed_serials[i] = -1; tool->pressed_serials[i] = -1;
} else {
i = -1;
wlr_log(WLR_ERROR, "You pressed more than %d tablet tool buttons. This is currently not supporte by wlroots. Please report this with a description of your tablet, since this is either a bug, or fancy hardware",
WLR_TABLET_V2_TOOL_BUTTONS_CAP);
}
} else { } else {
i = -1; i = -1;
} }

@ -1,3 +1,4 @@
#include "util/array.h"
#include <assert.h> #include <assert.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
@ -58,25 +59,6 @@ static bool keyboard_modifier_update(struct wlr_keyboard *keyboard) {
return true; return true;
} }
// https://www.geeksforgeeks.org/move-zeroes-end-array/
static size_t push_zeroes_to_end(uint32_t arr[], size_t n) {
size_t count = 0;
for (size_t i = 0; i < n; i++) {
if (arr[i] != 0) {
arr[count++] = arr[i];
}
}
size_t ret = count;
while (count < n) {
arr[count++] = 0;
}
return ret;
}
static void keyboard_key_update(struct wlr_keyboard *keyboard, static void keyboard_key_update(struct wlr_keyboard *keyboard,
struct wlr_event_keyboard_key *event) { struct wlr_event_keyboard_key *event) {
bool found = false; bool found = false;

@ -0,0 +1,21 @@
#include <stdlib.h>
#include <stdint.h>
// https://www.geeksforgeeks.org/move-zeroes-end-array/
size_t push_zeroes_to_end(uint32_t arr[], size_t n) {
size_t count = 0;
for (size_t i = 0; i < n; i++) {
if (arr[i] != 0) {
arr[count++] = arr[i];
}
}
size_t ret = count;
while (count < n) {
arr[count++] = 0;
}
return ret;
}

@ -1,6 +1,7 @@
lib_wlr_util = static_library( lib_wlr_util = static_library(
'wlr_util', 'wlr_util',
files( files(
'array.c',
'log.c', 'log.c',
'os-compatibility.c', 'os-compatibility.c',
'region.c', 'region.c',

Loading…
Cancel
Save