diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2018-02-09 19:19:11 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2018-02-09 19:23:35 +0300 |
commit | 3ab5ef7b4f34f110e4861096428b83b4f9b5efe9 (patch) | |
tree | fe05c448ebc4bf31ead0b98096488fe983d8a0d6 /source/blender/windowmanager/WM_types.h | |
parent | ea9099473a545ae1992ae0fbc4ba0bf09cff1bd9 (diff) |
Fix (unreported) error on freeing timers which customdata pointer shall not be freed.
Looks like there was no way to avoid that so far, since
WM_event_add_timer_notifier can set mere int-in-pointer there, this can
cause issues. So added mere flags system to wmTimer to allow
controlling this.
Diffstat (limited to 'source/blender/windowmanager/WM_types.h')
-rw-r--r-- | source/blender/windowmanager/WM_types.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h index 0f7d41295f1..8fca0ce959e 100644 --- a/source/blender/windowmanager/WM_types.h +++ b/source/blender/windowmanager/WM_types.h @@ -508,6 +508,10 @@ typedef struct wmNDOFMotionData { } wmNDOFMotionData; #endif /* WITH_INPUT_NDOF */ +typedef enum { /* Timer flags */ + WM_TIMER_NO_FREE_CUSTOM_DATA = 1 << 0, /* Do not attempt to free customdata pointer even if non-NULL. */ +} wmTimerFlags; + typedef struct wmTimer { struct wmTimer *next, *prev; @@ -515,6 +519,7 @@ typedef struct wmTimer { double timestep; /* set by timer user */ int event_type; /* set by timer user, goes to event system */ + wmTimerFlags flags; /* Various flags controlling timer options, see below. */ void *customdata; /* set by timer user, to allow custom values */ double duration; /* total running time in seconds */ @@ -523,7 +528,7 @@ typedef struct wmTimer { double ltime; /* internal, last time timer was activated */ double ntime; /* internal, next time we want to activate the timer */ double stime; /* internal, when the timer started */ - int sleep; /* internal, put timers to sleep when needed */ + bool sleep; /* internal, put timers to sleep when needed */ } wmTimer; typedef struct wmOperatorType { |