Module: Gtk

Defined in:
lib/tellme/gtk/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



32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/tellme/gtk/gtk.rb', line 32

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



22
23
24
25
26
27
28
29
30
# File 'lib/tellme/gtk/gtk.rb', line 22

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