e_pointer: rotate a pointer if screen rotated 18/127318/2
authorBoram Park <boram1288.park@samsung.com>
Sun, 23 Apr 2017 03:43:08 +0000 (12:43 +0900)
committerBoram Park <boram1288.park@samsung.com>
Thu, 27 Apr 2017 06:40:32 +0000 (15:40 +0900)
Change-Id: I04768161692f5aa39f0dc3a0ed7058ca2f25b2f1

src/bin/e_comp_screen.c
src/bin/e_pointer.c

index bec4c21305b6b88b431e9a1ade23b96f64df16e6..9ecbf5f665aba2443eab4da4ea7518922c118413 100644 (file)
@@ -991,6 +991,14 @@ e_comp_screen_init()
    if ((comp->pointer = e_pointer_canvas_new(comp->ee, EINA_TRUE)))
      {
         e_pointer_hide(comp->pointer);
+
+        if (e_comp_screen->rotation)
+          {
+             const Eina_List *l;
+             Ecore_Drm_Device *dev;
+             EINA_LIST_FOREACH(ecore_drm_devices_get(), l, dev)
+               ecore_drm_device_pointer_rotation_set(dev, e_comp_screen->rotation);
+          }
      }
    e_main_ts("\tE_Pointer New Done");
 
index 4c5c8d00fe13ae2bf499fe013d7ce96ccb04a287..7899fa8601f2e68ec38cf0e111b6efa4f3537bc9 100644 (file)
@@ -333,6 +333,10 @@ e_pointer_rotation_set(E_Pointer *ptr, int rotation)
    _e_pointer_position_update(ptr);
    _e_pointer_rotation_apply(ptr);
 
+   /* ptr->rotation shouldn't include the screen rotation value */
+   if (e_comp->e_comp_screen->rotation > 0)
+      rotation = (e_comp->e_comp_screen->rotation + rotation) % 360;
+
    EINA_LIST_FOREACH(ecore_drm_devices_get(), l, dev)
      ecore_drm_device_pointer_rotation_set(dev, rotation);