Added wxWakeUpMainThread, wxMutexGuiEnter, wxMutexGuiLeave,

wxMutexGuiLocker and wxThread_IsMain to assist with dealing with GUI
access from non-GUI threads.

wxPyOnDemandOutputWindow is now thread safe if non-GUI threads use
print, sys.stdout.write, etc.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9590 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2001-03-26 22:17:24 +00:00
parent c1e820a40e
commit 6e18ca6cf4
8 changed files with 297 additions and 49 deletions

View File

@@ -714,20 +714,22 @@ class wxPyOnDemandOutputWindow:
self.title = title
self.parent = None
def SetParent(self, parent):
self.parent = parent
def OnCloseWindow(self, event):
if self.frame != None:
self.frame.Destroy()
self.frame = None
self.text = None
# this provides the file-like output behaviour
# These methods provide the file-like output behaviour.
def write(self, str):
if not wxThread_IsMain():
# Aquire the GUI mutex before making GUI calls. Mutex is released
# when locker is deleted a the end of this function.
locker = wxMutexGuiLocker()
if not self.frame:
self.frame = wxFrame(self.parent, -1, self.title)
self.text = wxTextCtrl(self.frame, -1, "",
@@ -737,13 +739,13 @@ class wxPyOnDemandOutputWindow:
EVT_CLOSE(self.frame, self.OnCloseWindow)
self.text.AppendText(str)
def close(self):
if self.frame != None:
if not wxThread_IsMain():
locker = wxMutexGuiLocker()
self.frame.Close()
_defRedirect = (wxPlatform == '__WXMSW__')
#----------------------------------------------------------------------