rotation: Raise a CLIENT_ROTATION_CANCEL event, and add related log. 39/101739/2
authorSeunghun Lee <shiin.lee@samsung.com>
Fri, 2 Dec 2016 05:31:28 +0000 (14:31 +0900)
committerGwanglim Lee <gl77.lee@samsung.com>
Fri, 2 Dec 2016 06:06:58 +0000 (22:06 -0800)
Raise the cancel event, if e_client_rotation_set() is called as passing a angle
which is same with current's before sending message to client.
Now, we can guarantee to send event of cancel or done after sending begin.

Change-Id: I0ce53de4dcbafa6644200c563cf0616470f731a8

src/rotation/e_mod_rotation_wl.c

index 87d3cae..b2591d8 100644 (file)
@@ -121,6 +121,8 @@ static void      _e_client_rotation_change_message_send(E_Client *ec);
 static int       _e_client_rotation_curr_next_get(const E_Client *ec);
 static void      _e_client_event_client_rotation_change_begin_send(E_Client *ec);
 static void      _e_client_event_client_rotation_change_begin_free(void *data, void *ev);
+static void      _e_client_event_client_rotation_change_cancel_send(E_Client *ec);
+static void      _e_client_event_client_rotation_change_cancel_free(void *data, void *ev);
 static void      _e_client_event_client_rotation_change_end_free(void *data, void *ev);
 
 /* local subsystem e_zone_rotation related functions */
@@ -550,6 +552,7 @@ _e_client_rotation_list_remove(E_Client *ec)
                {
                   ev->ec = ec;
                   e_object_ref(E_OBJECT(ec));
+                  EDBG(ec, "Rotation Event: Client Rotation END");
                   ecore_event_add(E_EVENT_CLIENT_ROTATION_CHANGE_END,
                                   ev,
                                   _e_client_event_client_rotation_change_end_free,
@@ -843,6 +846,7 @@ _e_client_event_client_rotation_change_begin_send(E_Client *ec)
      {
         ev->ec = ec;
         e_object_ref(E_OBJECT(ec));
+        EDBG(ec, "Rotation Event: Client Rotation BEGIN");
         ecore_event_add(E_EVENT_CLIENT_ROTATION_CHANGE_BEGIN,
                         ev,
                         _e_client_event_client_rotation_change_begin_free,
@@ -851,6 +855,23 @@ _e_client_event_client_rotation_change_begin_send(E_Client *ec)
 }
 
 static void
+_e_client_event_client_rotation_change_cancel_send(E_Client *ec)
+{
+   E_Event_Client_Rotation_Change_Cancel *ev = NULL;
+   ev = E_NEW(E_Event_Client_Rotation_Change_Cancel, 1);
+   if (ev)
+     {
+        ev->ec = ec;
+        e_object_ref(E_OBJECT(ec));
+        EDBG(ec, "Rotation Event: Client Rotation CANCEL");
+        ecore_event_add(E_EVENT_CLIENT_ROTATION_CHANGE_CANCEL,
+                        ev,
+                        _e_client_event_client_rotation_change_cancel_free,
+                        NULL);
+     }
+}
+
+static void
 _e_client_event_client_rotation_change_begin_free(void *data __UNUSED__,
                                                   void      *ev)
 {
@@ -861,6 +882,16 @@ _e_client_event_client_rotation_change_begin_free(void *data __UNUSED__,
 }
 
 static void
+_e_client_event_client_rotation_change_cancel_free(void *data __UNUSED__,
+                                                   void      *ev)
+{
+   E_Event_Client_Rotation_Change_Cancel *e;
+   e = ev;
+   e_object_unref(E_OBJECT(e->ec));
+   E_FREE(e);
+}
+
+static void
 _e_client_event_client_rotation_change_end_free(void *data __UNUSED__,
                                                 void      *ev)
 {
@@ -1101,6 +1132,8 @@ e_client_rotation_set(E_Client *ec, int rotation)
                          }
                     }
 
+                  _e_client_event_client_rotation_change_cancel_send(ec);
+
                   TRACE_DS_END();
                   TRACE_DS_END();
                   return EINA_FALSE;