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>2004-11-07 21:20:44 +0300
committerTon Roosendaal <ton@blender.org>2004-11-07 21:20:44 +0300
commitac0bb78a2029b40e9e85697d4b822197b9906bd5 (patch)
tree5d139a9344c22f5cc03cdde804d0d7caf43ce861
parent16951736882773a383f04eb2809fa9b341bef9c2 (diff)
Tweaked the force_draw() calls, to allow headerprint() to work while
doing a transform. Solves bug reported by Brecht about this.
-rw-r--r--source/blender/blenkernel/BKE_bad_level_calls.h2
-rw-r--r--source/blender/include/BIF_space.h6
-rw-r--r--source/blender/src/editaction.c19
-rw-r--r--source/blender/src/editarmature.c8
-rw-r--r--source/blender/src/editika.c2
-rw-r--r--source/blender/src/editipo.c14
-rw-r--r--source/blender/src/editkey.c2
-rw-r--r--source/blender/src/editnla.c8
-rw-r--r--source/blender/src/editobject.c10
-rw-r--r--source/blender/src/editoops.c4
-rw-r--r--source/blender/src/editseq.c4
-rw-r--r--source/blender/src/editsima.c8
-rw-r--r--source/blender/src/editsound.c2
-rw-r--r--source/blender/src/editview.c6
-rw-r--r--source/blender/src/space.c39
15 files changed, 63 insertions, 71 deletions
diff --git a/source/blender/blenkernel/BKE_bad_level_calls.h b/source/blender/blenkernel/BKE_bad_level_calls.h
index 40d14fa09d6..8a875916a26 100644
--- a/source/blender/blenkernel/BKE_bad_level_calls.h
+++ b/source/blender/blenkernel/BKE_bad_level_calls.h
@@ -50,7 +50,7 @@ void unlink_screen(struct bScreen *sc);
void freeAllRad(void);
void free_editText(void);
void setscreen(struct bScreen *sc);
-void force_draw_all(void);
+void force_draw_all(int);
/* otherwise the WHILE_SEQ doesn't work */
struct Sequence;
struct ListBase;
diff --git a/source/blender/include/BIF_space.h b/source/blender/include/BIF_space.h
index 952f382fa72..c86a95f91a5 100644
--- a/source/blender/include/BIF_space.h
+++ b/source/blender/include/BIF_space.h
@@ -91,9 +91,9 @@ extern void drawemptyspace(struct ScrArea *sa, void *spacedata);
extern void drawinfospace(struct ScrArea *sa, void *spacedata);
extern void duplicatespacelist(struct ScrArea *area, struct ListBase *lb1, struct ListBase *lb2);
extern void extern_set_butspace(int fkey);
-extern void force_draw(void);
-extern void force_draw_all(void);
-extern void force_draw_plus(int type);
+extern void force_draw(int header);
+extern void force_draw_all(int header);
+extern void force_draw_plus(int type, int header);
extern void freespacelist(struct ListBase *lb);
extern void handle_view3d_around(void);
extern void handle_view3d_lock(void);
diff --git a/source/blender/src/editaction.c b/source/blender/src/editaction.c
index d01528cc04c..1363a302ca6 100644
--- a/source/blender/src/editaction.c
+++ b/source/blender/src/editaction.c
@@ -1255,15 +1255,10 @@ void transform_actionchannel_keys(char mode)
if (G.saction->lock){
do_all_actions();
- allqueue (REDRAWVIEW3D, 0);
- allqueue (REDRAWACTION, 0);
- allqueue (REDRAWIPO, 0);
- allqueue(REDRAWNLA, 0);
- force_draw_all();
+ force_draw_all(0);
}
else {
- addqueue (curarea->win, REDRAWALL, 0);
- force_draw ();
+ force_draw(0);
}
}
@@ -1445,11 +1440,11 @@ void transform_meshchannel_keys(char mode, Key *key)
allqueue (REDRAWACTION, 0);
allqueue (REDRAWIPO, 0);
allqueue(REDRAWNLA, 0);
- force_draw_all();
+ force_draw_all(0);
}
else {
addqueue (curarea->win, REDRAWALL, 0);
- force_draw ();
+ force_draw(0);
}
}
@@ -2454,9 +2449,9 @@ void winqreadactionspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
if( cfra!=CFRA ) {
CFRA= cfra;
update_for_newframe();
- force_draw_plus(SPACE_VIEW3D);
- force_draw_plus(SPACE_IPO);
- force_draw_plus(SPACE_BUTS);
+ force_draw_plus(SPACE_VIEW3D, 1);
+ force_draw_plus(SPACE_IPO, 1);
+ force_draw_plus(SPACE_BUTS, 1);
}
} while(get_mbut() & mousebut);
diff --git a/source/blender/src/editarmature.c b/source/blender/src/editarmature.c
index 6448e9642f1..4f6c0d51897 100644
--- a/source/blender/src/editarmature.c
+++ b/source/blender/src/editarmature.c
@@ -1687,7 +1687,7 @@ static void add_bone_input (Object *ob)
Mat4One (bone->obmat);
bone->size[0]=bone->size[1]=bone->size[2]=1.0F;
- force_draw_plus(SPACE_BUTS);
+ force_draw_plus(SPACE_BUTS, 1);
while(qtest()) {
event= extern_qread(&val);
@@ -2892,7 +2892,7 @@ void hide_selected_pose_bones(void) {
bone_looper(G.obpose, arm->bonebase.first, NULL,
hide_selected_pose_bone);
- force_draw();
+ force_draw(1);
}
int hide_unselected_pose_bone(Object *ob, Bone *bone, void *ptr) {
@@ -2913,7 +2913,7 @@ void hide_unselected_pose_bones(void) {
bone_looper(G.obpose, arm->bonebase.first, NULL,
hide_unselected_pose_bone);
- force_draw();
+ force_draw(1);
}
int show_pose_bone(Object *ob, Bone *bone, void *ptr) {
@@ -2936,7 +2936,7 @@ void show_all_pose_bones(void) {
bone_looper(G.obpose, arm->bonebase.first, NULL,
show_pose_bone);
- force_draw();
+ force_draw(1);
}
int is_delay_deform(void)
diff --git a/source/blender/src/editika.c b/source/blender/src/editika.c
index 9c090f7eae1..e7a283a84dc 100644
--- a/source/blender/src/editika.c
+++ b/source/blender/src/editika.c
@@ -267,7 +267,7 @@ int extrude_ika(Object *ob, int add)
xo= mval[0];
yo= mval[1];
- force_draw();
+ force_draw(1);
}
while(qtest()) {
diff --git a/source/blender/src/editipo.c b/source/blender/src/editipo.c
index f87cd54fe09..297681a7421 100644
--- a/source/blender/src/editipo.c
+++ b/source/blender/src/editipo.c
@@ -2605,7 +2605,7 @@ void mouse_select_ipo()
update_editipo_flags();
- force_draw();
+ force_draw(0);
BIF_undo_push("Select Ipo");
if(G.sipo->showkey && G.sipo->blocktype==ID_OB) {
@@ -4813,16 +4813,16 @@ void transform_ipo(int mode)
/* update realtime */
if(G.sipo->lock) {
if(G.sipo->blocktype==ID_MA) {
- force_draw_plus(SPACE_BUTS);
+ force_draw_plus(SPACE_BUTS, 0);
}
else if(G.sipo->blocktype==ID_KE) {
do_ob_key(OBACT);
makeDispList(OBACT);
- force_draw_plus(SPACE_VIEW3D);
+ force_draw_plus(SPACE_VIEW3D, 0);
}
else if(G.sipo->blocktype==ID_AC) {
do_all_actions();
- force_draw_all();
+ force_draw_all(0);
}
else if(G.sipo->blocktype==ID_OB) {
Base *base= FIRSTBASE;
@@ -4831,12 +4831,12 @@ void transform_ipo(int mode)
if(base->object->ipo==G.sipo->ipo) do_ob_ipo(base->object);
base= base->next;
}
- force_draw_plus(SPACE_VIEW3D);
+ force_draw_plus(SPACE_VIEW3D, 0);
}
- else force_draw();
+ else force_draw(0);
}
else {
- force_draw();
+ force_draw(0);
}
firsttime= 0;
}
diff --git a/source/blender/src/editkey.c b/source/blender/src/editkey.c
index 8bd59134206..babf1106287 100644
--- a/source/blender/src/editkey.c
+++ b/source/blender/src/editkey.c
@@ -836,7 +836,7 @@ void move_keys(void)
xo= mval[0];
yo= mval[1];
- force_draw();
+ force_draw(0);
}
else BIF_wait_for_statechange();
diff --git a/source/blender/src/editnla.c b/source/blender/src/editnla.c
index 1a4c776f5f7..02c0698b5d5 100644
--- a/source/blender/src/editnla.c
+++ b/source/blender/src/editnla.c
@@ -306,8 +306,8 @@ void winqreadnlaspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
if( cfra!=CFRA ) {
CFRA= cfra;
update_for_newframe();
- force_draw_plus(SPACE_VIEW3D);
- force_draw_plus(SPACE_IPO);
+ force_draw_plus(SPACE_VIEW3D, 1);
+ force_draw_plus(SPACE_IPO, 1);
}
} while(get_mbut() & mousebut);
@@ -1013,11 +1013,11 @@ void transform_nlachannel_keys(char mode)
allqueue (REDRAWVIEW3D, 0);
allqueue (REDRAWNLA, 0);
allqueue (REDRAWIPO, 0);
- force_draw_all();
+ force_draw_all(0);
}
else {
addqueue (curarea->win, REDRAWALL, 0);
- force_draw ();
+ force_draw(0);
}
}
diff --git a/source/blender/src/editobject.c b/source/blender/src/editobject.c
index f87e0b6b08b..c45c0d97a9c 100644
--- a/source/blender/src/editobject.c
+++ b/source/blender/src/editobject.c
@@ -5397,7 +5397,7 @@ void transform(int mode)
set_constline_callback(mode, axismode, midtog, centre, imat, vx, vy, vz);
if(fast==0) {
- force_draw();
+ force_draw(0);
time= my_clock()-time;
if(time>50) fast= 1;
}
@@ -5717,7 +5717,7 @@ void transform(int mode)
set_constline_callback(mode, axismode, midtog, centre, imat, vx, vy, vz);
if(fast==0) {
- force_draw();
+ force_draw(0);
time= my_clock()-time;
if(time>50) fast= 1;
}
@@ -5979,7 +5979,7 @@ void transform(int mode)
set_constline_callback(mode, axismode, midtog, centre, imat, vx, vy, vz);
if(fast==0) {
- force_draw();
+ force_draw(0);
time= my_clock()-time;
if(time>50) fast= 1;
}
@@ -6059,7 +6059,7 @@ void transform(int mode)
if(fast==0) {
time= my_clock();
- force_draw();
+ force_draw(0);
time= my_clock()-time;
if(time>50) fast= 1;
}
@@ -6127,7 +6127,7 @@ void transform(int mode)
if(fast==0) {
time= my_clock();
- force_draw();
+ force_draw(0);
time= my_clock()-time;
if(time>50) fast= 1;
}
diff --git a/source/blender/src/editoops.c b/source/blender/src/editoops.c
index d306236d319..f6a26279c90 100644
--- a/source/blender/src/editoops.c
+++ b/source/blender/src/editoops.c
@@ -322,7 +322,7 @@ void transform_oops(int mode)
xo= mval[0];
yo= mval[1];
- force_draw();
+ force_draw(0);
firsttime= 0;
@@ -468,7 +468,7 @@ void mouse_select_oops(void)
oops_to_select_objects(); /* also redraw */
scrarea_queue_headredraw(curarea);
- force_draw();
+ force_draw(1);
std_rmouse_transform(transform_oops);
}
diff --git a/source/blender/src/editseq.c b/source/blender/src/editseq.c
index 60857aaa024..7b4c22a688b 100644
--- a/source/blender/src/editseq.c
+++ b/source/blender/src/editseq.c
@@ -411,7 +411,7 @@ void mouse_select_seq(void)
recurs_sel_seq(seq);
}
- force_draw();
+ force_draw(0);
if(last_seq) allqueue(REDRAWIPO, 0);
@@ -1874,7 +1874,7 @@ void transform_seq(int mode)
}
END_SEQ;
- force_draw();
+ force_draw(0);
}
else BIF_wait_for_statechange();
diff --git a/source/blender/src/editsima.c b/source/blender/src/editsima.c
index c3624852201..b3436b70ba7 100644
--- a/source/blender/src/editsima.c
+++ b/source/blender/src/editsima.c
@@ -689,8 +689,8 @@ void transform_tface_uv(int mode)
xo= mval[0];
yo= mval[1];
- if(G.sima->lock || mode=='w') force_draw_plus(SPACE_VIEW3D);
- else force_draw();
+ if(G.sima->lock || mode=='w') force_draw_plus(SPACE_VIEW3D, 0);
+ else force_draw(0);
firsttime= 0;
@@ -1148,7 +1148,7 @@ void mouse_select_sima(void)
*flagpoin |= val;
}
- force_draw();
+ force_draw(1);
BIF_undo_push("Select UV");
std_rmouse_transform(transform_tface_uv);
@@ -1290,7 +1290,7 @@ void uvedit_selectionCB(short selecting, Object *editobj, short *mval, float rad
if(G.f & G_DRAWFACES) { /* full redraw only if necessary */
draw_sel_circle(0, 0, 0, 0, 0); /* signal */
- force_draw();
+ force_draw(0);
}
else { /* force_draw() is no good here... */
glDrawBuffer(GL_FRONT);
diff --git a/source/blender/src/editsound.c b/source/blender/src/editsound.c
index b409804a9f8..6b821772de8 100644
--- a/source/blender/src/editsound.c
+++ b/source/blender/src/editsound.c
@@ -143,7 +143,7 @@ void winqreadsoundspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
first= 0;
CFRA= cfra;
update_for_newframe();
- force_draw_plus(SPACE_VIEW3D);
+ force_draw_plus(SPACE_VIEW3D, 1);
}
} while(get_mbut() & mousebut);
diff --git a/source/blender/src/editview.c b/source/blender/src/editview.c
index 838ddde1771..d1891cde9d0 100644
--- a/source/blender/src/editview.c
+++ b/source/blender/src/editview.c
@@ -1444,7 +1444,7 @@ void mesh_selectionCB(int selecting, Object *editobj, short *mval, float rad)
EM_selectmode_flush();
draw_sel_circle(0, 0, 0, 0, 0); /* signal */
- force_draw();
+ force_draw(0);
}
@@ -1510,7 +1510,7 @@ void nurbscurve_selectionCB(int selecting, Object *editobj, short *mval, float r
nu= nu->next;
}
draw_sel_circle(0, 0, 0, 0, 0); /* signal */
- force_draw();
+ force_draw(0);
}
@@ -1539,7 +1539,7 @@ void lattice_selectionCB(int selecting, Object *editobj, short *mval, float rad)
bp++;
}
draw_sel_circle(0, 0, 0, 0, 0); /* signal */
- force_draw();
+ force_draw(0);
}
/** Callbacks for selection in Editmode */
diff --git a/source/blender/src/space.c b/source/blender/src/space.c
index cb716db99a3..a8b2a072067 100644
--- a/source/blender/src/space.c
+++ b/source/blender/src/space.c
@@ -1809,7 +1809,7 @@ static void winqreadipospace(ScrArea *sa, void *spacedata, BWinEvent *evt)
if( cfra!=CFRA ) {
CFRA= cfra;
update_for_newframe();
- force_draw_all();/* To make constraint sliders redraw */
+ force_draw_all(0); /* To make constraint sliders redraw */
}
} while(get_mbut() & mousebut);
@@ -3131,7 +3131,7 @@ static void winqreadseqspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
first= 0;
CFRA= cfra;
- force_draw();
+ force_draw(0);
update_for_newframe(); /* for audio scrubbing */
}
@@ -3589,11 +3589,11 @@ static void winqreadimagespace(ScrArea *sa, void *spacedata, BWinEvent *evt)
/* Make OpenGL aware of a changed texture */
free_realtime_image(sima->image);
/* Redraw this view and the 3D view */
- force_draw_plus(SPACE_VIEW3D);
+ force_draw_plus(SPACE_VIEW3D, 0);
}
else {
/* Redraw only this view */
- force_draw();
+ force_draw(0);
}
xy_prev[0] = xy_curr[0];
xy_prev[1] = xy_curr[1];
@@ -3605,7 +3605,7 @@ static void winqreadimagespace(ScrArea *sa, void *spacedata, BWinEvent *evt)
/* Make OpenGL aware of a changed texture */
free_realtime_image(sima->image);
/* Redraw this view and the 3D view */
- force_draw_plus(SPACE_VIEW3D);
+ force_draw_plus(SPACE_VIEW3D, 1);
}
IMG_BrushDispose(brush);
IMG_CanvasDispose(canvas);
@@ -4581,15 +4581,16 @@ void allspace(unsigned short event, short val)
}
}
-
-void force_draw()
+/* if header==1, then draw header for curarea too. Excepption for headerprint()... */
+void force_draw(int header)
{
/* draws alle areas that something identical to curarea */
extern int afterqtest(short win, unsigned short evt); //editscreen.c
ScrArea *tempsa, *sa;
scrarea_do_windraw(curarea);
-
+ if(header) scrarea_do_headdraw(curarea);
+
tempsa= curarea;
sa= G.curscreen->areabase.first;
while(sa) {
@@ -4598,19 +4599,13 @@ void force_draw()
if( ((View3D *)sa->spacedata.first)->lay & ((View3D *)tempsa->spacedata.first)->lay) {
areawinset(sa->win);
scrarea_do_windraw(sa);
+ scrarea_do_headdraw(sa);
}
}
- else if(sa->spacetype==SPACE_IPO) {
- areawinset(sa->win);
- scrarea_do_windraw(sa);
- }
- else if(sa->spacetype==SPACE_SEQ) {
- areawinset(sa->win);
- scrarea_do_windraw(sa);
- }
- else if(sa->spacetype==SPACE_ACTION) {
+ else {
areawinset(sa->win);
scrarea_do_windraw(sa);
+ scrarea_do_headdraw(sa);
}
}
sa= sa->next;
@@ -4635,13 +4630,14 @@ void force_draw()
}
-void force_draw_plus(int type)
+/* if header==1, then draw header for curarea too. Excepption for headerprint()... */
+void force_draw_plus(int type, int header)
{
/* draws all areas that show something like curarea AND areas of 'type' */
ScrArea *tempsa, *sa;
scrarea_do_windraw(curarea);
- scrarea_do_headdraw(curarea);
+ if(header) scrarea_do_headdraw(curarea);
tempsa= curarea;
sa= G.curscreen->areabase.first;
@@ -4660,7 +4656,8 @@ void force_draw_plus(int type)
screen_swapbuffers();
}
-void force_draw_all(void)
+/* if header==1, then draw header for curarea too. Excepption for headerprint()... */
+void force_draw_all(int header)
{
/* redraws all */
ScrArea *tempsa, *sa;
@@ -4672,7 +4669,7 @@ void force_draw_all(void)
while(sa) {
if(sa->headwin) {
scrarea_do_headdraw(sa);
- scrarea_do_headchange(sa);
+ if(sa!=curarea || header) scrarea_do_headchange(sa);
}
if(sa->win) {
scrarea_do_windraw(sa);