Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-03-13Cleanup: add BKE_pbvh_vertex_iter_begin to clang-formatPablo Dobarro
Reviewed By: JacquesLucke Differential Revision: https://developer.blender.org/D10707
2021-03-12Sculpt: Mask Init operatorPablo Dobarro
This operator initializes mask values for the entire mesh. It supports different modes for initializing those values, and more will be added in the future. The initial version supports generating a random mask per vertex, Face Sets or loose parts. These masks are useful for introducing variations in the model using the filters (both shapes and colors). Reviewed By: JacquesLucke Differential Revision: https://developer.blender.org/D10679
2021-03-12GPencil: Interpolate can use all keyframe types except breakdownAntonio Vazquez
Before only it was only possible interpolate frames of `Keyframe` type. Now all types except `Breakdown` can be used. `Breakdown` cannot be used because it would be impossible interpolate two times because the extremes of the interpolation would change and the clean operator would not work.
2021-03-12Docs: add doc-string for TransDataContainerCampbell Barton
2021-03-12Cleanup: const warningCampbell Barton
2021-03-12LibOverride Auto Resync: Add option to disable it in Experimental userpref.Bastien Montagne
Some older .blend files won't react nicely to auto-resync, they need to get manually fixed with `resync enforce` first.
2021-03-12Fix heap buffer overflow appending/linking from a blend fileSybren A. Stüvel
Add new function `blo_bhead_is_id_valid_type()` to correctly check the blend file block type. File block type codes have four bytes, and two of those are only in use when these blocks contain ID datablocks (like `"OB\0\0"`). However, there are other types defined in `BLO_blend_defs.h` that have four bytes, like `TEST`, `ENDB`, etc. The function `BKE_idtype_idcode_is_valid(short idcode)` was used to check for ID datablocks while reading a blend file. This only takes a 2-byte parameter, and thus its result is invalid for the 4-byte codes. For `TEST` blocks, it would actually consider it a `TE` block, which is a valid identifier for a Texture. This caused the heap buffer overflow, as the datablock is not a valid ID, and thus the bytes that were expected to form an ID name actually encode something completely different. Reviewed By: mont29 Differential Revision: https://developer.blender.org/D10703
2021-03-12Fix T82532: Sculpt fails to redo the first sculpt session strokeCampbell Barton
Sculpt undo relied on having a mode-changing undo step to properly apply changes. However this isn't the case with startup files or when mixing global undo steps with sculpt (see T82851, also fixed). Undo stepping logic follows image_undosys_step_decode_undo.
2021-03-12Fix another crash in LibOverride resync code.Bastien Montagne
Another case where newly overridden ID (stored in `newid` of its linked reference) gets immediately deleted in old broken overrides. Re T86501.
2021-03-12Cleanup: fix clang-tidy errors when COM_debug is active.Jeroen Bakker
2021-03-12Cleanup: Compiler warnings with COM_TM_NOTHREAD active.Jeroen Bakker
2021-03-12Cleanup: document `FileSelectAssetLibraryUID::type`Sybren A. Stüvel
No functional changes.
2021-03-12LibOverride: Add a new operation to Outliner to enforce resync of hierarchies.Bastien Montagne
This is basically done by ignoring override operations from old override affecting ID pointer properties, when the new (destination) one is not NULL. Fix T86501: New object added to overridden collection doesn't show up in linking file on Resync. This is more of a work-around actually, since there is no real way to fix the issue in a fully automated and consistent way, it is caused by older blender files being saved with 'broken' overrides. WARNING: This cannot ensure that some purposedly edited/overridden ID pointer properties won't be lost in the process.
2021-03-12Fix first part of T86501: Crash during resync process.Bastien Montagne
Code would end up freeing some of the newly created overrides, which were assigned to the matching linked ID's `newid` pointer, accessed again further down the code. Note that this is not a normal expected situation, and it won't give a proper resync result anyway, but it might happen in some complicated corner cases, and also quite often when dealing with older .blend files.
2021-03-12IDRemap: Add option to also remap internal runtime ID pointers.Bastien Montagne
In some cases (advanced, low-level), we also want to remap pointers like `ID.newid` or `ID.orig_id`. Only known case currently is `id_delete`, to avoid leaving potential access to freed memory. See next commit and T86501.
2021-03-12LibQuery: Add an option to process internal runtime ID pointers.Bastien Montagne
In some cases (advanced, low-level code) we also want to process ID pointers like `ID.newid` or `ID.orig_id`.
2021-03-12Fix T86455: vertex color baking issue with sculpt vertex colorsPhilipp Oeser
Baking to Vertex Colors would always bake to sculpt vertex colors (if such a layer is present) even if those are not enabled in the experimental preferences. This would bake without an error but leave the user without a result to look in the viewport. Now check if sculpt vertex colors are enabled and only bake to them in that case. Maniphest Tasks: T86455 Differential Revision: https://developer.blender.org/D10692
2021-03-12Cleanup: remove workaround for MSVC PyTypeObject declarationsCampbell Barton
This is no longer needed for MSVC-2017.
2021-03-12Cleanup: set the window manager to the updated context on loadCampbell Barton
While this happened to be corrected by code that runs afterwards, leaving this in an invalid state could cause problems in the future.
2021-03-12Cleanup: incorrect doxy section titleCampbell Barton
Also correct typo.
2021-03-12Cleanup: break out of loop earlyCampbell Barton
2021-03-12Cleanup: redundant flag checkCampbell Barton
2021-03-12Cleanup: redundant outliner includesCampbell Barton
2021-03-12Added missing file to last commit:Fabian Schempp
Nodes: Add Attribute Remove Node D10697
2021-03-12Nodes: Add Attribute Remove NodeFabian Schempp
This patch adds a node, that removes an attribute if possible, otherwise it adds an error message. Differential Revision: https://developer.blender.org/D10697
2021-03-11Nodes: Fix drag link from output to already linked Multi-Input SocketFabian Schempp
This patch fixes a visual bug related to connecting an output socket to a Multi-Input Socket, that already has a link to that same output. In this case, the drag link got a new index and snapped to a new position. This path makes the drag link snap to the same position as the first link between the two sockets. Differential Revision: https://developer.blender.org/D10689
2021-03-11Fix missing UI updates, caused by own earlier commitJulian Eisel
Caused by 46aa70cb486d. RNA would send property update notifiers with the owner ID as `reference` data. Since above's commit we'd only send the notifiers to editors if the reference data address matches the space's address. So editors wouldn't get the notifiers at all. The owner ID for space properties is always the screen AFAIK. So allow notifiers with the screen as reference to be passed to editors as well, think this is reasonable to do either way. For example, steps to reproduce were: * Open Asset Browser * Mark some data-blocks of different types as assets (e.g. object & its material) * Switch between the categories in the Asset Browser. The asset list wouldn't be updated.
2021-03-11Cleanup: remove unnecessary `const` from function declarationSybren A. Stüvel
No functional changes.
2021-03-11GPencil: Remove limitation to use only one Lattice modifierAntonio Vazquez
This limitation was necessary in older versions, but now can be removed.
2021-03-11Fix warning from own previous commitJulian Eisel
2021-03-11UI: Avoid unnecessary redraws of unrelated editors on space changesJulian Eisel
When adding a notifier, `reference` data can be passed. The notifier system uses this to filter out listeners, for example if data of a scene changes, windows showing a different scene won't get the notifiers sent to their listeners. For the `NC_SPACE` notifiers, a number of places also passed the space as `reference`, but that wasn't used at all. The notifier would still be sent to all listeners in all windows (and the listeners didn't use it either). Causing some unnecessary updates (e.g. see ed2c4825d3e2344). With this commit, passing a space will make sure the notifier is only sent to that exact space. Some code seems to already have expected that to be the case. However there were some cases that passed the space as `reference` without reason, which would break with this commit (meaning they wouldn't redraw or update correctly). Corrected these so they don't pass the space anymore.
2021-03-11Fix Asset Browser showing oudated list for changes done while browser is hiddenJulian Eisel
Steps to reproduce were: * Open an Asset Browser * "Mark Asset" on some data-block * Change the Asset Browser into a different editor (not File Browser!) * "Clear Asset" on the data-block again, or mark another asset * Change back to the Asset Browser, it will show an outdated list Now the file-browser reloads local file data after spaces were changed. Note that the current notifier code doesn't limit the space-change notifiers to the affected spaces, so changing any visible space will trigger this. That's an issue to be fixed separately.
2021-03-11GPencil: Fix unreported Fill fails if the stroke was taggedAntonio Vazquez
In some situations the strokes could be tagged before filling, so it's necessary to reset before.
2021-03-11Fix regression in 2cc5af9c553cfc00b7d4616445ad954597a92d94Campbell Barton
The check for undo-depth increment/decrement assumed a newly loaded window manager would have a different pointer. This broke bl_animation_fcurves test indirectly, the change to undo-depth caused the redo panel to attempt to popup in background mode - which isn't supported. Now the pointer is unchanged, the undo-depth is assumed to match the value used when calling the operator. The undo-depth is now properly maintained between file loads, which is an improvement on the original behavior which reset it.
2021-03-11Cleanup: spellingCampbell Barton
2021-03-11Fix T86431: Keep memory location of the window manager on file loadCampbell Barton
Keep the pointer location from the initial window-manager between file load operations. This is needed as the Python API may hold references to keymaps for e.g. which are transferred to the newly loaded window manager, without their `PointerRNA.owner_id` fields being updated. Since there is only ever one window manager, keep the memory at the same location so the Python ID pointers stay valid. Reviewed By: mont29 Ref D10690
2021-03-11WM: keep the current state when a blend fails to loadCampbell Barton
Previously many operations would run on file load, even if the file did not load. Pre/post load handlers were called, timers canceled, all undo data freed, editors exited ... etc. Now keep the blend file in it's current state. This simplifies updating this area of code as there is one less possible situation to account for.
2021-03-11Cleanup: split file read and setup into separate stepsCampbell Barton
Currently file loading performs almost all reloading logic even in the case loading the file fails, causing the file to be in a state that isn't well defined: undo is cleared, timers are canceled & scripts are re-registered.
2021-03-11Cleanup: file loading/recover checksCampbell Barton
- Don't set G.relbase_valid until the file is loaded. - Remove unnecessary string pointer comparison. - Remove unused filename being passed to 'setup_app_data'.
2021-03-11LibOverride: auto-run resync process on file reading.Bastien Montagne
Part of T83811 & D10649.
2021-03-11LibOverride: Add second part of auto-resync code.Bastien Montagne
`BKE_lib_override_library_main_resync` uses `LIB_TAG_LIB_OVERRIDE_NEED_RESYNC` tags set by RNA override apply code, and perform detection for the remaining cases (those were new overrides need to be created for data that was not present before in the library). And then it actually resync all needed local overrides. Part of T83811 & D10649.
2021-03-11LibOverride: First stage of detection of 'need resync'.Bastien Montagne
We can fairly easily detect some resync-needed cases when applying the overrides operations on a Pointer RNA property. This should cover all cases where an existing override's ID pointer is changed in its linked data. We still have to add code to detect when a not-yet-overridden linked ID needs to become overridden (because its relations to other data-blocks changed in a way that requires it). Part of T83811 & D10649.
2021-03-11LibOverride: Do not delete no-more-used overrides during resync if they are ↵Bastien Montagne
user-edited. Ultimately those will be listed with a special icon in the upcomming Outliner overrides view. Part of T83811 & D10649.
2021-03-11LibOverride: Add a utils to check if override has been user-edited.Bastien Montagne
Part of T83811 & D10649.
2021-03-11Cleanup: Add comment explaining plan for new Outliner tree-element code designJulian Eisel
Explains how we can get rid of implicit assumptions and `void *` arguments/storage in the future.
2021-03-11Cleanup: Pass anim-data directly to Outliner anim-data tree element constructorJulian Eisel
Rather than letting the `TreeElementAnimData` constructor take an ID from which we get the animation-data based on an assumption on how it's stored, let the constructor take the animation-data directly. That way we further centralize the assumptions on the data passed to the element creation to `tree_element_create()`. The following commit will add a comment explaining the plan to entirely get rid of those assumptions in the future.
2021-03-11Fix (unreported): crash on undo when using pinned id in spreadsheetJacques Lucke
Now the behavior is the same as in the properties editor, as far as I can tell.
2021-03-11Outliner: Add assert to make assumption for new code design explicitJulian Eisel
There was an implicit assumption that tree element types using the new code design set their name on creation. Use an assert to make this explicit. See f59ff9e03a633, which was an error because of this broken assumption.
2021-03-11Fix crash when showing NLA actions in the OutlinerJulian Eisel
Caused by 2e221de4ceee in combination with 4292bb060d59. In the former I forgot to set the name for NLA actions in the new code design, in the latter I made it an assumtion that tree element types using the new design set the name. The following commit will make this assumption explicit with an assert.
2021-03-11Fix failing assert when loading file with untraceable custom asset libraryJulian Eisel
When loading a file with an asset browser open, and it showed a custom asset library that can't be found currently (e.g. because the file is from somebody else), the `BLI_assert(0)` in `rna_FileAssetSelectParams_asset_library_get()` would fail. There was code to handle this case already, but unlike I thought it didn't run right after file read. Now it does.