Commit Graph

1849 Commits

Author SHA1 Message Date
Christian Helmuth
0794d99eff depot: update recipe hashes 2024-11-05 13:41:07 +01:00
Norman Feske
fdd2b4edb0 sculpt: restart depot_rom on use/unuse
Large deployments (e.g., using the Falkon browser) can significantly
inflate the RAM quota of depot_rom. When switching the Sculpt storage
target (using the "Use" buttons), depot_rom is restarted. Right now,
however, it retains its (inflated) quota. It is better to reset the
quota to its initial value to free up RAM that thereby becomes usable
for a different deployment. Otherwise, the depot_rom's resources can be
deflated only by rebooting.
2024-11-05 12:03:17 +01:00
Norman Feske
ec1316e1cb gems/vfs_font: sanity-check glyph against font bb
When using the fonts_fs, the geometry of individual glyphs can change
potentially at any time, after having obtained font-global constraints
once. In particular, a glyph can exceed the bounding box of the font
cell. The VFS font utility must take safety precautions against such
violations.

Fixes #5374
2024-11-05 12:03:17 +01:00
Christian Helmuth
30f3ef25ad depot: update recipe hashes 2024-10-30 14:02:44 +01:00
Alexander Boettcher
e9fb2d89fb sculpt: use 96M for display aperture to support 4k
Swapping a 4k monitor between discrete and mirror mode will consume
temporarily at least 32M * 2 (3840 * 2160 * 4 Bytes), so that the
default value of 64M for the aperture is insufficient in addition to
interal display on a notebook. The commit mitigates that the
i915_gem_evict_for_node unimplemented error does not trigger immediately.

Issue #5356
2024-10-30 13:43:19 +01:00
Norman Feske
7f1a6e55f3 sculpt: update README for version 24.10
Issue #5356
2024-10-30 13:43:19 +01:00
Stefan Kalkowski
cf84787c09 sculpt_image: add MNT Pocket as target board
Issue genodelabs/genode#5360.
2024-10-30 08:14:56 +01:00
Norman Feske
324245d029 sculpt: restrict un-merging of fb connectors
In setups with 3 or more displays, allow the un-merging of connectors
only for the last mirrored connector. Otherwise, the operation would
implicitely change the order of connectors because the new discrete
connector needs appear after all merged connectors.

Issue #5286
2024-10-30 08:14:56 +01:00
Josef Söntgen
2d3170124d phone_manager: ignore AP list hovered temporarily
The access-point-list hovered state prevents preseting the available
scan results, which currently can happen unintentionally. This commit
hot-wires the hover handling and thus will always show and update the
list.  New scan results are received every few seconds and it could
happen that the list changes while the user selects a network (that's
what the original implementation guards against).

Issue #5369.
2024-10-30 08:14:56 +01:00
Norman Feske
baedd79f62 sculpt_manager: fb unplug, sanitize conn. model
This patch explicitly handles the unplugging of displays, avoiding the
use of stale connectors for defining the panorama. It also makes the
import of the connectors model robust against intermediate states
reported by the driver (a connector reported as connector but without
any mode), and discards the use of any information of non-present
connectors as merge info.

Issue #5286
2024-10-30 08:14:56 +01:00
Norman Feske
1660dc0635 sculpt: use icons for fb swap and merge/unmerge
Issue #5286
2024-10-30 08:14:56 +01:00
Norman Feske
c9015d6076 sculpt: prevent disabling the hovered display
Issue #5370
2024-10-30 08:14:56 +01:00
Norman Feske
732f310b26 menu_view: update dialog when min w/h changes
The minimum width/height of a dialog is not specified in the dialog ROM
but in the menu_view configuration. So the regular dialog-ROM update
handling fails to captures dynamic changes of the minimum w/h. In
Sculpt, the panel would not always adjust immediately to a new screen
size.

This patch triggers a dialog update when detecting such configuration
changes (min w/h, opaqueness, background color).

Issue #5370
2024-10-30 08:14:56 +01:00
Norman Feske
9ad7111634 sculpt: let leitzentrale follow the pointer
This patch places the leitzentrale GUI always at the pointer-at display
instead of filling the entire panorama. This ensures that the complete
leitzentrale GUI is always visible.

Fixes #5370
2024-10-30 08:14:56 +01:00
Norman Feske
01c96cf537 sculpt: generate panorama config
If the fb driver is configured to use discrete displays, sculpt now
automatically generates a panorama configuration for nitpicker that
shows all displays side by side. The effective nitpicker config is
now located at config/managed/nitpicker.

The automatism takes effect only when nitpicker's <capture> node
in config/nitpicker is empty. Hence, the managed panorama can be
overridden by a manually managed panorama.

Issue #5286
2024-10-30 08:14:55 +01:00
Norman Feske
45fc49b4f1 sculpt/fb/default: remove examples
With "sculpt_manager: interactive framebuffer settings", examples can be
taken from config/managed/fb instead.

Fixes #5286
2024-10-30 08:14:55 +01:00
Norman Feske
8c43f8aa33 sculpt_manager: interactive framebuffer settings
This patch add a configuration dialog in the intel_fb node of the
component graph. The dialog displays a list of present displays labeled
after their respecive connectors. A mode can be selected for each
connector when clicking on the connector entry.

In-between the entries there are two buttons. The connect button is
toggle that defines whether the two adjacent entries are mirrored.
It is enabled by default so that all new connectors participate in
the mirroring. By untoggling the last enabled connect button, the
entry below the button becomes a discrete (non-mirrored) display.

A swap button allows for changing the order of the list, which has
to effects. First, the resolution of the very first entry defines
the size for mirrored display. So be changing the order of mirrored
displays, one can pick the preferred screen size. Second, the order
of discrete displays defines the layout of the panorama from left to
right. (the panorama config is not part of this commit though)

Note that there is currently no safety net against locking oneself
out of all displays. E.g., one can make Sculpt unusable by manually
disabling each display, or by selecting modes not properly handled by
the connected monitor. In the future, we may add a confirm button with
a timeout to roll back such unfortunate settings.

Fixes #5286
2024-10-30 08:14:55 +01:00
Josef Söntgen
8d76eebf93 sculpt: add MNT Pocket Reform
Fix genodelabs/genode#5360.
2024-10-30 08:14:55 +01:00
Norman Feske
3ab9173b20 gui_session: window-closed state as attribute
With the change of "gui_session: provide mode info as XML", the
client-side window-close handling became dysfunct because the
window-close state got wrongly interpreted as initial window state, to
the effect that a client's initial-window size policy got applied
instead of closing the window.

This patch makes the inital state of running a windowed application
(when no window size is defined yet) clearly distiguishable from the
state after which the user closed the window. Prior this patch, both
conditions were reflected by an empty <capture/> node in the panorama.
Now, the latter condition is reported as <capture closed="yes"/>, which
alleviates the need to track the life cycle of a window at the client
size.

Issue #5353
2024-10-30 08:14:55 +01:00
Benjamin Lamowski
515bd3263f sculpt/depot: add depot user atopia
Issue #5356
2024-10-30 08:14:55 +01:00
Christian Helmuth
c609e76cec sculpt: update touchpad for 24.10
Issue #5356
2024-10-30 08:14:55 +01:00
Norman Feske
845dc80df9 sculpt/depot/falkon_web_browser: version for 24.10
Issue #5356
2024-10-30 08:14:55 +01:00
Norman Feske
5e3b6ee08f terminal: fix tiling artifacts in shrinked window
When shriking the terminal window, the view must be shrinked before
shriking the pixel buffer. Otherwise, when the buffer becomes smaller
than the view, nitpicker fills the excess view area with tiled content
of the buffer, which looks funny.

Related to issue #5350
2024-10-30 08:14:54 +01:00
Benjamin Lamowski
6715f074ff sculpt_manager: fix quota boost limit for runtime_view
Commit 75e1f1797d increased runtime_view's initial RAM quota from 4MiB
to 52MiB, but failed to adjust the boost limit. Therefore, when
addtional RAM was requested, the limit would actually be degreased to
32MiB.

Adjust the RAM boost limit to 64MiB to make the runtime_view work on 4k
screens.

Issue #5356
2024-10-30 08:14:54 +01:00
Benjamin Lamowski
7e9c1ca3ca sticks_blue_backdrop: adjust RAM quota to work in 4k
Thie sticks_blue_backdrop needs more RAM to work on a 4k display.

Adjust the RAM quota to make it work on 4k.

Issue #5356
2024-10-30 08:14:54 +01:00
Benjamin Lamowski
5c75f1efa7 sculpt: adjust decorator capability quota in Leitzentrale
Following the rework of the graphics stack, the decorator inside
Leitzentrale needs more capabilities. This manifests in a log message:
```
[leitzentrale] child "decorator" requests resources: cap_quota=18
```
and the Leitzentrale contents execpt for the log window disappearing
from the display. The Leitzentrale layer can still be toggled using F12.

Increasing the decorator's capability quota appears to solve the issue.

Issue #5356
2024-10-30 08:14:54 +01:00
Norman Feske
13e8013334 sculpt.run: increase nitpicker quota for resize
Increase the RAM quota of the top-level nitpicker instance to support
the flicker-free resizing of large buffers, e.g., when changing screen
resolutions. Otherwise, nitpicker warns as follows:

[init -> nitpicker] Warning: Gui (runtime -> wm -> wm -> decorator)
                    not enough RAM to preserve buffer content during resize

Issue #5356
2024-10-30 08:14:54 +01:00
Christian Helmuth
679d68d470 nitpicker: rename 'displays' report to 'panorama'
... and enable report in Sculpt's report_fs.

Issue #5352
2024-10-30 08:14:54 +01:00
Norman Feske
135a866ec0 sculpt_manager: avoid runtime_view cap request
This commit removes the initial dignostic message from the log. The
message is harmless because the sculpt manager upgrades the quota on
demand but its best to avoid the noise.

  child "runtime_view" requests resources: cap_quota=4

Issue #5356
2024-10-30 08:14:54 +01:00
Christian Helmuth
6d78712454 tiled_wm: build test/tiled_wm in run script 2024-10-30 08:14:54 +01:00
Christian Helmuth
7961ff50a2 tiled_wm: fix dependency to util.h 2024-10-30 08:14:53 +01:00
Josef Söntgen
b908999def sculpt/wifi/default: comment invalid network node
Provide the default wifi config in an annotated fashion. Specifying
an invalid '<network>' node leads to diagnostic messages.

Issue #5356.
2024-10-30 08:14:53 +01:00
Stefan Kalkowski
8094b1ee01 sculpt/index: refer to recent audio mixer
Instead of publishing the old audio mixer, refer to the recent
record_play_mixer providing the audio API that is used by almost
all components now.

Ref genodelabs/genode#5356
2024-10-30 08:14:53 +01:00
Christian Helmuth
a0ef5b5a36 sculpt: keep runtime capture session labels
Nitpicker may use session labels for panorama configuration in capture
policies.

Issue #5352
Issue #5356
2024-10-30 08:05:33 +01:00
Josef Söntgen
bc8932e46a terminal: use initial mode for undefined size 2024-10-14 14:39:44 +02:00
Sebastian Sumpf
12fb925555 terminal: adjust cap quota to GUI stack changes 2024-10-14 14:39:44 +02:00
Josef Söntgen
686c5ac007 raw/window_layouter: add 'release_grab' action
This commit adds the 'release_grab' action to the KEY_SCREEN handling
as it is required to ungrab clients using the exclusive input mode.
2024-10-14 14:39:44 +02:00
Josef Söntgen
31f9d414a3
sculpt_manager: remove invalid network node
With the recent Wifi::Manager changes setting an invalid SSID will
lead to a diagnostic warning. Since disconnecting is handled by
removing the existent '<network>' there is no reason to generate
an invalid node in the first place.

Issue #5356.
2024-10-08 14:20:21 +02:00
Josef Söntgen
0b9d3c3dcc
sculpt_manager: increase wifi driver caps
This remedies the initial session upgrade on certain systems (Alder
Lake).

Issue #5356.
2024-10-08 14:20:20 +02:00
Christian Helmuth
61c9706353 depot: update recipe hashes 2024-10-08 11:30:26 +02:00
Christian Prochaska
57b10b9611 qt: adapt to 'Gui::Connection' interface changes
Issue #5353
2024-10-08 09:09:24 +02:00
Norman Feske
ca47280ce9 wm/layouter: pointer grabbing/ungrabbing
This patch implements the following policy for applications requesting
exclusive input (relative motion): The pointer is grabbed as soon as the
user clicks inside the application window. It is forcibly ungrabbed on
any window-focus change or when tapping the KEY_SCREEN. An application
can always enable (transient) exclusive input during a key sequence,
e.g., when dragging the mouse while holding the mouse button. Transient
exclusive input is revoked when releasing the last button/key.

Fixes #5355
2024-10-08 09:09:24 +02:00
Norman Feske
996d9b300c menu_view: restore horizontal cursor positioning
This is a follow-up fix for "Make util/geometry.h C++20 friendly".

Fixes #5239
Issue #5356
2024-10-08 09:09:24 +02:00
Norman Feske
75b04b38f6 Adjust RAM and cap quotas
The recent changes of the GUI stack (proper accounting of cap and RAM
resources by the window manager and nitpicker, output buffered at the
server side) require quota adjustments at various GUI-related places.

Issue #5356
2024-10-08 09:09:24 +02:00
Norman Feske
b1d5a5f7b8 sculpt: version 24.10 2024-10-08 09:09:24 +02:00
Norman Feske
d7830a0ce6 Add Input::Session::exclusive() interface
This interface allows a GUI client to express the intent to exclusively
observe relative motion events while locking the absolute pointer
position. This patch merely extends the interface without implementing
it.

As this change touches os/include/input/component.h, it moves the
manage/dissolve operations into the class, ensuring the call of
dissolve at destruction time.

Issue #5355
2024-10-08 09:09:24 +02:00
Norman Feske
318d641266 gui_session: provide mode info as XML
In multi-monitor scenarios, the mode is no longer a single rectangular
area but a panorama with potentially many captured rectangles. This
patch replaces the former 'mode' and 'mode_sigh' RPC by a new 'info'
ROM accessor.

Issue #5353
2024-10-08 09:09:24 +02:00
Norman Feske
e69c01aad3 framebuffer_session: add sync_source selection
The new Framebuffer::Session::sync_source RPC function allows for the
selection of a specific source of sync signals in the presence of
multiple capture clients at the GUI server.

This patch contains only the extension of the interface. The information
is not evaluated by the GUI server yet.

Issue #5347
2024-10-08 09:09:24 +02:00
Norman Feske
5b4e1915d8 framebuffer_session: accessors for buffer surfaces
This patch adds central and safe utilities for accessing the distinct
parts of the virtual framebuffer to relieve clients from pointer
calculations.

Issue #5351
2024-10-08 09:09:24 +02:00
Norman Feske
e738162bde framebuffer_session: alpha as Mode attribute
Propagate the want of an alpha channel as attribute of Framebuffer::Mode
instead of passing this property as a separate bool argument.

This clears the way for adding useful accessors for pixel/alpha/input
surfaces to the Mode type as a subsequent step.

Issue #5351
2024-10-08 09:09:23 +02:00