On Thursday, September 30, 2010 07:47:53 am Nate Lowrie wrote:
>   On 9/30/10 10:24 AM, John Fabiani wrote:
> > On Wednesday, September 29, 2010 10:15:24 pm Paul McNett wrote:
> >> dabo Commit
> >> Revision 6038
> >> Date: 2010-09-29 22:15:23 -0700 (Wed, 29 Sep 2010)
> >> Author: Paul
> >> Trac: http://trac.dabodev.com/changeset/6038
> >> 
> >> Changed:
> >> U   trunk/dabo/dReportWriter.py
> >> U   trunk/dabo/ui/uiwx/__init__.py
> >> 
> >> Log:
> >> Ever since introducing the report progress bar, I've received about 3
> >> error logs from customers per month with the 'wx.Yield called
> >> recursively' error, and I've never been able to reproduce it on my end.
> >> 
> >> I did some Googling, and someone in May found a workaround that solved
> >> the problem for him. I've added a _safe=False argument to
> >> dabo.ui.yieldUI: when True, the new code is run. I changed the
> >> yieldUI() calls from dReportWriter to yieldUI(_safe=True) to test it in
> >> the field. It doesn't seem to break anything. I wanted to keep the
> >> argument "private" for now until it has a track record, at which point
> >> it'll probably become the default code for yieldUI().
> >> 
> >> Here's the link to the article I got the code from:
> >> http://www.python-forum.org/pythonforum/viewtopic.php?f=4&t=18801
> >> 
> >> 
> >> 
> >> Diff:
> >> Modified: trunk/dabo/dReportWriter.py
> >> ===================================================================
> >> --- trunk/dabo/dReportWriter.py    2010-09-27 00:36:01 UTC (rev 6037)
> >> +++ trunk/dabo/dReportWriter.py    2010-09-30 05:15:23 UTC (rev 6038)
> >> @@ -54,14 +54,14 @@
> >> 
> >>            win = self.ProgressControl
> >>            
> >>            if win:
> >>                    win.updateProgress(self.RecordNumber+1, 
> >> len(self.Cursor))
> >> 
> >> -                  dabo.ui.yieldUI()
> >> +                  dabo.ui.yieldUI(_safe=True)
> >> 
> >>    def _hideProgress(self):
> >>            win = self.ProgressControl
> >>            
> >>            if win:
> >>                    win.hide()
> >>                    win.Form.fitToSizer()
> >> 
> >> -                  dabo.ui.yieldUI()
> >> +                  dabo.ui.yieldUI(_safe=True)
> >> 
> >>    def _getEncoding(self):
> >>            try:
> >> Modified: trunk/dabo/ui/uiwx/__init__.py
> >> ===================================================================
> >> --- trunk/dabo/ui/uiwx/__init__.py 2010-09-27 00:36:01 UTC (rev 6037)
> >> +++ trunk/dabo/ui/uiwx/__init__.py 2010-09-30 05:15:23 UTC (rev 6038)
> >> @@ -324,9 +324,14 @@
> >> 
> >>    return ret
> >> 
> >> -def yieldUI(*args, **kwargs):
> >> 
> >> +def yieldUI(_safe=False, *args, **kwargs):
> >>    """Yield to other apps/messages."""
> >> 
> >> -  wx.Yield(*args, **kwargs)
> >> +  if _safe:
> >> +          while wx.GetApp().Pending():
> >> +                  wx.GetApp().Dispatch()
> >> +                  wx.GetApp().Yield(True)
> >> +  else:
> >> +          wx.Yield(*args, **kwargs)
> >> 
> >>   def beep():
> > Have you tested on Linux?  I have/had major issues with yield() working
> > just fine on windows and just locking up on linux.  BTW the reason for
> > using yield was to allow a simple way to stop printing (or producing
> > output).  So maybe you can find an universal way to stop the output from
> > reports.
> 
> Why not just spawn a new thread to handle the report generation and have
> a cancel semaphore?
> 
> Regards,
> 
> Nate

Many things were tested and failed.  Linux has been and still is a pain in the 
A__ when it comes to the threads I needed.  BTW one of the real problems was 
having the dialogs appear correctly (and timely).   Like I said the windows 
versions always worked - so windows was not the issue.  On the linux side 
threads worked as long as there were no interactive dialogs.  For example 
presenting a 'areYouSure' dialog would just lock up Linux from the thread.

Johnf

_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-dev
Searchable Archives: http://leafe.com/archives/search/dabo-dev
This message: 
http://leafe.com/archives/byMID/[email protected]

Reply via email to