class Qt::RubyThreadFix

Public Class Methods

new() click to toggle source
Calls superclass method
# File lib/Qt4.rb, line 34
def initialize
  super()
  # Enable threading
  @ruby_thread_sleep_period = 0.01
  @ruby_thread_timer = Qt::Timer.new(self)
  connect(@ruby_thread_timer, SIGNAL('timeout()'), SLOT('ruby_thread_timeout()'))
  @ruby_thread_timer.start(0)
  @callback_timer = Qt::Timer.new(self)
  connect(@callback_timer, SIGNAL('timeout()'), SLOT('callback_timeout()'))
  @callback_timer.start(1)
  @callback_timer2 = Qt::Timer.new(self)
  connect(@callback_timer2, SIGNAL('timeout()'), SLOT('callback_timeout2()'))
  @running = true
end
queue() click to toggle source
# File lib/Qt4.rb, line 68
def self.queue
  @@queue
end

Public Instance Methods

callback_timeout() click to toggle source
# File lib/Qt4.rb, line 53
def callback_timeout
  if !@@queue.empty?
    # Start a backup timer in case this one goes modal.
    @callback_timer2.start(100)
    @@queue.pop.call until @@queue.empty?
    # Cancel the backup timer
    @callback_timer2.stop if @callback_timer2
  end
end
callback_timeout2() click to toggle source
# File lib/Qt4.rb, line 63
def callback_timeout2
  @callback_timer2.interval = 10
  @@queue.pop.call until @@queue.empty?
end
ruby_thread_timeout() click to toggle source
# File lib/Qt4.rb, line 49
def ruby_thread_timeout
  sleep(@ruby_thread_sleep_period)
end
stop() click to toggle source
# File lib/Qt4.rb, line 72
def stop
  if @running
    @running = false
    @ruby_thread_timer.stop
    @callback_timer.stop
    @callback_timer2.stop
    @ruby_thread_timer.dispose
    @callback_timer.dispose
    @callback_timer2.dispose
    @ruby_thread_timer = nil
    @callback_timer = nil
    @callback_timer2 = nil
  end
end