diff options
Diffstat (limited to 'patches/CGAL-OGL_helper-tesscombine.patch')
-rw-r--r-- | patches/CGAL-OGL_helper-tesscombine.patch | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/patches/CGAL-OGL_helper-tesscombine.patch b/patches/CGAL-OGL_helper-tesscombine.patch new file mode 100644 index 0000000..792e1da --- /dev/null +++ b/patches/CGAL-OGL_helper-tesscombine.patch @@ -0,0 +1,34 @@ +--- ../../libraries/install/include/CGAL/Nef_3/OGL_helper.h 2010-06-09 21:00:52.000000000 +0200 ++++ OGL_helper.h 2011-09-29 23:09:47.000000000 +0200 +@@ -243,6 +243,22 @@ + glVertex3dv(pc); + } + ++ inline void CGAL_GLU_TESS_CALLBACK combineCallback(GLdouble coords[3], GLvoid *[4], GLfloat [4], GLvoid **dataOut) ++ { static std::list<GLdouble*> pcache; ++ if (dataOut) { ++ GLdouble *n = new GLdouble[3]; ++ n[0] = coords[0]; ++ n[1] = coords[1]; ++ n[2] = coords[2]; ++ pcache.push_back(n); ++ *dataOut = n; ++ } else { ++ for (std::list<GLdouble*>::const_iterator i = pcache.begin(); i != pcache.end(); i++) ++ delete[] *i; ++ pcache.clear(); ++ } ++ } ++ + + enum { SNC_AXES}; + enum { SNC_BOUNDARY, SNC_SKELETON }; +@@ -376,6 +392,8 @@ + GLUtesselator* tess_ = gluNewTess(); + gluTessCallback(tess_, GLenum(GLU_TESS_VERTEX_DATA), + (GLvoid (CGAL_GLU_TESS_CALLBACK *)(CGAL_GLU_TESS_DOTS)) &vertexCallback); ++ gluTessCallback(tess_, GLenum(GLU_TESS_COMBINE), ++ (GLvoid (CGAL_GLU_TESS_CALLBACK *)(CGAL_GLU_TESS_DOTS)) &combineCallback); + gluTessCallback(tess_, GLenum(GLU_TESS_BEGIN), + (GLvoid (CGAL_GLU_TESS_CALLBACK *)(CGAL_GLU_TESS_DOTS)) &beginCallback); + gluTessCallback(tess_, GLenum(GLU_TESS_END), |