Commit: 7c1286b2b7651562e744d531a3c4a8b518b2a852
Author: Campbell Barton
Date:   Mon Jan 15 16:06:56 2018 +1100
Branches: blender2.8
https://developer.blender.org/rB7c1286b2b7651562e744d531a3c4a8b518b2a852

Manipulator: add free callback

===================================================================

M       source/blender/windowmanager/manipulators/WM_manipulator_types.h
M       source/blender/windowmanager/manipulators/intern/wm_manipulator.c
M       source/blender/windowmanager/manipulators/wm_manipulator_fn.h

===================================================================

diff --git a/source/blender/windowmanager/manipulators/WM_manipulator_types.h 
b/source/blender/windowmanager/manipulators/WM_manipulator_types.h
index f2c0a8e93d9..6d83f411db1 100644
--- a/source/blender/windowmanager/manipulators/WM_manipulator_types.h
+++ b/source/blender/windowmanager/manipulators/WM_manipulator_types.h
@@ -313,6 +313,9 @@ typedef struct wmManipulatorType {
        /* called when manipulator selection state changes */
        wmManipulatorFnSelectRefresh select_refresh;
 
+       /* Free data (not the manipulator it's self), use when the manipulator 
allocates it's own members. */
+       wmManipulatorFnFree free;
+
        /* RNA for properties */
        struct StructRNA *srna;
 
diff --git a/source/blender/windowmanager/manipulators/intern/wm_manipulator.c 
b/source/blender/windowmanager/manipulators/intern/wm_manipulator.c
index 5190a4932b4..dff8d8b4e6c 100644
--- a/source/blender/windowmanager/manipulators/intern/wm_manipulator.c
+++ b/source/blender/windowmanager/manipulators/intern/wm_manipulator.c
@@ -166,6 +166,10 @@ static void wm_manipulator_register(wmManipulatorGroup 
*mgroup, wmManipulator *m
  */
 void WM_manipulator_free(wmManipulator *mpr)
 {
+       if (mpr->type->free != NULL) {
+               mpr->type->free(mpr);
+       }
+
 #ifdef WITH_PYTHON
        if (mpr->py_instance) {
                /* do this first in case there are any __del__ functions or
diff --git a/source/blender/windowmanager/manipulators/wm_manipulator_fn.h 
b/source/blender/windowmanager/manipulators/wm_manipulator_fn.h
index 7e163f8a785..305d04eab68 100644
--- a/source/blender/windowmanager/manipulators/wm_manipulator_fn.h
+++ b/source/blender/windowmanager/manipulators/wm_manipulator_fn.h
@@ -59,6 +59,7 @@ typedef int     (*wmManipulatorFnInvoke)(struct bContext *, 
struct wmManipulator
 typedef void    (*wmManipulatorFnExit)(struct bContext *, struct wmManipulator 
*, const bool);
 typedef int     (*wmManipulatorFnCursorGet)(struct wmManipulator *);
 typedef void    (*wmManipulatorFnSelectRefresh)(struct wmManipulator *);
+typedef void    (*wmManipulatorFnFree)(struct wmManipulator *);
 
 /* wmManipulatorProperty ('value' type defined by 
'wmManipulatorProperty.data_type') */
 typedef void (*wmManipulatorPropertyFnGet)(

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to