module FFI::Tcl

Constants

ATTACHED_FUNCTIONS
BINDING

Attributes

thread_sender[R]

Public Instance Methods

setup_eventloop_on_main_thread() click to toggle source
# File lib/ffi-tk/ffi/tcl.rb, line 87
    def setup_eventloop_on_main_thread
      puts "Run eventloop on main thread" if $DEBUG

      code = <<-'RUBY'.strip
def self.%s(*args, &block)
  %s(*args, &block)
end
      RUBY

      binding, file, line = BINDING, __FILE__, __LINE__ - 5
      ATTACHED_FUNCTIONS.each do |function, ruby_name|
        eval(code % [ruby_name, function], binding, file, line)
      end

      Interp.new(create_interp)
    end
setup_eventloop_on_new_thread() click to toggle source
# File lib/ffi-tk/ffi/tcl.rb, line 68
    def setup_eventloop_on_new_thread
      puts "Run eventloop on new thread" if $DEBUG

      code = <<-RUBY.strip
def self.%s(*args, &block)
  @thread_sender.thread_send{ %s(*args, &block) }
end
      RUBY

      binding, file, line = BINDING, __FILE__, __LINE__ - 5
      ATTACHED_FUNCTIONS.each do |function, ruby_name|
        eval(code % [ruby_name, function], binding, file, line)
      end

      @thread_sender = ThreadSender.new
      class << self; attr_reader :thread_sender; end
      @thread_sender.thread_send{ Interp.new(create_interp) }
    end