discomfitor pushed a commit to branch enlightenment-0.21.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=95831a19e1a6ebc209bb9613c261aaeded91eb0f

commit 95831a19e1a6ebc209bb9613c261aaeded91eb0f
Author: Mike Blumenkrantz <zm...@osg.samsung.com>
Date:   Fri Aug 18 15:52:52 2017 -0400

    block updating window remembers while applying them
    
    some attrs (e.g., desk setting) change the position/size of a window before
    another attr is set, changing the original value
    
    fix T5295
---
 src/bin/e_remember.c | 4 +++-
 src/bin/e_remember.h | 1 +
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/bin/e_remember.c b/src/bin/e_remember.c
index 6f5b60a44..092bca22d 100644
--- a/src/bin/e_remember.c
+++ b/src/bin/e_remember.c
@@ -299,7 +299,7 @@ e_remember_apply(E_Remember *rem, E_Client *ec)
 
    if (!rem)
      return;
-
+   rem->applying = 1;
    if (rem->apply & E_REMEMBER_APPLY_ZONE)
      {
         E_Zone *zone;
@@ -553,6 +553,7 @@ e_remember_apply(E_Remember *rem, E_Client *ec)
    if (rem->apply & E_REMEMBER_APPLY_OPACITY)
      ec->netwm.opacity = rem->prop.opacity;
 
+   rem->applying = 0;
    if (temporary)
      _e_remember_free(rem);
 }
@@ -689,6 +690,7 @@ _e_remember_event_free(void *d EINA_UNUSED, void *event)
 static void
 _e_remember_update(E_Client *ec, E_Remember *rem)
 {
+   if (rem->applying) return;
    if (rem->apply & E_REMEMBER_APPLY_POS ||
        rem->apply & E_REMEMBER_APPLY_SIZE)
      {
diff --git a/src/bin/e_remember.h b/src/bin/e_remember.h
index 5f0bae490..bfc57fd44 100644
--- a/src/bin/e_remember.h
+++ b/src/bin/e_remember.h
@@ -112,6 +112,7 @@ struct _E_Remember
    } prop;
    Eina_Stringshare *uuid;
    int pid;
+   Eina_Bool applying : 1;
 };
 
 EINTERN int      e_remember_init(E_Startup_Mode mode);

-- 


Reply via email to