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>2008-12-27 19:09:56 +0300
committerTon Roosendaal <ton@blender.org>2008-12-27 19:09:56 +0300
commitf0f451fc16880315c8c094aaabd0fbf8a06ffede (patch)
treebfd93ce72af37a8c08898b745e09af08c36e4314 /source/blender/editors
parent0714d28236e66b258de90bcbb8a1a821ee424a71 (diff)
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.
Diffstat (limited to 'source/blender/editors')
-rw-r--r--source/blender/editors/animation/anim_markers.c16
-rw-r--r--source/blender/editors/animation/anim_ops.c3
-rw-r--r--source/blender/editors/interface/interface_regions.c4
-rw-r--r--source/blender/editors/screen/area.c9
-rw-r--r--source/blender/editors/screen/screen_edit.c14
-rw-r--r--source/blender/editors/screen/screen_ops.c27
-rw-r--r--source/blender/editors/space_action/action_header.c2
-rw-r--r--source/blender/editors/space_action/space_action.c11
-rw-r--r--source/blender/editors/space_buttons/buttons_header.c2
-rw-r--r--source/blender/editors/space_ipo/space_ipo.c11
-rw-r--r--source/blender/editors/space_time/space_time.c5
-rw-r--r--source/blender/editors/space_time/time_header.c11
12 files changed, 61 insertions, 54 deletions
diff --git a/source/blender/editors/animation/anim_markers.c b/source/blender/editors/animation/anim_markers.c
index b8a4436dedf..141ed5a9e70 100644
--- a/source/blender/editors/animation/anim_markers.c
+++ b/source/blender/editors/animation/anim_markers.c
@@ -200,7 +200,7 @@ static int ed_marker_add(bContext *C, wmOperator *op)
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 @@ static void ed_marker_move_cancel(bContext *C, wmOperator *op)
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 @@ static int ed_marker_move_modal(bContext *C, wmOperator *op, wmEvent *evt)
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 @@ XXX else if (mm->slink->spacetype == SPACE_ACTION) {
}
}
- 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 @@ static int ed_marker_select(bContext *C, wmEvent *evt, int extend)
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 @@ static int ed_marker_border_select_exec(bContext *C, wmOperator *op)
}
}
- 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 @@ static int ed_marker_select_all_exec(bContext *C, wmOperator *op)
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 @@ static int ed_marker_delete_exec(bContext *C, wmOperator *op)
}
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;
}
diff --git a/source/blender/editors/animation/anim_ops.c b/source/blender/editors/animation/anim_ops.c
index 539ba33dc55..b47bf3c4611 100644
--- a/source/blender/editors/animation/anim_ops.c
+++ b/source/blender/editors/animation/anim_ops.c
@@ -101,8 +101,7 @@ static void change_frame_apply(bContext *C, wmOperator *op)
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 */
diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c
index 0009f301b63..063255bed86 100644
--- a/source/blender/editors/interface/interface_regions.c
+++ b/source/blender/editors/interface/interface_regions.c
@@ -392,7 +392,7 @@ void ui_tooltip_free(bContext *C, ARegion *ar)
{
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 @@ void ui_menu_block_free(bContext *C, uiMenuBlockHandle *handle)
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 ***************************/
diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c
index 3c5c72cda5f..b63777cccf0 100644
--- a/source/blender/editors/screen/area.c
+++ b/source/blender/editors/screen/area.c
@@ -107,13 +107,12 @@ void ED_region_pixelspace(ARegion *ar)
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:
diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c
index 6d16e522a11..50a6381e1f4 100644
--- a/source/blender/editors/screen/screen_edit.c
+++ b/source/blender/editors/screen/screen_edit.c
@@ -912,15 +912,13 @@ void ED_screen_do_listen(wmWindow *win, wmNotifier *note)
{
/* 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;
- 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) */
+ case NC_SCREEN:
+ if(note->action==NA_EDITED)
+ win->screen->do_draw= win->screen->do_refresh= 1;
break;
}
}
@@ -1207,7 +1205,7 @@ void ed_screen_set(bContext *C, bScreen *sc)
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);
}
}
diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c
index 5f38081f7fc..3197d23988c 100644
--- a/source/blender/editors/screen/screen_ops.c
+++ b/source/blender/editors/screen/screen_ops.c
@@ -330,7 +330,7 @@ static int screen_area_rip_op(bContext *C, wmOperator *op)
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 @@ static void area_move_apply_do(bContext *C, int origval, int delta, int dir, int
}
}
- 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 @@ static int area_split_apply(bContext *C, wmOperator *op)
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 @@ static void area_split_exit(bContext *C, wmOperator *op)
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 @@ static int area_split_modal(bContext *C, wmOperator *op, wmEvent *event)
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 @@ static int frame_offset_exec(bContext *C, wmOperator *op)
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 @@ static int area_join_cancel(bContext *C, wmOperator *op)
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 @@ static int area_join_modal(bContext *C, wmOperator *op, wmEvent *event)
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 @@ static int area_join_modal(bContext *C, wmOperator *op, wmEvent *event)
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 @@ static int area_join_modal(bContext *C, wmOperator *op, wmEvent *event)
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 @@ static int region_split_exec(bContext *C, wmOperator *op)
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 @@ static int region_flip_exec(bContext *C, wmOperator *op)
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 @@ static int screen_animation_play(bContext *C, wmOperator *op, wmEvent *event)
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;
}
diff --git a/source/blender/editors/space_action/action_header.c b/source/blender/editors/space_action/action_header.c
index 3a16454fb46..05cff8c690d 100644
--- a/source/blender/editors/space_action/action_header.c
+++ b/source/blender/editors/space_action/action_header.c
@@ -308,7 +308,7 @@ static void do_action_buttons(bContext *C, void *arg, int event)
{
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;
}
}
diff --git a/source/blender/editors/space_action/space_action.c b/source/blender/editors/space_action/space_action.c
index b9e7c76cbf4..f772896a5a3 100644
--- a/source/blender/editors/space_action/space_action.c
+++ b/source/blender/editors/space_action/space_action.c
@@ -289,9 +289,14 @@ static void action_header_area_draw(const bContext *C, ARegion *ar)
static void action_main_area_listener(ARegion *ar, wmNotifier *wmn)
{
/* context changes */
- switch(wmn->type) {
- case WM_NOTE_MARKERS_CHANGED:
- ED_region_tag_redraw(ar);
+ switch(wmn->category) {
+ case NC_SCENE:
+ switch(wmn->data) {
+ case ND_FRAME:
+ case ND_MARKERS:
+ ED_region_tag_redraw(ar);
+ break;
+ }
break;
}
}
diff --git a/source/blender/editors/space_buttons/buttons_header.c b/source/blender/editors/space_buttons/buttons_header.c
index 552093b47a5..5090a81aaa7 100644
--- a/source/blender/editors/space_buttons/buttons_header.c
+++ b/source/blender/editors/space_buttons/buttons_header.c
@@ -99,7 +99,7 @@ static void do_buttons_buttons(bContext *C, void *arg, int event)
{
switch(event) {
case B_NEWFRAME:
- WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, NULL);
+ WM_event_add_notifier(C, NC_SCENE|ND_FRAME, NULL);
break;
case B_CONTEXT_SWITCH:
ED_area_tag_redraw(CTX_wm_area(C));
diff --git a/source/blender/editors/space_ipo/space_ipo.c b/source/blender/editors/space_ipo/space_ipo.c
index 00e446c65a9..8a301378fd7 100644
--- a/source/blender/editors/space_ipo/space_ipo.c
+++ b/source/blender/editors/space_ipo/space_ipo.c
@@ -275,10 +275,15 @@ static void ipo_header_area_draw(const bContext *C, ARegion *ar)
static void ipo_main_area_listener(ARegion *ar, wmNotifier *wmn)
{
/* context changes */
- switch(wmn->type) {
+ switch(wmn->category) {
- case WM_NOTE_MARKERS_CHANGED:
- ED_region_tag_redraw(ar);
+ case NC_SCENE:
+ switch(wmn->data) {
+ case ND_FRAME:
+ case ND_MARKERS:
+ ED_region_tag_redraw(ar);
+ break;
+ }
break;
}
}
diff --git a/source/blender/editors/space_time/space_time.c b/source/blender/editors/space_time/space_time.c
index 81c5334ef31..11ab7b19a6b 100644
--- a/source/blender/editors/space_time/space_time.c
+++ b/source/blender/editors/space_time/space_time.c
@@ -164,9 +164,10 @@ static void time_main_area_draw(const bContext *C, ARegion *ar)
static void time_main_area_listener(ARegion *ar, wmNotifier *wmn)
{
/* context changes */
- switch(wmn->type) {
+ switch(wmn->category) {
- case WM_NOTE_MARKERS_CHANGED:
+ case NC_SCENE:
+ /* any scene change for now */
ED_region_tag_redraw(ar);
break;
}
diff --git a/source/blender/editors/space_time/time_header.c b/source/blender/editors/space_time/time_header.c
index b760f1f969b..94c3e03ff8c 100644
--- a/source/blender/editors/space_time/time_header.c
+++ b/source/blender/editors/space_time/time_header.c
@@ -275,7 +275,7 @@ static void do_time_framemenu(bContext *C, void *arg, int event)
}
else
scene->r.sfra = scene->r.cfra;
- WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, NULL);
+ WM_event_add_notifier(C, NC_SCENE|ND_RENDER_OPTIONS, scene);
break;
case 2: /* Set as End */
if (scene->r.psfra) {
@@ -285,7 +285,7 @@ static void do_time_framemenu(bContext *C, void *arg, int event)
}
else
scene->r.efra = scene->r.cfra;
- WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, NULL);
+ WM_event_add_notifier(C, NC_SCENE|ND_RENDER_OPTIONS, scene);
break;
case 3: /* Rename Marker */
//rename_marker();
@@ -362,8 +362,10 @@ void do_time_buttons(bContext *C, void *arg, int event)
switch(event) {
case B_REDRAWALL:
+ WM_event_add_notifier(C, NC_SCENE|ND_RENDER_OPTIONS, scene);
+ break;
case B_NEWFRAME:
- WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, NULL);
+ WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene);
break;
case B_TL_REW:
scene->r.cfra= PSFRA;
@@ -374,7 +376,6 @@ void do_time_buttons(bContext *C, void *arg, int event)
break;
case B_TL_STOP:
ED_screen_animation_timer(C, 0);
- WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, NULL);
break;
case B_TL_FF:
/* end frame */
@@ -402,7 +403,7 @@ void do_time_buttons(bContext *C, void *arg, int event)
scene->r.pefra= 0;
}
//BIF_undo_push("Set anim-preview range");
- WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, NULL);
+ WM_event_add_notifier(C, NC_SCENE|ND_RENDER_OPTIONS, scene);
break;
case B_TL_INSERTKEY: