int preferred_rot; // app specified rotation
int *available_rots; // app specified available rotations
unsigned int count; // number of elements of available rotations
+ unsigned int nopending_render : 1; // app wants to show rendering jobs before sending rotation_done
+ // it is set by 'wm.policy.win.rot.render.nopending' aux hint
} rot;
#endif
} state;
E_POLICY_HINT_MSG_USE = 7,
E_COMP_HINT_ALWAYS_SELECTIVE = 8,
E_POLICY_HINT_DEPENDENT_ROTATION = 9,
+ E_POLICY_HINT_ROT_RENDER_NOPENDING = 10,
};
static const char *hint_names[] =
"wm.policy.win.msg.use",
"wm.comp.win.always.selective.mode",
"wm.policy.win.rot.dependent",
+ "wm.policy.win.rot.render.nopending",
};
static void _e_policy_wl_surf_del(E_Policy_Wl_Surface *psurf);
else if (!strcmp(hint->val, "1"))
ec->e.state.rot.type = E_CLIENT_ROTATION_TYPE_DEPENDENT;
}
+ else if (!strcmp(hint->hint, hint_names[E_POLICY_HINT_ROT_RENDER_NOPENDING]))
+ {
+ if ((hint->deleted) || (!strcmp(hint->val, "0")))
+ {
+ ELOGF("ROTATION", "nopending render:0", ec->pixmap, ec);
+ ec->e.state.rot.nopending_render = 0;
+ }
+ else if (!strcmp(hint->val, "1"))
+ {
+ ELOGF("ROTATION", "nopending render:1", ec->pixmap, ec);
+ ec->e.state.rot.nopending_render = 1;
+ }
+ }
if (send)
_e_policy_wl_allowed_aux_hint_send(ec, hint->id);