BuildRequires: pkgconfig(wtz-foreign-client)
BuildRequires: pkgconfig(wtz-screen-client)
BuildRequires: pkgconfig(wtz-shell-client)
+BuildRequires: pkgconfig(relative-pointer-unstable-v1-client)
BuildRequires: wayland-protocols
Requires: libwayland-extension-client
Requires: libwayland-egl-tizen
wtz_screen_add_listener(ewd->wl.wtz_scr, &_wtz_screen_listener, ewd);
}
//
+// TIZEN_ONLY(20230801) : support zwp relative pointer protocol
+ else if (!strcmp(interface, "zwp_relative_pointer_manager_v1"))
+ {
+ ewd->wl.relative_pointer_manager =
+ wl_registry_bind(registry, id,
+ &zwp_relative_pointer_manager_v1_interface, version);
+ }
+//
//
event:
if (ewd->wl.efl_aux_hints) efl_aux_hints_destroy(ewd->wl.efl_aux_hints);
if (ewd->wl.efl_hints) efl_hints_destroy(ewd->wl.efl_hints);
+
// TIZEN_ONLY
if (ewd->wl.tz_policy) tizen_policy_destroy(ewd->wl.tz_policy);
if (ewd->wl.tz_policy_ext) tizen_policy_ext_destroy(ewd->wl.tz_policy_ext);
if (ewd->wl.tz_video) tizen_video_destroy(ewd->wl.tz_video);
if (ewd->wl.tz_renderer) tizen_renderer_destroy(ewd->wl.tz_renderer);
if (ewd->wl.wtz_scr) wtz_screen_destroy(ewd->wl.wtz_scr);
+ if (ewd->wl.relative_pointer_manager)
+ zwp_relative_pointer_manager_v1_destroy(ewd->wl.relative_pointer_manager);
//
if (ewd->wl.registry) wl_registry_destroy(ewd->wl.registry);
NULL, /* axis_discrete */
};
+// TIZEN_ONLY(20230801) : support zwp relative pointer protocol
+static void
+_relative_pointer_cb_relative_motion(void *data, struct zwp_relative_pointer_v1* relative_pointer,
+ uint32_t ts_high, uint32_t ts_low, wl_fixed_t dx, wl_fixed_t dy, wl_fixed_t dx_unaccel, wl_fixed_t dy_unaccel)
+{
+ Ecore_Wl2_Input *input;
+ (void) relative_pointer;
+
+ input = data;
+ if (!input) return;
+
+ // For Debug
+ ERR("[relative_pointer] ts_high=%u, ts_low=%u, dx=%d, dy=%d, dx_unaccel=%d, dy_unaccel=%d",
+ ts_high, ts_low, wl_fixed_to_int(dx), wl_fixed_to_int(dy), wl_fixed_to_int(dx_unaccel), wl_fixed_to_int(dy_unaccel));
+
+ // TODO: Send Ecore Events
+}
+
+static const struct zwp_relative_pointer_v1_listener _relative_pointer_listener = {
+ _relative_pointer_cb_relative_motion,
+};
+//
+
static void
_keyboard_cb_keymap(void *data, struct wl_keyboard *keyboard EINA_UNUSED, unsigned int format, int fd, unsigned int size)
{
wl_pointer_set_user_data(input->wl.pointer, input);
wl_pointer_add_listener(input->wl.pointer, &_pointer_listener, input);
+ // TIZEN_ONLY(20230801) : support zwp relative pointer protocol
+ if (input->display->wl.relative_pointer_manager)
+ {
+ input->wl.relative_pointer =
+ zwp_relative_pointer_manager_v1_get_relative_pointer(
+ input->display->wl.relative_pointer_manager, input->wl.pointer);
+ zwp_relative_pointer_v1_add_listener(input->wl.relative_pointer,
+ &_relative_pointer_listener, input);
+ }
+ //
+
// TIZEN_ONLY(20171207): add functions to set client's custom cursors
if (!input->cursor.surface)
{
#include <wayland-extension/wtz-screen-client-protocol.h>
//
+// TIZEN_ONLY(20230801) : support zwp relative pointer protocol
+#include <relative-pointer-unstable-v1-client-protocol.h>
+//
+
extern int _ecore_wl2_log_dom;
extern Eina_Bool no_session_recovery;
//TIZEN_ONLY(20230312): support wtz_screen
struct wtz_screen *wtz_scr;
//
+
+ // TIZEN_ONLY(20230801) : support zwp relative pointer protocol
+ struct zwp_relative_pointer_manager_v1 *relative_pointer_manager;
+ //
+
} wl;
uint32_t serial;
struct wl_pointer *pointer;
struct wl_keyboard *keyboard;
struct wl_touch *touch;
+ // TIZEN_ONLY(20230801) : support zwp relative pointer protocol
+ struct zwp_relative_pointer_v1 *relative_pointer;
+ //
} wl;
struct
dependency('wtz-foreign-client'),
dependency('wtz-screen-client'),
dependency('wtz-shell-client'),
+ dependency('relative-pointer-unstable-v1-client'),
]
ecore_wl2_src += files([
'ecore_wl2_tbmsurface.c',