Skip to content
  • Vlad Zahorodnii's avatar
    Make setFrameGeometry() re-entrant for X and internal clients · 80a31ab4
    Vlad Zahorodnii authored and Vlad Zahorodnii's avatar Vlad Zahorodnii committed
    If AbstractClient::setFrameGeometry() is called from a slot connected
    directly to the frameGeometryChanged() signal, then is there a good
    chance that kwin will fall into an infinite recursion. However, that's
    the case with only X11 and internal clients.
    
    The root cause of the infinite recursion is that both X11Client and
    InternalClient compare the new geometry against the geometry before
    update blocking. In order to fix the bug, we simply need to ensure that
    updateGeometryBeforeUpdateBlocking() has been called before we start
    emitting the frameGeometryChanged() signal.
    
    Furthermore, a couple of tests were added to ensure that we won't hit
    this subtle bug again.
    80a31ab4