Ecore_Wayland: Update ecore_wayland client code to handle using
authordevilhorns <devilhorns@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Tue, 17 Apr 2012 21:55:25 +0000 (21:55 +0000)
committerdevilhorns <devilhorns@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Tue, 17 Apr 2012 21:55:25 +0000 (21:55 +0000)
'serial' rather than timestamp. Trap in ecore_wl_screen_size_get for
the case where display->output is NULL.

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/ecore@70282 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/ecore_wayland/ecore_wl.c
src/lib/ecore_wayland/ecore_wl_input.c
src/lib/ecore_wayland/ecore_wl_window.c

index e20159e..a7a7a0b 100644 (file)
@@ -282,6 +282,11 @@ ecore_wl_screen_size_get(int *w, int *h)
 {
    LOGFN(__FILE__, __LINE__, __FUNCTION__);
 
+   if (w) *w = 0;
+   if (h) *h = 0;
+
+   if (!_ecore_wl_disp->output) return;
+
    if (w) *w = _ecore_wl_disp->output->allocation.w;
    if (h) *h = _ecore_wl_disp->output->allocation.h;
 }
@@ -313,6 +318,8 @@ ecore_wl_dpi_get(void)
 
    LOGFN(__FILE__, __LINE__, __FUNCTION__);
 
+   if (!_ecore_wl_disp->output) return 75;
+
    mw = _ecore_wl_disp->output->mw;
    if (mw <= 0) return 75;
 
index b205933..9463562 100644 (file)
@@ -44,11 +44,11 @@ static void _ecore_wl_input_cb_data_drop(void *data, struct wl_data_device *data
 static void _ecore_wl_input_cb_data_selection(void *data, struct wl_data_device *data_device, struct wl_data_offer *offer);
 
 static void _ecore_wl_input_keyboard_focus_remove(Ecore_Wl_Input *input, unsigned int timestamp);
-static void _ecore_wl_input_pointer_focus_set(Ecore_Wl_Input *input, Ecore_Wl_Window *focus, unsigned int timestamp, int x, int y);
+static void _ecore_wl_input_pointer_focus_set(Ecore_Wl_Input *input, Ecore_Wl_Window *focus, unsigned int timestamp);
 static void _ecore_wl_input_pointer_focus_remove(Ecore_Wl_Input *input, unsigned int timestamp);
 static void _ecore_wl_input_mouse_move_send(Ecore_Wl_Input *input, unsigned int timestamp);
-static void _ecore_wl_input_mouse_in_send(Ecore_Wl_Input *input, unsigned int timestamp);
-static void _ecore_wl_input_mouse_out_send(Ecore_Wl_Input *input, unsigned int timestamp);
+static void _ecore_wl_input_mouse_in_send(Ecore_Wl_Input *input, Ecore_Wl_Window *win, unsigned int timestamp);
+static void _ecore_wl_input_mouse_out_send(Ecore_Wl_Input *input, Ecore_Wl_Window *win, unsigned int timestamp);
 static void _ecore_wl_input_focus_in_send(Ecore_Wl_Input *input, unsigned int timestamp);
 static void _ecore_wl_input_focus_out_send(Ecore_Wl_Input *input, unsigned int timestamp);
 static void _ecore_wl_input_mouse_down_send(Ecore_Wl_Input *input, unsigned int timestamp);
@@ -105,7 +105,7 @@ ecore_wl_input_ungrab(Ecore_Wl_Input *input, unsigned int timestamp)
 
    if (input->pointer_focus)
      _ecore_wl_input_pointer_focus_set(input, input->pointer_focus, 
-                                       timestamp, input->sx, input->sy);
+                                       timestamp);
 }
 
 void 
@@ -181,9 +181,11 @@ _ecore_wl_input_cb_motion(void *data, struct wl_input_device *input_device __UNU
    input->sx = sx;
    input->sy = sy;
 
+   input->timestamp = timestamp;
+
    if (!(input->grab && input->grab_button))
      _ecore_wl_input_pointer_focus_set(input, input->pointer_focus, 
-                                       timestamp, sx, sy);
+                                       timestamp);
 
    /* TODO: FIXME: NB: Weston window code has set pointer image here also */
    _ecore_wl_input_mouse_move_send(input, timestamp);
@@ -201,6 +203,8 @@ _ecore_wl_input_cb_button(void *data, struct wl_input_device *input_device __UNU
    input->timestamp = timestamp;
    input->display->serial = serial;
 
+   _ecore_wl_input_mouse_move_send(input, timestamp);
+
    if ((input->pointer_focus) && (!input->grab) && (state))
      ecore_wl_input_grab(input, input->pointer_focus, button);
 
@@ -285,7 +289,8 @@ _ecore_wl_input_cb_pointer_enter(void *data, struct wl_input_device *input_devic
    input->sx = sx;
    input->sy = sy;
 
-   _ecore_wl_input_pointer_focus_set(input, win, input->timestamp, sx, sy);
+   _ecore_wl_input_mouse_move_send(input, input->timestamp);
+   _ecore_wl_input_pointer_focus_set(input, win, input->timestamp);
 }
 
 static void 
@@ -296,7 +301,10 @@ _ecore_wl_input_cb_pointer_leave(void *data, struct wl_input_device *input_devic
    LOGFN(__FILE__, __LINE__, __FUNCTION__);
 
    if (!(input = data)) return;
+
    input->display->serial = serial;
+
+   _ecore_wl_input_mouse_move_send(input, input->timestamp);
    _ecore_wl_input_pointer_focus_remove(input, input->timestamp);
 }
 
@@ -468,29 +476,31 @@ _ecore_wl_input_keyboard_focus_remove(Ecore_Wl_Input *input, unsigned int timest
 }
 
 static void 
-_ecore_wl_input_pointer_focus_set(Ecore_Wl_Input *input, Ecore_Wl_Window *focus, unsigned int timestamp, int x, int y)
+_ecore_wl_input_pointer_focus_set(Ecore_Wl_Input *input, Ecore_Wl_Window *focus, unsigned int timestamp)
 {
+   Ecore_Wl_Window *ofocus = NULL;
+
    if ((focus) && (focus == input->pointer_focus)) return;
 
    LOGFN(__FILE__, __LINE__, __FUNCTION__);
 
-   input->sx = x;
-   input->sy = y;
-
-   if (input->pointer_focus)
+   if ((ofocus = input->pointer_focus))
      {
-        Ecore_Wl_Window *nwin;
-
-        nwin = input->pointer_focus;
-        _ecore_wl_input_mouse_out_send(input, timestamp);
+        if (input->grab) ofocus = input->grab;
+        _ecore_wl_input_mouse_out_send(input, ofocus, timestamp);
         input->pointer_focus = NULL;
-        nwin->pointer_device = NULL;
+        ofocus->pointer_device = NULL;
      }
 
    if (focus)
      {
+        Ecore_Wl_Window *win;
+
+        win = focus;
+        if (input->grab) win = input->grab;
+
+        _ecore_wl_input_mouse_in_send(input, win, timestamp);
         input->pointer_focus = focus;
-        _ecore_wl_input_mouse_in_send(input, timestamp);
         focus->pointer_device = input;
      }
 }
@@ -504,7 +514,7 @@ _ecore_wl_input_pointer_focus_remove(Ecore_Wl_Input *input, unsigned int timesta
 
    win = input->pointer_focus;
 
-   _ecore_wl_input_pointer_focus_set(input, NULL, timestamp, 0, 0);
+   _ecore_wl_input_pointer_focus_set(input, NULL, timestamp);
 
    input->pointer_focus = NULL;
    if (win) win->pointer_device = NULL;
@@ -550,7 +560,7 @@ _ecore_wl_input_mouse_move_send(Ecore_Wl_Input *input, unsigned int timestamp)
 }
 
 static void 
-_ecore_wl_input_mouse_in_send(Ecore_Wl_Input *input, unsigned int timestamp)
+_ecore_wl_input_mouse_in_send(Ecore_Wl_Input *input, Ecore_Wl_Window *win, unsigned int timestamp)
 {
    Ecore_Wl_Event_Mouse_In *ev;
 
@@ -565,22 +575,14 @@ _ecore_wl_input_mouse_in_send(Ecore_Wl_Input *input, unsigned int timestamp)
    ev->modifiers = input->modifiers;
    ev->timestamp = timestamp;
 
-   if (input->grab)
-     {
-        ev->window = input->grab->id;
-        ev->event_window = input->grab->id;
-     }
-   else if (input->pointer_focus)
-     {
-        ev->window = input->pointer_focus->id;
-        ev->event_window = input->pointer_focus->id;
-     }
+   ev->window = win->id;
+   ev->event_window = win->id;
 
    ecore_event_add(ECORE_WL_EVENT_MOUSE_IN, ev, NULL, NULL);
 }
 
 static void 
-_ecore_wl_input_mouse_out_send(Ecore_Wl_Input *input, unsigned int timestamp)
+_ecore_wl_input_mouse_out_send(Ecore_Wl_Input *input, Ecore_Wl_Window *win, unsigned int timestamp)
 {
    Ecore_Wl_Event_Mouse_Out *ev;
 
@@ -595,16 +597,8 @@ _ecore_wl_input_mouse_out_send(Ecore_Wl_Input *input, unsigned int timestamp)
    ev->modifiers = input->modifiers;
    ev->timestamp = timestamp;
 
-   if (input->grab)
-     {
-        ev->window = input->grab->id;
-        ev->event_window = input->grab->id;
-     }
-   else if (input->pointer_focus)
-     {
-        ev->window = input->pointer_focus->id;
-        ev->event_window = input->pointer_focus->id;
-     }
+   ev->window = win->id;
+   ev->event_window = win->id;
 
    ecore_event_add(ECORE_WL_EVENT_MOUSE_OUT, ev, NULL, NULL);
 }
index 8a75a4a..932f4de 100644 (file)
@@ -166,7 +166,7 @@ ecore_wl_window_move(Ecore_Wl_Window *win, int x, int y)
 
         ecore_wl_input_ungrab(input, input->timestamp);
         wl_shell_surface_move(win->shell_surface, input->input_device,
-                              input->timestamp);
+                              input->display->serial);
      }
 }
 
@@ -224,7 +224,7 @@ ecore_wl_window_resize(Ecore_Wl_Window *win, int w, int h, int location)
 
         ecore_wl_input_ungrab(input, input->timestamp);
         wl_shell_surface_resize(win->shell_surface, input->input_device, 
-                                input->timestamp, location);
+                                input->display->serial, location);
      }
 }