Revision: 18098
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18098
Author:   ton
Date:     2008-12-27 17:09:56 +0100 (Sat, 27 Dec 2008)

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

Notifier system upgrade, based on Brecht's doc.
Implementation notes:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers#Implementation

In short: let's try to strictly communicate in a notifier what happened.
The listeners then can act themselves. It also means that a frame-changed
notifier doesn't send out redraws, the editors themselves can decide.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/animation/anim_markers.c
    branches/blender2.5/blender/source/blender/editors/animation/anim_ops.c
    
branches/blender2.5/blender/source/blender/editors/interface/interface_regions.c
    branches/blender2.5/blender/source/blender/editors/screen/area.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_action/action_header.c
    
branches/blender2.5/blender/source/blender/editors/space_action/space_action.c
    
branches/blender2.5/blender/source/blender/editors/space_buttons/buttons_header.c
    branches/blender2.5/blender/source/blender/editors/space_ipo/space_ipo.c
    branches/blender2.5/blender/source/blender/editors/space_time/space_time.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_event_system.c
    branches/blender2.5/blender/source/blender/windowmanager/intern/wm_gesture.c
    
branches/blender2.5/blender/source/blender/windowmanager/intern/wm_operators.c
    branches/blender2.5/blender/source/blender/windowmanager/intern/wm_window.c
    branches/blender2.5/blender/source/blender/windowmanager/wm.h

Modified: 
branches/blender2.5/blender/source/blender/editors/animation/anim_markers.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/animation/anim_markers.c 
2008-12-27 14:52:49 UTC (rev 18097)
+++ branches/blender2.5/blender/source/blender/editors/animation/anim_markers.c 
2008-12-27 16:09:56 UTC (rev 18098)
@@ -200,7 +200,7 @@
        sprintf(marker->name, "Frame %d", frame); // XXX - temp code only
        BLI_addtail(markers, marker);
        
-       WM_event_add_notifier(C, WM_NOTE_MARKERS_CHANGED, 0, NULL);
+       WM_event_add_notifier(C, NC_SCENE|ND_MARKERS, NULL);
        //BIF_undo_push("Add Marker");
        
        return OPERATOR_FINISHED;
@@ -336,7 +336,7 @@
        ed_marker_move_apply(C, op);
        ed_marker_move_exit(C, op);     
        
-       WM_event_add_notifier(C, WM_NOTE_MARKERS_CHANGED, 0, NULL);
+       WM_event_add_notifier(C, NC_SCENE|ND_MARKERS, NULL);
 }
 
 
@@ -379,7 +379,7 @@
                case RIGHTMOUSE:
                        if(WM_modal_tweak_check(evt, mm->event_type)) {
                                ed_marker_move_exit(C, op);
-                               WM_event_add_notifier(C, 
WM_NOTE_MARKERS_CHANGED, 0, NULL);
+                               WM_event_add_notifier(C, NC_SCENE|ND_MARKERS, 
NULL);
                                return OPERATOR_FINISHED;
                        }
                        
@@ -456,7 +456,7 @@
                                        }
                                }
                                
-                               WM_event_add_notifier(C, 
WM_NOTE_MARKERS_CHANGED, 0, NULL);
+                               WM_event_add_notifier(C, NC_SCENE|ND_MARKERS, 
NULL);
                                // headerprint(str); XXX
                        }
        }
@@ -623,7 +623,7 @@
        else
                select_timeline_marker_frame(markers, cfra, 0);
        
-       WM_event_add_notifier(C, WM_NOTE_MARKERS_CHANGED, 0, NULL);
+       WM_event_add_notifier(C, NC_SCENE|ND_MARKERS, NULL);
 
        return OPERATOR_PASS_THROUGH;
 }
@@ -716,7 +716,7 @@
                }
        }
        
-       WM_event_add_notifier(C, WM_NOTE_MARKERS_CHANGED, 0, NULL);
+       WM_event_add_notifier(C, NC_SCENE|ND_MARKERS, NULL);
 
        return 1;
 }
@@ -769,7 +769,7 @@
                        marker->flag &= ~SELECT;
        }
        
-       WM_event_add_notifier(C, WM_NOTE_MARKERS_CHANGED, 0, NULL);
+       WM_event_add_notifier(C, NC_SCENE|ND_MARKERS, NULL);
 
        return OPERATOR_FINISHED;
 }
@@ -816,7 +816,7 @@
        }
        
        if(changed) {
-               WM_event_add_notifier(C, WM_NOTE_MARKERS_CHANGED, 0, NULL);
+               WM_event_add_notifier(C, NC_SCENE|ND_MARKERS, NULL);
        }
        return OPERATOR_FINISHED;
 }

Modified: 
branches/blender2.5/blender/source/blender/editors/animation/anim_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/animation/anim_ops.c     
2008-12-27 14:52:49 UTC (rev 18097)
+++ branches/blender2.5/blender/source/blender/editors/animation/anim_ops.c     
2008-12-27 16:09:56 UTC (rev 18098)
@@ -101,8 +101,7 @@
        if (cfra != scene->r.cfra)
                scene->r.cfra= cfra;
        
-       WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, NULL);
-       /* XXX: add WM_NOTE_TIME_CHANGED? */
+       WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene);
 }
 
 /* Clear any temp flags */

Modified: 
branches/blender2.5/blender/source/blender/editors/interface/interface_regions.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/interface/interface_regions.c
    2008-12-27 14:52:49 UTC (rev 18097)
+++ 
branches/blender2.5/blender/source/blender/editors/interface/interface_regions.c
    2008-12-27 16:09:56 UTC (rev 18098)
@@ -392,7 +392,7 @@
 {
        ui_remove_temporary_region(C, CTX_wm_screen(C), ar);
 
-       WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, NULL);
+       WM_event_add_notifier(C, NC_WINDOW, NULL);      // XXX provide rect for 
window
 }
 
 /************************* Creating Menu Blocks **********************/
@@ -710,7 +710,7 @@
        ui_remove_temporary_region(C, CTX_wm_screen(C), handle->region);
        MEM_freeN(handle);
 
-       WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, NULL);
+       WM_event_add_notifier(C, NC_WINDOW, NULL);      // XXX provide rect for 
window
 }
 
 /***************************** Menu Button ***************************/

Modified: branches/blender2.5/blender/source/blender/editors/screen/area.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/screen/area.c    
2008-12-27 14:52:49 UTC (rev 18097)
+++ branches/blender2.5/blender/source/blender/editors/screen/area.c    
2008-12-27 16:09:56 UTC (rev 18098)
@@ -107,13 +107,12 @@
 void ED_region_do_listen(ARegion *ar, wmNotifier *note)
 {
        /* generic notes first */
-       switch(note->type) {
-               case WM_NOTE_WINDOW_REDRAW:
-               case WM_NOTE_SCREEN_CHANGED:
+       switch(note->category) {
+               case NC_WINDOW:
                        ED_region_tag_redraw(ar);
                        break;
-               case WM_NOTE_GESTURE_REDRAW:
-                       if(note->swinid==ar->swinid)
+               case NC_SCREEN:
+                       if(note->action==NA_EDITED)
                                ED_region_tag_redraw(ar);
                        break;
                default:

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-27 14:52:49 UTC (rev 18097)
+++ branches/blender2.5/blender/source/blender/editors/screen/screen_edit.c     
2008-12-27 16:09:56 UTC (rev 18098)
@@ -912,16 +912,14 @@
 {
        
        /* generic notes */
-       switch(note->type) {
-               case WM_NOTE_WINDOW_REDRAW:
+       switch(note->category) {
+               case NC_WINDOW:
                        win->screen->do_draw= 1;
                        break;
-               case WM_NOTE_SCREEN_CHANGED:
-                       win->screen->do_draw= win->screen->do_refresh= 1;
+               case NC_SCREEN:
+                       if(note->action==NA_EDITED)
+                               win->screen->do_draw= win->screen->do_refresh= 
1;
                        break;
-               case WM_NOTE_GESTURE_REDRAW:
-                       win->screen->do_gesture= 1;     /* XXX gestures are 
stored in window, draw per region... a bit weak? wait for proper composite? 
(ton) */
-                       break;
        }
 }
 
@@ -1207,7 +1205,7 @@
                CTX_wm_window(C)->screen= sc;
                
                ED_screen_refresh(CTX_wm_manager(C), CTX_wm_window(C));
-               WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, NULL);
+               WM_event_add_notifier(C, NC_WINDOW, NULL);
        }
 }
 

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-27 14:52:49 UTC (rev 18097)
+++ branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c      
2008-12-27 16:09:56 UTC (rev 18098)
@@ -330,7 +330,7 @@
        area_copy_data((ScrArea *)newsc->areabase.first, sa, 0);
        
        /* screen, areas init */
-       WM_event_add_notifier(C, WM_NOTE_SCREEN_CHANGED, 0, NULL);
+       WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL);
        
        return OPERATOR_FINISHED;
 }
@@ -473,7 +473,7 @@
                }
        }
 
-       WM_event_add_notifier(C, WM_NOTE_SCREEN_CHANGED, 0, NULL);
+       WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL);
 }
 
 static void area_move_apply(bContext *C, wmOperator *op)
@@ -727,7 +727,7 @@
                if(dir=='h') sd->origval= sd->nedge->v1->vec.y;
                else sd->origval= sd->nedge->v1->vec.x;
 
-               WM_event_add_notifier(C, WM_NOTE_SCREEN_CHANGED, 0, NULL);
+               WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL);
                
                return 1;
        }               
@@ -742,7 +742,7 @@
                op->customdata = NULL;
        }
        
-       WM_event_add_notifier(C, WM_NOTE_SCREEN_CHANGED, 0, NULL);
+       WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL);
 
        /* this makes sure aligned edges will result in aligned grabbing */
        removedouble_scrverts(CTX_wm_screen(C));
@@ -853,7 +853,7 @@
                        fac= (dir == 'v') ? event->x-sd->origmin : 
event->y-sd->origmin;
                        RNA_float_set(op->ptr, "fac", fac / 
(float)sd->origsize);
                        
-                       WM_event_add_notifier(C, WM_NOTE_SCREEN_CHANGED, 0, 
NULL);
+                       WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL);
                        break;
                        
                case LEFTMOUSE:
@@ -910,8 +910,7 @@
        delta = RNA_int_get(op->ptr, "delta");
 
        CTX_data_scene(C)->r.cfra += delta;
-       WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, NULL);
-       /* XXX: add WM_NOTE_TIME_CHANGED? */
+       WM_event_add_notifier(C, NC_SCENE|ND_FRAME, CTX_data_scene(C));
 
        return OPERATOR_FINISHED;
 }
@@ -1156,7 +1155,7 @@
                jd->sa2->flag &= ~AREA_FLAG_DRAWJOINTO;
        }
 
-       WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, NULL);
+       WM_event_add_notifier(C, NC_WINDOW, NULL);
        
        area_join_exit(C, op);
 
@@ -1204,7 +1203,7 @@
                                                                jd->sa2 = NULL;
                                                        }
                                                }
-                                               WM_event_add_notifier(C, 
WM_NOTE_WINDOW_REDRAW, 0, NULL);
+                                               WM_event_add_notifier(C, 
NC_WINDOW, NULL);
                                        } 
                                        else {
                                                /* we are back in the area 
previously selected for keeping 
@@ -1229,7 +1228,7 @@
                                                                jd->sa2->flag 
|= AREA_FLAG_DRAWJOINTO;
                                                        }
                                                }
-                                               WM_event_add_notifier(C, 
WM_NOTE_WINDOW_REDRAW, 0, NULL);
+                                               WM_event_add_notifier(C, 
NC_WINDOW, NULL);
                                        }
                                }
                        }
@@ -1237,7 +1236,7 @@
                case LEFTMOUSE:
                        if(event->val==0) {
                                area_join_apply(C, op);
-                               WM_event_add_notifier(C, 
WM_NOTE_SCREEN_CHANGED, 0, NULL);
+                               WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, 
NULL);
                                area_join_exit(C, op);
                                return OPERATOR_FINISHED;
                        }
@@ -1324,7 +1323,7 @@
        else
                ar->alignment= RGN_ALIGN_VSPLIT;
        
-       WM_event_add_notifier(C, WM_NOTE_SCREEN_CHANGED, 0, NULL);
+       WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL);
        
        return OPERATOR_FINISHED;
 }
@@ -1363,7 +1362,7 @@
        else if(ar->alignment==RGN_ALIGN_RIGHT)
                ar->alignment= RGN_ALIGN_LEFT;
        
-       WM_event_add_notifier(C, WM_NOTE_SCREEN_CHANGED, 0, NULL);
+       WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL);
        
        return OPERATOR_FINISHED;
 }
@@ -1401,7 +1400,7 @@
                                scene->r.cfra= scene->r.sfra;
                }
 
-               WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, NULL);
+               WM_event_add_notifier(C, NC_SCENE|ND_FRAME, CTX_data_scene(C));
                
                return OPERATOR_FINISHED;
        }

Modified: 
branches/blender2.5/blender/source/blender/editors/space_action/action_header.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/space_action/action_header.c 
    2008-12-27 14:52:49 UTC (rev 18097)
+++ 
branches/blender2.5/blender/source/blender/editors/space_action/action_header.c 
    2008-12-27 16:09:56 UTC (rev 18098)
@@ -308,7 +308,7 @@
 {
        switch(event) {
                case B_REDR:
-                       WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, 
NULL);
+                       ED_region_tag_redraw(CTX_wm_region(C));
                        break;
        }
 }

Modified: 
branches/blender2.5/blender/source/blender/editors/space_action/space_action.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/space_action/space_action.c  
    2008-12-27 14:52:49 UTC (rev 18097)
+++ 
branches/blender2.5/blender/source/blender/editors/space_action/space_action.c  
    2008-12-27 16:09:56 UTC (rev 18098)
@@ -289,9 +289,14 @@

@@ Diff output truncated at 10240 characters. @@

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

Reply via email to