Module: Gtk
Overview
this file is part of manqod manqod is distributed under the CDDL licence the author of manqod is Dobai-Pataky Balint([email protected])
Defined Under Namespace
Classes: PrintSettings, TreeIter
Constant Summary
collapse
- PENDING_CALLS_MUTEX =
Thread-safety stuff. Loosely based on booh, by Guillaume Cottenceau.
Mutex.new
- PENDING_CALLS =
[]
Class Method Summary
collapse
Class Method Details
.init_thread_protect ⇒ Object
44
45
46
47
48
|
# File 'lib/Gtk.rb', line 44
def self.init_thread_protect
$gtk_pending_calls = []
$gtk_pending_calls.extend(MonitorMixin)
Gtk.timeout_add(100) {Gtk.thread_flush;true}
end
|
.is_linux? ⇒ Boolean
99
100
101
|
# File 'lib/Gtk.rb', line 99
def self.is_linux?
RUBY_PLATFORM.downcase.include?("linux")
end
|
.is_windows? ⇒ Boolean
95
96
97
|
# File 'lib/Gtk.rb', line 95
def self.is_windows?
RUBY_PLATFORM.downcase.include?("mswin") || RUBY_PLATFORM.downcase.include?("mingw")
end
|
.new_thread(&proc) ⇒ Object
12
13
14
15
16
17
18
19
20
|
# File 'lib/Gtk.rb', line 12
def self.new_thread(&proc)
Thread.new{
begin
Gtk.thread_protect(&proc)
rescue =>err
print "#{err}\n#{err.join("\n")}"
end
}
end
|
.show_thread_changes ⇒ Object
103
104
105
106
107
108
109
|
# File 'lib/Gtk.rb', line 103
def self.show_thread_changes
Gtk.thread_protect{
while Gtk.events_pending? do
Gtk.main_iteration_do(false)
end
} unless Gtk.is_windows?
end
|
.thread_flush ⇒ Object
30
31
32
33
34
35
36
37
38
39
40
41
42
|
# File 'lib/Gtk.rb', line 30
def self.thread_flush
closure = nil
continue = true
begin
$gtk_pending_calls.synchronize {
closure = $gtk_pending_calls.shift
continue = $gtk_pending_calls.size > 0
}
if closure
closure.call
end
end while continue
end
|
.thread_protect(&proc) ⇒ Object
22
23
24
25
26
27
28
|
# File 'lib/Gtk.rb', line 22
def self.thread_protect(&proc)
if Thread.current == Thread.main
proc.call
else
$gtk_pending_calls.synchronize {$gtk_pending_calls << proc}
end
end
|