There is no need to have both `BKE_pbvh_api.hh` and `BKE_pbvh.hh`.
This commit removes the latter, moving the few remaining items to
the former, which will be renamed later.
There are two issues here. First, the instanced panel freeing uses
the panel type after it's been freed a few lines up in this function.
Second, while panel types are registered for a single space type,
there are cases where they're used in multiple space/region types
anyway. Because of that, removing the dangling pointer of the freed
type from just the registered region & space type combination isn't
enough, we need to process all regions.
Pull Request: https://projects.blender.org/blender/blender/pulls/129676
Running Xcode memory graphs and the Instruments tools revealed
memory leaks caused, in the main, by over-retained objects.
This removes the unnecessary 'retains' and adds some asserts
to guard against over-retaining in the future.
There are a few memory leaks remaining involving PyUnicode_DecodeUTF8
but I am unable to identify the cause of these at this time.
Authored by Apple: James McCarthy
Pull Request: https://projects.blender.org/blender/blender/pulls/129117
Similar to 5e46e3d28a.
This commit replaces the C-API version of `OpenSubdiv_Evaluator`
with direct calls to `EvalOutputAPI`. This removes a level of indirection,
theoretically reducing function call overhead, but also making the whole
system easier to understand and easier to modify. The downside is
further spread of `WITH_OPENSUBDIV` into the code, but I think that
can be improved in the future relatively easily once more of this sort
of change is finished.
Pull Request: https://projects.blender.org/blender/blender/pulls/128278
There were lot of places, where timeline frame was incorrectly
mapped to frame index.
For deleting transitions, internal function `seq_retiming_add_key`
was added. It can work in frame index domain directly. This is to avoid
adding more complexity, since key positions are stored and re-created
later. Going through index to frame and back to index would introduce
float precision errors.
Pull Request: https://projects.blender.org/blender/blender/pulls/129305
This commit applies the following changes:
* Use c++ math types instead of float / int arrays where possible
* Use c++ math library where c++ math types are used
* Use const where possible
* Reduces scope of variables where possible
* Clarifies some variable naming (e.g. d prefix to _delta suffix)
The main areas left untouched are anything that is part of a public
function signature to avoid making changes in many different files at
once.
Pull Request: https://projects.blender.org/blender/blender/pulls/129576
The recent refactor of sculpt mode drawing (d601bf7e) removed usage of
the update frustum planes. This makes storage of this data inside the
PBVH also unnecessary. If this feature needs to be reimplemented in the
future, the storage of the planes should be outside of the PBVH `struct`
Pull Request: https://projects.blender.org/blender/blender/pulls/129649
`SculptSession` is a runtime struct that should really be stored in
`ObjectRuntime` instead of `Object`. Writing pointers to it in files
is misleading because the struct itself isn't serialized.
Pull Request: https://projects.blender.org/blender/blender/pulls/129233
The issue was that when inserting a key, other keys weren't deselected
even though that feature was implemented with 6ef77a0d22
That only happened if no FCurve channel was selected in the channel list.
It turns out, that the intent of using the animfilter flags from
the editor was wrong. The animfilter code already checks the editor
flags based on the `bAnimContext` that is passed in.
In fact the drawing code itself has hardcoded flags.
So the fix is to use hardcoded flags as well.
Pull Request: https://projects.blender.org/blender/blender/pulls/129636
The primitive tool didn't write to the `fill_opacity` attribute meaning that primitives wouldn't
show up correctly when using fill materials with a strength < 1.
The fix does multiple things:
* Make sure to create and write to the `fill_opacity` attribute if necessary.
* Remove the `skipped_attribute_ids` function and build the set of attributes to skip
where the attributes are written to. This is more flexible.
Pull Request: https://projects.blender.org/blender/blender/pulls/129644
Snapping the 3D cursor to a grease pencil selection would include
locked layers in the computation of the centroid. This is inconsistent
with 4.2.
The fix makes sure that we skip over layers that are locked.
Pull Request: https://projects.blender.org/blender/blender/pulls/129639
Previously, we initialized the layers and groups to hide masks.
For layers this makes sense, because they don't have any masks
by default, but for groups it makes more sense to show masks
by default for all the layers inside.
Pull Request: https://projects.blender.org/blender/blender/pulls/129528
In lieu of fixing the root cause, this commit requires the object to be
in object mode to duplicate particle systems, which works around the
issue because the problem is with particle edit data. This is a pragmatic
choice to focus development efforts on replacing the particle system.
Introduced with 5fff95f519.
There were several issues:
* The indices into `edit_points_vflag` are incorrect. They need to be offset
by the start offset of the drawing.
* The code was writing to `edit_points_vflag` even if the layer is locked.
But the size of the `edit_points_vflag` buffer is not counting locked layers.
Pull Request: https://projects.blender.org/blender/blender/pulls/129625
This reverts commit 0a70360eb6. That's
because it caused issue #129366 which is much more serious, and the
cause is not obvious so far. Another fix will be submitted for the
original issue.
Aligns Bezier handles when both handles are of the`BEZIER_HANDLE_ALIGN`
type. If the left handle is selected, then the right one is aligned
with it. The left handle is aligned with the right handle only if the
left handle is not selected.
Rel #105038
Pull Request: https://projects.blender.org/blender/blender/pulls/128726
Rotating an edge deletes the edge and creates a new edge
however these edges were being iterated over and had their indices
checked.
In practice this wasn't causing use-after-free errors because the
edges are part of a BLI_mempool, nevertheless using freed elements of a
memory-pool should be avoided.