diff options
author | clifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c> | 2010-01-06 10:48:51 (GMT) |
---|---|---|
committer | clifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c> | 2010-01-06 10:48:51 (GMT) |
commit | 2ff53c89ce5c1e30d6f001fdd4361b8fcad36e82 (patch) | |
tree | 3b4607c9e49d5eb53859086a6299dffbae5f67ca /polyset.cc | |
parent | 6575732286d3f8909972d3705b748c6cfc02f8a8 (diff) |
Clifford Wolf:
Added caching of messages along wioth synthesis products
git-svn-id: http://svn.clifford.at/openscad/trunk@215 b57f626f-c46c-0410-a088-ec61d464b74c
Diffstat (limited to 'polyset.cc')
-rw-r--r-- | polyset.cc | 19 |
1 files changed, 16 insertions, 3 deletions
@@ -21,8 +21,16 @@ #define INCLUDE_ABSTRACT_NODE_DETAILS #include "openscad.h" +#include "printutils.h" -QCache<QString,PolySetPtr> PolySet::ps_cache(100); +QCache<QString,PolySet::ps_cache_entry> PolySet::ps_cache(100); + +PolySet::ps_cache_entry::ps_cache_entry(PolySet *ps) : + ps(ps), msg(print_messages_stack.last()) { } + +PolySet::ps_cache_entry::~ps_cache_entry() { + ps->unlink(); +} PolySet::PolySet() { @@ -421,14 +429,19 @@ CGAL_Nef_polyhedron AbstractPolyNode::render_cgal_nef_polyhedron() const QString cache_id = mk_cache_id(); if (cgal_nef_cache.contains(cache_id)) { progress_report(); - return *cgal_nef_cache[cache_id]; + PRINT(cgal_nef_cache[cache_id]->msg); + return cgal_nef_cache[cache_id]->N; } + print_messages_push(); + PolySet *ps = render_polyset(RENDER_CGAL); CGAL_Nef_polyhedron N = ps->render_cgal_nef_polyhedron(); - cgal_nef_cache.insert(cache_id, new CGAL_Nef_polyhedron(N), N.weight()); + cgal_nef_cache.insert(cache_id, new cgal_nef_cache_entry(N), N.weight()); + print_messages_pop(); progress_report(); + ps->unlink(); return N; } |