block client rescales during render updates

this guarantees misrenders
This commit is contained in:
Mike Blumenkrantz 2017-09-28 13:03:41 -04:00
parent 80349d417d
commit 15ea006eb5
2 changed files with 14 additions and 0 deletions

View File

@ -2107,6 +2107,11 @@ _e_client_eval(E_Client *ec)
rem_change = 1;
prop |= E_CLIENT_PROPERTY_POS;
}
if (ec->changes.need_rescale)
{
e_client_rescale(ec);
ec->changes.need_rescale = 0;
}
if (ec->changes.reset_gravity)
{
@ -3326,6 +3331,14 @@ e_client_rescale(E_Client *ec)
E_OBJECT_CHECK(ec);
E_OBJECT_TYPE_CHECK(ec, E_CLIENT_TYPE);
if (e_comp->updating)
{
ec->changes.need_rescale = 1;
EC_CHANGED(ec);
return;
}
ec->changes.need_rescale = 0;
shaded = ec->shaded;
shade_dir = ec->shade_dir;
if (shaded) e_client_unshade(ec, shade_dir);

View File

@ -586,6 +586,7 @@ struct E_Client
Eina_Bool internal_state : 1;
Eina_Bool need_maximize : 1;
Eina_Bool need_unmaximize : 1;
Eina_Bool need_rescale : 1;
} changes;
unsigned int visible : 1; // client is set to be visible by display server (never use this)