From f0f851d96379dac82d79a2e4ea343eadbbe8c3df Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Sun, 26 Oct 2003 20:45:52 +0000 Subject: [PATCH] - restored default one 'solid' light - subsurd level '0' is possible again. however; it was changed to '1' because convert-to-mesh crashes. the subsurf code doesnt give a result when level is '0', causing the convert routines to either crash, or deliver empty mesh... I added a warning in the convert routine now, and dont do anything then. - changed all glFlush() in glFinish() in editobject.c, which seems to be the right magical call to show frontbuffer drawing. --- source/blender/src/buttons_editing.c | 4 ++-- source/blender/src/drawview.c | 2 +- source/blender/src/editmesh.c | 12 ++++++------ source/blender/src/editobject.c | 5 ++++- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/source/blender/src/buttons_editing.c b/source/blender/src/buttons_editing.c index 5e614f5c337..f0e92731a9b 100644 --- a/source/blender/src/buttons_editing.c +++ b/source/blender/src/buttons_editing.c @@ -380,8 +380,8 @@ static void editing_panel_mesh_type(Object *ob, Mesh *me) uiDefButS(block, TOG|BIT|7, B_MAKEDISP, "SubSurf", 10,124,130,17, &me->flag, 0, 0, 0, 0, "Treats the active object as a Catmull-Clark Subdivision Surface"); uiBlockSetCol(block, TH_AUTO); - uiDefButS(block, NUM, B_MAKEDISP, "Subdiv:", 10,104,100,18, &me->subdiv, 1, 6, 0, 0, "Defines the level of subdivision to display in real time interactively"); - uiDefButS(block, NUM, B_MAKEDISP, "", 110, 104, 30, 18, &me->subdivr, 1, 6, 0, 0, "Defines the level of subdivision to apply during rendering"); + uiDefButS(block, NUM, B_MAKEDISP, "Subdiv:", 10,104,100,18, &me->subdiv, 0, 6, 0, 0, "Defines the level of subdivision to display in real time interactively"); + uiDefButS(block, NUM, B_MAKEDISP, "", 110, 104, 30, 18, &me->subdivr, 0, 6, 0, 0, "Defines the level of subdivision to apply during rendering"); uiDefButS(block, TOG|BIT|8, B_MAKEDISP, "Optimal", 10,84,130,17, &me->flag, 0, 0, 0, 0, "Only draws optimal wireframe"); if(me->msticky) val= 1.0; else val= 0.0; diff --git a/source/blender/src/drawview.c b/source/blender/src/drawview.c index 30841d66177..c56ce1348ae 100644 --- a/source/blender/src/drawview.c +++ b/source/blender/src/drawview.c @@ -168,7 +168,7 @@ void default_gl_light(void) U.light[0].spec[0]= 0.5; U.light[0].spec[1]= 0.5; U.light[0].spec[2]= 0.5; U.light[0].spec[3]= 1.0; - U.light[1].flag= 1; + U.light[1].flag= 0; U.light[1].vec[0]= 0.5; U.light[1].vec[1]= 0.5; U.light[1].vec[2]= 0.1; U.light[1].col[0]= 0.4; U.light[1].col[1]= 0.4; U.light[1].col[2]= 0.8; U.light[1].spec[0]= 0.3; U.light[1].spec[1]= 0.3; U.light[1].spec[2]= 0.5; diff --git a/source/blender/src/editmesh.c b/source/blender/src/editmesh.c index 1a6c3d9d604..53dc18137bf 100644 --- a/source/blender/src/editmesh.c +++ b/source/blender/src/editmesh.c @@ -2053,7 +2053,7 @@ static void tekenvertices_special(int mode, EditVert *act) /* teken = draw */ myloadmatrix(G.vd->viewmat); - glFlush(); + glFinish(); glDrawBuffer(GL_BACK); } @@ -7238,7 +7238,7 @@ CutCurve *get_mouse_trail(int *len, char mode){ if (rubberband) { /* rubberband mode, undraw last rubberband */ sdrawXORline(curve[i-1].x, curve[i-1].y,mval[0], mval[1]); - glFlush(); + glFinish(); rubberband=0; } @@ -7261,7 +7261,7 @@ CutCurve *get_mouse_trail(int *len, char mode){ if (restart) { for(j=1;j1)&&(i!=lasti)) { /*Draw recorded part of curve */ sdrawXORline(curve[i-2].x, curve[i-2].y, curve[i-1].x, curve[i-1].y); - glFlush(); + glFinish(); } if ((i==lasti)&&(i>0)) { /*Draw rubberband */ sdrawXORline(curve[i-1].x, curve[i-1].y,mval[0], mval[1]); - glFlush(); + glFinish(); rubberband=1; } lasti=i; @@ -7309,7 +7309,7 @@ CutCurve *get_mouse_trail(int *len, char mode){ sdrawXORline(curve[j-1].x, curve[j-1].y, curve[j].x, curve[j].y ); } - glFlush(); + glFinish(); persp(PERSP_VIEW); *len=i; diff --git a/source/blender/src/editobject.c b/source/blender/src/editobject.c index 6662e576d69..e201724b303 100644 --- a/source/blender/src/editobject.c +++ b/source/blender/src/editobject.c @@ -1689,7 +1689,10 @@ void convertmenu(void) else if(ob->type==OB_MESH) { Mesh *oldme= ob->data; - if (oldme->flag&ME_SUBSURF) { + if( oldme->subdiv==0 ) { + error("No subdivision Mesh to convert available"); + } + else if (oldme->flag&ME_SUBSURF) { ob->flag |= OB_DONE; ob1= copy_object(ob);