Since the introduction of the "menu_hover" report, keep alive
information of the Leitzentrale is lost (e.g., dialing pad, activity in
main menu, ...) leading to premature screensaver activation. With this
commit we add support to monitor the "menu_hover" report's sequence
numbers through Watch_rom_seq_number, and thus, avoid triggering the
screensaver even though activity has been performed.
issue #5496
Update the popup view whenever a runtime-state change is detected.
Otherwise the toggling of an item in the options tab is not always
reflected at the dialog. Observed when running Sculpt on Linux.
This change prevents the reporting of amibiguous hovering information in
the presence of multiple dialogs by reporting only the hovering
information of the dialog that observed the most recent hover change.
Issue #5496
Issue #5485
By using the clicked report instead of the hover report, we prevent the
misinterpretation of a regular hover update as an overly delayed hover
report matching a previous click (inside the popup). With this patch, the
popup stays open when the pointer leaves the popup after the click.
Issue #5496
Issue #5485
This patch separates the handling of touch input from pointer input in
the logic of closing the popup dialog. For the detection of a touch
outside the popup dialog, nitpicker's new "touch" report is observed
whereas the detection of a click outside the popup is based on
nitpicker's hover report.
Issue #5496
Issue #5485
Report 'display_driver_ready' to screensaver depending if <capture> node
is present in Gui::info. The Gui::panorama call does not suffice because
it reports the dimensions of the very last Capture client closed as
fallback.
issue #5496
* ignore sequence numbers from nitpicker in _handle_input because it
generates it's own numbers
* send sequence number on single click
issue #5496
issue #5491
Since "wm/decorator/layouter: window clipping" we need to separate
resize and window-layout ROMs while also adding the <boundary> nodes for
wm/decorator/layouter to function correctly.
issue #5496
The 'lx_block' component uses the aged Block::Driver framework
internally and most if not all use-cases where it could be employed
can be addressed by using the 'vfs_block' component instead.
This commit also removes some run-scripts that make use of 'lx_block'
whose components are already excercised otherwise.
Issue #5522.
The new 'Local_rm' type offers a narrow interface for the interaction
with the component-local address space, managing the lifetime of
attachments by using the 'Allocation' API.
Fixes#5516
The dither matrix is not perfectly random but provides a kind of
pseudo-random pattern that fits the original dithering approach with
global coordinate based indexing. If the matrix is offset by one line
each 16 pixels the pattern becomes visible as alternating light and dark
columns.
Follow-up commit to "gui_fader: precompute dithered 16x16 tile".
Issue #5501
This catches bugs early on. E.g., when leaving an 'Allocation'
unused, it gets immediately deallocated, which is most probably not
intended. For regular 'Attempt' objects, this change encourages
the proper propagation of errors, or at least the logging of unexpected
conditions.
Fixes#5513
This patch converts the memory-allocator interfaces ('Allocator',
'Range_allocator') and their implementations ('Heap', 'Sliced heap',
'Slab', 'Allocator_avl', 'Synced_allocator') to the new 'Allocation'
utility. The new interface resides at base/memory.h whereas the
traditional allocators implement the new interface.
Down the road, the traditional allocators can successively be decoupled
from the traditional 'Allocator' and 'Range_allocator' interfaces.
Issue #5502
Issue #5245
With this patch, the 'Pd_session' interface no longer implements the
'Ram_allocator' interface, which allows us to change the
'Genode::Ram_allocator' semantics (as a subsequent step) without
affecting core's PD service.
The patch also replaces the client-local implementation of
'Pd_session_client::dataspace_size' by the proper RPC call 'ram_size' to
core, which mitigates the potential risk of de-referencing a dataspace
cap of an untrusted origin. E.g., in scenarios where the monitor
component requests the size of a dataspace allocated by the debugging
target.
Since 'ram_size' is an RPC call, it cannot be const. Hence, the
'Ram_alloctor::dataspace_size' has become non-const.
The new 'Pd_ram_allocator' implements the 'Ram_allocator' interface by
using a PD session.
Issue #5502
When a single TOUCH and TOUCH_RELEASE event are submitted
simultaneously, the input sequence number is incremented twice. In
consequence, menu view will never generate a hover report for the
intermediate sequence number. However, this is the report that the
sculpt manager is waiting for to correlate it with the TOUCH event.
Only incrementing the input sequence number when the state changed from
not clicked to clicked exposes another corner case: When the last event
unfocused a dialog (e.g. the popup dialog) and when the current event
touches the dialog, the seq event is not delivered to the dialog because it
is not focused. Therefore, the seq event should be submitted after submitting
the TOUCH event.
genodelabs/genode#5491
When trying to control the popup dialog with touch events, the dialog
was immediately closed (on any touch). This was a consequence of
evaluating the dialog's hover state without waiting for the
corresponding hover report. For regular motiong events, the hover report
is updated when the pointer moves. For touch events, however, the
hover report is only updated when the touch occurs. We therefore need to
wait for the hover report that corresponds to the touch event before
deciding about closing the popup dialog.
Since menu_view's hover report is not updated for clicks/touches outside any
dialog, we are now using nitpicker's hover report, which also got
augmented by the sequence number in order to be correlated with the
click/touch event.
Fixes#5485
As the panel dialog's min width is propagated via the menu-view config,
we need to re-generate the runtime config whenever the leitzentrale's
size changes. Otherwise the update merely happens as a side effect of
dynamically adjusting the font size, which does not happen with the
fixed config/fonts file.
Issue #5370
When inferring the global pointer position from input events referring
to the leitzentrale, we must take the leitzentrale's panorama position
into account. Otherwise, the hovered display cannot always be reliably
determined.
Issue #5370
This patch changes the way of how the client-selected sub directory is
communicated to the server. The former opaque session argument is now
passed as last label element, which allows for the flexible tweaking
of this argument by init's session-routing and label-rewriting
mechansims. In particular, it alleviates the need for creating chroot
component instances.
This change requires the following four adaptations at the
configuration level:
- Each file-system session request must now carry a path starting
with / as last session arguments. Hence, <vfs> <fs> nodes that
feature a 'label' attributes must extend the attribute value
with " -> /". For <fs> nodes with no label attribute, "/" is
used as last label argument by default.
- For matching session-routing rules at init's configuration,
the matching of full labels should be replaced by 'label_prefix'
matches, excluding the last (path) argument.
- Wherever a label of a file-system session is rewritten by using
init's 'label' attribute of a <parent> or <child> target node,
the new attribute 'identity' should be used instead. This replaces
the identity part of the label while preserving the client's
directory argument.
- Analogously to the matching of session-routing rules, server-side
policy-selection rules that formerly matched a concrete 'label'
must be changed to match a 'label_prefix' instead.
As a good practice, 'label_prefix' values should end with " ->" if
possible, which clearly delimits the identity part of the label
used by the matching.
Issue #5445