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:
authorTon Roosendaal <ton@blender.org>2004-09-05 17:43:51 +0400
committerTon Roosendaal <ton@blender.org>2004-09-05 17:43:51 +0400
commitbf83f6ddd87a76d30339057118f23c5651f9eff4 (patch)
treed28c5dbec49a60b2060dda9f17f48d08b404f806 /source/blender/src/editscreen.c
parent61e4707bdb6e9f64db0520c47f398d68e9322937 (diff)
Second itteration of global undo system. Now based on:
- file-to-memory save - incremental difference steps (compression) everthing has been tightly coded to use minimum of memcpy or allocs. In fact this system works with a single full buffer (=file) in memory, and undosteps as differences from it. Speed gain is factor 4-8 faster. I've added it in CTRL+ALT+T timer menu for a test. Please note the gain is especially in the undo-storing, not in retrieving undo. Also new: file read option to skip UI read (file menu). This now also is default for the undo system.
Diffstat (limited to 'source/blender/src/editscreen.c')
-rw-r--r--source/blender/src/editscreen.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/source/blender/src/editscreen.c b/source/blender/src/editscreen.c
index b8f26bddbef..b9aed992686 100644
--- a/source/blender/src/editscreen.c
+++ b/source/blender/src/editscreen.c
@@ -554,11 +554,14 @@ void markdirty_all()
ScrArea *sa;
for (sa= G.curscreen->areabase.first; sa; sa= sa->next) {
- scrarea_queue_winredraw(sa);
- sa->win_swap &= ~WIN_FRONT_OK;
-
- scrarea_queue_headredraw(sa);
- sa->head_swap &= ~WIN_FRONT_OK;
+ if(sa->win) {
+ scrarea_queue_winredraw(sa);
+ sa->win_swap &= ~WIN_FRONT_OK;
+ }
+ if(sa->headwin) {
+ scrarea_queue_headredraw(sa);
+ sa->head_swap &= ~WIN_FRONT_OK;
+ }
}
}
@@ -1870,6 +1873,7 @@ void setscreen(bScreen *sc)
sa= sa->next;
}
}
+ else if(G.curscreen) markdirty_all(); /* at least redraw */
if (G.curscreen != sc) {
mywinset(sc->mainwin);
@@ -1916,7 +1920,7 @@ void setscreen(bScreen *sc)
sa->cursor= CURSOR_STD;
}
-
+
G.scene= sc->scene;
countall();