Re: [pygtk] timeout causes lockup?

2000-02-27 Thread Scott Bender


Yeah, this is a strange one. I have one linux box (Mandrake 7) which does not need the 
thread_enter/leave sutff,
and another (RedHat 6.0) that does need it. They're both running the same pygtk 
(0.6.3), but different versions of
gtk, the Madrake box has 1.2.6, the RedHat box has 1.2.1. I'm guessing that this is 
the reason.

- Scott

"Mitch Chapman" wrote:  
  
  Here's an excerpt from a module of miscellaneous pygtk functions.
  It shows three platform-dependent implementations of an update()
  function.  update() is used e.g. to update a progress bar
  in the middle of a time-consuming operation -- it's analogous to
  the Tkinter update() function.
  
  I haven't bothered looking at Gtk+ or pygtk sources in order to figure 
  out why you need threads_(enter|leave) on Solaris but not on Linux.
  If somebody could explain the difference I'd be grateful.
  
  One last note:  This code was tested w. pygtk 0.6.2, on all
  three platforms.
  
  --
  Mitch
  [EMAIL PROTECTED]

  
  Mitch Chapman wrote:
   
   On Sat, 26 Feb 2000, Scott Bender wrote:
Actually, the hang came after my timeout function completed. It was calling 
mainiteration(FALSE) to
update a progress bar, which was causing the hang. Anyone know why?
   
thanks,
- Scott
   
   I've seen this recently.  The behavior varies depending on what version
   of Gtk+ you're running with, and on what operating system.
   
   The basic problem is that, on some platforms, even w. Gtk+ 1.2.6,
   you need to surround calls to gtk.events_pending() and
   gtk.mainiteration() with calls to gtk.threads_leave() and
   gtk.threads_enter(). On others (e.g. Solaris) you *shouldn't* do so.
  To unsubscribe: echo "unsubscribe" | mail [EMAIL PROTECTED]
  

To unsubscribe: echo "unsubscribe" | mail [EMAIL PROTECTED]



Re: [pygtk] timeout causes lockup?

2000-02-27 Thread Scott Bender


Yep, this was the problem: gtk before 1.2.5 did not call threads_(leave/enter) in 
gtk_main_iteration.

thanks,
- Scott

  
  There were some threading bugs in some early versions of gtk+
  (specifically with events_pending() and mainiteration()). You should
  really use gtk+ = 1.2.4.  I should have this check in the configure
  script.
  
  The other possible difference between the mandrake is if one was compiled
  with threading and the other wasn't.
  
  James.
  
  --
  Email: [EMAIL PROTECTED]
  WWW:   http://www.daa.com.au/~james/
  
  
  On Sun, 27 Feb 2000, Scott Bender wrote:
  
   
   Yeah, this is a strange one. I have one linux box (Mandrake 7) which does not 
need the thread_enter/leave sutff,
   and another (RedHat 6.0) that does need it. They're both running the same pygtk 
(0.6.3), but different versions of
   gtk, the Madrake box has 1.2.6, the RedHat box has 1.2.1. I'm guessing that this 
is the reason.
   
   - Scott
   
   "Mitch Chapman" wrote:  
 
 Here's an excerpt from a module of miscellaneous pygtk functions.
 It shows three platform-dependent implementations of an update()
 function.  update() is used e.g. to update a progress bar
 in the middle of a time-consuming operation -- it's analogous to
 the Tkinter update() function.
 
 I haven't bothered looking at Gtk+ or pygtk sources in order to figure 
 out why you need threads_(enter|leave) on Solaris but not on Linux.
 If somebody could explain the difference I'd be grateful.
 
 One last note:  This code was tested w. pygtk 0.6.2, on all
 three platforms.
 
 --
 Mitch
 [EMAIL PROTECTED]
   
 
 Mitch Chapman wrote:
  
  On Sat, 26 Feb 2000, Scott Bender wrote:
   Actually, the hang came after my timeout function completed. It was 
calling mainiteration(FALSE) to
   update a progress bar, which was causing the hang. Anyone know why?
  
   thanks,
   - Scott
  
  I've seen this recently.  The behavior varies depending on what version
  of Gtk+ you're running with, and on what operating system.
  
  The basic problem is that, on some platforms, even w. Gtk+ 1.2.6,
  you need to surround calls to gtk.events_pending() and
  gtk.mainiteration() with calls to gtk.threads_leave() and
  gtk.threads_enter(). On others (e.g. Solaris) you *shouldn't* do so.
 To unsubscribe: echo "unsubscribe" | mail [EMAIL PROTECTED]
 
   
   To unsubscribe: echo "unsubscribe" | mail [EMAIL PROTECTED]
   
  
  To unsubscribe: echo "unsubscribe" | mail [EMAIL PROTECTED]
  

To unsubscribe: echo "unsubscribe" | mail [EMAIL PROTECTED]



Re: [pygtk] timeout causes lockup?

2000-02-26 Thread Scott Bender


Actually, the hang came after my timeout function completed. It was calling 
mainiteration(FALSE) to 
update a progress bar, which was causing the hang. Anyone know why?

thanks,
- Scott


"Rob Hodges" wrote:

  
   After a call to a timeout, which does gtk calls and network calls,
   my application locks up. Any ideas??
  
  I've never looked at the code, but I assume timeouts are essentially
  just inserted into the gtk mainloop.  So if your timeout blocks, it
  will stop the mainloop dead.  Since you mention network calls, I'd
  have to suspect that.
  
  -Rob
  
  To unsubscribe: echo "unsubscribe" | mail [EMAIL PROTECTED]
  

To unsubscribe: echo "unsubscribe" | mail [EMAIL PROTECTED]