Weak reference subtype PointerProperty
As it stands when a PointerProperty is used to point to an existing datablock it is counted as a user, which can prevent the deletion of a datablock when it's not actually used in the scene.
There are times when a property needs to reference a datablock only if it's present and not affect it's actual lifetime. This can be achieved by making a subtype of PointerProperty that acts as a weak reference: only aware of a datablock's existence, not controlling it.
1 Comment
I think this may cause problems in optimization. Still, each data block change must call a visitor to update the data of all properties that may pointer to, for example, the deleted data block.