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 |