diff options
author | kintel <kintel@b57f626f-c46c-0410-a088-ec61d464b74c> | 2010-02-09 13:48:09 (GMT) |
---|---|---|
committer | kintel <kintel@b57f626f-c46c-0410-a088-ec61d464b74c> | 2010-02-09 13:48:09 (GMT) |
commit | c7b9a49c15f10ee76258f735ff66c1ed32e64c51 (patch) | |
tree | ebc9ef37dc44c0eed9c144441f5f763c381fdb08 /src/progress.cc | |
parent | 66ac9239767dd2151e61a11bc3fb9605c2a4d917 (diff) |
Cleaned up progress handling, implemented cancel function. Needs more testing
git-svn-id: http://svn.clifford.at/openscad/trunk@420 b57f626f-c46c-0410-a088-ec61d464b74c
Diffstat (limited to 'src/progress.cc')
-rw-r--r-- | src/progress.cc | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/progress.cc b/src/progress.cc new file mode 100644 index 0000000..300147d --- /dev/null +++ b/src/progress.cc @@ -0,0 +1,28 @@ +#include "progress.h" +#include "node.h" + +int progress_report_count; +void (*progress_report_f)(const class AbstractNode*, void*, int); +void *progress_report_userdata; + +void progress_report_prep(AbstractNode *root, void (*f)(const class AbstractNode *node, void *userdata, int mark), void *userdata) +{ + progress_report_count = 0; + progress_report_f = f; + progress_report_userdata = userdata; + root->progress_prepare(); +} + +void progress_report_fin() +{ + progress_report_count = 0; + progress_report_f = NULL; + progress_report_userdata = NULL; +} + +void progress_update(const AbstractNode *node, int mark) +{ + if (progress_report_f) + progress_report_f(node, progress_report_userdata, mark); +} + |