Commit Graph

150906 Commits

Author SHA1 Message Date
Sybren A. Stüvel
c64e13ecae Fix #141882: Undo with local asset in asset shelf crashes Blender (ASAN)
Replace a `StringRef` with `std::string`, so that a copy is made of the
grid item identifier.

This identifier is used on redraw, to correlate the newly-drawn items
with items from the previous redraw. Using a `StringRef` here was
problematic when there's local assets, as those can be freed & re-built
(which in the case of the report happens on save/undo). Because of this,
the reference got corrupted, and the map lookup would fail. The "old
items" map now has a copy of the identifier, ensuring it is independent
of the data it represents.

Co-authored by Julian Eisel.

Pull Request: https://projects.blender.org/blender/blender/pulls/141888
2025-07-14 11:43:52 +02:00
Bastien Montagne
d5fcf4dee5 I18N: Updated UI translations from git/weblate repository (555104b9e84c). 2025-07-14 11:32:01 +02:00
Sybren A. Stüvel
70ed5aca89 Fix #141828: Applying outdated PoseAssets crashes Blender
Gracefully handle the situation where an F-Curve in the pose asset targets
a bone that no longer exists.

Pull Request: https://projects.blender.org/blender/blender/pulls/141880
2025-07-14 11:20:13 +02:00
Sergey Sharybin
08ec4602a2 Fix #141768: VSE: Tabbing in/out of metastrips does not update strip cache
Regression caused by 9e4c26574a.

Add strip stack as a key to the final cache.

Use the pointer to the list of sequences, as it is the easiest one to
obtain in all places where it is needed. This is slightly different
from the code prior to the 9e4c26574a where strips.last() was used,
but it allows to use the same logic in the prefetch job.

Pull Request: https://projects.blender.org/blender/blender/pulls/141778
2025-07-14 11:08:39 +02:00
Omar Emara
62e0a9105a Fix #141864: Crash opening files with Alpha Over node
Blender will crash if a file with an Alpha Over node was saved in 4.4,
then in 4.5 alpha, then back to 4.4. This is because the node was
missing forward compatibility code that allocates storage that was
necessary for the file to load correctly on older versions.

This was essentially missed in b62ef2cdd6 and 976efdcac9.

Pull Request: https://projects.blender.org/blender/blender/pulls/141873
2025-07-14 09:31:41 +02:00
Campbell Barton
2983ea4616 Cleanup: format 2025-07-13 16:25:25 +10:00
Campbell Barton
601b5f49f0 Disable fix for #141846
While this works in 4.5x it could lock the UI in some cases in main.
Avoid possible regressions & disable for now.
2025-07-13 15:43:22 +10:00
Campbell Barton
98a949f997 Fix #141846: Successive calls to change the cursor exits on Wayland
Calling wm.progress_update() from Python in a loop would exit
under Wayland.

Resolve by calling wl_display_dispatch after changing the cursor.
2025-07-13 04:56:39 +00:00
Philipp Oeser
481776a105 Fix #141727: Toggling overlays with enabled Retopology missing update
Meshes could still be present or missing when toggling overlays.

Toggling overlays alone does not trigger object syncing (which is needed
here since the visibility of active object might change).

So to resolve, trigger `rna_SpaceView3D_retopology_update` when toggling
overlays with enabled Retopology

Ref. 6fee44760a

Pull Request: https://projects.blender.org/blender/blender/pulls/141731
2025-07-11 13:19:18 +02:00
Jesse Yurkovich
6df4c14e4b Fix #141760: FBX export inadvertently modifies color property on lights
Broken with commit a12bce039f

The Blender `Color` type is treated as a reference in Python. Make a
`.copy` to ensure that changes are not made to the actual scene.

Pull Request: https://projects.blender.org/blender/blender/pulls/141762
2025-07-11 10:17:07 +02:00
Campbell Barton
29a7b60a40 Fix #141667: Erratic behavior with orthographic camera gizmo
Regression in 3.6 caused the orthographic camera gizmo to enter a
feedback loop where the gizmo range was changed while being interacted
with.

Resolve by preventing the range being updated during modal interaction.
2025-07-11 15:36:16 +10:00
Miguel Pozo
44faabdedd Fix 141742: Crash on startup due to failed shader compilation
Vulkan only.
Regression caused by 58a81f5c3a.
2025-07-10 17:59:07 +02:00
Michael Jones
7ec0adf033 Fix: Cycles MetalRT motion blur crash in some scenes with static objects
Crash encountered during top-level BVH setup of an Agent 327 asset. Object had no keyframes so `decomp` was empty. Use the object's transform instead.

Pull Request: https://projects.blender.org/blender/blender/pulls/141740
2025-07-10 17:42:49 +02:00
Xavier Hallade
05f27f594e Fix #141661: Crash when selecting oneAPI in preferences with legacy drivers
On systems with multiple Intel GPUs with a mix of recent and old
unsupported drivers (such as 101.3302), the Level-Zero stack may have
troubles initializing, leading to a crash while enumerating devices.

Luckily this condition actually leads to an exception we can catch,
as implemented here in this commit.

Pull Request: https://projects.blender.org/blender/blender/pulls/141674
2025-07-10 17:36:00 +02:00
Sybren A. Stüvel
c8dcbc32c4 Fix #141626: Refcount error when (un)assigning custom bone shapes
Fix the ID user count when changing `posebone.custom_shape`.

The code uses `reinterpret_cast<ID *>(pchan->custom)` instead of
`&pchan->custom->id`, as the former is `nullptr`-safe.

Pull Request: https://projects.blender.org/blender/blender/pulls/141726
2025-07-10 17:01:25 +02:00
Miguel Pozo
58a81f5c3a Fix #141725: EEVEE View Layers Functionality Broken
The ENUM_OPERATORS macro was outdated.
Update it an move it next to the enum declaration.
2025-07-10 16:58:34 +02:00
Bastien Montagne
f7c24c290e Fix #141415: crash when pasting node group node in some cases.
Refactor from e5a921ad9b did not account for the fact that some
`poll_instance` functions may require valid ID pointers in the checked
node. This is the case e.g. of the node group node, as it also checks
all of the nodes inside the referenced nodegroup.

This commit also fixes a logical mistake in the polling check, that
would systematically prevent pasting of nodes with no `poll_instance`
callback.

Pull Request: https://projects.blender.org/blender/blender/pulls/141729
2025-07-10 14:44:42 +02:00
Campbell Barton
8c77f96446 Fix: crash passing in --gpu-backend without an argument 2025-07-10 22:27:04 +10:00
Bastien Montagne
a7d7b808f0 Cleanup: Remove (unused) ubsan.supp file.
Committed by mistake with previous commit.
2025-07-10 14:14:05 +02:00
Bastien Montagne
1238cef46d LeakSanitizer: Exclude another error from Python (resize_compact). 2025-07-10 14:12:08 +02:00
Campbell Barton
841b3e9d81 Fix: avoid divide by zero in the "Stretch To" constraint
A zero scaled axis resulted in the matrix containing NAN values.
Use `safe_divide` to avoid this.

Ref !141654
2025-07-10 21:05:52 +10:00
Aras Pranckevicius
f6e2afb82a Fix #141715: VSE video proxies lose video rotation
ffmpeg_copy_display_matrix needs to be done after avcodec_parameters_from_context
call, since that one (re)initializes all the parameters.

Pull Request: https://projects.blender.org/blender/blender/pulls/141716
2025-07-10 11:42:24 +02:00
Sergey Sharybin
413d8e5406 Fix #141651: VSE: The Channel setting does not work independently in multiple areas
Make display channel part of the key for the final cache.

The prefetch uses display channel of 0, which is the default. It might
need to be adjusted, but it is unclear whether it was behaving different
prior to the 9e4c26574a.

Pull Request: https://projects.blender.org/blender/blender/pulls/141670
2025-07-10 11:35:39 +02:00
YimingWu
69da277dcb Fix #141693: Grease Pencil: Restore jitter behaviour
The line to get `jitter_settings_` was accidentally removed by
cac2806ee2. This patch adds that back so
strokes will still have the correct jitter settings when drawing.

Pull Request: https://projects.blender.org/blender/blender/pulls/141707
2025-07-10 11:03:07 +02:00
Bastien Montagne
26b8846d94 LeakSanitizer: Suppress errors in OpenEXR library.
This library generates a single recurrent leak report currently, likely
a badly handled global?

```
=================================================================
==192885==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 31 byte(s) in 1 object(s) allocated from:
    #0 0x7f8a5c9cf307 in operator new(unsigned long) (/lib64/libasan.so.6+0xb6307)
    #1 0x7f8a5b03a0ea in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_mutate(unsigned long, unsigned long, char const*, unsigned long) (/home/blender/git/blender-vexp/install_sanitizer/lib/libOpenEXR.so.32+0xef0ea)
SUMMARY: AddressSanitizer: 31 byte(s) leaked in 1 allocation(s).
======================================================================
```
2025-07-10 10:46:59 +02:00
Campbell Barton
9f666b3ca8 Fix #139982: Subdivide curves doesn't interpolate curve tilt
Correct bezier curve interpolation & support tilt for bezier & nurbs
curves.
2025-07-10 18:07:51 +10:00
Aras Pranckevicius
077bd15387 Fix #141652: python exception when adding VSE Fade
Keep invalidate_cache('COMPOSITE') working, and map that to invalidation
of final frame & intra-frame caches of the strip.

Pull Request: https://projects.blender.org/blender/blender/pulls/141714
2025-07-10 09:51:53 +02:00
Campbell Barton
68f559db5d Fix #141663: Wrong help-line displayed when rotating the camera
When transforming a camera show a helper line from the frame center.
2025-07-10 05:29:47 +00:00
Campbell Barton
2f2331d067 Tools: warn about duplicate authors in the author list generator 2025-07-10 12:49:08 +10:00
Campbell Barton
f72f5a2297 AUTHORS: de-duplicate 2025-07-10 12:48:33 +10:00
Campbell Barton
4a68512db9 Fix #141612: Boolean crash with NAN mesh vertex coordinates
Resolve crash caused from initializing `mpq3` values with NAN.

Ref !141655
2025-07-10 10:47:15 +10:00
Miguel Pozo
88f812bf9a Fix #141253: Bring back the global Draw lock
Alternative solution to #141392 / #141564.

As a recap, the DST global lock (which prevented running drawing code
from multiple threads concurrently) was removed for 4.5 (#134690).
One unforeseen issue is that Images (and their GPUTextures) are shared
across dependency graphs (and therefore multiple threads), meaning we
are running into data race issues with them.

@fclem did #141392 and I continued it #141564. However, this is only a
partial solution, parts of the GPUTexture API and the whole BKE_image
API are still unsafe.
Trying to solve all the possible underlying issues seems unrealistic for
4.5 given the time frame and that the extension of the code affected by
this issue is quite large.

So this PR just brings the 4.4 locking behavior instead, which, while
risky on its own, seems much safer to me than the alternative.

This effectively undoes the improvements from #134690 by disabling
concurrent rendering, but instead of reverting all the code, it just
ensures we hold the lock in the same places we did in 4.4.
This means there's some redundant code that is not technically needed
anymore, like the `submission_mutex`, but it's probably best to make as
few modifications as possible, given how close we are to release and
that this is only intended as a temporary measure.

Pull Request: https://projects.blender.org/blender/blender/pulls/141618
2025-07-09 15:11:29 +02:00
Alaska
d1d22ca484 Fix: Vulkan compositor tests do not run
This commit fixes a issue where GPU compositor tests would always run
with the default GPU backend, Metal for macOS, and OpenGL
for other operating systems.

Now tests correctly run on the defined GPU backend, allowing Vulkan
GPU compositor tests to correctly run with the Vulkan GPU backend.

Pull Request: https://projects.blender.org/blender/blender/pulls/141447
2025-07-09 14:30:50 +02:00
Thomas Dinges
82f75f22ef Release: Bump 4.5 to release candidate 2025-07-09 12:56:08 +02:00
Damien Picard
7d4f6faffd I18n: Translate missing node add search menu items
Some items in the node editors' add menus were not properly
translated. The affected items referenced an enum property on a node,
such as Math node's Operation.

Since some of those enums use a specific translation context, the same
context must be used when adding them to the search menus. The context
can simply be retrieved from the bl_rna prop itself.

In addition, some items use labels that are already translated
manually and do not need the auto translation, so disable that in
those cases (translate=False).

No new messages are added by this change.

Reported by Ye Gui in #43295.

Pull Request: https://projects.blender.org/blender/blender/pulls/141629
2025-07-09 12:00:36 +02:00
Omar Emara
23d06e9c9a Fix #141568: Implicit convert for single values return zeros
Implicit conversion for single values always return zero in GPU device.
That's because the conversion data was only stored on the CPU and not
uploaded to the GPU, so we ensure it gets uploaded to GPU.

Pull Request: https://projects.blender.org/blender/blender/pulls/141658
2025-07-09 10:43:03 +02:00
Julien Duroure
100ed60f2d Fix: Importer can fail with blender file browser recursive option enabled
The files property, provided by the blender file browser, contain
paths relative to the directory property. Use that instead of using
the filepath parent directory.
2025-07-09 09:44:10 +02:00
Jeroen Bakker
2170739ba3 Fix #141628: Vulkan: Crash when index buffer could not be allocated
Added an early exit when the index buffer could not be allocated. Most
likely when there is an out of memory issue.

Pull Request: https://projects.blender.org/blender/blender/pulls/141653
2025-07-09 08:57:57 +02:00
Campbell Barton
0d944c16c6 Fix: assertion filling curve caps with a zero normal vector
Don't attempt to fill curve caps when the direction vector is invalid.

This prevents the crash in #141612 however the root cause of that
report isn't directly related to curve filling.
2025-07-09 15:44:22 +10:00
Campbell Barton
3d6e9756c7 Fix #141400: Metaball tessellation unresponsive with a scaled parent
The check to prevent overly complex tessellation checked the objects
scale directly instead of the final evaluated scale.

Also corrects the scale check which wasn't accounting for negative axes.
2025-07-09 15:23:42 +10:00
Aaron Carlisle
5bf8edb589 Docs: Update RNA to user manual URL mapping 2025-07-09 00:53:41 -04:00
Jesse Yurkovich
a8f543f6a8 Fix: USD: Add MeshSequenceCache modifier for animated crease values
The mesh importer was only checking for animated positions, velocities,
and primvars when determining if a cache modifier needed to be used.
Extend this to crease values (and normals) too.

The added test ensures a base level of coverage here.

Related to: #141633

Pull Request: https://projects.blender.org/blender/blender/pulls/141643
2025-07-09 04:44:30 +02:00
Campbell Barton
85ad73809f AUTHORS: add 45 new authors 2025-07-09 01:22:00 +00:00
Sean Kim
90ad735943 Fix #141623: Subdivision Set operator occasionally fails when adding modifier
Introduced in ee67c098d9

Pull Request: https://projects.blender.org/blender/blender/pulls/141634
2025-07-09 00:00:17 +02:00
Jonas Holzman
82dc3f25a7 Fix #137750: Low timeline height when restoring area layout using different DPI
This commit fixes a bug where the timeline area height was clamped to
its minimum value when restoring an area layout saved on a non-HiDPI
screen on a HiDPI screen. In particular, this caused the default Blender
startup file timeline area to be wrongly clamped dwon on macOS when
using a HiDPI/Retina screen.

This was due to the `screen_geom_vertices_scale_pass` function using raw
`area->winy` value in the `facy > 1` case, which ensures the timeline
does not get expanded when resizing the window if its already at its
minimum height. When restoring the area layout, these `winy` values
were not yet refreshed, and still used the DPI scale of the screen
the layout was saved on. Which in case of macOS HiDPI screens caused
them to be two times smaller then the screen / other size values used
in the function.

This was fixed by using the `screen_geom_area_height()` instead, which
computes the area height from its screen geometry coordinates, and was
previously used in this function before being replaced by `winy`. The
comparaison now also uses a fixed value instead of `facy` which was
also subject to DPI differencies, see PR thread for more details

Pull Request: https://projects.blender.org/blender/blender/pulls/141154
2025-07-08 21:55:52 +02:00
Brecht Van Lommel
bfacc42651 Fix: EEVEE/Workbench crash rendering without an active object
Regression from 62568d16e5, this was crashing most of the EEVEE
and Workbench render tests.

Pull Request: https://projects.blender.org/blender/blender/pulls/141624
2025-07-08 18:38:41 +02:00
YimingWu
7c8b8b2457 Fix #141475: LineArt: Prevent image editor drawing when baking strokes
Line art bakes strokes in a separate thread, which will also update
depsgraph, and if an image editor is present, it will try to iterate all
the objects in the view layer and this is unsafe. Now line art will set
region drawing lock to prevent image editor from drawing while baking.

Pull Request: https://projects.blender.org/blender/blender/pulls/141551
2025-07-08 18:11:59 +02:00
Bastien Montagne
9e8ffef07b CMake: Further increase RAM threshold for regular compile jobs.
Not great, but the alternative solution (putting several 'main'
targets, like `bf_blenkernel`, into the heavy compile pool, would be
even worse).
2025-07-08 17:33:03 +02:00
Sybren A. Stüvel
fc32c26722 Fix #141323: Copy to Selected doesn't properly update on some Bone props
Fix an issue with Copy to Selected on bones, where an RNA pointer was
given an owner of the wrong type.

A pointer was constructed to a `Bone` (which is owned by the
Armature), but the owner was taken from the corresponding `PoseBone`
(which is owned by the Object), causing Armature "property update"
callbacks to be called without an actual Armature. This caused the
wrong data to be tagged for re-evaluation, which caused the issue.

Also f04bc75f8c affected the Copy to Selected on edit bones.

Co-authored by Philipp Oeser

Pull Request: https://projects.blender.org/blender/blender/pulls/141394
2025-07-08 17:10:54 +02:00
Hans Goudey
4eefd4d6dc Fix: Potential assert in curves AttributeStorage versioning
The runtime type map needs to be updated even if the CustomData
ends up being empty.
2025-07-08 10:04:01 -04:00