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
2016-08-05Fix T49014: Append does not work in some cases.Bastien Montagne
There were actually two issues, one in recent changes and one existing... forever? I) id_make_local() would never proceed over indirectly linked data, which is required in specific 'append' context. II) BKE_image_copy() was not setting id->newid pointer of newly copied ID. About II: don't really know why image copy does its own cooking instead of using generaic ID copy helpers. Think this should be changed, but that would be after 2.78 now.
2016-08-04Cleanup: Use BKE_gpencil prefixJulian Eisel
This is a good point to change this as grease-pencil-v2 branch was just merged, so I hope merge conflicts with other branches are minimal.
2016-07-31Cleanup: spelling, styleCampbell Barton
2016-07-30Add copy/make_local to movieclip datablock.Bastien Montagne
As title says... Copying tracking data from movieclip was not the simplest thing... Reviewers: sergey Differential Revision: https://developer.blender.org/D2126
2016-07-29Fix T48971: Append creates linked image textures if object has shape keys.Bastien Montagne
Hating all those not-so-real ID types... Here there were two causes for the issue: 1) Linked shapekey ID was made local twice (once from mesh's make local, once by itself). Solved by not explicitely making shapekeys (nor any other non-linkable datatype) local. 2) Key->from 'back pointer' to its owner was messing 'still in used' detection of linked data after localization. Fixed with a hack for now, thinking correct solution might actually be to not consider this pointer at all in libquery ID looper, since it's nothing like and actual usage of mesh/lattice/curve. Again, shapekeys as ID is a joke, those should be mere struct, they have absolutely nothing to do in Main, period. :( Point 2) still demonstrates the need for better handling of IDs dependencies though, so far we only hit corner cases, but think there could also be valid cases generating those 'dependency cycles' between IDs (ID a using ID b which uses ID a), this will have to be addressed some day...
2016-07-28Make ID types typed enum, to easily spot missing ones in core switches of ↵Bastien Montagne
library.c Note that all deprecated/non-real ID types are kept as defines.
2016-07-28Fix T48965: Cannot Append Palette As Local Datablock.Bastien Montagne
Palette and PaintCurve were totally missing from id_copy/id_make_local switch... :/
2016-07-28Merge branch 'master' into blender2.8Campbell Barton
2016-07-25Cleanup: factorize the 'ensure local' part of datablock copy into a single ↵Bastien Montagne
BKE_id_copy_ensure_local function.
2016-07-25Merge branch 'master' into blender2.8Bastien Montagne
Conflicts: source/blender/blenkernel/BKE_particle.h source/blender/blenkernel/intern/library.c source/blender/blenkernel/intern/particle.c
2016-07-21BKE_library_make_local: clear behind us no more used linked datablocks.Bastien Montagne
This is really not elegant solution, but simplest for now. Ideally, we'd check all IDs first and directly 'make local' (without need to copy) those only indirectly used by other datablocks to be made local. Would also save us from the need of the extra 'lib_local' parameter recently added to id_make_local. Current code seems to work well enough though, and this is not high priority to fix imho.
2016-07-21Fix missing datablocks types in id_make_local.Bastien Montagne
Adding make_local for vfont/gpencil/group/freestyle linestyle/mask/scene/sound/text. Note that there are still some lose ends here, since some type are not handled by id_copy (Scene, Sound and VFont), which means in case a datablock of that type is used both directly and indirectly, localization will fail. Scene copying might be doable though (maybe with a simple new 'full shalow' mode to existing BKE_scene_copy?), not sure about sounds and vfonts... Situations where this becomes an issue should be very rare corner cases anyway.
2016-07-21Cleanup: get rid of lib_indirect_test_id.Bastien Montagne
id_make_local and later remapping are supposed to handle that already, and in a much much saner and more complete way.
2016-07-21Refactor/deduplicate even more make_local code (and fix part of T48907).Bastien Montagne
Turns out most BKE_foo_make_local datablock-specific functions are actually doing exactly the same thing, only two currently need special additional operations (object and brush ones). So added a BKE_id_make_local_generic instead of copying same code over and over. Also, changed a bit how make_local works in case we are localizing a whole library. We need to do the 'remap' step (from old linked ID to new local one) in the second loop, otherwise we miss some dependencies. This fixes main part of T48907.
2016-07-18Merge branch 'master' into blender2.8Campbell Barton
2016-07-14Fix T48844: Nodetrees of appended materials/textures/etc. were not correctly ↵Bastien Montagne
made local. Previous commits now allow to use id_make_local() here, as one would expect. Note that I also checked T36003 case, working fine as well with new code.
2016-07-14Correct recent own fix to id_clear_lib_data_ex().Bastien Montagne
Datablocks' nodetree are *never* in main, while shapekeys are...
2016-07-14Cleanup/refactor: handle shapekeys exactly like 'owned' nodetrees in ↵Bastien Montagne
make_local process.
2016-07-14Fix bad handling of datablock's nodetree id_clear_lib_data_ex().Bastien Montagne
Those data blocks are never shared, exactly as with shapekeys, much simpler to also clear their lib_data (especially since they have no user!).
2016-07-14Get rid of BKE_key_make_local().Bastien Montagne
This function was only a wrapper around id_clear_lib_data(), and shapekeys are not linkable nor shareable anyway, no point keeping this currently, was only adding confusion about shapekey 'status' as a datatblock.
2016-07-14Add option to id_make_local to force localization of datablock, even if not ↵Bastien Montagne
used locally. Will be used by link/append code.
2016-07-12Merge branch 'master' into blender2.8Bastien Montagne
Conflicts: intern/cycles/blender/addon/ui.py source/blender/blenkernel/BKE_particle.h source/blender/blenkernel/intern/dynamicpaint.c source/blender/blenkernel/intern/library.c source/blender/blenkernel/intern/object.c source/blender/blenkernel/intern/particle.c source/blender/blenkernel/intern/particle_distribute.c source/blender/blenkernel/intern/texture.c source/blender/editors/object/object_add.c source/blender/editors/object/object_relations.c source/blender/editors/physics/particle_edit.c source/blender/editors/physics/particle_object.c source/blender/editors/transform/transform_snap_object.c
2016-07-11Remove usercount handling from BKE_id_expand_local.Bastien Montagne
Idea looked good, but we have too much custom situations here (some half-fake-sub-ID being copied with their 'owner', animdata, etc.), let's let datablock copy functions handle that themselves. Also allows to safely call BKE_id_expand_local from all copy functions now (only when copying linked data).
2016-07-11Add an exception/hack to new BKE_id_expand_local(), to ignore actions ↵Bastien Montagne
datablock in its usercount handling. Reason is, typically those actions datablock usercounts have already been adjusted in BKE_animdata_copy() (called by generic iddata copy function). Think this needs to be reworked a bit too, there are way too much ways to copy animdata currently, it's rather confusing. But not the goal here, so for now we'll live with the hack!
2016-07-11Add generic 'BKE_id_expand_local' to BKE_library,Bastien Montagne
will be used by both make_local() and copy() datablock functions. Note that this new func make 'extern' all IDs used by localized datablock, not only refcounted ones as it used to be in each type's functions (with a few exceptions).
2016-07-10Refactor/enhance BKE_action_make_local().Bastien Montagne
Now using modern features from libquery/libremap areas. Provides same kind of fixes/improvements as for BKE_object_make_local() (see rBd1a4ae3f395a6).
2016-07-10Refactor/enhance ntreeMakeLocal().Bastien Montagne
Now using modern features from libquery/libremap areas. Provides same kind of fixes/improvements as for BKE_object_make_local() (see rBd1a4ae3f395a6).
2016-07-10Refactor/enhance BKE_image_make_local().Bastien Montagne
Now using modern features from libquery/libremap areas. Provides same kind of fixes/improvements as for BKE_object_make_local() (see rBd1a4ae3f395a6).
2016-07-10Refactor/enhance BKE_material_make_local() and BKE_image_make_local().Bastien Montagne
Now using modern features from libquery/libremap areas. Provides same kind of fixes/improvements as for BKE_object_make_local() (see rBd1a4ae3f395a6).
2016-07-10Refactor/enhance BKE_lamp_make_local() and BKE_camera_make_local().Bastien Montagne
Now using modern features from libquery/libremap areas. Provides same kind of fixes/improvements as for BKE_object_make_local() (see rBd1a4ae3f395a6).
2016-07-10Refactor/enhance BKE_brush_make_local() and BKE_speaker_make_local().Bastien Montagne
Now using modern features from libquery/libremap areas. Provides same kind of fixes/improvements as for BKE_object_make_local() (see rBd1a4ae3f395a6).
2016-07-10Refactor/enhance BKE_particlesettings_make_local().Bastien Montagne
Now using modern features from libquery/libremap areas. Provides same kind of fixes/improvements as for BKE_object_make_local() (see rBd1a4ae3f395a6).
2016-07-10Cleanup/Refactor: pass Main pointer to all ID copy functions.Bastien Montagne
Also allows us to get rid of a few _copy_ex() versions...
2016-07-09Refactor/enhance BKE_lattice_make_local(), and add BKE_lattice_copy_ex() ↵Bastien Montagne
that takes a Main as parameter. Now using modern features from libquery/libremap areas. Provides same kind of fixes/improvements as for BKE_object_make_local() (see rBd1a4ae3f395a6).
2016-07-09Refactor/enhance BKE_mball_make_local(), and add BKE_mball_copy_ex() that ↵Bastien Montagne
takes a Main as parameter. Now using modern features from libquery/libremap areas. Provides same kind of fixes/improvements as for BKE_object_make_local() (see rBd1a4ae3f395a6).
2016-07-09Refactor/enhance BKE_curve_make_local(), and add BKE_curve_copy_ex() that ↵Bastien Montagne
takes a Main as parameter. Now using modern features from libquery/libremap areas. Provides same kind of fixes/improvements as for BKE_object_make_local() (see rBd1a4ae3f395a6).
2016-07-09Cleanup to shapekeys' make_local (and copy) functions.Bastien Montagne
Mostly pass bmain and do not check for NULL key, keys' make_local is suspiciously simple in fact, but think until those behave like real full-featured IDs, it's doing enough!
2016-07-08Fix (unreported) broken shapekeys after 'make_local' of datablocks used both ↵Bastien Montagne
directly and directly. At first thought it was own recent work, but think issue is there since ages actually... Basically, id_make_local() would always localize mesh/curve/lattice shapekeys, even in case obdata localization actually made a local copy instead of localizing original datablock. This was causing shapekeys being localized twice, and other odd nasty effects.
2016-07-08Refactor/enhance BKE_mesh_make_local().Bastien Montagne
Now using modern features from libquery/libremap areas. Provides same kind of fixes/improvements as for BKE_object_make_local() (see rBd1a4ae3f395a6). Note: this enlightened broken case of proxy objects regarding make_local (and also whole remapping, in fact). Will be fixed in near future.
2016-07-08Refactor/enhance BKE_object_make_local().Bastien Montagne
Now using modern features from libquery/libremap areas. Also, it should handle much better cases where localized ID was also indirectly used by non-refcounting users (typical case: object used as modifier/constraint/whatever target from another linked object, previous code would not take those into account and just localize original object instead of making a local copy. Would result in local object used by linked one, which would be partially 'undone' on next file reload... Crappy behavior). And it fixes some obvious errors too (nullifying all proxy pointers unconditionnaly, some missing refcounted usages cases in extern_local_object(), etc.).
2016-07-08Refactor: pass Main to id_make_local.Bastien Montagne
Totally stupid to not pass it, and then let (some) BKE_foo_make_local() use G.main! Note: unused for now, much more refactoring still to come in make_local area!
2016-07-06Replace of (id->lib != NULL) check by meaningful macro.Bastien Montagne
Idea is to replace hard-to-track (id->lib != NULL) 'is linked datablock' check everywhere in Blender by a macro doing the same thing. This will allow to easily spot those checks in future, and more importantly, to easily change it (see work done in asset-engine branch). Note: did not touch to readfile.c, since there most of the time 'id->lib' check actually concerns the pointer, and not a check whether ID is linked or not. Will have a closer look at it later. Reviewers: campbellbarton, brecht, sergey Differential Revision: https://developer.blender.org/D2082
2016-06-23Merge branch 'master' into blender2.8Campbell Barton
2016-06-22ID-Remap - Step one: core work (cleanup and rework of generic ID datablock ↵Bastien Montagne
handling). This commit changes a lot of how IDs are handled internally, especially the unlinking/freeing processes. So far, this was very fuzy, to summarize cleanly deleting or replacing a datablock was pretty much impossible, except for a few special cases. Also, unlinking was handled by each datatype, in a rather messy and prone-to-errors way (quite a few ID usages were missed or wrongly handled that way). One of the main goal of id-remap branch was to cleanup this, and fatorize ID links handling by using library_query utils to allow generic handling of those, which is now the case (now, generic ID links handling is only "knwon" from readfile.c and library_query.c). This commit also adds backends to allow live replacement and deletion of datablocks in Blender (so-called 'remapping' process, where we replace all usages of a given ID pointer by a new one, or NULL one in case of unlinking). This will allow nice new features, like ability to easily reload or relocate libraries, real immediate deletion of datablocks in blender, replacement of one datablock by another, etc. Some of those are for next commits. A word of warning: this commit is highly risky, because it affects potentially a lot in Blender core. Though it was tested rather deeply, being totally impossible to check all possible ID usage cases, it's likely there are some remaining issues and bugs in new code... Please report them! ;) Review task: D2027 (https://developer.blender.org/D2027). Reviewed by campbellbarton, thanks a bunch.
2016-05-24Merge branch 'master' into blender2.8Bastien Montagne
Conflicts: intern/cycles/blender/blender_curves.cpp source/blender/blenkernel/intern/dynamicpaint.c source/blender/blenkernel/intern/particle.c source/blender/blenloader/intern/versioning_270.c source/blender/editors/physics/particle_edit.c source/blender/editors/transform/transform_snap_object.c source/blender/editors/util/undo.c source/blender/makesrna/intern/rna_object_force.c
2016-05-13Fix compilation with strict compiler flagsSergey Sharybin
Some const qualifier was discarding.
2016-05-13Fix T48416: Impossible to append from another file without localizing also ↵Bastien Montagne
all indirectly linked data. Previous to 2.77, this used to be default behavior, was changed in rB591f4549c958b. However, in most append cases, you do want a full localization of your data, so this new behavior is kept by default, but there is now an option in append operator to only localize the 'first level' of data (i.e. datablocks from linked library itself, and not those from other 'sub-libraries').
2016-05-02Merge branch 'temp_remove_particles' into blender2.8Lukas Tönne
2016-04-29Fix (unreported) bad 'NULL freeing' with placeholder images.Bastien Montagne
Looks like code expects some initialized Image data after all, so do it for placeholders as well (using default generated UV grid).
2016-04-16Removed the Main.particle list, used for ParticleSettings ID blocks.Lukas Tönne
There were still some type-agnostic uses as well, owing to the generic ListBase type.