aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backend/libinput/touch.c8
-rw-r--r--include/wlr/interfaces/wlr_touch.h6
-rw-r--r--include/wlr/types/wlr_touch.h2
-rw-r--r--types/wlr_touch.c14
4 files changed, 16 insertions, 14 deletions
diff --git a/backend/libinput/touch.c b/backend/libinput/touch.c
index 5d990d3c..9e08d028 100644
--- a/backend/libinput/touch.c
+++ b/backend/libinput/touch.c
@@ -10,7 +10,13 @@
struct wlr_touch *wlr_libinput_touch_create(
struct libinput_device *libinput_dev) {
assert(libinput_dev);
- return wlr_touch_create(NULL, NULL);
+ struct wlr_touch *wlr_touch = calloc(1, sizeof(struct wlr_touch));
+ if (!wlr_touch) {
+ wlr_log(L_ERROR, "Unable to allocate wlr_touch");
+ return NULL;
+ }
+ wlr_touch_init(wlr_touch, NULL);
+ return wlr_touch;
}
void handle_touch_down(struct libinput_event *event,
diff --git a/include/wlr/interfaces/wlr_touch.h b/include/wlr/interfaces/wlr_touch.h
index d83ad558..b5fcef18 100644
--- a/include/wlr/interfaces/wlr_touch.h
+++ b/include/wlr/interfaces/wlr_touch.h
@@ -3,11 +3,11 @@
#include <wlr/types/wlr_touch.h>
struct wlr_touch_impl {
- void (*destroy)(struct wlr_touch_state *state);
+ void (*destroy)(struct wlr_touch *touch);
};
-struct wlr_touch *wlr_touch_create(struct wlr_touch_impl *impl,
- struct wlr_touch_state *state);
+void wlr_touch_init(struct wlr_touch *touch,
+ struct wlr_touch_impl *impl);
void wlr_touch_destroy(struct wlr_touch *touch);
#endif
diff --git a/include/wlr/types/wlr_touch.h b/include/wlr/types/wlr_touch.h
index 740d70f6..93069fcb 100644
--- a/include/wlr/types/wlr_touch.h
+++ b/include/wlr/types/wlr_touch.h
@@ -3,11 +3,9 @@
#include <wayland-server.h>
#include <stdint.h>
-struct wlr_touch_state;
struct wlr_touch_impl;
struct wlr_touch {
- struct wlr_touch_state *state;
struct wlr_touch_impl *impl;
struct {
diff --git a/types/wlr_touch.c b/types/wlr_touch.c
index e698decd..46ae7ce9 100644
--- a/types/wlr_touch.c
+++ b/types/wlr_touch.c
@@ -4,22 +4,20 @@
#include <wlr/types/wlr_touch.h>
#include <wlr/interfaces/wlr_touch.h>
-struct wlr_touch *wlr_touch_create(struct wlr_touch_impl *impl,
- struct wlr_touch_state *state) {
- struct wlr_touch *touch = calloc(1, sizeof(struct wlr_touch));
+void wlr_touch_init(struct wlr_touch *touch,
+ struct wlr_touch_impl *impl) {
touch->impl = impl;
- touch->state = state;
wl_signal_init(&touch->events.down);
wl_signal_init(&touch->events.up);
wl_signal_init(&touch->events.motion);
wl_signal_init(&touch->events.cancel);
- return touch;
}
void wlr_touch_destroy(struct wlr_touch *touch) {
if (!touch) return;
- if (touch->impl) {
- touch->impl->destroy(touch->state);
+ if (touch->impl && touch->impl->destroy) {
+ touch->impl->destroy(touch);
+ } else {
+ free(touch);
}
- free(touch);
}