Module: Gtk

Defined in:
lib/dr/tools/gtk.rb

Constant Summary collapse

GTK_PENDING_BLOCKS =
[]
GTK_PENDING_BLOCKS_LOCK =
Monitor.new

Class Method Summary collapse

Class Method Details

.main_with_queue(timeout) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/dr/tools/gtk.rb', line 21

def Gtk.main_with_queue timeout
  Gtk.timeout_add timeout do
    GTK_PENDING_BLOCKS_LOCK.synchronize do
      for block in GTK_PENDING_BLOCKS
        block.call
      end
      GTK_PENDING_BLOCKS.clear
    end
    true
  end
  Gtk.main
end

.queue(&block) ⇒ Object



11
12
13
14
15
16
17
18
19
# File 'lib/dr/tools/gtk.rb', line 11

def Gtk.queue &block
  if Thread.current == Thread.main
    block.call
  else
    GTK_PENDING_BLOCKS_LOCK.synchronize do
      GTK_PENDING_BLOCKS << block
    end
  end
end