Commit 9eb75dcaf2bd5d20c269d59908b1122c84a39ec8
Committed by
GitHub
1 parent
58ded45e
Exists in
master
using wx.calllater to fix problem with opengl (#179)
* using wx.calllater to fix problem with opengl * handling exception at pool.terminate * using callafter instead of calllater
Showing
1 changed file
with
19 additions
and
26 deletions
Show diff stats
invesalius/data/surface.py
... | ... | @@ -506,6 +506,9 @@ class SurfaceManager(): |
506 | 506 | |
507 | 507 | def _on_complete_surface_creation(self, args, overwrite, surface_name, colour, dialog): |
508 | 508 | surface_filename, surface_measures = args |
509 | + wx.CallAfter(self._show_surface, surface_filename, surface_measures, overwrite, surface_name, colour, dialog) | |
510 | + | |
511 | + def _show_surface(self, surface_filename, surface_measures, overwrite, surface_name, colour, dialog): | |
509 | 512 | print(surface_filename, surface_measures) |
510 | 513 | reader = vtk.vtkXMLPolyDataReader() |
511 | 514 | reader.SetFileName(surface_filename) |
... | ... | @@ -739,31 +742,18 @@ class SurfaceManager(): |
739 | 742 | wx.Yield() |
740 | 743 | |
741 | 744 | if not sp.WasCancelled() or sp.running: |
742 | - try: | |
743 | - f = pool.apply_async(surface_process.join_process_surface, | |
744 | - args=(filenames, algorithm, smooth_iterations, | |
745 | - smooth_relaxation_factor, | |
746 | - decimate_reduction, keep_largest, | |
747 | - fill_holes, options, msg_queue), | |
748 | - callback=functools.partial(self._on_complete_surface_creation, | |
749 | - overwrite=overwrite, | |
750 | - surface_name=surface_name, | |
751 | - colour=colour, | |
752 | - dialog=sp), | |
753 | - error_callback=functools.partial(self._on_callback_error, | |
754 | - dialog=sp)) | |
755 | - # python2 | |
756 | - except TypeError: | |
757 | - f = pool.apply_async(surface_process.join_process_surface, | |
758 | - args=(filenames, algorithm, smooth_iterations, | |
759 | - smooth_relaxation_factor, | |
760 | - decimate_reduction, keep_largest, | |
761 | - fill_holes, options, msg_queue), | |
762 | - callback=functools.partial(self._on_complete_surface_creation, | |
763 | - overwrite=overwrite, | |
764 | - surface_name=surface_name, | |
765 | - colour=colour, | |
766 | - dialog=sp)) | |
745 | + f = pool.apply_async(surface_process.join_process_surface, | |
746 | + args=(filenames, algorithm, smooth_iterations, | |
747 | + smooth_relaxation_factor, | |
748 | + decimate_reduction, keep_largest, | |
749 | + fill_holes, options, msg_queue), | |
750 | + callback=functools.partial(self._on_complete_surface_creation, | |
751 | + overwrite=overwrite, | |
752 | + surface_name=surface_name, | |
753 | + colour=colour, | |
754 | + dialog=sp), | |
755 | + error_callback=functools.partial(self._on_callback_error, | |
756 | + dialog=sp)) | |
767 | 757 | |
768 | 758 | while sp.running: |
769 | 759 | if sp.WasCancelled(): |
... | ... | @@ -787,7 +777,10 @@ class SurfaceManager(): |
787 | 777 | del sp |
788 | 778 | |
789 | 779 | pool.close() |
790 | - pool.terminate() | |
780 | + try: | |
781 | + pool.terminate() | |
782 | + except AssertionError: | |
783 | + pass | |
791 | 784 | del pool |
792 | 785 | del manager |
793 | 786 | del msg_queue | ... | ... |