Commit Graph

13659 Commits

Author SHA1 Message Date
Stefan Kalkowski
f886acdcc6 qemu-usb: limit control transfer to 1 sec timeout
Fix genodelabs/genode#5376
2024-11-05 14:39:10 +01:00
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
8d50d320e2 nitpicker: drop superfluous abs motion events
This patch fixes focus-follows-mouse problem reported for Sculpt 24.10
when using no (operational) backdrop.

In the absence of a background, nitpicker wrongly delivered absolute
motion events to the most recently hovered client even after leaving the
client's area to a area occupied by no client. These motion events, in
turn, confused the internal consistency of the window managers
enter/leave tracking.

Fixes #5375
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
Norman Feske
cb5eb740c0 tool/create_builddir: prepend board-specific repos
Board-specific repositories must appear before generic repositories
(i.e., gems) in 'REPOSITORIES' to select board-specific sculpt/
configuration snippets over the defaults provided by gems. When listing
the board-specific repositories last, Sculpt images for the PinePhone or
MNT Reform may wrongly include launchers and presets of the PC version.
2024-10-30 15:07:55 +01:00
Norman Feske
05fd121975 News item for Sculpt 24.10
Issue #5356
2024-10-30 14:35:00 +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
aafd03ee74 nitpicker: validate pointer pos after reconfig
Since the panorama depends on the config, nitpicker needs to re-evaluate
the validity of the pointer position after each reconfiguration. If the
pointer position is no longer visible, pick a new visible one.

Issue #5352
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
Christian Prochaska
e1909da501 qt: apply a label to the QGenodeScreen Gui session
Fixes #5372
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
da6124c087 nitpicker: allow pointer move along screen edges
Issue #5352
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
71a3e228ae nitpicker: report pointer pos in hover report
Issue #5370
2024-10-30 08:14:55 +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
8ed87dae71 gui_fb: deliver initial mode signal if pending
This patch handles the case where a mode change happens in-between
session creation and the registration of the mode-signal handler,
which can result in a sporadic loss of response to mode changes.

Noticed while working on issue #5286.
2024-10-30 08:14:55 +01:00
Christian Helmuth
f94e0a3464 vbox6: restore initial window size of 1024x768 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
Christian Helmuth
fa267ecbb3 vbox6: robust tracking of mouse events in VMMDev
In VirtualBox 7 and recent 6.1 versions, the VMMDev is used to report
all mouse events if guest additions are used. Therefore, the
implementation aggregates these events, notifies the guest. and passes
the state on guest request. Unfortunately, the protocol does not support
to report consecutive button press and release events that may happen
between two guest requests, which results in events getting lost.

This commit patches the contrib sources to track pending mouse-button
events and notifies the guest if further state changes are pending after
updates are delivered.

Also, mouse-wheel events (dw, dz) are now accumulated between two guest
updates.

Fixes #5333
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
Sebastian Sumpf
b48ae5550a test/framebuffer: add 15px marker at 0x0 2024-10-30 08:14:55 +01:00
Sebastian Sumpf
db02e04d0c libdrm: move Gpu::Vram into separate namespace
Because the implemantations for Lima and Vivante are linked into a
single library we cannot have two Gpu::Vram classes in the same
namespace. In case this happens any methods using the same signature are
weak symbols and the first one found by ld will be used = undefined
behavior.

issue #5356
issue #5369
2024-10-30 08:14:55 +01:00
Norman Feske
08bf219b28 nitpicker: apply domain constraints to GUI info
If a <domain> is constrained by 'width' or 'height' attributes, clip
the capture rects of the panorama info reported to the client. So the
client observes the constraint as window size.

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
Christian Prochaska
8985d8200e mesa: add 'u_format_unpack_neon.c'
Issue #5356
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
Norman Feske
f30bbb1472 nitpicker: restore Capture::Session::screen_size
Since #5352, the 'screen_size' RPC function returns a rectangle clipped
against the client's bounding box, which unfortunately prevents
screen-capturing applications from determining the actual screen size.
This patch restores the original behavior by clipping the panorama
against client-specific constraints w/o clipping against the client's
buffer size.

Fixes #5365
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
a25d19169b system_shell: adjust terminal RAM quota to work in 4k
A system shell that works in a small window stops working when maximized
on a 4k screen, because the terminal component runs out of RAM.

With the adjusted RAM quotas the system shell works on 4k displays.

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
73991e62ec nitpicker: clear capture buffer on policy change
This patch resets the pixel buffer shared with the capture client
whenever the capture policy is modified and reports the whole buffer as
affected rectangle on the next client call of 'capture_at'. It also
clips the dirty rectangles tracked via 'mark_as_dirty' against the
bounding box of the capture session to avoid the interference of
out-of-view parts of the panorama with a capture client.

Fixes #5368
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
2d7cd1c736 nitpicker: fix stale pixels on view removal
Sometimes when removing the popup window in Sculpt's Leitzentrale, a few
residual pixels remained. This is caused by the too strict coupling of
drawing and sync handling, effectively executing the fb-sync handler
repeatedly via 'Main::mark_as_damaged' during 'refresh_view' calls.
This tight coupling has two unwelcome effects. First, the sync handling
is executed more often than needed. Second, the sync handling (and fb
flushing) happens at intermediate states when view-stack changes are
applied (like changing a view geometry).

This patch uses a local signal handler to defer the execution of the
sync code until all drawing has finished.

Issue #5347
Issue #5356
2024-10-30 08:14:54 +01:00
Norman Feske
5f4e1db576 nitpicker: fix stale pixels in request-fb mode
When nitpicker is used as nitpicker client as is the case for Sculpt's
Leitzentrale, the time to sleep was tracked wrongly. The fb sync stays
alive only if a refresh operation is actually issued.

Issue #5347
Issue #5356
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
Norman Feske
e1be17b56d init: prevent double session-upgrade forwarding
Fixes #5367
2024-10-30 08:14:54 +01:00