Benjamin Otte [Sun, 25 Jun 2023 23:39:32 +0000 (01:39 +0200)]
vulkan: Pass bounds to texture op
This way the node can do the normalization (and maybe stop doing it
in the future).
Benjamin Otte [Sun, 25 Jun 2023 23:38:50 +0000 (01:38 +0200)]
vulkan: Add a Cairo upload node
... and use it for cairo nodes.
Benjamin Otte [Sun, 25 Jun 2023 22:29:13 +0000 (00:29 +0200)]
vulkan: Port opacity to new ops
Benjamin Otte [Sun, 25 Jun 2023 21:04:43 +0000 (23:04 +0200)]
vulkan: Add offscreen and color-matrix op
.. and use them for color-matrix operations.
Benjamin Otte [Sun, 25 Jun 2023 20:48:02 +0000 (22:48 +0200)]
vulkan: Split out a function
We'll need it elsewhere soon.
Benjamin Otte [Sun, 25 Jun 2023 20:16:37 +0000 (22:16 +0200)]
vulkan: Add an argument to vfunc
We need this in the future.
Benjamin Otte [Sun, 25 Jun 2023 15:32:58 +0000 (17:32 +0200)]
vulkan: Remove nonexisting function from header
Benjamin Otte [Sun, 25 Jun 2023 03:02:48 +0000 (05:02 +0200)]
vulkan: Split out a function
Making that function externally usable allows having render passes
managed externally.
Also remove a nonexisting function from the header.
Benjamin Otte [Sun, 25 Jun 2023 03:25:01 +0000 (05:25 +0200)]
vulkan: Use new ops for TextureScale nodes
Benjamin Otte [Sat, 24 Jun 2023 22:56:13 +0000 (00:56 +0200)]
vulkan: Add new renderops for texture rendering
Adds 2 ops:
- Upload
Creates a new Vulkan image and uploads data into it
- Texture
Draws a given image
These 2 ops are then used for GskTextureNodes.
Benjamin Otte [Sat, 24 Jun 2023 22:54:10 +0000 (00:54 +0200)]
vulkan: Split texture caching code
Instead of having one function that gets the image for the texture and
uploads it if it doesn't exist yet, make it 2 functions:
One to get the texture if it exists.
One to assign an uploaded image to the texture.
This way, we can potentially do the upload ourselves.
Benjamin Otte [Sat, 24 Jun 2023 20:29:47 +0000 (22:29 +0200)]
vulkan: Actually run the op_finish()
It's a no-op for all current ops, so it isn't really necessary. But
that's about to change.
Benjamin Otte [Sat, 24 Jun 2023 20:23:04 +0000 (22:23 +0200)]
vulkan: Pass context, not uploader
We don't need the uploader when creating the image, only when uploading.
Benjamin Otte [Sat, 24 Jun 2023 02:49:39 +0000 (04:49 +0200)]
vulkan: Create the first real VulkanOp
Split out the scissor op into its own implementation as a proof of
concept of how ops are meant to look when they are actually working.
Benjamin Otte [Sat, 24 Jun 2023 02:09:56 +0000 (04:09 +0200)]
vulkan: Allocate render ops differently
Allocate the memory up front instead of passing the Op into it.
This way, we can split ops into their own source file and use
init/finish style to use them.
Benjamin Otte [Sat, 24 Jun 2023 02:00:02 +0000 (04:00 +0200)]
vulkan: Invent a new abstraction
GskVulkanOp is meant to be a proper abstraction of operations
the Vulkan renderer will be doing.
For now it's an atrocious clunky piece of junk wedged into the
renderpass codebase.
It's so temporary that I didn't even adjust indentation of the code.
Benjamin Otte [Fri, 23 Jun 2023 03:08:17 +0000 (05:08 +0200)]
vulkan: Use the actual RenderOp type
... instead of the generic one.
This is again preparation for future changes.
Benjamin Otte [Fri, 23 Jun 2023 02:40:05 +0000 (04:40 +0200)]
vulkan: Use a byte array for render ops
This allows allocating only as much memory as is needed for each op.
We don't do that yet, this is still preparation.
Benjamin Otte [Fri, 23 Jun 2023 02:22:49 +0000 (04:22 +0200)]
vulkan: Split out a function
This is preparation for future changes.
Emmanuele Bassi [Fri, 14 Jul 2023 14:04:47 +0000 (14:04 +0000)]
Merge branch 'dboles/EventControllerKeyModifiersDocs' into 'main'
EventControllerKey: doc fixes re Modifiers
See merge request GNOME/gtk!6186
Daniel Boles [Fri, 14 Jul 2023 13:22:57 +0000 (14:22 +0100)]
EventControllerKey: Remove redundant/unliked "See"
Saying "See [Thing]" is not very helpful without it being a link to
Thing, and we already get that for free as the "Type:" of the param.
Daniel Boles [Fri, 14 Jul 2023 13:22:25 +0000 (14:22 +0100)]
EventControllerKey: Remove wrong signal arg, which
caused the resulting parameter to be called keyval, but it must be state
Ekaterine Papava [Fri, 14 Jul 2023 11:48:35 +0000 (11:48 +0000)]
Update Georgian translation
Emmanuele Bassi [Thu, 13 Jul 2023 23:40:03 +0000 (23:40 +0000)]
Merge branch 'nielsdg/fix-sectionmodel-signal-doc' into 'main'
sectionmodel: Fix GIR comment for sections-changed
See merge request GNOME/gtk!6185
Niels De Graef [Thu, 13 Jul 2023 23:03:21 +0000 (01:03 +0200)]
sectionmodel: Fix GIR comment for sections-changed
Make sure to end the signal name with a colon so GIR recognizes the
signal. This should also fix the problem that the documentation for that
signal is currently missing in the rendered gi-docgen output.
Benjamin Otte [Thu, 13 Jul 2023 13:19:29 +0000 (13:19 +0000)]
Merge branch 'vulkan-resize-fix' into 'main'
vulkan: Wait for device to be idle before create/recreating swapchain
See merge request GNOME/gtk!6183
José Roberto de Souza [Wed, 12 Jul 2023 20:26:27 +0000 (13:26 -0700)]
vulkan: Wait for device to be idle before create/recreating swapchain
Wait for device to be idle because this function is also called in
window resizes.
And if we destroy old swapchain it also destroy the old VkImages,
those images could be in use by a vulkan render.
This fixes a issue reported in Mesa repository when running
GTK with Xe KMD.
Fixes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9044
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Matthias Clasen [Wed, 12 Jul 2023 20:11:46 +0000 (20:11 +0000)]
Merge branch 'fix-validate-crash' into 'main'
buildertool: Exit orderly
Closes #5948
See merge request GNOME/gtk!6182
Matthias Clasen [Wed, 12 Jul 2023 19:49:11 +0000 (15:49 -0400)]
buildertool: Exit orderly
The validate command does need a display connection,
for better or worse. So exit in an orderly fashion
if we don't have one, instead of crashing.
Fixes: #5948
Benjamin Otte [Tue, 11 Jul 2023 00:04:17 +0000 (00:04 +0000)]
Merge branch 'wip/otte/for-main' into 'main'
textbtree: Remove unnecessary check
See merge request GNOME/gtk!6179
Benjamin Otte [Mon, 10 Jul 2023 23:38:02 +0000 (01:38 +0200)]
vulkan: Change the clip intersection check
Intersection with a roudned clip takes too long.
Instead, rename the function to may_intersect() to be clear about what
it does and then just intersect with the regular rectangle.
Benjamin Otte [Sat, 8 Jul 2023 08:42:07 +0000 (10:42 +0200)]
vulkan: intersect rects also for CLIP_NONE
If we don't clip anything, we stil have bounds - either the framebuffer
size or (more likely) the scissor rect. And we don't want to draw
anything that is outside these bounds.
So clip in those cases, too.
Stops gtk4-demo --run=listbox from trying to render the whole listbox
instead of only the visible parts.
Benjamin Otte [Mon, 10 Jul 2023 04:23:45 +0000 (06:23 +0200)]
rendernode: Implement proper GSK_IS_RENDERNODE()
Use G_TYPE_CHECK_INSTANCE_TYPE() instead of just checking for != NULL.
After all, this is a GTypeInstance.
Also fixes some gcc complaints when checking
node == NULL || GSK_IS_RENDERNODE (node)
which gcc was convinced would be always true.
Benjamin Otte [Mon, 10 Jul 2023 04:18:44 +0000 (06:18 +0200)]
textbtree: Remove unnecessary check
Since
a93614409ed79e1297469bdc1de3cb69663de71e we don't allocate the
stack anymore, so this NULL check is unnecessary now - and it's flagged
by compilers.
Matthias Clasen [Fri, 7 Jul 2023 01:15:56 +0000 (01:15 +0000)]
Merge branch 'dboles/image-notify-storage-type' into 'main'
Image—Notify when :storage-type changes from EMPTY
See merge request GNOME/gtk!6170
Emmanuele Bassi [Thu, 6 Jul 2023 23:57:16 +0000 (23:57 +0000)]
Merge branch 'wip/corey/listitemleak' into 'main'
gtklistitemmanager: Stop leaking item
Closes #5940
See merge request GNOME/gtk!6171
Corey Berla [Thu, 6 Jul 2023 23:24:29 +0000 (16:24 -0700)]
gtklistitemmanager: Stop leaking item
Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/5940
Daniel Boles [Thu, 6 Jul 2023 22:03:20 +0000 (23:03 +0100)]
Image—Notify when :storage-type changes from EMPTY
PROP_STORAGE_TYPE was only notified if it was changing *to* EMPTY, in
gtk_image_clear_internal(). We did not notify when it changes *from*
EMPTY to something non-empty. We should as not doing so is confusing,
e.g. if a user wants to bind :storage-type to :visible if non-empty,
which I just did! So, in functions that apply an ImageType, now notify.
Also do so in gtk_image_set_from_definition, declared in imageprivate.h,
even though none of the function there are currently used anywhere.
(Should they be removed?)
Yosef Or Boczko [Thu, 6 Jul 2023 09:38:02 +0000 (09:38 +0000)]
Update Hebrew translation
Matthias Clasen [Wed, 5 Jul 2023 23:38:38 +0000 (23:38 +0000)]
Merge branch 'wip/carlosg/switch-stylus-buttons' into 'main'
gdk/wayland: Switch behavior of BTN_STYLUS/STYLUS2 as middle/right click
Closes #5935
See merge request GNOME/gtk!6168
Carlos Garnacho [Wed, 5 Jul 2023 14:24:03 +0000 (16:24 +0200)]
gdk/wayland: Switch behavior of BTN_STYLUS/STYLUS2 as middle/right click
This mapping of stylus evdev input event codes into GDK button numbers
makes gdk/wayland inconsistent with gdk/x11, so depending on the backend
the same button middle-click pastes or right-click pops up menus.
Make the wayland backend consistent with X11, so that a GNOME wayland
session gets these buttons consistently mapped across all kinds of
clients.
Closes: https://gitlab.gnome.org/GNOME/gtk/-/issues/5935
Daniel Boles [Wed, 5 Jul 2023 11:07:33 +0000 (12:07 +0100)]
GdkTexture: Don't mention private new_from_surface
The stuff about Cairo Surfaces is in gdktextureprivate.h, & so end users
will not be able to use them; we shouldn't confuse by implying they can.
Daniel Boles [Wed, 5 Jul 2023 11:01:43 +0000 (12:01 +0100)]
docs/list-widget: links, DirList, correct Sections
* Add links to various symbols.
* Mention DirectoryList in the "ready-made choices available" section.
* Don't say that GridView can display headers: it makes no attempt to.
Matthias Clasen [Wed, 5 Jul 2023 10:57:45 +0000 (10:57 +0000)]
Merge branch 'ebassi/issue-5934' into 'main'
Lower the Python requirement
Closes #5934
See merge request GNOME/gtk!6167
Emmanuele Bassi [Wed, 5 Jul 2023 09:13:47 +0000 (10:13 +0100)]
Do not use bleeding edge Python
The match operator was added in Python 3.10, which is a bit too new for
some downstreams.
While at it, let's fix the flake8 errors and warnings.
Fixes: #5934
Emmanuele Bassi [Wed, 5 Jul 2023 09:12:20 +0000 (10:12 +0100)]
Add flake8 configuration file
Ignore long lines; most of our Python scripts generate code or other
types of files, which makes long lines a necessity.
We should validate all our Python script in our CI as well.
Daniel Boles [Tue, 4 Jul 2023 21:42:50 +0000 (22:42 +0100)]
AlertDialog: Remove spurious/unmatched backtick
Daniel Boles [Tue, 4 Jul 2023 18:44:56 +0000 (19:44 +0100)]
ListBase: Fix a typo
Matthias Clasen [Mon, 3 Jul 2023 23:37:36 +0000 (23:37 +0000)]
Merge branch 'update-uac-script-format' into 'main'
tools/generate-uac-manifest.py: Fix formatting (unify with copy in GLib)
See merge request GNOME/gtk!6164
Benjamin Otte [Mon, 3 Jul 2023 20:40:30 +0000 (20:40 +0000)]
Merge branch 'wip/otte/for-main' into 'main'
gsk: Catch values < 0 before bad things happen
See merge request GNOME/gtk!6165
Benjamin Otte [Mon, 3 Jul 2023 18:51:51 +0000 (20:51 +0200)]
testsuite: Add a test for mask out of bounds effects
Inverted alpha masks have an effect on the source, even if the mask
doesn't cover the source at all - or worse, is completely clipped out.
The GL renderer handles this fine, but Cairo and Vulkan had
optimizations that got this wrong.
Benjamin Otte [Mon, 3 Jul 2023 18:45:53 +0000 (20:45 +0200)]
gsk: Fix luminance in Cairo and GL renderer
In particular, fix the combination of luminance and alpha. We want to do
mask = luminance * alpha
and for inverted
mask = (1.0 - luminance) * alpha
so add a test that makes sure we do that and then fix the code and
existing tests to conform to it.
Benjamin Otte [Mon, 3 Jul 2023 05:14:53 +0000 (07:14 +0200)]
rendernode: Work around a Cairo bug
When color-matrix modifying a clear surface, the surface would remain
clear according to Cairo.
That's very unfortunate when we prepare a mask for inverted-alpha
masking.
Benjamin Otte [Mon, 3 Jul 2023 02:45:20 +0000 (04:45 +0200)]
build: Include the right things
If we build our own targets, we need to include those.
This is only relevant when adding new shaders because meson will
complain that the (unused) sources don't exist as it tries to include
those.
And that will make the build.ninja file not be generated which would
have build those shaders and would have allowed to copy them into the
sources.
Note that this makes builds with glslc not care about all the shader
files being included with the sources, but we have CI to check that.
Benjamin Otte [Mon, 3 Jul 2023 02:44:25 +0000 (04:44 +0200)]
rendernode: Mask nodes with different modes are different
So treat them as such.
Fixes the node editor not updating when I edit the mask mode.
Benjamin Otte [Sun, 2 Jul 2023 04:28:29 +0000 (06:28 +0200)]
gsk: Catch values < 0 before bad things happen
In particular, catch radius values being < 0 by return_if_fail()ing in
the rendernode creation code, and by erroring out in the rendernode
parser.
I try too much dumb stuff in the node editor.
Benjamin Otte [Sat, 1 Jul 2023 20:37:05 +0000 (22:37 +0200)]
glcontext: Fix typo in Apple extension name
Matthias Clasen [Mon, 3 Jul 2023 18:56:49 +0000 (14:56 -0400)]
Post-release version bump
Matthias Clasen [Mon, 3 Jul 2023 18:12:31 +0000 (14:12 -0400)]
4.11.4
Chun-wei Fan [Mon, 3 Jul 2023 04:42:42 +0000 (12:42 +0800)]
tools/generate-uac-manifest.py: Fix formatting
As this script is now also used in GLib, unify the formatting between
GLib and GTK. Make the formatting of the script conformant to the
Black[1] tool, as GLib requires, and add a copyright header to this
script.
[1]: https://black.readthedocs.io/en/stable/, see also
$(glibsrcroot)/.gitlab-ci/run-bash.sh
Matthias Clasen [Sat, 1 Jul 2023 18:06:19 +0000 (18:06 +0000)]
Merge branch 'fix_atcontext_refleaks' into 'main'
a11y: Fix some GtkATContext reference leaks
See merge request GNOME/gtk!6160
Barnabás Pőcze [Fri, 30 Jun 2023 04:27:35 +0000 (06:27 +0200)]
a11y: Fix some GtkATContext reference leaks
`gtk_accessible_get_at_context()` is transfer-full, so the returned
reference needs to be dropped. This was missing in a couple places.
Chun-wei Fan [Fri, 30 Jun 2023 04:33:08 +0000 (04:33 +0000)]
Merge branch 'gdk-win32-input-fixes' into 'main'
GdkWin32 input fixes
Closes #5877
See merge request GNOME/gtk!6131
Matthias Clasen [Fri, 30 Jun 2023 01:50:07 +0000 (01:50 +0000)]
Merge branch 'wip/chergert/map-as-sectionmodel' into 'main'
maplistmodel: implement GtkSectionModel
See merge request GNOME/gtk!6154
Matthias Clasen [Fri, 30 Jun 2023 01:30:11 +0000 (21:30 -0400)]
Add section model tests for GtkMapListModel
Matthias Clasen [Fri, 30 Jun 2023 00:51:26 +0000 (20:51 -0400)]
maplistmodel: Handle the ::sections-changed signal
Wrapper section models need to listen to and pass
on the ::sections-changed signal from the underlying
model.
Daniel Boles [Thu, 29 Jun 2023 13:33:29 +0000 (14:33 +0100)]
Image: Fix missing closing backtick
Matthias Clasen [Thu, 29 Jun 2023 10:26:41 +0000 (10:26 +0000)]
Merge branch 'dboles/gtk-demo_dnd_dark' into 'main'
gtk-demo/dnd: Fix, generalise detecting dark theme
See merge request GNOME/gtk!6157
Matthias Clasen [Wed, 28 Jun 2023 23:31:41 +0000 (23:31 +0000)]
Merge branch 'matthiasc/for-main' into 'main'
build: Try harder to work with nongnu ld
See merge request GNOME/gtk!6159
Matthias Clasen [Wed, 28 Jun 2023 20:54:34 +0000 (16:54 -0400)]
build: Try harder to work with nongnu ld
Only try to be fast with gnu ld.
Daniel Boles [Wed, 28 Jun 2023 13:40:06 +0000 (14:40 +0100)]
gtk-demo/dnd: Fix, generalise detecting dark theme
Our default theme is now Default, not Adwaita, & HighContrastInverse was
renamed to Default-hc. So these checks did not work anymore. Rather than
hard-coding the new names, & possibly running into the same issue again,
we can just look for the convention of appending -dark to the theme name
and/or the Settings:prefer-dark-theme prop. The latter, we can & likely
SHOULD also apply to all themes - not just ours as before. We also check
for the :dark suffix as that means the theme variant - & before checking
GtkSettings check the GTK_THEME env var, just as GtkSettings itself does
Matthias Clasen [Wed, 28 Jun 2023 12:06:49 +0000 (12:06 +0000)]
Merge branch 'matthiasc/for-main' into 'main'
build: Move objcopy checks to one place
Closes #5672
See merge request GNOME/gtk!6156
Matthias Clasen [Wed, 28 Jun 2023 11:12:07 +0000 (07:12 -0400)]
build: Look for ld.bfd
The objcopy+ld approach to fast resource building
relies on behavior that is specific to the binutils
linker, and does not work with the llvm one.
Therefore, check for ld.bfd. We still fall back
to trying with just ld, since I'm not 100% sure
if binutils unconditionally installs ld.bfd.
Fixes: #5672
Matthias Clasen [Wed, 28 Jun 2023 11:11:01 +0000 (07:11 -0400)]
build: Move objcopy checks to one place
We were doing the same thing in three places.
Move it to the toplevel meson.build, so we
can change it in one place.
Matthias Clasen [Wed, 28 Jun 2023 10:47:32 +0000 (06:47 -0400)]
Updates
Matthias Clasen [Wed, 28 Jun 2023 09:57:04 +0000 (09:57 +0000)]
Merge branch 'fix_dropdown_set_expression' into 'main'
GtkDropDown: Force redisplay of the drop-down items after expression change
See merge request GNOME/gtk!6145
Lukáš Tyrychtr [Mon, 26 Jun 2023 13:45:48 +0000 (15:45 +0200)]
dropdown: Handle expression changes
The expression is used by the default factory, so we
need to track whether we are using the default factory
and recreate it if the expression changes.
Matthias Clasen [Wed, 28 Jun 2023 02:42:47 +0000 (02:42 +0000)]
Merge branch 'matthiasc/for-main' into 'main'
Plug a memory leak in gsk_render_node_serialize
See merge request GNOME/gtk!6155
Matthias Clasen [Wed, 28 Jun 2023 02:08:22 +0000 (22:08 -0400)]
ci: Ignore more leaks in dependencies
libxkbcommon shows up quite a bit in leak sanitizer
reports. Ignore it.
Matthias Clasen [Wed, 28 Jun 2023 01:54:15 +0000 (21:54 -0400)]
gsk: Plug a memory leak in mask node fallback
We were forgetting to free the mask pattern.
Found by asan.
Matthias Clasen [Wed, 28 Jun 2023 01:52:08 +0000 (21:52 -0400)]
gsk: Plug a memory leak in the gl renderer
Found by asan.
Matthias Clasen [Wed, 28 Jun 2023 01:45:24 +0000 (21:45 -0400)]
Plug a memory leak in gsk tests
Pointed out by asan.
Matthias Clasen [Wed, 28 Jun 2023 01:40:22 +0000 (21:40 -0400)]
Plug a memory leak in gsk_render_node_serialize
This was introduced in
0d6a6a5997d with named
textures.
Christian Hergert [Wed, 28 Jun 2023 01:08:20 +0000 (18:08 -0700)]
maplistmodel: implement GtkSectionModel
This just wraps the underlying GListModel if it is a GtkSectionModel.
Benjamin Otte [Tue, 27 Jun 2023 21:30:03 +0000 (21:30 +0000)]
Merge branch 'dboles/issue5922-DropTarget-reject-enter-critical' into 'main'
DropTarget: Fix critical if `reject()` drop before `::enter`
Closes #5922
See merge request GNOME/gtk!6152
Daniel Boles [Tue, 27 Jun 2023 20:03:10 +0000 (21:03 +0100)]
DropTarget: Fix critical if reject drop pre-enter
Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/5922
The docs of `Gtk.DropTarget::accept` say this:
> If the decision whether the drop will be accepted or rejected depends
> on the data, [`::accept`] should return `TRUE`, [`:preload`] should be
> set and the value should be inspected via the `::notify:value` signal,
> calling `gtk_drop_target_reject()` if required.
But this pattern causes a CRITICAL, given these steps:
* Create a `DragSource` and `DropTarget`
* Keep the default `::accept` handler and set `:preload` to `TRUE`
* Connect to `notify::value` and therein call `DropTarget.reject()`
* CRITICAL at `DropTarget.enter()`→`Drop.get_actions()` on NULL instance
We should let the documented case work without a CRITICAL or worse, null
deref. And per @otte on the bug, we should bail earlier before `::enter`
& setting `GTK_STATE_FLAG_DROP_ACTIVE`; neither should occur if rejected
This fixes that, by checking after `start_drop()` when notifications are
thawed, whether any handler has `reject()`ed & set our `drop` to `NULL`.
Daniel Boles [Tue, 27 Jun 2023 08:54:52 +0000 (09:54 +0100)]
DropTarget: Fix `if` block indented 1 step too far
Matthias Clasen [Tue, 27 Jun 2023 19:55:28 +0000 (19:55 +0000)]
Merge branch 'fix-asan-ifunc' into 'main'
Fix fp16 with asan
See merge request GNOME/gtk!6153
Matthias Clasen [Tue, 27 Jun 2023 19:16:12 +0000 (15:16 -0400)]
Fix fp16 with asan
The IFUNC resolvers that we are using here get
run early, before asan had a chance to set up its
plumbing, and therefore things go badly if they
are compiled with asan. Turning it off makes things
work again.
The gcc bug tracking this problem:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110442
Thanks to Jakub Jelinek and Florian Weimer for
analyzing this and recommending the workaround.
Matthias Clasen [Tue, 27 Jun 2023 18:46:28 +0000 (18:46 +0000)]
Merge branch 'wip/sadiq/fix-use-after-free' into 'main'
gldriver: Fix a possible use-after-free
See merge request GNOME/gtk!6151
Mohammed Sadiq [Mon, 26 Jun 2023 02:35:52 +0000 (08:05 +0530)]
gldriver: Fix a possible use-after-free
g_hash_table_insert() frees the given key if it already exists
in the hashtable. But since we use the same pointer in the
following line, it will result in use-after-free.
So instead, insert the key only if it doesn't exist.
Benjamin Otte [Tue, 27 Jun 2023 16:20:29 +0000 (16:20 +0000)]
Merge branch 'wip/otte/for-vulkan' into 'main'
vulkan: Generate vertex array headers from shaders
See merge request GNOME/gtk!6149
Matthias Clasen [Tue, 27 Jun 2023 11:24:08 +0000 (11:24 +0000)]
Merge branch 'matthiasc/for-main' into 'main'
gtk4-builder-tool: Fix naming
See merge request GNOME/gtk!6150
Matthias Clasen [Tue, 27 Jun 2023 11:09:04 +0000 (07:09 -0400)]
gtk4-builder-tool: Fix naming
We install the tool as gtk4-builder-tool, so that
is what it should call itself.
String change.
Benjamin Otte [Tue, 27 Jun 2023 04:45:31 +0000 (06:45 +0200)]
vulkan: Generate vertex array headers from shaders
The script is pretty dumb but it does its job.
Benjamin Otte [Tue, 27 Jun 2023 04:28:52 +0000 (06:28 +0200)]
vulkan: Rename crossfade => cross-fade
Preparation for the future.
Benjamin Otte [Tue, 27 Jun 2023 04:05:33 +0000 (06:05 +0200)]
vulkan: Rename blendmode to blend-mode
Preparation for future changes, nothing to see here.
Benjamin Otte [Mon, 26 Jun 2023 18:52:48 +0000 (18:52 +0000)]
Merge branch 'wip/otte/vulkan-for-main' into 'main'
vulkan: Add a pipeline cache
See merge request GNOME/gtk!6148
Benjamin Otte [Mon, 26 Jun 2023 03:10:16 +0000 (05:10 +0200)]
vulkan: Add a pipeline cache
Make the display handle the cache, because we only need one.
We store the cache in
$CACHE_DIR/gtk-4.0/vulkan-pipeline-cache/$UUID.$VERSION
so we regenerate caches for each different device (different UUID) and
each different driver version.
We also keep track of the etag of the cache file, so if 2 different
applications update the cache, we can detect that.
Vulkan allows merging caches, so the 2nd app reloads the new cache file
and merges it into its cache before saving.
Matthias Clasen [Mon, 26 Jun 2023 18:18:14 +0000 (18:18 +0000)]
Merge branch 'main' into 'main'
Add settable search match mode in dropdown
See merge request GNOME/gtk!6146