diff --git a/Common/OS.cpp b/Common/OS.cpp index 76e6fc4c9d3096fcb5ecaeaf17bb935d33a9d22c..e360bcf4e96fc00fe0865ac44fac12df7f002ef0 100644 --- a/Common/OS.cpp +++ b/Common/OS.cpp @@ -318,28 +318,52 @@ void RedirectIOToConsole() { #if defined(WIN32) && !defined(__CYGWIN__) // Win32 GUI apps do not write to the DOS console; make it work again by - // attaching to parent console, which allows to use the DOS shell to work - // with Gmsh on the command line (without this hack, you need to either use - // a better shell (e.g. bash), or compile a /subsystem:console version + // attaching to parent console, which allows to use the DOS shell to work with + // Gmsh on the command line (without this hack, you need to either use a + // better shell (e.g. bash), or compile a /subsystem:console version if(!AttachConsole(ATTACH_PARENT_PROCESS)) return; // redirect unbuffered stdout, stdin and stderr to the console - intptr_t lStdHandle = (intptr_t)GetStdHandle(STD_OUTPUT_HANDLE); - int hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); - FILE *fp = _fdopen(hConHandle, "w"); - *stdout = *fp; - setvbuf(stdout, NULL, _IONBF, 0); - lStdHandle = (intptr_t)GetStdHandle(STD_INPUT_HANDLE); - hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); - fp = _fdopen(hConHandle, "r"); - *stdin = *fp; - setvbuf(stdin, NULL, _IONBF, 0); - lStdHandle = (intptr_t)GetStdHandle(STD_ERROR_HANDLE); - hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); - fp = _fdopen(hConHandle, "w"); - *stderr = *fp; - setvbuf(stderr, NULL, _IONBF, 0); - // make cout, wcout, cin, wcin, wcerr, cerr, wclog and clog point to - // console as well + { + intptr_t lStdHandle = (intptr_t)GetStdHandle(STD_OUTPUT_HANDLE); + if(lStdHandle != INVALID_HANDLE_VALUE){ + int hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); + if(hConHandle >= 0){ + FILE *fp = _fdopen(hConHandle, "w"); + if(fp){ + *stdout = *fp; + setvbuf(stdout, NULL, _IONBF, 0); + } + } + } + } + { + intptr_t lStdHandle = (intptr_t)GetStdHandle(STD_INPUT_HANDLE); + if(lStdHandle != INVALID_HANDLE_VALUE){ + int hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); + if(hConHandle >= 0){ + FILE *fp = _fdopen(hConHandle, "r"); + if(fp){ + *stdin = *fp; + setvbuf(stdin, NULL, _IONBF, 0); + } + } + } + } + { + intptr_t lStdHandle = (intptr_t)GetStdHandle(STD_ERROR_HANDLE); + if(lStdHandle != INVALID_HANDLE_VALUE){ + int hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); + if(hConHandle >= 0){ + FILE *fp = _fdopen(hConHandle, "w"); + if(fp){ + *stderr = *fp; + setvbuf(stderr, NULL, _IONBF, 0); + } + } + } + } + // make cout, wcout, cin, wcin, wcerr, cerr, wclog and clog point to console + // as well std::ios::sync_with_stdio(); #endif } diff --git a/Mesh/Field.cpp b/Mesh/Field.cpp index 240664c35b3c2ac4c159e9ece0219739708e14c9..696a6d247f4077bd0c9211c015156ea66186a611 100644 --- a/Mesh/Field.cpp +++ b/Mesh/Field.cpp @@ -25,7 +25,7 @@ #include "BackgroundMesh.h" #include "CenterlineField.h" #include "STensor3.h" - +#include "meshMetric.h" #if defined(HAVE_POST) #include "PView.h" #include "OctreePost.h" @@ -1868,7 +1868,7 @@ void BoundaryLayerField::computeFor1dMesh (double x, double y, double z, double distk = 1.e22; for(std::list<int>::iterator it = nodes_id.begin(); it != nodes_id.end(); ++it) { - GVertex *v = GModel::current()->getVertexByTag(*it); + GVertex *v = GModel::current()->getVertexByTag(*it); double xp = v->x(); double yp = v->y(); double zp = v->z(); @@ -1892,7 +1892,7 @@ void BoundaryLayerField::computeFor1dMesh (double x, double y, double z, lc_n = std::min(lc_n, CTX::instance()->mesh.lcMax); SVector3 t1= SVector3(x-xpk,y-ypk,z-zpk); t1.normalize(); - metr = buildMetricTangentToCurve(t1,lc_n,lc_n); + metr = buildMetricTangentToCurve(t1,lc_n,lc_n); } void BoundaryLayerField::operator() (AttractorField *cc, double dist, diff --git a/doc/VERSIONS.txt b/doc/VERSIONS.txt index 7bc48c81c7dfa82f95aabc613042e6971863ded8..6c131c563880bb0ce9bff44599e0c9b635cc9891 100644 --- a/doc/VERSIONS.txt +++ b/doc/VERSIONS.txt @@ -1,4 +1,7 @@ -2.7.2: small improvements, compilation and bug fixes. +2.7.2: improved display of vector at COG; new experimental text string display +engines; improved fullscreen mode; access time/step in transformations; new +experimental features: AdaptMesh and Surface In Volume; compilation and bug +fixes. 2.7.1 (May 11, 2013): improved Delaunay point insertion; updated onelab; better Abaqus and UNV export; small bug and compilation fixes.