From 7785b2ab44f3eed78d147c5d6babe8ef0d2ef359 Mon Sep 17 00:00:00 2001 From: Paolo Cignoni cignoni Date: Fri, 21 Sep 2007 09:58:43 +0000 Subject: [PATCH] removed a dead lock --- src/meshlabplugins/editsegment/cutting.h | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/meshlabplugins/editsegment/cutting.h b/src/meshlabplugins/editsegment/cutting.h index 5365a305f..2aab258a6 100644 --- a/src/meshlabplugins/editsegment/cutting.h +++ b/src/meshlabplugins/editsegment/cutting.h @@ -274,18 +274,21 @@ namespace vcg { queue edgeFaceQueue; for (vi = mesh->vert.begin(); vi != mesh->vert.end(); ++vi) { - if ( (*TDMarkPtr)[(*vi)].Mark == F ) vi->C() = Color4b::Magenta; + if ( (*TDMarkPtr)[(*vi)].Mark == F ) vi->C() = Color4b::Yellow; if ( (*TDMarkPtr)[(*vi)].Mark == B ) vi->C() = Color4b::White; - if ( (*TDMarkPtr)[(*vi)].Mark == U ) vi->C() = Color4b::Yellow; + if ( (*TDMarkPtr)[(*vi)].Mark == U ) vi->C() = Color4b::Green; } int bitflag = FaceType::NewBitFlag(); + int bitflag_2 = FaceType::NewBitFlag(); int count; if (selectForeground) { for (fi = mesh->face.begin(); fi != mesh->face.end(); ++fi) { (*fi).ClearUserBit(bitflag); + (*fi).ClearUserBit(bitflag_2); + count = 0; for (int i = 0; i<3; ++i) { if ( (*TDMarkPtr)[(*fi).V(i)].Mark == F || (*TDMarkPtr)[(*fi).V(i)].Mark == iF ) ++count; @@ -342,8 +345,11 @@ namespace vcg { } tmp_face->ClearUserBit(bitflag); } else { - edgeFaceQueue.push(tmp_face); - tmp_face->SetUserBit(bitflag); + if (!tmp_face->IsUserBit(bitflag_2)) { + edgeFaceQueue.push(tmp_face); + tmp_face->SetUserBit(bitflag); + tmp_face->SetUserBit(bitflag_2); + } } } } @@ -359,6 +365,9 @@ namespace vcg { (*fi).ClearS(); } } + + FaceType::DeleteBitFlag(bitflag_2); + FaceType::DeleteBitFlag(bitflag); } //debugging function