`BLO_read_data_address` should basically almost never be used. However,
this code is not trivial to update, and it has an active team working on
it, so for now just tagging the issue there.
Somewhat mirrors similar API in the write code, allows to do properly
typed-read calls on some 'generic' types like constraints, customdata,
etc., which have a 'TypeInfo' system storing their DNA struct names.
These type of non-owning pointers to other internal data (often used for
'active data') should not use 'refcounting' BLO API, but instead merely
retrieve the new address without marking it as used.
That address is supposed to be part of read data when processing the
actual storage, marking it as used by non-owning pointers is logically
wrong and _could_ potentially hide actual bugs in reading code.
All of these changes should be trivial, like using `string` read/write
code for strings, and a convert a few usages of 'raw data' read/write
calls to the 'struct' ones.
No behavioral changes expected here.
Previous namings in makesdna code was very confusing and inconsistent.
This commit unifies names accross the codebase as such:
- `struct` for the structs definitions data.
- `type` for the types definitions data.
- `member` for the struct members definitions data.
Structs and types definitions are not in synced for two reasons:
- types contains also definitions for basic types (int, float, etc.).
- types can be discovered before their struct definition (as members of
other structs).
This commit also groups all members of `SDNA` struct more logically (all
'structs' ones together, then all 'types' ones, then all 'struct
members' ones).
This commit should have no behavioral change at all.
Pull Request: https://projects.blender.org/blender/blender/pulls/125605
Expose arguments to use when creating a Python sub-process.
Python could fail to start when loaded in a customized environment,
with PYTHONPATH set for e.g. Blender ignores these and loads but a
Python sub-process attempts to use these environment variables which
may point to incompatible Python versions.
Resolve the root cause of #124731.
This PR changes the locations of the status icons shown on file item
thumbnails in the File Browser. Rather than show the file type at the
bottom-left of the thumbnail extent, show it at the item bounds. This
way they always are aligned with each other. This also changes the
current file indicator (top-right) similarly and adds an outline.
Pull Request: https://projects.blender.org/blender/blender/pulls/125625
Changes to the VSE strip handle mouse cursors when there are not
platform-specific versions. Trying to match the new design a bit
better, withing the the low resolution and aliased constraints of
the default mouse cursors.
Pull Request: https://projects.blender.org/blender/blender/pulls/125457
EEVEE writes wrong Cryptomatte meta data layer name. The view layer name
is always prepended to the Cryptomatte layer name, which can cause the
view layer name to be duplicated or the existence of view layer name
where it shouldn't be.
Old: cryptomatte/{hash}/name: string 'ViewLayer.ViewLayer.CryptoObject'
New: cryptomatte/{hash}/name: string 'ViewLayer.CryptoObject'
Pull Request: https://projects.blender.org/blender/blender/pulls/125515
Loading GPv2 files was crashing after modifiers were removed in #125102.
The modifier type info structs were still used for some internal
purposes (`struct_name`, `free_data`, `foreach_ID_link`), but the info
was not registered any more.
Since we only need a small portion of the typeinfo and because GPv2
modifiers will never change, using simple functions with switch
statements makes more sense here than bringing back fully fledged
typeinfo struct registration.
Pull Request: https://projects.blender.org/blender/blender/pulls/125663
Fixes a mismatch between Cycles and EEVEE when rendering a
Vector Math node in Refract mode with a normal vector of 0,0,0.
This mismatch first appeared after 8650068f0c which changed the
behaviour in Cycles, but not EEVEE.
Pull Request: https://projects.blender.org/blender/blender/pulls/125644
When a button had an operator attached and was using quick label
tooltips, the quick tooltip would include the Python path after the
label. In other cases like toolshelf buttons or buttons representing RNA
properties only the label would be shown, as expected.
Was visible in the tooltips of asset shelf items.
Rather than relying on subtle and rather implicit logic, use explicit
early exiting after the label fields are handled.
Having a default True return value in poll functions makes this
functions to succeed when they encounter errors or do not return any
value.
Ref !125628
Add an RNA path function to `AnimData`, so that
`repr(some_object.animation_data)` actually shows
`bpy.data["some_object"].animation_data`.
Previously it would only show the path of the owner ID, so
`bpy.data["some_object"]`, which is quite misleading.
Pull Request: https://projects.blender.org/blender/blender/pulls/125655
`paths_from_operator_properties` can return paths for both the explicit
operator `filepath` property as well as the `directory` content.
16129d6a attempted to fix this, but fails because one instance of a path
can be absolute and the other negative.
This patch makes sure to only compare absolute paths. Comparison uses
a separate list so that the final output can still mix absolute and
relative paths, but should only include each path once.
Pull Request: https://projects.blender.org/blender/blender/pulls/125608