forked from bartvdbraak/blender
Tweaked the force_draw() calls, to allow headerprint() to work while
doing a transform. Solves bug reported by Brecht about this.
This commit is contained in:
parent
1695173688
commit
ac0bb78a20
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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)
|
||||
|
@ -267,7 +267,7 @@ int extrude_ika(Object *ob, int add)
|
||||
xo= mval[0];
|
||||
yo= mval[1];
|
||||
|
||||
force_draw();
|
||||
force_draw(1);
|
||||
}
|
||||
|
||||
while(qtest()) {
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -836,7 +836,7 @@ void move_keys(void)
|
||||
xo= mval[0];
|
||||
yo= mval[1];
|
||||
|
||||
force_draw();
|
||||
force_draw(0);
|
||||
}
|
||||
else BIF_wait_for_statechange();
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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();
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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 */
|
||||
|
@ -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,14 +4581,15 @@ 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;
|
||||
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user