diff options
author | Campbell Barton <ideasman42@gmail.com> | 2016-07-31 04:43:24 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2016-07-31 04:46:36 +0300 |
commit | 01d5d2853bbbf07e4b64082e60fbb6d53799ed94 (patch) | |
tree | 74140b6ca832bbaf5ddc1e5812c2bade165a382c /source/blender/python/intern/bpy_rna_driver.c | |
parent | 55f481d05296077e061c2ade989c702c0fd2a68d (diff) |
Py-Driver: re-use self PyObject when its unchanged.
Diffstat (limited to 'source/blender/python/intern/bpy_rna_driver.c')
-rw-r--r-- | source/blender/python/intern/bpy_rna_driver.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/source/blender/python/intern/bpy_rna_driver.c b/source/blender/python/intern/bpy_rna_driver.c index 98fc372f2fc..b4c0de51c04 100644 --- a/source/blender/python/intern/bpy_rna_driver.c +++ b/source/blender/python/intern/bpy_rna_driver.c @@ -78,7 +78,23 @@ PyObject *pyrna_driver_get_variable_value( return driver_arg; } -PyObject *pyrna_driver_self_from_anim_rna(struct PathResolvedRNA *anim_rna) +PyObject *pyrna_driver_self_from_anim_rna(PathResolvedRNA *anim_rna) { return pyrna_struct_CreatePyObject(&anim_rna->ptr); } + +bool pyrna_driver_is_equal_anim_rna(const PathResolvedRNA *anim_rna, const PyObject *py_anim_rna) +{ + if (BPy_StructRNA_Check(py_anim_rna)) { + const PointerRNA *ptr_a = &anim_rna->ptr; + const PointerRNA *ptr_b = &(((const BPy_StructRNA *)py_anim_rna)->ptr); + + if ((ptr_a->id.data == ptr_b->id.data) && + (ptr_a->type == ptr_b->type) && + (ptr_a->data == ptr_b->data)) + { + return true; + } + } + return false; +} |