Ecore_Wayland: Update to latest wayland from git.

SVN revision: 70280
This commit is contained in:
Christopher Michael 2012-04-17 19:06:23 +00:00
parent 0e7939a89a
commit ccb5d642bd
3 changed files with 36 additions and 23 deletions

View File

@ -72,6 +72,7 @@ struct _Ecore_Wl_Display
int fd; int fd;
unsigned int mask; unsigned int mask;
unsigned int serial;
Ecore_Fd_Handler *fd_hdl; Ecore_Fd_Handler *fd_hdl;
struct wl_list inputs; struct wl_list inputs;
@ -110,6 +111,7 @@ struct _Ecore_Wl_Input
unsigned int button; unsigned int button;
unsigned int timestamp; unsigned int timestamp;
unsigned int modifiers; unsigned int modifiers;
unsigned int pointer_enter_serial;
int sx, sy; int sx, sy;
struct wl_list link; struct wl_list link;

View File

@ -24,15 +24,15 @@
/* local function prototypes */ /* local function prototypes */
static void _ecore_wl_input_cb_motion(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int timestamp, int sx, int sy); static void _ecore_wl_input_cb_motion(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int timestamp, int sx, int sy);
static void _ecore_wl_input_cb_button(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int timestamp, unsigned int button, unsigned int state); static void _ecore_wl_input_cb_button(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int serial, unsigned int timestamp, unsigned int button, unsigned int state);
static void _ecore_wl_input_cb_axis(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int timestamp, unsigned int axis, int value); static void _ecore_wl_input_cb_axis(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int timestamp, unsigned int axis, int value);
static void _ecore_wl_input_cb_key(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int timestamp __UNUSED__, unsigned int key, unsigned int state); static void _ecore_wl_input_cb_key(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int serial, unsigned int timestamp __UNUSED__, unsigned int key, unsigned int state);
static void _ecore_wl_input_cb_pointer_enter(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int timestamp, struct wl_surface *surface, int sx, int sy); static void _ecore_wl_input_cb_pointer_enter(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int serial, struct wl_surface *surface, int sx, int sy);
static void _ecore_wl_input_cb_pointer_leave(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int timestamp, struct wl_surface *surface __UNUSED__); static void _ecore_wl_input_cb_pointer_leave(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int serial, struct wl_surface *surface __UNUSED__);
static void _ecore_wl_input_cb_keyboard_enter(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int timestamp, struct wl_surface *surface, struct wl_array *keys); static void _ecore_wl_input_cb_keyboard_enter(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int serial, struct wl_surface *surface, struct wl_array *keys);
static void _ecore_wl_input_cb_keyboard_leave(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int timestamp, struct wl_surface *surface __UNUSED__); static void _ecore_wl_input_cb_keyboard_leave(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int serial, struct wl_surface *surface __UNUSED__);
static void _ecore_wl_input_cb_touch_down(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int timestamp, struct wl_surface *surface __UNUSED__, int id __UNUSED__, int x, int y); static void _ecore_wl_input_cb_touch_down(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int serial, unsigned int timestamp, struct wl_surface *surface __UNUSED__, int id __UNUSED__, int x, int y);
static void _ecore_wl_input_cb_touch_up(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int timestamp, int id __UNUSED__); static void _ecore_wl_input_cb_touch_up(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int serial, unsigned int timestamp, int id __UNUSED__);
static void _ecore_wl_input_cb_touch_motion(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int timestamp, int id __UNUSED__, int x, int y); static void _ecore_wl_input_cb_touch_motion(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int timestamp, int id __UNUSED__, int x, int y);
static void _ecore_wl_input_cb_touch_frame(void *data __UNUSED__, struct wl_input_device *input_device __UNUSED__); static void _ecore_wl_input_cb_touch_frame(void *data __UNUSED__, struct wl_input_device *input_device __UNUSED__);
static void _ecore_wl_input_cb_touch_cancel(void *data __UNUSED__, struct wl_input_device *input_device __UNUSED__); static void _ecore_wl_input_cb_touch_cancel(void *data __UNUSED__, struct wl_input_device *input_device __UNUSED__);
@ -190,7 +190,7 @@ _ecore_wl_input_cb_motion(void *data, struct wl_input_device *input_device __UNU
} }
static void static void
_ecore_wl_input_cb_button(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int timestamp, unsigned int button, unsigned int state) _ecore_wl_input_cb_button(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int serial, unsigned int timestamp, unsigned int button, unsigned int state)
{ {
Ecore_Wl_Input *input; Ecore_Wl_Input *input;
@ -199,6 +199,7 @@ _ecore_wl_input_cb_button(void *data, struct wl_input_device *input_device __UNU
if (!(input = data)) return; if (!(input = data)) return;
input->timestamp = timestamp; input->timestamp = timestamp;
input->display->serial = serial;
if ((input->pointer_focus) && (!input->grab) && (state)) if ((input->pointer_focus) && (!input->grab) && (state))
ecore_wl_input_grab(input, input->pointer_focus, button); ecore_wl_input_grab(input, input->pointer_focus, button);
@ -234,7 +235,7 @@ _ecore_wl_input_cb_axis(void *data, struct wl_input_device *input_device __UNUSE
} }
static void static void
_ecore_wl_input_cb_key(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int timestamp __UNUSED__, unsigned int key, unsigned int state) _ecore_wl_input_cb_key(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int serial, unsigned int timestamp __UNUSED__, unsigned int key, unsigned int state)
{ {
Ecore_Wl_Input *input; Ecore_Wl_Input *input;
Ecore_Wl_Window *win; Ecore_Wl_Window *win;
@ -244,6 +245,7 @@ _ecore_wl_input_cb_key(void *data, struct wl_input_device *input_device __UNUSED
if (!(input = data)) return; if (!(input = data)) return;
input->display->serial = serial;
win = input->keyboard_focus; win = input->keyboard_focus;
if ((!win) || (win->keyboard_device != input)) return; if ((!win) || (win->keyboard_device != input)) return;
@ -263,7 +265,7 @@ _ecore_wl_input_cb_key(void *data, struct wl_input_device *input_device __UNUSED
} }
static void static void
_ecore_wl_input_cb_pointer_enter(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int timestamp, struct wl_surface *surface, int sx, int sy) _ecore_wl_input_cb_pointer_enter(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int serial, struct wl_surface *surface, int sx, int sy)
{ {
Ecore_Wl_Input *input; Ecore_Wl_Input *input;
Ecore_Wl_Window *win = NULL; Ecore_Wl_Window *win = NULL;
@ -272,6 +274,9 @@ _ecore_wl_input_cb_pointer_enter(void *data, struct wl_input_device *input_devic
if (!(input = data)) return; if (!(input = data)) return;
input->display->serial = serial;
input->pointer_enter_serial = serial;
if ((win = wl_surface_get_user_data(surface))) if ((win = wl_surface_get_user_data(surface)))
win->pointer_device = input; win->pointer_device = input;
else else
@ -280,22 +285,23 @@ _ecore_wl_input_cb_pointer_enter(void *data, struct wl_input_device *input_devic
input->sx = sx; input->sx = sx;
input->sy = sy; input->sy = sy;
_ecore_wl_input_pointer_focus_set(input, win, timestamp, sx, sy); _ecore_wl_input_pointer_focus_set(input, win, input->timestamp, sx, sy);
} }
static void static void
_ecore_wl_input_cb_pointer_leave(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int timestamp, struct wl_surface *surface __UNUSED__) _ecore_wl_input_cb_pointer_leave(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int serial, struct wl_surface *surface __UNUSED__)
{ {
Ecore_Wl_Input *input; Ecore_Wl_Input *input;
LOGFN(__FILE__, __LINE__, __FUNCTION__); LOGFN(__FILE__, __LINE__, __FUNCTION__);
if (!(input = data)) return; if (!(input = data)) return;
_ecore_wl_input_pointer_focus_remove(input, timestamp); input->display->serial = serial;
_ecore_wl_input_pointer_focus_remove(input, input->timestamp);
} }
static void static void
_ecore_wl_input_cb_keyboard_enter(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int timestamp, struct wl_surface *surface, struct wl_array *keys) _ecore_wl_input_cb_keyboard_enter(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int serial, struct wl_surface *surface, struct wl_array *keys)
{ {
Ecore_Wl_Input *input; Ecore_Wl_Input *input;
Ecore_Wl_Window *win = NULL; Ecore_Wl_Window *win = NULL;
@ -305,6 +311,7 @@ _ecore_wl_input_cb_keyboard_enter(void *data, struct wl_input_device *input_devi
if (!(input = data)) return; if (!(input = data)) return;
input->display->serial = serial;
input->keyboard_focus = wl_surface_get_user_data(surface); input->keyboard_focus = wl_surface_get_user_data(surface);
end = keys->data + keys->size; end = keys->data + keys->size;
@ -315,22 +322,23 @@ _ecore_wl_input_cb_keyboard_enter(void *data, struct wl_input_device *input_devi
win = input->keyboard_focus; win = input->keyboard_focus;
win->keyboard_device = input; win->keyboard_device = input;
_ecore_wl_input_focus_in_send(input, timestamp); _ecore_wl_input_focus_in_send(input, input->timestamp);
} }
static void static void
_ecore_wl_input_cb_keyboard_leave(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int timestamp, struct wl_surface *surface __UNUSED__) _ecore_wl_input_cb_keyboard_leave(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int serial, struct wl_surface *surface __UNUSED__)
{ {
Ecore_Wl_Input *input; Ecore_Wl_Input *input;
LOGFN(__FILE__, __LINE__, __FUNCTION__); LOGFN(__FILE__, __LINE__, __FUNCTION__);
if (!(input = data)) return; if (!(input = data)) return;
_ecore_wl_input_keyboard_focus_remove(input, timestamp); input->display->serial = serial;
_ecore_wl_input_keyboard_focus_remove(input, input->timestamp);
} }
static void static void
_ecore_wl_input_cb_touch_down(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int timestamp, struct wl_surface *surface __UNUSED__, int id __UNUSED__, int x, int y) _ecore_wl_input_cb_touch_down(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int serial, unsigned int timestamp, struct wl_surface *surface __UNUSED__, int id __UNUSED__, int x, int y)
{ {
Ecore_Wl_Input *input; Ecore_Wl_Input *input;
@ -341,6 +349,7 @@ _ecore_wl_input_cb_touch_down(void *data, struct wl_input_device *input_device _
/* FIXME: NB: Not sure yet if input->timestamp should be set here. /* FIXME: NB: Not sure yet if input->timestamp should be set here.
* This needs to be tested with an actual touch device */ * This needs to be tested with an actual touch device */
/* input->timestamp = timestamp; */ /* input->timestamp = timestamp; */
input->display->serial = serial;
input->button = 0; input->button = 0;
input->sx = x; input->sx = x;
input->sy = y; input->sy = y;
@ -348,7 +357,7 @@ _ecore_wl_input_cb_touch_down(void *data, struct wl_input_device *input_device _
} }
static void static void
_ecore_wl_input_cb_touch_up(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int timestamp, int id __UNUSED__) _ecore_wl_input_cb_touch_up(void *data, struct wl_input_device *input_device __UNUSED__, unsigned int serial, unsigned int timestamp, int id __UNUSED__)
{ {
Ecore_Wl_Input *input; Ecore_Wl_Input *input;
@ -360,6 +369,7 @@ _ecore_wl_input_cb_touch_up(void *data, struct wl_input_device *input_device __U
* This needs to be tested with an actual touch device */ * This needs to be tested with an actual touch device */
/* input->timestamp = timestamp; */ /* input->timestamp = timestamp; */
input->button = 0; input->button = 0;
input->display->serial = serial;
_ecore_wl_input_mouse_up_send(input, timestamp); _ecore_wl_input_mouse_up_send(input, timestamp);
} }

View File

@ -8,7 +8,7 @@
#include "Ecore_Wayland.h" #include "Ecore_Wayland.h"
/* local function prototypes */ /* local function prototypes */
static void _ecore_wl_window_cb_configure(void *data, struct wl_shell_surface *shell_surface __UNUSED__, unsigned int timestamp, unsigned int edges, int w, int h); static void _ecore_wl_window_cb_configure(void *data, struct wl_shell_surface *shell_surface __UNUSED__, unsigned int edges, int w, int h);
static void _ecore_wl_window_cb_popup_done(void *data, struct wl_shell_surface *shell_surface __UNUSED__); static void _ecore_wl_window_cb_popup_done(void *data, struct wl_shell_surface *shell_surface __UNUSED__);
static void _ecore_wl_window_configure_send(Ecore_Wl_Window *win, int w, int h, unsigned int timestamp); static void _ecore_wl_window_configure_send(Ecore_Wl_Window *win, int w, int h, unsigned int timestamp);
@ -553,7 +553,7 @@ ecore_wl_window_parent_set(Ecore_Wl_Window *win, Ecore_Wl_Window *parent)
/* local functions */ /* local functions */
static void static void
_ecore_wl_window_cb_configure(void *data, struct wl_shell_surface *shell_surface __UNUSED__, unsigned int timestamp, unsigned int edges, int w, int h) _ecore_wl_window_cb_configure(void *data, struct wl_shell_surface *shell_surface __UNUSED__, unsigned int edges, int w, int h)
{ {
Ecore_Wl_Window *win; Ecore_Wl_Window *win;
@ -569,7 +569,8 @@ _ecore_wl_window_cb_configure(void *data, struct wl_shell_surface *shell_surface
win->region.input = NULL; win->region.input = NULL;
if (win->region.opaque) wl_region_destroy(win->region.opaque); if (win->region.opaque) wl_region_destroy(win->region.opaque);
win->region.opaque = NULL; win->region.opaque = NULL;
_ecore_wl_window_configure_send(win, w, h, timestamp); /* FIXME: 0 timestamp here may not work. need to test */
_ecore_wl_window_configure_send(win, w, h, 0);
} }
static void static void