Revision: 18076
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18076
Author:   ton
Date:     2008-12-26 14:29:47 +0100 (Fri, 26 Dec 2008)

Log Message:
-----------
2.5

Timers: added extra 'event type' argument to call to add a timer:
WM_event_add_window_timer(win, event_type, interval)

This way other timer systems don't generate overhead on the queues.
(button timers were creating unused animation-playback operators)

Modified Paths:
--------------
    
branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c
    
branches/blender2.5/blender/source/blender/editors/interface/interface_panel.c
    branches/blender2.5/blender/source/blender/editors/screen/screen_edit.c
    branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c
    branches/blender2.5/blender/source/blender/editors/space_time/time_header.c
    branches/blender2.5/blender/source/blender/windowmanager/WM_api.h
    branches/blender2.5/blender/source/blender/windowmanager/WM_types.h
    branches/blender2.5/blender/source/blender/windowmanager/intern/wm_window.c
    branches/blender2.5/blender/source/blender/windowmanager/wm_event_types.h

Modified: 
branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c
   2008-12-26 13:11:04 UTC (rev 18075)
+++ 
branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c
   2008-12-26 13:29:47 UTC (rev 18076)
@@ -2763,7 +2763,7 @@
 
        if(U.flag & USER_TOOLTIPS)
                if(!but->block->tooltipdisabled)
-                       data->tooltiptimer= 
WM_event_add_window_timer(data->window, BUTTON_TOOLTIP_DELAY);
+                       data->tooltiptimer= 
WM_event_add_window_timer(data->window, TIMER, BUTTON_TOOLTIP_DELAY);
 }
 
 static void button_activate_state(bContext *C, uiBut *but, uiHandleButtonState 
state)
@@ -2791,7 +2791,7 @@
                                else time= -1;
 
                                if(time >= 0)
-                                       data->autoopentimer= 
WM_event_add_window_timer(data->window, 0.02*(double)time);
+                                       data->autoopentimer= 
WM_event_add_window_timer(data->window, TIMER, 0.02*(double)time);
                        }
                }
        }
@@ -2833,7 +2833,7 @@
 
        /* add a short delay before exiting, to ensure there is some feedback */
        if(state == BUTTON_STATE_WAIT_FLASH) {
-               data->flashtimer= WM_event_add_window_timer(data->window, 
BUTTON_FLASH_DELAY);
+               data->flashtimer= WM_event_add_window_timer(data->window, 
TIMER, BUTTON_FLASH_DELAY);
        }
        else if(data->flashtimer) {
                WM_event_remove_window_timer(data->window, data->flashtimer);

Modified: 
branches/blender2.5/blender/source/blender/editors/interface/interface_panel.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/interface/interface_panel.c  
    2008-12-26 13:11:04 UTC (rev 18075)
+++ 
branches/blender2.5/blender/source/blender/editors/interface/interface_panel.c  
    2008-12-26 13:29:47 UTC (rev 18076)
@@ -1583,7 +1583,7 @@
                }
 
                if(ELEM(state, PANEL_STATE_ANIMATION, PANEL_STATE_DRAG))
-                       data->animtimer= WM_event_add_window_timer(win, 
ANIMATION_INTERVAL);
+                       data->animtimer= WM_event_add_window_timer(win, TIMER, 
ANIMATION_INTERVAL);
 
                data->state= state;
                data->startx= win->eventstate->x;

Modified: 
branches/blender2.5/blender/source/blender/editors/screen/screen_edit.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/screen/screen_edit.c     
2008-12-26 13:11:04 UTC (rev 18075)
+++ branches/blender2.5/blender/source/blender/editors/screen/screen_edit.c     
2008-12-26 13:29:47 UTC (rev 18076)
@@ -1303,6 +1303,6 @@
        screen->animtimer= NULL;
        
        if(enable)
-               screen->animtimer= WM_event_add_window_timer(win, (1.0/FPS));
+               screen->animtimer= WM_event_add_window_timer(win, TIMER0, 
(1.0/FPS));
 }
 

Modified: branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c      
2008-12-26 13:11:04 UTC (rev 18075)
+++ branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c      
2008-12-26 13:29:47 UTC (rev 18076)
@@ -1469,7 +1469,7 @@
        RNA_enum_set(WM_keymap_add_item(keymap, "SCREEN_OT_region_split", SKEY, 
KM_PRESS, KM_SHIFT, 0)->ptr, "dir", 'v');
                                                  
        /*frame offsets*/
-       WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", TIMER, KM_ANY, 
KM_ANY, 0);
+       WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", TIMER0, KM_ANY, 
KM_ANY, 0);
        RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_offset", 
UPARROWKEY, KM_PRESS, 0, 0)->ptr, "delta", 10);
        RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_offset", 
DOWNARROWKEY, KM_PRESS, 0, 0)->ptr, "delta", -10);
        RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_offset", 
LEFTARROWKEY, KM_PRESS, 0, 0)->ptr, "delta", -1);

Modified: 
branches/blender2.5/blender/source/blender/editors/space_time/time_header.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_time/time_header.c 
2008-12-26 13:11:04 UTC (rev 18075)
+++ branches/blender2.5/blender/source/blender/editors/space_time/time_header.c 
2008-12-26 13:29:47 UTC (rev 18076)
@@ -302,18 +302,18 @@
        block= uiBeginBlock(C, handle->region, "time_framemenu", UI_EMBOSSP, 
UI_HELV);
        uiBlockSetButmFunc(block, do_time_framemenu, NULL);
 
-       uiDefIconTextButO(C, block, BUTM, "ED_MARKER_OT_add", 
WM_OP_EXEC_REGION_WIN, ICON_BLANK1, "Add Marker",
+       uiDefIconTextButO(C, block, BUTM, "MARKER_OT_add", 
WM_OP_EXEC_REGION_WIN, ICON_BLANK1, "Add Marker",
                                          0, yco-=2, menuwidth, 19, "");
-       uiDefIconTextButO(C, block, BUTM, "ED_MARKER_OT_duplicate", 
WM_OP_EXEC_REGION_WIN, ICON_BLANK1, "Duplicate Marker",
+       uiDefIconTextButO(C, block, BUTM, "MARKER_OT_duplicate", 
WM_OP_EXEC_REGION_WIN, ICON_BLANK1, "Duplicate Marker",
                                          0, yco-=20, menuwidth, 19, "");
-       uiDefIconTextButO(C, block, BUTM, "ED_MARKER_OT_delete", 
WM_OP_EXEC_REGION_WIN, ICON_BLANK1, "Delete Marker",
+       uiDefIconTextButO(C, block, BUTM, "MARKER_OT_delete", 
WM_OP_EXEC_REGION_WIN, ICON_BLANK1, "Delete Marker",
                                          0, yco-=20, menuwidth, 19, "");
        
        uiDefBut(block, SEPR, 0, "",        0, yco-=6, menuwidth, 6, NULL, 0.0, 
0.0, 0, 0, "");
        
        uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Name Marker|Ctrl M",
                                         0, yco-=20, menuwidth, 19, NULL, 0.0, 
0.0, 1, 3, "");
-       uiDefIconTextButO(C, block, BUTM, "ED_MARKER_OT_move", 
WM_OP_INVOKE_REGION_WIN, ICON_BLANK1, "Grab/Move Marker",
+       uiDefIconTextButO(C, block, BUTM, "MARKER_OT_move", 
WM_OP_INVOKE_REGION_WIN, ICON_BLANK1, "Grab/Move Marker",
                                          0, yco-=20, menuwidth, 19, "");
        
        uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 
0, 0, "");

Modified: branches/blender2.5/blender/source/blender/windowmanager/WM_api.h
===================================================================
--- branches/blender2.5/blender/source/blender/windowmanager/WM_api.h   
2008-12-26 13:11:04 UTC (rev 18075)
+++ branches/blender2.5/blender/source/blender/windowmanager/WM_api.h   
2008-12-26 13:29:47 UTC (rev 18076)
@@ -99,8 +99,8 @@
 
 void           wm_event_add            (wmWindow *win, struct wmEvent 
*event_to_add); /* XXX only for warning */
 
-                       /* at maximum, every timestep seconds it triggers TIMER 
events */
-struct wmTimer *WM_event_add_window_timer(wmWindow *win, double timestep);
+                       /* at maximum, every timestep seconds it triggers 
event_type events */
+struct wmTimer *WM_event_add_window_timer(wmWindow *win, int event_type, 
double timestep);
 void           WM_event_remove_window_timer(wmWindow *win, struct wmTimer 
*timer);
 void           WM_event_window_timer_sleep(wmWindow *win, struct wmTimer 
*timer, int dosleep);
 

Modified: branches/blender2.5/blender/source/blender/windowmanager/WM_types.h
===================================================================
--- branches/blender2.5/blender/source/blender/windowmanager/WM_types.h 
2008-12-26 13:11:04 UTC (rev 18075)
+++ branches/blender2.5/blender/source/blender/windowmanager/WM_types.h 
2008-12-26 13:29:47 UTC (rev 18076)
@@ -173,6 +173,7 @@
 typedef struct wmTimer {
        struct wmTimer *next, *prev;
        double timestep;                /* set by timer user */
+       int event_type;                 /* set by timer user */
        
        double duration;                /* total running time in seconds */
        double delta;                   /* time since previous step in seconds 
*/

Modified: 
branches/blender2.5/blender/source/blender/windowmanager/intern/wm_window.c
===================================================================
--- branches/blender2.5/blender/source/blender/windowmanager/intern/wm_window.c 
2008-12-26 13:11:04 UTC (rev 18075)
+++ branches/blender2.5/blender/source/blender/windowmanager/intern/wm_window.c 
2008-12-26 13:29:47 UTC (rev 18076)
@@ -517,11 +517,17 @@
                for(wt= win->timers.first; wt; wt= wt->next) {
                        if(wt->sleep==0) {
                                if(wt->timestep < time - wt->ltime) {
+                                       wmEvent event= *(win->eventstate);
+                                       
                                        wt->delta= time - wt->ltime;
                                        wt->duration += wt->delta;
                                        wt->ltime= time;
                                        
-                                       wm_event_add_ghostevent(win, 
GHOST_kEventTimer, wt);
+                                       event.type= wt->event_type;
+                                       event.custom= EVT_DATA_TIMER;
+                                       event.customdata= wt;
+                                       wm_event_add(win, &event);
+
                                        retval= 1;
                                }
                        }
@@ -571,10 +577,11 @@
        }               
 }
 
-wmTimer *WM_event_add_window_timer(wmWindow *win, double timestep)
+wmTimer *WM_event_add_window_timer(wmWindow *win, int event_type, double 
timestep)
 {
        wmTimer *wt= MEM_callocN(sizeof(wmTimer), "window timer");
        
+       wt->event_type= event_type;
        wt->ltime= PIL_check_seconds_timer();
        wt->timestep= timestep;
        

Modified: 
branches/blender2.5/blender/source/blender/windowmanager/wm_event_types.h
===================================================================
--- branches/blender2.5/blender/source/blender/windowmanager/wm_event_types.h   
2008-12-26 13:11:04 UTC (rev 18075)
+++ branches/blender2.5/blender/source/blender/windowmanager/wm_event_types.h   
2008-12-26 13:29:47 UTC (rev 18076)
@@ -67,8 +67,12 @@
 #define WINCLOSE               0x0107  /* window close */
 #define WINQUIT                        0x0108  /* signal from user that app is 
to go away */
 #define Q_FIRSTTIME            0x0109  /* on startup */
-#define TIMER                  0x0110  /* timer event */
 
+#define TIMER                  0x0110  /* timer event, passed on to all queues 
*/
+#define TIMER0                 0x0111  /* timer event, slot for internal use */
+#define TIMER1                 0x0112  /* timer event, slot for internal use */
+#define TIMER2                 0x0113  /* timer event, slot for internal use */
+
 /* standard keyboard */
 
 #define AKEY           'a'


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to