diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-12-10 04:44:24 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-12-10 04:44:24 +0300 |
commit | cecd4fe2548c57d3ef11010e039410b793b675dd (patch) | |
tree | b456c5b7328bb85334e7e55378d8c75580317a12 | |
parent | 168a6a4bfc13cbe5c2fb510607b9565de3eb9472 (diff) | |
parent | 9df2b6da3a718323dbe9431c5a4b43fc309fa4b9 (diff) |
Merge branch 'master' into blender2.8
-rw-r--r-- | source/blender/blenloader/intern/readfile.c | 6 | ||||
-rw-r--r-- | source/blender/blenloader/intern/writefile.c | 6 | ||||
-rw-r--r-- | source/blender/editors/space_action/space_action.c | 21 | ||||
-rw-r--r-- | source/blender/editors/space_graph/graph_draw.c | 4 | ||||
-rw-r--r-- | source/blender/editors/space_graph/graph_edit.c | 10 | ||||
-rw-r--r-- | source/blender/editors/space_graph/space_graph.c | 19 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_action_types.h | 16 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_space_types.h | 19 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_space.c | 4 |
9 files changed, 64 insertions, 41 deletions
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index e88f75205c7..6e0a14ff469 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -6812,7 +6812,7 @@ static void direct_link_area(FileData *fd, ScrArea *area) SpaceIpo *sipo = (SpaceIpo *)sl; sipo->ads = newdataadr(fd, sipo->ads); - BLI_listbase_clear(&sipo->ghostCurves); + BLI_listbase_clear(&sipo->runtime.ghost_curves); } else if (sl->spacetype == SPACE_NLA) { SpaceNla *snla = (SpaceNla *)sl; @@ -7495,7 +7495,7 @@ static void lib_link_workspace_layout_restore(struct IDNameLib_Map *id_map, Main /* force recalc of list of channels (i.e. includes calculating F-Curve colors) * thus preventing the "black curves" problem post-undo */ - sipo->flag |= SIPO_TEMP_NEEDCHANSYNC; + sipo->runtime.flag |= SIPO_RUNTIME_FLAG_NEED_CHAN_SYNC; } else if (sl->spacetype == SPACE_BUTS) { SpaceButs *sbuts = (SpaceButs *)sl; @@ -7526,7 +7526,7 @@ static void lib_link_workspace_layout_restore(struct IDNameLib_Map *id_map, Main /* force recalc of list of channels, potentially updating the active action * while we're at it (as it can only be updated that way) [#28962] */ - saction->flag |= SACTION_TEMP_NEEDCHANSYNC; + saction->runtime.flag |= SACTION_RUNTIME_FLAG_NEED_CHAN_SYNC; } else if (sl->spacetype == SPACE_IMAGE) { SpaceImage *sima = (SpaceImage *)sl; diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index be708697ac6..a45de6b48dc 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -2878,10 +2878,10 @@ static void write_area_regions(WriteData *wd, ScrArea *area) } else if (sl->spacetype == SPACE_IPO) { SpaceIpo *sipo = (SpaceIpo *)sl; - ListBase tmpGhosts = sipo->ghostCurves; + ListBase tmpGhosts = sipo->runtime.ghost_curves; /* temporarily disable ghost curves when saving */ - sipo->ghostCurves.first = sipo->ghostCurves.last = NULL; + BLI_listbase_clear(&sipo->runtime.ghost_curves); writestruct(wd, DATA, SpaceIpo, 1, sl); if (sipo->ads) { @@ -2889,7 +2889,7 @@ static void write_area_regions(WriteData *wd, ScrArea *area) } /* reenable ghost curves */ - sipo->ghostCurves = tmpGhosts; + sipo->runtime.ghost_curves = tmpGhosts; } else if (sl->spacetype == SPACE_BUTS) { writestruct(wd, DATA, SpaceButs, 1, sl); diff --git a/source/blender/editors/space_action/space_action.c b/source/blender/editors/space_action/space_action.c index 15587a5f39d..0a7db803acc 100644 --- a/source/blender/editors/space_action/space_action.c +++ b/source/blender/editors/space_action/space_action.c @@ -182,8 +182,7 @@ static void action_free(SpaceLink *UNUSED(sl)) static void action_init(struct wmWindowManager *UNUSED(wm), ScrArea *sa) { SpaceAction *saction = sa->spacedata.first; - - saction->flag |= SACTION_TEMP_NEEDCHANSYNC; + saction->runtime.flag |= SACTION_RUNTIME_FLAG_NEED_CHAN_SYNC; } static SpaceLink *action_duplicate(SpaceLink *sl) @@ -542,7 +541,7 @@ static void action_listener( ED_area_tag_redraw(sa); } else if (wmn->action == NA_SELECTED) { - saction->flag |= SACTION_TEMP_NEEDCHANSYNC; + saction->runtime.flag |= SACTION_RUNTIME_FLAG_NEED_CHAN_SYNC; ED_area_tag_refresh(sa); } } @@ -550,7 +549,7 @@ static void action_listener( case NC_ANIMATION: /* for NLA tweakmode enter/exit, need complete refresh */ if (wmn->data == ND_NLA_ACTCHANGE) { - saction->flag |= SACTION_TEMP_NEEDCHANSYNC; + saction->runtime.flag |= SACTION_RUNTIME_FLAG_NEED_CHAN_SYNC; ED_area_tag_refresh(sa); } /* autocolor only really needs to change when channels are added/removed, or previously hidden stuff appears @@ -598,7 +597,7 @@ static void action_listener( switch (wmn->data) { case ND_OB_ACTIVE: /* selection changed, so force refresh to flush (needs flag set to do syncing) */ case ND_OB_SELECT: - saction->flag |= SACTION_TEMP_NEEDCHANSYNC; + saction->runtime.flag |= SACTION_RUNTIME_FLAG_NEED_CHAN_SYNC; ED_area_tag_refresh(sa); break; @@ -612,7 +611,7 @@ static void action_listener( switch (wmn->data) { case ND_BONE_SELECT: /* selection changed, so force refresh to flush (needs flag set to do syncing) */ case ND_BONE_ACTIVE: - saction->flag |= SACTION_TEMP_NEEDCHANSYNC; + saction->runtime.flag |= SACTION_RUNTIME_FLAG_NEED_CHAN_SYNC; ED_area_tag_refresh(sa); break; case ND_TRANSFORM: @@ -648,7 +647,7 @@ static void action_listener( case NC_NODE: if (wmn->action == NA_SELECTED) { /* selection changed, so force refresh to flush (needs flag set to do syncing) */ - saction->flag |= SACTION_TEMP_NEEDCHANSYNC; + saction->runtime.flag |= SACTION_RUNTIME_FLAG_NEED_CHAN_SYNC; ED_area_tag_refresh(sa); } break; @@ -661,13 +660,13 @@ static void action_listener( ED_area_tag_redraw(sa); break; case ND_SPACE_CHANGED: - saction->flag |= SACTION_TEMP_NEEDCHANSYNC; + saction->runtime.flag |= SACTION_RUNTIME_FLAG_NEED_CHAN_SYNC; ED_area_tag_refresh(sa); break; } break; case NC_WINDOW: - if (saction->flag & SACTION_TEMP_NEEDCHANSYNC) { + if (saction->runtime.flag & SACTION_RUNTIME_FLAG_NEED_CHAN_SYNC) { /* force redraw/refresh after undo/redo - [#28962] */ ED_area_tag_refresh(sa); } @@ -797,14 +796,14 @@ static void action_refresh(const bContext *C, ScrArea *sa) /* update the state of the animchannels in response to changes from the data they represent * NOTE: the temp flag is used to indicate when this needs to be done, and will be cleared once handled */ - if (saction->flag & SACTION_TEMP_NEEDCHANSYNC) { + if (saction->runtime.flag & SACTION_RUNTIME_FLAG_NEED_CHAN_SYNC) { ARegion *ar; /* Perform syncing of channel state incl. selection * Active action setting also occurs here (as part of anim channel filtering in anim_filter.c) */ ANIM_sync_animchannels_to_data(C); - saction->flag &= ~SACTION_TEMP_NEEDCHANSYNC; + saction->runtime.flag &= ~SACTION_RUNTIME_FLAG_NEED_CHAN_SYNC; /* Tag everything for redraw * - Regions (such as header) need to be manually tagged for redraw too diff --git a/source/blender/editors/space_graph/graph_draw.c b/source/blender/editors/space_graph/graph_draw.c index 65bf8af70e8..d4f6824ccdf 100644 --- a/source/blender/editors/space_graph/graph_draw.c +++ b/source/blender/editors/space_graph/graph_draw.c @@ -981,8 +981,8 @@ void graph_draw_ghost_curves(bAnimContext *ac, SpaceIpo *sipo, ARegion *ar) immUniform1f("dash_width", 20.0f); immUniform1f("dash_factor", 0.5f); - /* the ghost curves are simply sampled F-Curves stored in sipo->ghostCurves */ - for (fcu = sipo->ghostCurves.first; fcu; fcu = fcu->next) { + /* the ghost curves are simply sampled F-Curves stored in sipo->runtime.ghost_curves */ + for (fcu = sipo->runtime.ghost_curves.first; fcu; fcu = fcu->next) { /* set whatever color the curve has set * - this is set by the function which creates these * - draw with a fixed opacity of 2 diff --git a/source/blender/editors/space_graph/graph_edit.c b/source/blender/editors/space_graph/graph_edit.c index 08a5a6aeedd..e610aee4810 100644 --- a/source/blender/editors/space_graph/graph_edit.c +++ b/source/blender/editors/space_graph/graph_edit.c @@ -345,7 +345,7 @@ static void create_ghost_curves(bAnimContext *ac, int start, int end) int filter; /* free existing ghost curves */ - free_fcurves(&sipo->ghostCurves); + free_fcurves(&sipo->runtime.ghost_curves); /* sanity check */ if (start >= end) { @@ -396,7 +396,7 @@ static void create_ghost_curves(bAnimContext *ac, int start, int end) gcu->color[2] = fcu->color[2] - 0.07f; /* store new ghost curve */ - BLI_addtail(&sipo->ghostCurves, gcu); + BLI_addtail(&sipo->runtime.ghost_curves, gcu); /* restore driver */ fcu->driver = driver; @@ -463,11 +463,11 @@ static int graphkeys_clear_ghostcurves_exec(bContext *C, wmOperator *UNUSED(op)) sipo = (SpaceIpo *)ac.sl; /* if no ghost curves, don't do anything */ - if (BLI_listbase_is_empty(&sipo->ghostCurves)) + if (BLI_listbase_is_empty(&sipo->runtime.ghost_curves)) { return OPERATOR_CANCELLED; - + } /* free ghost curves */ - free_fcurves(&sipo->ghostCurves); + free_fcurves(&sipo->runtime.ghost_curves); /* update this editor only */ ED_area_tag_redraw(CTX_wm_area(C)); diff --git a/source/blender/editors/space_graph/space_graph.c b/source/blender/editors/space_graph/space_graph.c index 1fa6cb9b3de..bfe52459a58 100644 --- a/source/blender/editors/space_graph/space_graph.c +++ b/source/blender/editors/space_graph/space_graph.c @@ -179,8 +179,9 @@ static void graph_free(SpaceLink *sl) MEM_freeN(si->ads); } - if (si->ghostCurves.first) - free_fcurves(&si->ghostCurves); + if (si->runtime.ghost_curves.first) { + free_fcurves(&si->runtime.ghost_curves); + } } @@ -208,7 +209,7 @@ static SpaceLink *graph_duplicate(SpaceLink *sl) SpaceIpo *sipon = MEM_dupallocN(sl); /* clear or remove stuff from old */ - BLI_duplicatelist(&sipon->ghostCurves, &((SpaceIpo *)sl)->ghostCurves); + BLI_duplicatelist(&sipon->runtime.ghost_curves, &((SpaceIpo *)sl)->runtime.ghost_curves); sipon->ads = MEM_dupallocN(sipon->ads); return (SpaceLink *)sipon; @@ -585,7 +586,7 @@ static void graph_listener(wmWindow *UNUSED(win), ScrArea *sa, wmNotifier *wmn, switch (wmn->data) { case ND_OB_ACTIVE: /* selection changed, so force refresh to flush (needs flag set to do syncing) */ case ND_OB_SELECT: - sipo->flag |= SIPO_TEMP_NEEDCHANSYNC; + sipo->runtime.flag |= SIPO_RUNTIME_FLAG_NEED_CHAN_SYNC; ED_area_tag_refresh(sa); break; @@ -598,7 +599,7 @@ static void graph_listener(wmWindow *UNUSED(win), ScrArea *sa, wmNotifier *wmn, switch (wmn->data) { case ND_BONE_SELECT: /* selection changed, so force refresh to flush (needs flag set to do syncing) */ case ND_BONE_ACTIVE: - sipo->flag |= SIPO_TEMP_NEEDCHANSYNC; + sipo->runtime.flag |= SIPO_RUNTIME_FLAG_NEED_CHAN_SYNC; ED_area_tag_refresh(sa); break; case ND_TRANSFORM: @@ -612,7 +613,7 @@ static void graph_listener(wmWindow *UNUSED(win), ScrArea *sa, wmNotifier *wmn, case NC_NODE: if (wmn->action == NA_SELECTED) { /* selection changed, so force refresh to flush (needs flag set to do syncing) */ - sipo->flag |= SIPO_TEMP_NEEDCHANSYNC; + sipo->runtime.flag |= SIPO_RUNTIME_FLAG_NEED_CHAN_SYNC; ED_area_tag_refresh(sa); } break; @@ -621,7 +622,7 @@ static void graph_listener(wmWindow *UNUSED(win), ScrArea *sa, wmNotifier *wmn, ED_area_tag_redraw(sa); break; case NC_WINDOW: - if (sipo->flag & SIPO_TEMP_NEEDCHANSYNC) { + if (sipo->runtime.flag & SIPO_RUNTIME_FLAG_NEED_CHAN_SYNC) { /* force redraw/refresh after undo/redo - prevents "black curve" problem */ ED_area_tag_refresh(sa); } @@ -778,9 +779,9 @@ static void graph_refresh(const bContext *C, ScrArea *sa) /* update the state of the animchannels in response to changes from the data they represent * NOTE: the temp flag is used to indicate when this needs to be done, and will be cleared once handled */ - if (sipo->flag & SIPO_TEMP_NEEDCHANSYNC) { + if (sipo->runtime.flag & SIPO_RUNTIME_FLAG_NEED_CHAN_SYNC) { ANIM_sync_animchannels_to_data(C); - sipo->flag &= ~SIPO_TEMP_NEEDCHANSYNC; + sipo->runtime.flag &= ~SIPO_RUNTIME_FLAG_NEED_CHAN_SYNC; ED_area_tag_redraw(sa); } diff --git a/source/blender/makesdna/DNA_action_types.h b/source/blender/makesdna/DNA_action_types.h index 4d0f4ef1b0f..538604f46d0 100644 --- a/source/blender/makesdna/DNA_action_types.h +++ b/source/blender/makesdna/DNA_action_types.h @@ -692,6 +692,11 @@ typedef enum eDopeSheet_Flag { +typedef struct SpaceAction_Runtime { + char flag; + char _pad0[7]; +} SpaceAction_Runtime; + /* Action Editor Space. This is defined here instead of in DNA_space_types.h */ typedef struct SpaceAction { struct SpaceLink *next, *prev; @@ -716,6 +721,8 @@ typedef struct SpaceAction { char autosnap; /* automatic keyframe snapping mode */ char cache_display; /* (eTimeline_Cache_Flag) */ char _pad1[6]; + + SpaceAction_Runtime runtime; } SpaceAction; /* SpaceAction flag */ @@ -738,8 +745,6 @@ typedef enum eSAction_Flag { SACTION_NODRAWGCOLORS = (1 << 7), /* don't draw current frame number beside frame indicator */ SACTION_NODRAWCFRANUM = (1 << 8), - /* temporary flag to force channel selections to be synced with main */ - SACTION_TEMP_NEEDCHANSYNC = (1 << 9), /* don't perform realtime updates */ SACTION_NOREALTIMEUPDATES = (1 << 10), /* move markers as well as keyframes */ @@ -750,6 +755,13 @@ typedef enum eSAction_Flag { SACTION_SHOW_EXTREMES = (1 << 13), } eSAction_Flag; + +/* SpaceAction_Runtime.flag */ +typedef enum eSAction_Runtime_Flag { + /** Temporary flag to force channel selections to be synced with main */ + SACTION_RUNTIME_FLAG_NEED_CHAN_SYNC = (1 << 0), +} eSAction_Runtime_Flag; + /* SpaceAction Mode Settings */ typedef enum eAnimEdit_Context { /* action on the active object */ diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h index 9c1b999cbd6..1e4e58b7c7e 100644 --- a/source/blender/makesdna/DNA_space_types.h +++ b/source/blender/makesdna/DNA_space_types.h @@ -358,6 +358,14 @@ typedef enum eSpaceOutliner_Search_Flags { /** \name Graph Editor * \{ */ +typedef struct SpaceIpo_Runtime { + /** #eGraphEdit_Runtime_Flag */ + char flag; + char _pad[7]; + /** Sampled snapshots of F-Curves used as in-session guides */ + ListBase ghost_curves; +} SpaceIpo_Runtime; + /* 'Graph' Editor (formerly known as the IPO Editor) */ typedef struct SpaceIpo { SpaceLink *next, *prev; @@ -371,8 +379,6 @@ typedef struct SpaceIpo { struct bDopeSheet *ads; /* settings for filtering animation data (NOTE: we use a pointer due to code-linking issues) */ - ListBase ghostCurves; /* sampled snapshots of F-Curves used as in-session guides */ - short mode; /* mode for the Graph editor (eGraphEdit_Mode) */ short autosnap; /* time-transform autosnapping settings for Graph editor (eAnimEdit_AutoSnap in DNA_action_types.h) */ int flag; /* settings for Graph editor (eGraphEdit_Flag) */ @@ -381,6 +387,8 @@ typedef struct SpaceIpo { float cursorVal; /* cursor value (y-value, x-value is current frame) */ int around; /* pivot point for transforms */ int pad; + + SpaceIpo_Runtime runtime; } SpaceIpo; @@ -408,8 +416,6 @@ typedef enum eGraphEdit_Flag { SIPO_NODRAWCURSOR = (1 << 8), /* only show handles of selected keyframes */ SIPO_SELVHANDLESONLY = (1 << 9), - /* temporary flag to force channel selections to be synced with main */ - SIPO_TEMP_NEEDCHANSYNC = (1 << 10), /* don't perform realtime updates */ SIPO_NOREALTIMEUPDATES = (1 << 11), /* don't draw curves with AA ("beauty-draw") for performance */ @@ -429,6 +435,11 @@ typedef enum eGraphEdit_Mode { SIPO_MODE_DRIVERS = 1, } eGraphEdit_Mode; +typedef enum eGraphEdit_Runtime_Flag { + /** Temporary flag to force channel selections to be synced with main. */ + SIPO_RUNTIME_FLAG_NEED_CHAN_SYNC = (1 << 0), +} eGraphEdit_Runtime_Flag; + /** \} */ /* -------------------------------------------------------------------- */ diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index 8a792e4fa41..dad521b56cf 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -1593,7 +1593,7 @@ static void rna_SpaceDopeSheetEditor_mode_update(bContext *C, PointerRNA *ptr) } /* recalculate extents of channel list */ - saction->flag |= SACTION_TEMP_NEEDCHANSYNC; + saction->runtime.flag |= SACTION_RUNTIME_FLAG_NEED_CHAN_SYNC; /* store current mode as "old mode", so that returning from other editors doesn't always reset to "Action Editor" */ if (saction->mode != SACTCONT_TIMELINE) { @@ -1623,7 +1623,7 @@ static void rna_SpaceGraphEditor_display_mode_update(bContext *C, PointerRNA *pt static bool rna_SpaceGraphEditor_has_ghost_curves_get(PointerRNA *ptr) { SpaceIpo *sipo = (SpaceIpo *)(ptr->data); - return (BLI_listbase_is_empty(&sipo->ghostCurves) == false); + return (BLI_listbase_is_empty(&sipo->runtime.ghost_curves) == false); } static void rna_SpaceConsole_rect_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr) |