diff options
author | Shawn Lee <shiin.lee@samsung.com> | 2013-06-21 13:24:43 +0900 |
---|---|---|
committer | Shawn Lee <shiin.lee@samsung.com> | 2013-06-21 16:32:25 +0900 |
commit | 6cd35b4482dec3063dea4430e8639e89975c1351 (patch) | |
tree | 64b87cd8219a9c5bee99225a06e5f9a3037578e4 | |
parent | 4dba9613b0e05a00ecb86ebcb56fd534d04cffb1 (diff) | |
download | e17-6cd35b4482dec3063dea4430e8639e89975c1351.tar.gz e17-6cd35b4482dec3063dea4430e8639e89975c1351.tar.bz2 e17-6cd35b4482dec3063dea4430e8639e89975c1351.zip |
e17 doesn't need to send rotation request same angle already be sent. but in case, rotation has to be updated before receive rotation done, e17 will send rotation request changes angle, again.
Change-Id: Ib425bf78107ba363b0286384a2031258d1111f99
-rw-r--r-- | src/bin/e_border.c | 11 | ||||
-rw-r--r-- | src/bin/e_border.h | 4 |
2 files changed, 12 insertions, 3 deletions
diff --git a/src/bin/e_border.c b/src/bin/e_border.c index 28cccba..ebcf4b1 100644 --- a/src/bin/e_border.c +++ b/src/bin/e_border.c @@ -8052,6 +8052,8 @@ _e_border_rotation_list_flush(Eina_List *list, Eina_Bool flush) EINA_LIST_FOREACH (list, l, info) { if (!info->bd) continue; + if ((info->bd->client.e.state.rot.wait_for_done) && + (info->bd->client.e.state.rot.wait_done_ang == info->ang)) continue; _e_border_event_border_rotation_change_begin_send(info->bd); @@ -8075,7 +8077,8 @@ _e_border_rotation_list_flush(Eina_List *list, Eina_Bool flush) ELBF(ELBT_ROT, 1, 0, "SEND ROT_CHANGE_REQUEST"); ecore_x_e_window_rotation_change_request_send(info->bd->client.win, info->ang); - info->bd->client.e.state.rot.wait_for_done = EINA_TRUE; + info->bd->client.e.state.rot.wait_for_done = 1; + info->bd->client.e.state.rot.wait_done_ang = info->ang; } } @@ -8686,6 +8689,9 @@ _e_border_cb_window_configure(void *data __UNUSED__, ELB(ELBT_BD, "GET CONFIGURE_NOTI (ROTATION)", bd->client.win); bd->client.e.state.rot.pending_change_request = 0; + if ((bd->client.e.state.rot.wait_for_done) && + (bd->client.e.state.rot.wait_done_ang == bd->client.e.state.rot.curr)) goto end; + // if this window is rotation dependent window and zone is blocked to rotate, // then skip here, request will be sent after cancel block. if ((bd->client.e.state.rot.type == E_BORDER_ROTATION_TYPE_DEPENDENT) && @@ -8703,7 +8709,8 @@ _e_border_cb_window_configure(void *data __UNUSED__, bd->w, bd->h); ecore_x_e_window_rotation_change_request_send(bd->client.win, bd->client.e.state.rot.curr); - bd->client.e.state.rot.wait_for_done = EINA_TRUE; + bd->client.e.state.rot.wait_for_done = 1; + bd->client.e.state.rot.wait_done_ang = bd->client.e.state.rot.curr; } } diff --git a/src/bin/e_border.h b/src/bin/e_border.h index 7d7095a..b9073c6 100644 --- a/src/bin/e_border.h +++ b/src/bin/e_border.h @@ -457,7 +457,9 @@ struct _E_Border int preferred_rot; // v1: app specified rotation int *available_rots; // v1: app specified available rotations unsigned int count; // v1: number of elements of available rotations - int changes; // added for precessing rotation in main eval after fetch in eval0. + int changes; // added for precessing rotation in main eval after fetch in eval0. + int wait_done_ang; // the angle that wm wait for done. + // when wait_for_done is set to 1, it's meaningful. } rot; #endif } state; |