Skip to content
This repository has been archived by the owner on Nov 10, 2022. It is now read-only.

Commit

Permalink
gui.main: fix yet another segfault on shutdown.
Browse files Browse the repository at this point in the history
  • Loading branch information
jwilk committed Oct 1, 2012
1 parent d572438 commit 74fddc1
Showing 1 changed file with 15 additions and 5 deletions.
20 changes: 15 additions & 5 deletions lib/gui/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

import sys
import itertools
import functools
import locale
import os.path
import threading
Expand Down Expand Up @@ -262,6 +263,17 @@ def OnChildFocus(self, event):
# So just skip the event:
event.Skip()

def skip_if_being_deleted(method):
@functools.wraps(method)
def method_wrapper(self, *args, **kwargs):
if self.IsBeingDeleted():
# This method could be called via an event while the window is
# being deleted. Do *not* fiddle with menu in such a case, as it
# would provoke segmentation fault.
return
return method(self, *args, **kwargs)
return method_wrapper

class MainWindow(wx.Frame):

def _menu_item(self, menu, caption, help, method, style = wx.ITEM_NORMAL, icon = None, id = wx.ID_ANY):
Expand Down Expand Up @@ -644,20 +656,18 @@ def on_display_stencil(self, event):
def on_display_none(self, event):
self.page_widget.render_mode = None

@skip_if_being_deleted
def on_display_text(self, event):
self.page_widget.render_nonraster = RENDER_NONRASTER_TEXT
self._menu_item_display_text.Check()

@skip_if_being_deleted
def on_display_maparea(self, event):
self.page_widget.render_nonraster = RENDER_NONRASTER_MAPAREA
self._menu_item_display_maparea.Check()

@skip_if_being_deleted
def on_display_no_nonraster(self, event):
if self.IsBeingDeleted():
# This method could be called via a sidebar event while the window
# is being deleted. Do *not* fiddle with menu in such a case, as it
# would provoke segmentation fault.
return
self.page_widget.render_nonraster = None
self._menu_item_display_no_nonraster.Check()

Expand Down

0 comments on commit 74fddc1

Please sign in to comment.