mirror of https://github.com/encounter/SDL.git
Fix touch-related compile errors on Linux.
This commit is contained in:
parent
6f8910e398
commit
109cbd6e8b
|
@ -401,18 +401,21 @@ SDL_EVDEV_Poll(void)
|
||||||
norm_pressure = 1.0f;
|
norm_pressure = 1.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* FIXME: the touch's window shouldn't be null, but
|
||||||
|
* the coordinate space of touch positions needs to
|
||||||
|
* be window-relative in that case. */
|
||||||
switch(item->touchscreen_data->slots[j].delta) {
|
switch(item->touchscreen_data->slots[j].delta) {
|
||||||
case EVDEV_TOUCH_SLOTDELTA_DOWN:
|
case EVDEV_TOUCH_SLOTDELTA_DOWN:
|
||||||
SDL_SendTouch(item->fd, item->touchscreen_data->slots[j].tracking_id, /* FIXME: window */, SDL_TRUE, norm_x, norm_y, norm_pressure);
|
SDL_SendTouch(item->fd, item->touchscreen_data->slots[j].tracking_id, NULL, SDL_TRUE, norm_x, norm_y, norm_pressure);
|
||||||
item->touchscreen_data->slots[j].delta = EVDEV_TOUCH_SLOTDELTA_NONE;
|
item->touchscreen_data->slots[j].delta = EVDEV_TOUCH_SLOTDELTA_NONE;
|
||||||
break;
|
break;
|
||||||
case EVDEV_TOUCH_SLOTDELTA_UP:
|
case EVDEV_TOUCH_SLOTDELTA_UP:
|
||||||
SDL_SendTouch(item->fd, item->touchscreen_data->slots[j].tracking_id, /* FIXME: window */, SDL_FALSE, norm_x, norm_y, norm_pressure);
|
SDL_SendTouch(item->fd, item->touchscreen_data->slots[j].tracking_id, NULL, SDL_FALSE, norm_x, norm_y, norm_pressure);
|
||||||
item->touchscreen_data->slots[j].tracking_id = -1;
|
item->touchscreen_data->slots[j].tracking_id = -1;
|
||||||
item->touchscreen_data->slots[j].delta = EVDEV_TOUCH_SLOTDELTA_NONE;
|
item->touchscreen_data->slots[j].delta = EVDEV_TOUCH_SLOTDELTA_NONE;
|
||||||
break;
|
break;
|
||||||
case EVDEV_TOUCH_SLOTDELTA_MOVE:
|
case EVDEV_TOUCH_SLOTDELTA_MOVE:
|
||||||
SDL_SendTouchMotion(item->fd, item->touchscreen_data->slots[j].tracking_id, /* FIXME: window */, norm_x, norm_y, norm_pressure);
|
SDL_SendTouchMotion(item->fd, item->touchscreen_data->slots[j].tracking_id, NULL, norm_x, norm_y, norm_pressure);
|
||||||
item->touchscreen_data->slots[j].delta = EVDEV_TOUCH_SLOTDELTA_NONE;
|
item->touchscreen_data->slots[j].delta = EVDEV_TOUCH_SLOTDELTA_NONE;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -26,6 +26,8 @@
|
||||||
#ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH
|
#ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH
|
||||||
|
|
||||||
#include "SDL_log.h"
|
#include "SDL_log.h"
|
||||||
|
#include "SDL_mouse.h"
|
||||||
|
#include "SDL_keyboard.h"
|
||||||
#include "SDL_waylandtouch.h"
|
#include "SDL_waylandtouch.h"
|
||||||
#include "../../events/SDL_touch_c.h"
|
#include "../../events/SDL_touch_c.h"
|
||||||
|
|
||||||
|
@ -88,20 +90,29 @@ touch_handle_touch(void *data,
|
||||||
uint32_t capabilities = flags >> 16;
|
uint32_t capabilities = flags >> 16;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
SDL_Window* window = NULL;
|
||||||
|
|
||||||
SDL_TouchID deviceId = 1;
|
SDL_TouchID deviceId = 1;
|
||||||
if (SDL_AddTouch(deviceId, SDL_TOUCH_DEVICE_DIRECT, "qt_touch_extension") < 0) {
|
if (SDL_AddTouch(deviceId, SDL_TOUCH_DEVICE_DIRECT, "qt_touch_extension") < 0) {
|
||||||
SDL_Log("error: can't add touch %s, %d", __FILE__, __LINE__);
|
SDL_Log("error: can't add touch %s, %d", __FILE__, __LINE__);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* FIXME: This should be the window the given wayland surface is associated
|
||||||
|
* with, but how do we get the wayland surface? */
|
||||||
|
window = SDL_GetMouseFocus();
|
||||||
|
if (window == NULL) {
|
||||||
|
window = SDL_GetKeyboardFocus();
|
||||||
|
}
|
||||||
|
|
||||||
switch (touchState) {
|
switch (touchState) {
|
||||||
case QtWaylandTouchPointPressed:
|
case QtWaylandTouchPointPressed:
|
||||||
case QtWaylandTouchPointReleased:
|
case QtWaylandTouchPointReleased:
|
||||||
SDL_SendTouch(deviceId, (SDL_FingerID)id, /* FIXME: window */,
|
SDL_SendTouch(deviceId, (SDL_FingerID)id, window,
|
||||||
(touchState == QtWaylandTouchPointPressed) ? SDL_TRUE : SDL_FALSE,
|
(touchState == QtWaylandTouchPointPressed) ? SDL_TRUE : SDL_FALSE,
|
||||||
xf, yf, pressuref);
|
xf, yf, pressuref);
|
||||||
break;
|
break;
|
||||||
case QtWaylandTouchPointMoved:
|
case QtWaylandTouchPointMoved:
|
||||||
SDL_SendTouchMotion(deviceId, (SDL_FingerID)id, /* FIXME: window */, xf, yf, pressuref);
|
SDL_SendTouchMotion(deviceId, (SDL_FingerID)id, window, xf, yf, pressuref);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
/* Should not happen */
|
/* Should not happen */
|
||||||
|
|
Loading…
Reference in New Issue