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,6 +506,9 @@ class SurfaceManager(): | ||
506 | 506 | ||
507 | def _on_complete_surface_creation(self, args, overwrite, surface_name, colour, dialog): | 507 | def _on_complete_surface_creation(self, args, overwrite, surface_name, colour, dialog): |
508 | surface_filename, surface_measures = args | 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 | print(surface_filename, surface_measures) | 512 | print(surface_filename, surface_measures) |
510 | reader = vtk.vtkXMLPolyDataReader() | 513 | reader = vtk.vtkXMLPolyDataReader() |
511 | reader.SetFileName(surface_filename) | 514 | reader.SetFileName(surface_filename) |
@@ -739,31 +742,18 @@ class SurfaceManager(): | @@ -739,31 +742,18 @@ class SurfaceManager(): | ||
739 | wx.Yield() | 742 | wx.Yield() |
740 | 743 | ||
741 | if not sp.WasCancelled() or sp.running: | 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 | while sp.running: | 758 | while sp.running: |
769 | if sp.WasCancelled(): | 759 | if sp.WasCancelled(): |
@@ -787,7 +777,10 @@ class SurfaceManager(): | @@ -787,7 +777,10 @@ class SurfaceManager(): | ||
787 | del sp | 777 | del sp |
788 | 778 | ||
789 | pool.close() | 779 | pool.close() |
790 | - pool.terminate() | 780 | + try: |
781 | + pool.terminate() | ||
782 | + except AssertionError: | ||
783 | + pass | ||
791 | del pool | 784 | del pool |
792 | del manager | 785 | del manager |
793 | del msg_queue | 786 | del msg_queue |