Hello Jay,<br><br>To process an exit event, or rather a close event, utilize evt_close event handler.&nbsp; Also, what errors are you getting with 1.9.3/4?<br><br><div><span class="gmail_quote">On 1/19/08, <b class="gmail_sendername">
Jay McGavren</b> &lt;<a href="mailto:jay@mcgavren.com">jay@mcgavren.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
OK, back with another iteration of the same problem...&nbsp;&nbsp;I updated my<br>game demo, but the Close button failed to respond when (and only when)<br>there were too many objects onscreen.&nbsp;&nbsp;The drawing loop is probably<br>lasting longer than my drawing timer interval.&nbsp;&nbsp;I was able to
<br>reproduce the problem in my (probably familiar by now) test script<br>just by boosting the number of lines drawn per frame.<br><br>After each frame, I tried Wx::App.dispatch, Wx::App.dispatch while<br>Wx::App.pending, and Wx::
App.yield, all without effect.&nbsp;&nbsp;The<br>(commented out) statements are in the code below.<br><br>I&#39;m running Ruby 1.8.6 on Windows with wxRuby 1.9.2 (1.9.3 and 1.9.4<br>both give me errors).<br><br>If wxRuby is busy drawing when the close button is clicked, is the
<br>window close event getting lost altogether, or merely going unhandled?<br> If it&#39;s just going unhandled, how can I find it and process it?&nbsp;&nbsp;Help<br>is, as always, most appreciated!<br><br>-Jay McGavren<br><a href="http://jay.mcgavren.com/zyps">
http://jay.mcgavren.com/zyps</a><br><br><br>&nbsp;&nbsp;require &#39;rubygems&#39;<br>&nbsp;&nbsp;require &#39;wx&#39;<br><br>&nbsp;&nbsp;class MyApp &lt; Wx::App<br><br>&nbsp;&nbsp;&nbsp;&nbsp;def on_init<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#Containing frame.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame = Wx::Frame.new(nil, :size =&gt; [300, 300])
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame.show<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#Offscreen drawing buffer.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer = Wx::Bitmap.new(300, 300)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#Displays drawing.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window = Wx::Window.new(frame, :size =&gt; [300, 300])<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.evt_paint
 do |event|<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;update_window(window, buffer)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#Initialize drawing loop counter.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@i = 0<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#Animate periodically.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timer_id = Wx::ID_HIGHEST + 1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t = Wx::
Timer.new(self, timer_id)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evt_timer(timer_id) do<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;animate(window, buffer)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#No effect.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#self.dispatch<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#No effect.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#self.dispatch while self.pending<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#No effect.
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#self.yield<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t.start(33)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;end<br><br>&nbsp;&nbsp;&nbsp;&nbsp;def animate(window, buffer)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;green_pen = Wx::Pen.new(Wx::Colour.new(128, 255, 128), 3)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;black_pen = Wx::Pen.new(Wx::Colour.new
(0, 0, 0), 0)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer.draw do |surface|<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#Clear screen.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;surface.pen = black_pen<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;surface.brush = Wx::BLACK_BRUSH<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;surface.draw_rectangle(0, 0, 300, 300)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#Draw lines.
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;surface.pen = green_pen<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;surface.pen.cap = Wx::CAP_ROUND<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;30000.times do |j|<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x = @i + j<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;surface.draw_line(x, 0, x+100, 100)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#Update screen.
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;update_window(window, buffer)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@i += 1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@i = 0 if @i &gt; 300<br>&nbsp;&nbsp;&nbsp;&nbsp;end<br><br>&nbsp;&nbsp;&nbsp;&nbsp;def update_window(window, buffer)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.paint do |dc|<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#Copy the buffer to the viewable window.
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dc.draw_bitmap(buffer, 0, 0, false)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br>&nbsp;&nbsp;&nbsp;&nbsp;end<br><br>&nbsp;&nbsp;end<br><br>&nbsp;&nbsp;app = MyApp.new<br>&nbsp;&nbsp;app.main_loop<br>_______________________________________________<br>wxruby-users mailing list<br><a href="mailto:wxruby-users@rubyforge.org">
wxruby-users@rubyforge.org</a><br><a href="http://rubyforge.org/mailman/listinfo/wxruby-users">http://rubyforge.org/mailman/listinfo/wxruby-users</a><br></blockquote></div><br><br clear="all"><br>-- <br>Mario Steele<br><a href="http://www.trilake.net">
http://www.trilake.net</a><br><a href="http://www.ruby-im.net">http://www.ruby-im.net</a><br><a href="http://rubyforge.org/projects/wxruby/">http://rubyforge.org/projects/wxruby/</a><br><a href="http://rubyforge.org/projects/wxride/">
http://rubyforge.org/projects/wxride/</a><br><a href="http://rubyforge.org/projects/vwmc/">http://rubyforge.org/projects/vwmc/</a>