launchpad 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +4 -0
- data/launchpad.gemspec +2 -2
- data/lib/launchpad/interaction.rb +2 -2
- data/lib/launchpad/version.rb +1 -1
- data/test/test_interaction.rb +21 -0
- metadata +2 -2
data/README.rdoc
CHANGED
@@ -72,6 +72,10 @@ For more details, see the examples. examples/color_picker.rb is the most complex
|
|
72
72
|
|
73
73
|
== Changelog
|
74
74
|
|
75
|
+
=== v.0.2.2
|
76
|
+
|
77
|
+
* single threading fix: prevent ThreadError when Launchpad::Interaction#stop is called within an action response
|
78
|
+
|
75
79
|
=== v.0.2.1
|
76
80
|
|
77
81
|
* Launchpad::Interaction#close now properly stops interaction first
|
data/launchpad.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{launchpad}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Thomas Jachmann"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-02-24}
|
13
13
|
s.description = %q{This gem provides an interface to access novation's launchpad programmatically. LEDs can be lighted and button presses can be evaluated using launchpad's MIDI input/output.}
|
14
14
|
s.email = %q{tom.j@gmx.net}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -74,7 +74,7 @@ module Launchpad
|
|
74
74
|
# Optional options hash:
|
75
75
|
#
|
76
76
|
# [<tt>:detached</tt>] <tt>true/false</tt>,
|
77
|
-
# whether to detach the interaction, method is blocking when +false
|
77
|
+
# whether to detach the interaction, method is blocking when +false+,
|
78
78
|
# optional, defaults to +false+
|
79
79
|
#
|
80
80
|
# Errors raised:
|
@@ -90,7 +90,7 @@ module Launchpad
|
|
90
90
|
@reader_thread ||= Thread.new do
|
91
91
|
begin
|
92
92
|
while @active do
|
93
|
-
@device.read_pending_actions.each {|action| respond_to_action(action)}
|
93
|
+
@device.read_pending_actions.each {|action| Thread.new {respond_to_action(action)}}
|
94
94
|
sleep @latency unless @latency <= 0
|
95
95
|
end
|
96
96
|
rescue Portmidi::DeviceError => e
|
data/lib/launchpad/version.rb
CHANGED
data/test/test_interaction.rb
CHANGED
@@ -278,4 +278,25 @@ class TestInteraction < Test::Unit::TestCase
|
|
278
278
|
|
279
279
|
end
|
280
280
|
|
281
|
+
context 'regression tests' do
|
282
|
+
|
283
|
+
should 'not raise an exception when calling stop within a response in attached mode' do
|
284
|
+
i = Launchpad::Interaction.new
|
285
|
+
# strangely, you have to sleep 0.001 or do anything else before
|
286
|
+
# calling i.stop - the ThreadError won't be thrown otherwise...
|
287
|
+
i.response_to(:mixer, :down) {|i,a| sleep 0.001; i.stop}
|
288
|
+
i.device.stubs(:read_pending_actions).returns([{
|
289
|
+
:timestamp => 0,
|
290
|
+
:state => :down,
|
291
|
+
:type => :mixer
|
292
|
+
}])
|
293
|
+
assert_nothing_raised do
|
294
|
+
Thread.new do
|
295
|
+
i.start
|
296
|
+
end.join
|
297
|
+
end
|
298
|
+
end
|
299
|
+
|
300
|
+
end
|
301
|
+
|
281
302
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: launchpad
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Jachmann
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-
|
12
|
+
date: 2010-02-24 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|