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
2018-12-17Fix T58652: Crash editing shape keys weirdness with instancesSergey Sharybin
This is a second attempt to get the crash fixed. The original fix worked, but it was reverted by d3e0d7f0825. Now the logic goes as: - All pointers which we can not have shared (the ones which are owned by the runtime) are cleared. - The rest of runtime stays untouched. This seems to be enough to keep particles happy.
2018-12-14Fix broken particle distribution after recent fixSergey Sharybin
2018-12-04Fix for assert failure in material previewSergey Sharybin
All localized datablocks are not supposed to have animation data associated with them. There was an easy way to reproduce assert failure: toggle animation decorator for Viewport Display -> Color.
2018-11-09BKE_id_is_in_gobal_main > BKE_id_is_in_global_mainDalai Felinto
2018-11-07Cleanup/Refactor: move Main stuff into BKE's new main.c file (and header).Bastien Montagne
We already had a BKE_main.h header, no reason not to put there Main-specific functions, BKE_library has already more than enough to handle with IDs and library management!
2018-10-31UI/Unique ID name: add library ID name if present.Bastien Montagne
Also reshuffle a bit that whole code, did some renaming, `BKE_id_to_unique_string_key()` is now using same base code (instead of using whole library filepath...), etc.
2018-09-11Workspace: support reordering of workspaces from RMB menu.Brecht Van Lommel
Drag and drop will follow later, it's a bit complicated to make this work reliable in the current UI code.
2018-08-23Add helper to BKE_library to generate unique string key for an ID.Bastien Montagne
Basically just concatenates ID's name (including its IDtype code) and that library's name, if any. This must give unique string in a given Main database, suitable for GHash keys e.g.
2018-08-06Cleanup LIB_ID_COPY_ flags a bit, add missing comment.Bastien Montagne
2018-06-22Merge branch 'master' into blender2.8Bastien Montagne
Conflicts: source/blender/makesrna/intern/rna_image.c source/blender/makesrna/intern/rna_object.c source/blender/makesrna/intern/rna_object_force.c source/blender/makesrna/intern/rna_screen.c source/blender/makesrna/intern/rna_sculpt_paint.c source/blender/makesrna/intern/rna_space.c source/blender/python/bmesh/bmesh_py_types.c source/blender/python/generic/bpy_internal_import.h source/blender/python/intern/bpy_rna_anim.c source/blender/python/intern/gpu_offscreen.c
2018-06-22BKE_library: Add func to check an ID is actually in G_MAIN database.Bastien Montagne
2018-06-05Merge branch 'master' into blender2.8Bastien Montagne
Conflicts: source/blender/blenkernel/intern/blendfile.c source/blender/blenloader/intern/readfile.h source/blender/blenloader/intern/versioning_250.c source/blender/blenloader/intern/versioning_260.c source/blender/blenloader/intern/versioning_270.c source/blender/blenloader/intern/versioning_legacy.c source/blender/editors/render/render_shading.c source/blender/makesrna/intern/rna_movieclip.c source/blender/render/intern/source/pipeline.c source/blender/render/intern/source/voxeldata.c
2018-06-05Cleanup: use new accessors to blendfile path (Main.name).Bastien Montagne
2018-06-05Cleanup: add hleper functions to get filepath from Main.Bastien Montagne
This helps making things clearer and cleaner. Func returning filepath of G.main is separate, so that we can easily track its usages, and hopefully deprecate it at some point. Though that usage of G.main is likely the less evil one, you nearly always want current blendfile path in those cases anyway.
2018-05-31Merge branch 'master' into blender2.8Bastien Montagne
Conflicts: source/blender/editors/object/object_add.c source/blender/editors/object/object_select.c source/blender/editors/space_outliner/outliner_edit.c
2018-05-31Cleanup: get rid of last G.main usages in BKE library code.Bastien Montagne
2018-05-30ID copy: Add flag which allows custom data to reference original datablockSergey Sharybin
2018-05-14Fix T55031: add explicit copy flag to force deep-copying shapekey datablock ↵Bastien Montagne
with 'parent' one. Chose to change defaut behavior (0-flag one) here, for sake of consistency. Default behavior of simple BKE_id_copy() remains unchanged though.
2018-05-04ID management: add higher level BKE_id_new... helpers.Bastien Montagne
Those should be used in priority when you need to create either a new datablock in Main, or a new temp one. Lower level BKE_libblock_... should only be used when you need a very specific, uncommon behavior.
2018-05-03Fix for material/node tree localizationSergey Sharybin
The workaround removal was wrong, the whole id->adt of a local copy is to be NULL. But now instead of modifying original datablock, we tell library manager to not copy animation data.
2018-01-25Merge branch 'master' into blender2.8Campbell Barton
2018-01-25Cleanup: correct ATTR_NONNULL useCampbell Barton
2017-12-06Merge branch 'master' into blender2.8Sergey Sharybin
2017-12-06Library: Add flag top keep ID library pointer aroundSergey Sharybin
This only applies to ID being copied outside of bmain. Handy for cases when it is important to check if the copy corresponds to a data block coming from library. Example of that is proxy evaluation with copy on write. Thanks Bastien for review!
2017-11-29Preparing merge of id_override_static: add BKE_id_swap().Bastien Montagne
This function swaps the memory content of two data-blocks (of same type obviously), while preserving most of the ID 'header' itself. It is intended to be used to quickly and easily replace the data of an existing ID by another one, presumably a temporary 'working' one, without having to suffer from things like name changes, registering/removing from Main database, etc.
2017-11-05Merge branch 'master' into blender2.8Campbell Barton
2017-11-05Cleanup: remove paranoid NULL checkCampbell Barton
2017-08-07Refactor ID copying (and to some extent, ID freeing).Bastien Montagne
This will allow much finer controll over how we copy data-blocks, from full copy in Main database, to "lighter" ones (out of Main, inside an already allocated datablock, etc.). This commit also transfers a llot of what was previously handled by per-ID-type custom code to generic ID handling code in BKE_library. Hopefully will avoid in future inconsistencies and missing bits we had all over the codebase in the past. It also adds missing copying handling for a few types, most notably Scene (which where using a fully customized handling previously). Note that the type of allocation used during copying (regular in Main, allocated but outside of Main, or not allocated by ID handling code at all) is stored in ID's, which allows to handle them correctly when freeing. This needs to be taken care of with caution when doing 'weird' unusual things with ID copying and/or allocation! As a final note, while rather noisy, this commit will hopefully not break too much existing branches, old 'API' has been kept for the main part, as a wrapper around new code. Cleaning it up will happen later. Design task : T51804 Phab Diff: D2714
2017-08-07Refactor ID copying (and to some extent, ID freeing).Bastien Montagne
This will allow much finer controll over how we copy data-blocks, from full copy in Main database, to "lighter" ones (out of Main, inside an already allocated datablock, etc.). This commit also transfers a llot of what was previously handled by per-ID-type custom code to generic ID handling code in BKE_library. Hopefully will avoid in future inconsistencies and missing bits we had all over the codebase in the past. It also adds missing copying handling for a few types, most notably Scene (which where using a fully customized handling previously). Note that the type of allocation used during copying (regular in Main, allocated but outside of Main, or not allocated by ID handling code at all) is stored in ID's, which allows to handle them correctly when freeing. This needs to be taken care of with caution when doing 'weird' unusual things with ID copying and/or allocation! As a final note, while rather noisy, this commit will hopefully not break too much existing branches, old 'API' has been kept for the main part, as a wrapper around new code. Cleaning it up will happen later. Design task : T51804 Phab Diff: D2714
2017-06-14Merge branch 'master' into blender2.8Bastien Montagne
2017-06-14Make whole ID copying code use const source pointer.Bastien Montagne
Noisy change, but safe, and better do it sooner than later if we are to rework copying code. Also, previous commit shows this *is* useful to catch some mistakes.
2017-06-14Merge branch 'master' into blender2.8Sergey Sharybin
2017-06-14Remove unused bmain argument from BKE_libblock_free_dataSergey Sharybin
2017-06-14Merge branch 'master' into blender2.8Sergey Sharybin
2017-06-14Cleanup: Indentation got broken in previous commitSergey Sharybin
2017-06-14Merge branch 'master' into blender2.8Sergey Sharybin
2017-06-14Add utility function to free memory used by a datablockSergey Sharybin
This function is similar to BKE_libblock_free but does no DEG tagging or any extra things, just operates on memory.
2017-06-13Merge branch 'master' into blender2.8Sergey Sharybin
2017-06-13Add utility function to get size of given ID typeSergey Sharybin
Optionally it'll also give name used for memory allocation.
2017-06-09Probe: Add new object datablockClément Foucault
We went for a new datablock because blending probe functionality with empties was going to be messy.
2017-06-01Main Workspace IntegrationJulian Eisel
This commit does the main integration of workspaces, which is a design we agreed on during the 2.8 UI workshop (see https://wiki.blender.org/index.php/Dev:2.8/UI/Workshop_Writeup) Workspaces should generally be stable, I'm not aware of any remaining bugs (or I've forgotten them :) ). If you find any, let me know! (Exception: mode switching button might get out of sync with actual mode in some cases, would consider that a limitation/ToDo. Needs to be resolved at some point.) == Main Changes/Features * Introduces the new Workspaces as data-blocks. * Allow storing a number of custom workspaces as part of the user configuration. Needs further work to allow adding and deleting individual workspaces. * Bundle a default workspace configuration with Blender (current screen-layouts converted to workspaces). * Pressing button to add a workspace spawns a menu to select between "Duplicate Current" and the workspaces from the user configuration. If no workspaces are stored in the user configuration, the default workspaces are listed instead. * Store screen-layouts (`bScreen`) per workspace. * Store an active screen-layout per workspace. Changing the workspace will enable this layout. * Store active mode in workspace. Changing the workspace will also enter the mode of the new workspace. (Note that we still store the active mode in the object, moving this completely to workspaces is a separate project.) * Store an active render layer per workspace. * Moved mode switch from 3D View header to Info Editor header. * Store active scene in window (not directly workspace related, but overlaps quite a bit). * Removed 'Use Global Scene' User Preference option. * Compatibility with old files - a new workspace is created for every screen-layout of old files. Old Blender versions should be able to read files saved with workspace support as well. * Default .blend only contains one workspace ("General"). * Support appending workspaces. Opening files without UI and commandline rendering should work fine. Note that the UI is temporary! We plan to introduce a new global topbar that contains the workspace options and tabs for switching workspaces. == Technical Notes * Workspaces are data-blocks. * Adding and removing `bScreen`s should be done through `ED_workspace_layout` API now. * A workspace can be active in multiple windows at the same time. * The mode menu (which is now in the Info Editor header) doesn't display "Grease Pencil Edit" mode anymore since its availability depends on the active editor. Will be fixed by making Grease Pencil an own object type (as planned). * The button to change the active workspace object mode may get out of sync with the mode of the active object. Will either be resolved by moving mode out of object data, or we'll disable workspace modes again (there's a `#define USE_WORKSPACE_MODE` for that). * Screen-layouts (`bScreen`) are IDs and thus stored in a main list-base. Had to add a wrapper `WorkSpaceLayout` so we can store them in a list-base within workspaces, too. On the long run we could completely replace `bScreen` by workspace structs. * `WorkSpace` types use some special compiler trickery to allow marking structs and struct members as private. BKE_workspace API should be used for accessing those. * Added scene operators `SCENE_OT_`. Was previously done through screen operators. == BPY API Changes * Removed `Screen.scene`, added `Window.scene` * Removed `UserPreferencesView.use_global_scene` * Added `Context.workspace`, `Window.workspace` and `BlendData.workspaces` * Added `bpy.types.WorkSpace` containing `screens`, `object_mode` and `render_layer` * Added Screen.layout_name for the layout name that'll be displayed in the UI (may differ from internal name) == What's left? * There are a few open design questions (T50521). We should find the needed answers and implement them. * Allow adding and removing individual workspaces from workspace configuration (needs UI design). * Get the override system ready and support overrides per workspace. * Support custom UI setups as part of workspaces (hidden panels, hidden buttons, customizable toolbars, etc). * Allow enabling add-ons per workspace. * Support custom workspace keymaps. * Remove special exception for workspaces in linking code (so they're always appended, never linked). Depends on a few things, so best to solve later. * Get the topbar done. * Workspaces need a proper icon, current one is just a placeholder :) Reviewed By: campbellbarton, mont29 Tags: #user_interface, #bf_blender_2.8 Maniphest Tasks: T50521 Differential Revision: https://developer.blender.org/D2451
2017-04-13Datablock ID PropertiesAlexander Romanov
The absence of datablock properties "will certainly be resolved soon as the need for them is becoming obvious" said the [[http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.67/Python_Nodes|Python Nodes release notes]]. So this patch allows Python scripts to create ID Properties which reference datablocks. This functionality is implemented for `PointerProperty` and now such properties can be created with Python. In addition to the standard update callback, `PointerProperty` can have a `poll` callback (standard RNA) which is useful for search menus. For details see the test included in this patch. Original author: @artfunkel Alexander (Blend4Web Team) Reviewers: brecht, artfunkel, mont29, campbellbarton Reviewed By: mont29, campbellbarton Subscribers: jta, sergey, campbellbarton, wisaac, poseidon4o, mont29, homyachetser, Evgeny_Rodygin, AlexKowel, yurikovelenov, fjuhec, sharlybg, cardboard, duarteframos, blueprintrandom, a.romanov, BYOB, disnel, aditiapratama, bliblubli, dfelinto, lukastoenne Maniphest Tasks: T37754 Differential Revision: https://developer.blender.org/D113
2017-01-31Optimization: pass Main to BKE_library_foreach_ID_link() and use its relations.Bastien Montagne
Use Main->relations in BKE_library_foreach_ID_link(), when possible (i.e. IDWALK_READONLY is set), and if the data is available of course. This is quite minor optimization, no sensible improvements are expected, but does not hurt either to avoid potentially tens of looping over e.g. objects constraints and modifiers, or heap of drivers...
2017-01-31Add optional, free-after-use usages mapping of IDs to Main.Bastien Montagne
The new MainIDRelations stores two mappings, one from ID users to ID used, the other vice-versa. That data is assumed to be short-living runtime, code creating it is responsible to clear it asap. It will be much useful in places where we handle relations between IDs for a lot of them at once. Note: This commit is not fully functional, that is, the infamous, ugly, PoS non-ID nodetrees will not be handled correctly when building relations. Fix needed here is a bit noisy, so will be done in next own commit.
2016-12-12Cleanup: Rename BKE_libblock_relink, and move it to BKE_library_remap.hBastien Montagne
Was a waaaaayyyyy to much generic name for such a specific func, renamed to much more descriptive BKE_libblock_relink_to_newid(). In near future (few weeks, to limit as much as possible silent mismatch in branches), will rename BKE_libblock_relink_ex to BKE_libblock_relink, this is the real generic data-block relinking func!
2016-11-30Cleanup id->newid usage, initial work.Bastien Montagne
This aims at always ensuring that ID.newid (and relevant LIB_TAG_NEW) stay in clean (i.e. cleared) state by default. To achieve this, instead of clearing after all id copy call (would be horribly noisy, and bad for performances), we try to completely remove the setting of id->newid by default when copying a new ID. This implies that areas actually needing that info (mainly, object editing area (make single user...) and make local area) have to ensure they set it themselves as needed. This is far from simple change, many complex code paths to consider, so will need some serious testing. :/
2016-11-15Get rid of 'drivers unlinking' code in `BKE_libblock_free_data()`Bastien Montagne
This has nothing to do here (freeing is not unlinking/remapping!), and was actually redoing something already taken care of by `BKE_libblock_relink_ex()` call in `BKE_libblock_free_ex()`. Also, gives some noticeable speedup when removing datablocks with do_unlink=True, about 5 to 10% quicker e.g. when deleting all objects from a py console, in a big production file...
2016-11-15Avoid interface ID remapping when freeing the whole databaseSergey Sharybin
This makes heavy scenes to be freed almost instantly (so now quadbot scene takes only 0.06sec to free),
2016-11-15Avoid driver target remapping when freeing the whole databaseSergey Sharybin
Added BKE_libblock_free_data_ex() which takes special do_id_user argument which basically indicates whether main database was already taken care about not having "dead" pointers. Gives about 40% speedup of main database free with quadbot scene (3.4sec vs. 5.4 sec on quite powerful desktop).
2016-11-08Depsgraph: Use atomics to tag ID when evaluating driverSergey Sharybin
This is required since new dependency graph evaluates drivers in threads so it was possible to have some partially written ID tag there.