diff options
Diffstat (limited to 'source/blender/editors/screen/screen_edit.c')
-rw-r--r-- | source/blender/editors/screen/screen_edit.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index a3f97a7c5ce..8874c5d1bc8 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -25,6 +25,8 @@ */ #include <string.h> +#include <math.h> + #include "MEM_guardedalloc.h" @@ -40,7 +42,6 @@ #include "BKE_node.h" #include "BKE_screen.h" #include "BKE_scene.h" -#include "BKE_utildefines.h" #include "BIF_gl.h" #include "BIF_glutil.h" @@ -49,7 +50,7 @@ #include "WM_types.h" #include "ED_image.h" -#include "ED_view3d.h" +#include "ED_object.h" #include "ED_screen.h" #include "ED_screen_types.h" @@ -1367,6 +1368,8 @@ void ED_screen_set_scene(bContext *C, Scene *scene) bScreen *sc; bScreen *curscreen= CTX_wm_screen(C); + ED_object_exit_editmode(C, EM_FREEDATA|EM_DO_UNDO); + for(sc= CTX_data_main(C)->screen.first; sc; sc= sc->id.next) { if((U.flag & USER_SCENEGLOBAL) || sc==curscreen) { @@ -1421,7 +1424,7 @@ void ED_screen_set_scene(bContext *C, Scene *scene) } CTX_data_scene_set(C, scene); - set_scene_bg(scene); + set_scene_bg(CTX_data_main(C), scene); ED_update_for_newframe(C, 1); @@ -1666,12 +1669,14 @@ void ED_screen_animation_timer(bContext *C, int redraws, int refresh, int sync, ScreenAnimData *sad= MEM_callocN(sizeof(ScreenAnimData), "ScreenAnimData"); screen->animtimer= WM_event_add_timer(wm, win, TIMER0, (1.0/FPS)); + sad->ar= CTX_wm_region(C); sad->sfra = scene->r.cfra; sad->redraws= redraws; sad->refresh= refresh; sad->flag |= (enable < 0)? ANIMPLAY_FLAG_REVERSE: 0; sad->flag |= (sync == 0)? ANIMPLAY_FLAG_NO_SYNC: (sync == 1)? ANIMPLAY_FLAG_SYNC: 0; + screen->animtimer->customdata= sad; } @@ -1720,6 +1725,7 @@ void ED_screen_animation_timer_update(bScreen *screen, int redraws, int refresh) /* results in fully updated anim system */ void ED_update_for_newframe(const bContext *C, int mute) { + Main *bmain= CTX_data_main(C); bScreen *screen= CTX_wm_screen(C); Scene *scene= CTX_data_scene(C); @@ -1743,7 +1749,7 @@ void ED_update_for_newframe(const bContext *C, int mute) /* this function applies the changes too */ /* XXX future: do all windows */ - scene_update_for_newframe(scene, BKE_screen_visible_layers(screen, scene)); /* BKE_scene.h */ + scene_update_for_newframe(bmain, scene, BKE_screen_visible_layers(screen, scene)); /* BKE_scene.h */ //if ( (CFRA>1) && (!mute) && (scene->r.audio.flag & AUDIO_SCRUB)) // audiostream_scrub( CFRA ); |