e_mod_rotation: fix wrong angle_change event 25/218825/1
authorJuyeon Lee <juyeonne.lee@samsung.com>
Thu, 28 Nov 2019 09:59:25 +0000 (18:59 +0900)
committerJuyeon Lee <juyeonne.lee@samsung.com>
Thu, 28 Nov 2019 09:59:28 +0000 (18:59 +0900)
if zone angle was 270, when launching landscape only{90,270 available} app.
it gets angle change event twice
Server -> Client tizen_rotation@angle_change(2) => 90
Server -> Client tizen_rotation@angle_change(8) => 270

Change-Id: I3f522f598483f1e7ea0721930fe72098059afe09

src/rotation/e_mod_rotation_wl.c

index bf9a64f260a2da7de466b6dc460d9f6ee7168781..86869f53cad7829c4b2dca575e827267cb24dfe8 100644 (file)
@@ -814,12 +814,25 @@ _rot_eval_fetch_available_send_angle_change(Policy_Ext_Rotation *rot)
    if (!(rot->available_angles & TIZEN_ROTATION_ANGLE_0) &&
        !(rot->available_angles & TIZEN_ROTATION_ANGLE_180))
      {
-        enum tizen_rotation_angle tz_angle = 0;
+        enum tizen_rotation_angle tz_angle = 0, zone_tz_angle = 0;
         uint32_t serial;
         Eina_List *l;
         struct wl_resource *res;
+        int ang_zone = 0;
 
-        if (rot->available_angles & TIZEN_ROTATION_ANGLE_90)
+        if (ec->zone)
+          {
+             if (ec->zone->rot.unknown_state)
+               ang_zone = ec->zone->rot.act;
+             else
+               ang_zone = ec->zone->rot.curr;
+
+             zone_tz_angle = INT_TO_TIZEN_ROTATION_ANGLE(ang_zone);
+          }
+
+        if (rot->available_angles & zone_tz_angle)
+          tz_angle = zone_tz_angle;
+        else if (rot->available_angles & TIZEN_ROTATION_ANGLE_90)
           tz_angle = TIZEN_ROTATION_ANGLE_90;
         else if (rot->available_angles & TIZEN_ROTATION_ANGLE_270)
           tz_angle = TIZEN_ROTATION_ANGLE_270;