Revision: 30497
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=30497
Author:   aligorith
Date:     2010-07-19 13:25:23 +0200 (Mon, 19 Jul 2010)

Log Message:
-----------
Bugfix #22906: Animation Player buttons broke on r30467

Reverting this commit. Seems that only the added parts were tested. I'll look 
at restoring a similar version of this in future.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/include/ED_screen.h
    trunk/blender/source/blender/editors/include/ED_screen_types.h
    trunk/blender/source/blender/editors/render/render_internal.c
    trunk/blender/source/blender/editors/screen/screen_edit.c
    trunk/blender/source/blender/editors/screen/screen_ops.c
    trunk/blender/source/blender/makesdna/DNA_screen_types.h

Modified: trunk/blender/source/blender/editors/include/ED_screen.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_screen.h    2010-07-19 
10:45:15 UTC (rev 30496)
+++ trunk/blender/source/blender/editors/include/ED_screen.h    2010-07-19 
11:25:23 UTC (rev 30497)
@@ -98,7 +98,7 @@
 void   ED_screen_delete_scene(struct bContext *C, struct Scene *scene);
 void   ED_screen_set_subwinactive(struct wmWindow *win, struct wmEvent *event);
 void   ED_screen_exit(struct bContext *C, struct wmWindow *window, struct 
bScreen *screen);
-void   ED_screen_animation_timer(struct bContext *C, int redraws, int refresh, 
int sync, int enable, double speed);
+void   ED_screen_animation_timer(struct bContext *C, int redraws, int refresh, 
int sync, int enable);
 void   ED_screen_animation_timer_update(struct bScreen *screen, int redraws, 
int refresh);
 int            ED_screen_full_newspace(struct bContext *C, ScrArea *sa, int 
type);
 void   ED_screen_full_prevspace(struct bContext *C, ScrArea *sa);
@@ -110,7 +110,7 @@
 /* anim */
 void   ED_update_for_newframe(const struct bContext *C, int mute);
 void   ED_refresh_viewport_fps(struct bContext *C);
-int ED_screen_animation_play(struct bContext *C, int sync, int mode, int 
toggle);
+int ED_screen_animation_play(struct bContext *C, int sync, int mode);
 
 /* screen keymaps */
 void   ED_operatortypes_screen(void);

Modified: trunk/blender/source/blender/editors/include/ED_screen_types.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_screen_types.h      
2010-07-19 10:45:15 UTC (rev 30496)
+++ trunk/blender/source/blender/editors/include/ED_screen_types.h      
2010-07-19 11:25:23 UTC (rev 30497)
@@ -38,7 +38,6 @@
        short refresh;
        short flag;                     /* flags for playback */
        int sfra;                       /* frame that playback was started from 
*/
-       double speed_mul;       /* speed multiplier */
 } ScreenAnimData;
 
 /* for animplayer */

Modified: trunk/blender/source/blender/editors/render/render_internal.c
===================================================================
--- trunk/blender/source/blender/editors/render/render_internal.c       
2010-07-19 10:45:15 UTC (rev 30496)
+++ trunk/blender/source/blender/editors/render/render_internal.c       
2010-07-19 11:25:23 UTC (rev 30497)
@@ -628,7 +628,7 @@
 
        /* cancel animation playback */
        if (screen->animtimer)
-               ED_screen_animation_play(C, 0, 0, 1);
+               ED_screen_animation_play(C, 0, 0);
        
        /* handle UI stuff */
        WM_cursor_wait(1);

Modified: trunk/blender/source/blender/editors/screen/screen_edit.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_edit.c   2010-07-19 
10:45:15 UTC (rev 30496)
+++ trunk/blender/source/blender/editors/screen/screen_edit.c   2010-07-19 
11:25:23 UTC (rev 30497)
@@ -1653,7 +1653,7 @@
 /* redraws: uses defines from stime->redraws 
  * enable: 1 - forward on, -1 - backwards on, 0 - off
  */
-void ED_screen_animation_timer(bContext *C, int redraws, int refresh, int 
sync, int enable, double speed)
+void ED_screen_animation_timer(bContext *C, int redraws, int refresh, int 
sync, int enable)
 {
        bScreen *screen= CTX_wm_screen(C);
        wmWindowManager *wm= CTX_wm_manager(C);
@@ -1666,14 +1666,16 @@
        
        if(enable) {
                ScreenAnimData *sad= MEM_callocN(sizeof(ScreenAnimData), 
"ScreenAnimData");
-               screen->animtimer= WM_event_add_timer(wm, win, TIMER0, 
(1.0/(FPS*speed)));
+               
+               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->speed_mul= speed;
                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;
                
        }

Modified: trunk/blender/source/blender/editors/screen/screen_ops.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_ops.c    2010-07-19 
10:45:15 UTC (rev 30496)
+++ trunk/blender/source/blender/editors/screen/screen_ops.c    2010-07-19 
11:25:23 UTC (rev 30497)
@@ -2443,30 +2443,29 @@
                float time;
                
                /* sync, don't sync, or follow scene setting */
-               if(sad->flag & ANIMPLAY_FLAG_SYNC) sync= 1;
-               else if(sad->flag & ANIMPLAY_FLAG_NO_SYNC) sync= 0;
+               if (sad->flag & ANIMPLAY_FLAG_SYNC) sync= 1;
+               else if (sad->flag & ANIMPLAY_FLAG_NO_SYNC) sync= 0;
                else sync= (scene->flag & SCE_FRAME_DROP);
                
                if((scene->audio.flag & AUDIO_SYNC) && !(sad->flag & 
ANIMPLAY_FLAG_REVERSE) && finite(time = sound_sync_scene(scene)))
-                       scene->r.cfra = time * (int)(FPS + 0.5) * 
sad->speed_mul;
+                       scene->r.cfra = time * FPS + 0.5;
                else
                {
-                       if(sync) {
-                               int step = floor(wt->duration * sad->speed_mul 
* FPS);
+                       if (sync) {
+                               int step = floor(wt->duration * FPS);
                                /* skip frames */
-                               if(sad->flag & ANIMPLAY_FLAG_REVERSE)
+                               if (sad->flag & ANIMPLAY_FLAG_REVERSE)
                                        scene->r.cfra -= step;
                                else
                                        scene->r.cfra += step;
-                               wt->duration -= 
((float)step)/(FPS*sad->speed_mul);
+                               wt->duration -= ((float)step)/FPS;
                        }
                        else {
                                /* one frame +/- */
-                               int step = sad->speed_mul;
-                               if(sad->flag & ANIMPLAY_FLAG_REVERSE)
-                                       scene->r.cfra-=step;
+                               if (sad->flag & ANIMPLAY_FLAG_REVERSE)
+                                       scene->r.cfra--;
                                else
-                                       scene->r.cfra+=step;
+                                       scene->r.cfra++;
                        }
                }
                
@@ -2504,19 +2503,19 @@
                        }
                }
                
-               if(sad->flag & ANIMPLAY_FLAG_JUMPED)
+               if (sad->flag & ANIMPLAY_FLAG_JUMPED)
                        sound_seek_scene(C);
                
                /* since we follow drawflags, we can't send notifier but tag 
regions ourselves */
                ED_update_for_newframe(C, 1);
                
-               for(sa= screen->areabase.first; sa; sa= sa->next) {
+               for (sa= screen->areabase.first; sa; sa= sa->next) {
                        ARegion *ar;
-                       for(ar= sa->regionbase.first; ar; ar= ar->next) {
-                               if(ar==sad->ar)
+                       for (ar= sa->regionbase.first; ar; ar= ar->next) {
+                               if (ar==sad->ar)
                                        ED_region_tag_redraw(ar);
                                else
-                                       
if(match_region_with_redraws(sa->spacetype, ar->regiontype, sad->redraws))
+                                       if 
(match_region_with_redraws(sa->spacetype, ar->regiontype, sad->redraws))
                                                ED_region_tag_redraw(ar);
                        }
                        
@@ -2534,7 +2533,7 @@
                 * since the frames-per-second value may have been changed
                 */
                // TODO: this may make evaluation a bit slower if the value 
doesn't change... any way to avoid this?
-               wt->timestep= (1.0/(FPS*sad->speed_mul));
+               wt->timestep= (1.0/FPS);
                
                return OPERATOR_FINISHED;
        }
@@ -2558,57 +2557,46 @@
 /* ****************** anim player, starts or ends timer ***************** */
 
 /* toggle operator */
-int ED_screen_animation_play(bContext *C, int sync, int mode, int toggle)
+int ED_screen_animation_play(bContext *C, int sync, int mode)
 {
        bScreen *screen= CTX_wm_screen(C);
-       struct Scene* scene = CTX_data_scene(C);
+       Scene *scene = CTX_data_scene(C);
 
-       if(screen->animtimer && toggle) {
-               ScreenAnimData *sad= (ScreenAnimData 
*)screen->animtimer->customdata;
-               
+       if (screen->animtimer) {
                /* stop playback now */
-               ED_screen_animation_timer(C, 0, 0, 0, 0, 0.0);
+               ED_screen_animation_timer(C, 0, 0, 0, 0);
                sound_stop_scene(scene);
        }
        else {
                ScrArea *sa= CTX_wm_area(C);
                int refresh= SPACE_TIME;
-               double speed = 1.0;
-               if (screen->animtimer) {
-                       ScreenAnimData *sad = 
(ScreenAnimData*)screen->animtimer->customdata;
-                       int oldmode = sad->flag & ANIMPLAY_FLAG_REVERSE ? -1 : 
1;
-                       speed = (screen->animtimer && (oldmode == mode)) ? 2.0 
: 1.0;
-               } else if (toggle) {
-                       mode = screen->animmode;
-               }
-               screen->animmode = mode;
-
-               if(mode == 1) // XXX only play audio forwards!?
+               
+               if (mode == 1) // XXX only play audio forwards!?
                        sound_play_scene(scene);
-
+               
                /* timeline gets special treatment since it has it's own menu 
for determining redraws */
                if ((sa) && (sa->spacetype == SPACE_TIME)) {
                        SpaceTime *stime= (SpaceTime *)sa->spacedata.first;
-
-                       ED_screen_animation_timer(C, stime->redraws, refresh, 
sync, mode, speed);
-
+                       
+                       ED_screen_animation_timer(C, stime->redraws, refresh, 
sync, mode);
+                       
                        /* update region if TIME_REGION was set, to leftmost 3d 
window */
                        ED_screen_animation_timer_update(screen, 
stime->redraws, refresh);
                }
                else {
                        int redraws = TIME_REGION|TIME_ALL_3D_WIN;
-
+                       
                        /* XXX - would like a better way to deal with this 
situation - Campbell */
-                       if((!sa) || (sa->spacetype == SPACE_SEQ)) {
+                       if ((!sa) || (sa->spacetype == SPACE_SEQ)) {
                                redraws |= TIME_SEQ;
                        }
-
-                       ED_screen_animation_timer(C, redraws, refresh, sync, 
mode, speed);
-
+                       
+                       ED_screen_animation_timer(C, redraws, refresh, sync, 
mode);
+                       
                        if(screen->animtimer) {
                                wmTimer *wt= screen->animtimer;
                                ScreenAnimData *sad= wt->customdata;
-
+                               
                                sad->ar= CTX_wm_region(C);
                        }
                }
@@ -2620,13 +2608,12 @@
 static int screen_animation_play_exec(bContext *C, wmOperator *op)
 {
        int mode= (RNA_boolean_get(op->ptr, "reverse")) ? -1 : 1;
-       int toggle= RNA_boolean_get(op->ptr, "toggle");
        int sync= -1;
-
-       if(RNA_property_is_set(op->ptr, "sync"))
+       
+       if (RNA_property_is_set(op->ptr, "sync"))
                sync= (RNA_boolean_get(op->ptr, "sync"));
-
-       return ED_screen_animation_play(C, sync, mode, toggle);
+       
+       return ED_screen_animation_play(C, sync, mode);
 }
 
 static void SCREEN_OT_animation_play(wmOperatorType *ot)
@@ -2643,7 +2630,6 @@
        
        RNA_def_boolean(ot->srna, "reverse", 0, "Play in Reverse", "Animation 
is played backwards");
        RNA_def_boolean(ot->srna, "sync", 0, "Sync", "Drop frames to maintain 
framerate");
-       RNA_def_boolean(ot->srna, "toggle", 1, "Toggle Playback", "Toggle 
animation off or double speed on hitting play again");
 }
 
 static int screen_animation_cancel_exec(bContext *C, wmOperator *op)
@@ -2661,7 +2647,7 @@
                WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene);
                
                /* call the other "toggling" operator to clean up now */
-               ED_screen_animation_play(C, 0, 0, 1);
+               ED_screen_animation_play(C, 0, 0, 0);
        }
 
        return OPERATOR_PASS_THROUGH;
@@ -3109,20 +3095,21 @@
        
        /* play (forward and backwards) */
        WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", AKEY, KM_PRESS, 
KM_ALT, 0);
-       WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", KKEY, KM_PRESS, 
0, LKEY);
        RNA_boolean_set(WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", 
AKEY, KM_PRESS, KM_ALT|KM_SHIFT, 0)->ptr, "reverse", 1);

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to