Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2018-05-15 13:49:38 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2018-05-15 14:02:44 +0300
commit3f20105622a9871e6b71e8a29b25e24a97202e38 (patch)
tree932106a3def9b36ce4d5acebd99231168294c1ee /source/blender/editors/interface/view2d_ops.c
parent8021ac986a6437b6013a22d98e54186592f5d285 (diff)
Fix random crashes in the outliner, especially with bigger scenes.
The outliner can redraw quicker without rebuilding the tree, for example when just moving the mouse and highlighting different items. The way this worked is that the outliner would be tagged to avoid rebuilding, however if another operation that does require rebuilding happens in the meantime we could go out of sync and crash.
Diffstat (limited to 'source/blender/editors/interface/view2d_ops.c')
-rw-r--r--source/blender/editors/interface/view2d_ops.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/source/blender/editors/interface/view2d_ops.c b/source/blender/editors/interface/view2d_ops.c
index 90ef47aa712..4101230c1ab 100644
--- a/source/blender/editors/interface/view2d_ops.c
+++ b/source/blender/editors/interface/view2d_ops.c
@@ -169,18 +169,19 @@ static void view_pan_apply_ex(bContext *C, v2dViewPanData *vpd, float dx, float
/* validate that view is in valid configuration after this operation */
UI_view2d_curRect_validate(v2d);
- /* request updates to be done... */
- ED_region_tag_redraw(vpd->ar);
- WM_event_add_mousemove(C);
-
- UI_view2d_sync(vpd->sc, vpd->sa, v2d, V2D_LOCK_COPY);
-
/* exceptions */
if (vpd->sa->spacetype == SPACE_OUTLINER) {
/* don't rebuild full tree, since we're just changing our view */
- SpaceOops *soops = vpd->sa->spacedata.first;
- soops->storeflag |= SO_TREESTORE_REDRAW;
+ ED_region_tag_redraw_no_rebuild(vpd->ar);
+ }
+ else {
+ ED_region_tag_redraw(vpd->ar);
}
+
+ /* request updates to be done... */
+ WM_event_add_mousemove(C);
+
+ UI_view2d_sync(vpd->sc, vpd->sa, v2d, V2D_LOCK_COPY);
}
static void view_pan_apply(bContext *C, wmOperator *op)