mirror of
https://github.com/genodelabs/genode.git
synced 2025-02-20 17:52:52 +00:00
When resizing windows of clients that respond very slowly to resize requests, the window's size sometimes snapped back to its original size immediately after finishing the drag operation. The problem was caused by the interplay of the layout rules (obtained via the 'rules' ROM, generated by the 'rules' report) and the temporary interactive state that occurs during drag operations. The rules are updated only at the time of releasing the button to keep the overhead while dragging the window low. However, when releasing the mouse, the (now outdated) rules kicked back into effect, triggering resize requests for the window to its old size. The patch solves this problem by decoupling the dragged state of a window from the physical release of the button. The button release triggers a transition from a DRAGGING to a SETTLING state and programs a timer. In the SETTLING state, the windows behave as in DRAGGING state, giving the interactive geometry precedence over the rules-dictated geometry. During this state, further responses of window-resize requests may come in and are handled like dragging was still in progress. After a timeout, however, the current window layout is conserved as a new rules report and the state goes back to IDLE. For clients that takes a very long time (in particular, VirtualBox when resizing the desktop, which takes sometimes multiple seconds), the snap-back artifact can still occur, but the effect is reduced.
This directory is a source-code repository containing Genode-specific services and applications. In contrast to the components that come with the 'os' repository, programs contained in 'gems' are able to leverage the functionalities provided by higher-level repositories such as 'libports'. To use the 'gems' repository, make sure to also add those repositories to your build configuraion.