Commit Graph

80739 Commits

Author SHA1 Message Date
Benjamin Otte
32625381fa gsk: Deprecate GskGLShader and the rendernode
The new renderers don't support them due to the required complexity of
integrating them with Vulkan and the assumptions those nodes make about
the renderer (the GL renderer exports its internal APIs into the
GLShader).

There haven't been any complaints that I'm aware of since 4.14 was
released where the default renderer does not support the nodes, so usage
in public seems to be close to nonexistant.

The 2 uses I know of were workarounds about missing features in GTK that
have stopped since GTK now supports them:

1. GStreamer used in to do premultiplication when the old GL renderer
   did not do so in hardware but on the CPU.
2. Adwaita used it for masking before the mask node wa added in 4.10.
2024-07-04 21:28:06 +02:00
Matthias Clasen
53ac80d6c8 Merge branch 'matthiasc/for-main' into 'main'
wayland: Add debug spew

See merge request GNOME/gtk!7412
2024-07-04 02:19:54 +00:00
Matthias Clasen
2e9fcdad6e wayland: Add debug spew
Trying to track down ci failures from cursor theme loading.
2024-07-03 21:42:57 -04:00
Benjamin Otte
0f55b3bc18 Merge branch 'wip/otte/for-main' into 'main'
gpu: Split out the cache

See merge request GNOME/gtk!7411
2024-07-03 19:51:10 +00:00
Benjamin Otte
9c249fefc3 gpu: Improve periodic cache debug message
I was watching the log in my terminal and nothing happened.
And I wasn't sure if that was because nothing was printed or because the
same thing was printed every few seconds.

Fix that by printing a timestamp, so that in a few seconds something
else will be printed.
2024-07-03 20:36:56 +02:00
Benjamin Otte
eae7ee6c25 gpu: Track atlas differently
Previously we tracked the dead pixels, but that meant we didn't know the
alive pixels (because there's also unused pixels never accounted for).
And we would free the current atlas randomly due to that.

Now we track if any pixels are alive, and if so, we never gc the current
atlas.
2024-07-03 20:36:56 +02:00
Benjamin Otte
bf7f302ff5 gpu: gc atlas, too
After 60s, we gc the atlas, too. This ensures that after that time, we
free all cache resources, so if an application gets moved to the
background, it will no longer use GPU resources. (Well, at least the
cache won't.)
2024-07-03 19:55:18 +02:00
Benjamin Otte
0d6981bd54 gpu: Make the cache track if it's empty
Only if a non-stale item is in the cache do we consider the cache not
empty.

Once the cache is empty, the device frees it and stops running the
periodic GC.
2024-07-03 19:55:18 +02:00
Benjamin Otte
148d7bcc25 gpu: Don't remove gc timeout unless cache is empty
If the cache isn't empty, we want to rerun the GC.
2024-07-03 19:55:18 +02:00
Benjamin Otte
71161b6352 gpu: Split cache and device
This is for 3 reasons:

1. Separation of concerns
   The device is meant to manage the Vulkan/GL device and check stuff
   like image sizes.
   Caching is not part of that.

2. Refcounting
   Images etc want to reference the device, but the cache wants to
   reference images. If the cache is the device, that's a refcycle.

3. Flexibility
   It's now easier to implement >1 cache, say one per depth or one per
   color state.
2024-07-03 19:55:15 +02:00
Benjamin Otte
dd33a2f280 rendernode: Make sure depth variable has enough bits
This will be relevant when we add new values to it.
2024-07-03 19:55:15 +02:00
Emmanuele Bassi
9d48d684a5 Merge branch 'ebassi/closure-fixes' into 'main'
Use the appropriate annotations for callback closures

See merge request GNOME/gtk!7410
2024-07-03 17:34:48 +00:00
Matthias Clasen
eb252d33a9 Merge branch 'expander-non-child' into 'main'
expander: Don't leave dangling a11y relations

See merge request GNOME/gtk!7409
2024-07-03 17:24:44 +00:00
Emmanuele Bassi
40bdf7e0d4 Use the appropriate annotation for callbacks
All the callback-related annotations must go on the callback parameter:

- scope type
- closure arg-name
- destroy arg-name
2024-07-03 18:04:27 +01:00
Matthias Clasen
6aba047ace expander: Don't leave dangling a11y relations
If we unparent the widget, we should sever a11y relations too.
Otherwise, an a11y implementation might follow them and be surprised
to find a parentless widget (and not in a good way).

Updated tests to not check the relation on an unexpanded expander.
2024-07-03 12:55:15 -04:00
Emmanuele Bassi
554045de6e Use the appropriate annotations for a callback closure
The (closure) annotation with an parameter is meant to be used on the
callback argument, and point to the user data argument.
2024-07-03 17:21:04 +01:00
Emmanuele Bassi
fa42081556 Use the appropriate annotations for callback closures
The unary (closure) annotation is for function pointer types; function
arguments that represent the user data to be passed to the callback are
annotated on the callback argument itself, with (closure arg-name).
2024-07-03 16:57:47 +01:00
Artur S0
54d0bcab71 Update Russian translation 2024-07-03 11:35:15 +00:00
Benjamin Otte
3539128d42 memoryformat: Split out a function
It's used in many places and attaching a name to what it does is useful.
2024-07-03 04:16:56 +02:00
Matthias Clasen
372c68a1c9 Merge branch 'matthiasc/for-main' into 'main'
gsk: Avoid a crash

See merge request GNOME/gtk!7408
2024-07-02 20:19:47 +00:00
Matthias Clasen
f9856d547f gsk: Avoid a crash
The subsurface in subsurface nodes can be NULL, so check before
poking at it.
2024-07-02 15:52:51 -04:00
Matthias Clasen
d0d8f6b5ee Merge branch 'popover-layout-check-fix' into 'main'
popover: Fix invalid width/height check in layout

Closes #6826

See merge request GNOME/gtk!7405
2024-07-02 03:02:18 +00:00
Matthias Clasen
28c91bf767 Merge branch 'ci-catch-segfaults' into 'main'
testsuite: Use catch as testwrapper

See merge request GNOME/gtk!7406
2024-07-02 02:59:46 +00:00
Matthias Clasen
a8bfe4e6f2 Merge branch 'popover-critical-fix' into 'main'
popover: Take shadow size into account in measure

Closes #5782 and #6796

See merge request GNOME/gtk!7403
2024-07-02 02:39:21 +00:00
Matthias Clasen
1f076432db ci: Use catch to capture stacktraces
For now, just try this out for the release build. If it works,
we can add it to the other jobs too.
2024-07-01 22:29:36 -04:00
Matthias Clasen
b6e79a7234 testsuite: Use catch as testwrapper
If we find a binary named catch, use it as test wrapper. This
will be used to capture stacktraces for crashes in ci.
2024-07-01 22:29:36 -04:00
Matthijs Velsink
68b05cadd8 popover: Fix invalid width/height check in layout
Commit a4cc95b2 introduced a check in layout() that closes the popover
if the width or height is smaller than the minimum width or height,
respectively. However, that was using gtk_widget_get_preferred_size(),
which finds out the minimum height for the minimum width and vice versa,
but not the minimum height for the layout width and vice versa. So,
certain popovers were not showing, even though they would not have
generated a critical to begin with.

To fix this, we copy the logic from gtk_widget_allocate() that generates
the criticals, and use that to check if we have a good width/height for
the popover native or not.

Closes #6826
2024-07-02 03:54:08 +02:00
Matthijs Velsink
93c5fb0b31 popover: Take shadow size into account in measure
Commit b9487997 introduced shadows for GtkPopover. These are correctly
subtracted while allocating the child widget, but the child is not
measured with those shadows subtracted (as is correctly done for the
arrow). This can give criticals, for example with some wrapping labels.

To fix this, we subtract the shadow size from the `for_size` before
passing it to the measure() of the child widget.

Closes #5782
Fixes #6796
2024-07-02 02:50:29 +02:00
Benjamin Otte
cfdbf95cb6 Merge branch 'wip/otte/for-main' into 'main'
gdk: Add GDK_N_DEPTHS to the enum

See merge request GNOME/gtk!7402
2024-07-02 00:33:21 +00:00
Benjamin Otte
b80e33b209 testsuite: Add tests for empty mask children
The compare tests use an empty container node, but running them with
--replay ends up with empty nodes in snapshots due to how containers are
replayed.

Related: !7396
Related: #6761
2024-07-02 02:04:06 +02:00
Benjamin Otte
9f7254a2d0 gl: Fix wrong drawing of mask node corner case
An empty mask with inverted-alpha means the source is visible.
2024-07-02 02:04:06 +02:00
Benjamin Otte
00e59c385e snapshot: no inverted-alpha mask means everything visible
That's what inverted does to us.

Related: !7396
Related: #6761
2024-07-01 20:30:25 +02:00
Benjamin Otte
43c2b53811 rendernode: Remove default empty draw function
No node ever wants to draw nothing. So make sure code crashes if the
draw func is not set instead of silently drawing nothing.
2024-07-01 20:30:25 +02:00
Benjamin Otte
c645acc214 memoryformat: Use the correct type
Our color values are float[4], so make them float[4].
2024-07-01 20:07:22 +02:00
Benjamin Otte
33d87bc22e gdk: Add GDK_N_DEPTHS to the enum
We are indexing arrays by the number of depths, and when adding depths
we don't want to forget to grow those arrays.
2024-07-01 20:07:22 +02:00
Matthias Clasen
a35f9102f2 Merge branch 'aspectframe_doc_fix_css_name' into 'main'
aspectframe: fix CSS name in docs

See merge request GNOME/gtk!7400
2024-06-30 12:57:46 +00:00
Matthias Clasen
525d773a30 Merge branch 'matthiasc/for-main' into 'main'
Matthiasc/for main

See merge request GNOME/gtk!7399
2024-06-30 12:54:15 +00:00
g.willems
d22812ae35 aspectframe: fix CSS name in docs 2024-06-30 14:06:31 +02:00
Matthias Clasen
1dc70ebb07 Post-release version bump 2024-06-29 21:45:28 -04:00
Matthias Clasen
297e4f6134 4.15.3 2024-06-29 21:24:51 -04:00
Matthias Clasen
4e73297cb8 Merge branch 'matthiasc/for-main' into 'main'
ci: Build demos and man pages for docs

See merge request GNOME/gtk!7398
2024-06-29 23:16:04 +00:00
Matthias Clasen
8fe16190b9 ci: Build demos and man pages for docs
That way, we should get all the man pages online.
2024-06-29 18:48:15 -04:00
Matthias Clasen
047ab10a5c Merge branch 'matthiasc/for-main' into 'main'
css: Update flags for array values properly

Closes #6814

See merge request GNOME/gtk!7397
2024-06-29 19:33:29 +00:00
Matthias Clasen
3c8e9231ea css: Fix up incomplete resolve plumbing
I didn't quite get it right for all our image subtypes at first.

Fixes: #6814
2024-06-29 15:07:22 -04:00
Matthias Clasen
cb9c57f223 css: Update flags for array values properly
When computing or resolving array values, update the
is_computed and contains_current_color flags as needed.
2024-06-29 15:05:36 -04:00
Matthias Clasen
253e8f0d64 Merge branch 'docs-gtk-fix' into 'main'
Fix docstring errors in GTK

See merge request GNOME/gtk!7300
2024-06-29 15:23:30 +00:00
Emmanuele Bassi
4aee2c3c41 Merge branch 'amolenaar/macos-keybindings' into 'main'
macOS: Add native keyboard shortcuts

Closes #3421

See merge request GNOME/gtk!7260
2024-06-29 14:24:47 +00:00
Matthias Clasen
2641aad318 Merge branch 'matthiasc/for-main' into 'main'
snapshot: Don't crash and don't leak

See merge request GNOME/gtk!7396
2024-06-29 14:18:25 +00:00
Matthias Clasen
346fcdb405 snapshot: Don't crash and don't leak
We were trying to handle a NULL mask child, unsuccessfully.

Pointed out by Niels De Graef.
2024-06-29 09:31:21 -04:00
Maximiliano Sandoval
9564e4c178
gtkprinter: Add docs for GtkPrintBackend 2024-06-29 15:14:33 +02:00