pixo 0.3.2 → 0.4.0
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +4 -1
- data/lib/pixo/application.rb +42 -39
- data/lib/pixo/renderer.rb +19 -116
- data/lib/pixo/rpc/application_service.rb +23 -0
- data/lib/pixo/rpc/request_types.rb +114 -0
- data/lib/pixo/{ipc → rpc}/service.rb +7 -11
- data/lib/pixo/version.rb +1 -1
- data/lib/pixo.rb +14 -1
- data/pixo.gemspec +1 -0
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ab47761e84f228f514a4e7118207a388cd813463
|
4
|
+
data.tar.gz: bd2121709d447827d27cf2a1616a65f9eaa7ad35
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 29ca3f9f59fe05884d3701dcc0b2ed5b977325ffe6ff8586a51994a7f4511eb9762da2d89a307f5191757fae546d4b30b820757e9c27c2129f04018fd0abc955
|
7
|
+
data.tar.gz: b3db77d49b09d3834c6fe6dd9cba31e87c8a55fc291b79cad665d7a8a0f404a60db491f9f71d995e960d2318d819de4b383d73490e967fe9e08af30d2e99d89a
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
pixo (0.
|
4
|
+
pixo (0.4.0)
|
5
5
|
concurrent-ruby
|
6
6
|
|
7
7
|
GEM
|
@@ -16,6 +16,8 @@ GEM
|
|
16
16
|
rspec-core (~> 3.6.0)
|
17
17
|
rspec-expectations (~> 3.6.0)
|
18
18
|
rspec-mocks (~> 3.6.0)
|
19
|
+
rspec-collection_matchers (1.1.3)
|
20
|
+
rspec-expectations (>= 2.99.0.beta1)
|
19
21
|
rspec-core (3.6.0)
|
20
22
|
rspec-support (~> 3.6.0)
|
21
23
|
rspec-expectations (3.6.0)
|
@@ -35,6 +37,7 @@ DEPENDENCIES
|
|
35
37
|
rake (~> 10.0)
|
36
38
|
rake-compiler (~> 1.0)
|
37
39
|
rspec (>= 3.0)
|
40
|
+
rspec-collection_matchers (>= 1.1.3)
|
38
41
|
|
39
42
|
BUNDLED WITH
|
40
43
|
1.15.4
|
data/lib/pixo/application.rb
CHANGED
@@ -6,39 +6,37 @@ require File.expand_path('../../libpixgem', __FILE__)
|
|
6
6
|
module Pixo
|
7
7
|
class Application < Pixo::Native::Application
|
8
8
|
attr_accessor :running, :leds_on
|
9
|
+
attr_reader :patterns
|
9
10
|
|
10
11
|
def initialize()
|
11
12
|
super
|
12
|
-
self.running = false
|
13
|
-
self.brightness = 1.0
|
14
|
-
self.leds_on = true
|
15
13
|
@procs = Array.new
|
16
14
|
|
17
15
|
@procs_lock = Mutex.new
|
18
|
-
|
19
|
-
@service = Pixo::
|
20
|
-
|
21
|
-
@
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
end
|
16
|
+
@started_latch = Concurrent::CountDownLatch.new(1)
|
17
|
+
@service = Pixo::Rpc::ApplicationService.new(STDIN, STDOUT, self, @started_latch)
|
18
|
+
|
19
|
+
@patterns = Concurrent::Hash.new
|
20
|
+
|
21
|
+
@active_pattern = BlankPattern.new
|
22
|
+
self.running = false
|
23
|
+
self.brightness = 1.0
|
24
|
+
self.leds_on = true
|
28
25
|
end
|
29
26
|
|
30
27
|
def run
|
31
|
-
self.running = tick(active_pattern, brightness)
|
32
|
-
|
28
|
+
self.running = tick(@active_pattern, brightness)
|
29
|
+
@started_latch.count_down
|
33
30
|
while(running)
|
34
31
|
@procs_lock.synchronize {
|
35
32
|
@procs.each {|proc| proc.call(self) }
|
36
33
|
@procs.clear
|
37
34
|
}
|
38
35
|
|
39
|
-
self.running = tick(active_pattern, brightness) && running
|
36
|
+
self.running = tick(@active_pattern, brightness) && running
|
40
37
|
end
|
41
38
|
ensure
|
39
|
+
@service.shutdown
|
42
40
|
close
|
43
41
|
end
|
44
42
|
|
@@ -46,6 +44,14 @@ module Pixo
|
|
46
44
|
self.running = false
|
47
45
|
end
|
48
46
|
|
47
|
+
def add_pattern(name, code)
|
48
|
+
self.patterns[name] = Pixo::Native::Pattern.new(code)
|
49
|
+
end
|
50
|
+
|
51
|
+
def add_fadecandy(hostname, count)
|
52
|
+
super(Pixo::Native::FadeCandy.new(hostname, count))
|
53
|
+
end
|
54
|
+
|
49
55
|
def post(proc)
|
50
56
|
@procs_lock.synchronize {
|
51
57
|
@procs << proc
|
@@ -53,32 +59,21 @@ module Pixo
|
|
53
59
|
end
|
54
60
|
|
55
61
|
def key_callback(key, scancode, action, mods)
|
56
|
-
@service.request(Pixo::
|
62
|
+
@service.request(Pixo::Rpc::OnKey.new(key, scancode, action, mods), async: true)
|
57
63
|
end
|
58
64
|
|
59
|
-
def
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
next unless pattern_file.end_with?('.glsl')
|
65
|
-
@patterns[pattern_file] = Pixo::Native::Pattern.new(File.read(File.join(patterns_dir, pattern_file)))
|
66
|
-
end
|
65
|
+
def pattern=(name)
|
66
|
+
pat = patterns[name]
|
67
|
+
if (pat)
|
68
|
+
pat.reset_start
|
69
|
+
@active_pattern = pat
|
67
70
|
end
|
68
|
-
@patterns
|
69
|
-
end
|
70
|
-
|
71
|
-
def active_pattern
|
72
|
-
@active_pattern ||= random_pattern
|
73
|
-
end
|
74
71
|
|
75
|
-
|
76
|
-
patterns[patterns.keys.sample]
|
72
|
+
pattern
|
77
73
|
end
|
78
74
|
|
79
|
-
def
|
80
|
-
|
81
|
-
@active_pattern = pattern
|
75
|
+
def pattern
|
76
|
+
patterns.key(@active_pattern)
|
82
77
|
end
|
83
78
|
|
84
79
|
def brightness=(val)
|
@@ -96,10 +91,18 @@ module Pixo
|
|
96
91
|
|
97
92
|
private
|
98
93
|
|
94
|
+
class BlankPattern < Pixo::Native::Pattern
|
95
|
+
def initialize
|
96
|
+
super(<<-EOF)
|
97
|
+
#version 330 core
|
98
|
+
out vec4 color_out;
|
99
99
|
|
100
|
-
|
100
|
+
void main( void ) {
|
101
|
+
color_out = vec4( 0.0, 0.0, 0.0, 1.0 );
|
102
|
+
}
|
103
|
+
EOF
|
104
|
+
end
|
105
|
+
end
|
101
106
|
end
|
102
|
-
|
103
|
-
|
104
107
|
end
|
105
108
|
|
data/lib/pixo/renderer.rb
CHANGED
@@ -1,148 +1,51 @@
|
|
1
1
|
module Pixo
|
2
|
-
class Renderer
|
3
|
-
attr_reader :
|
4
|
-
|
5
|
-
class OnKey
|
6
|
-
def initialize(key, scancode, action, mods)
|
7
|
-
@key = key
|
8
|
-
@scancode = scancode
|
9
|
-
@action = action
|
10
|
-
@mods = mods
|
11
|
-
end
|
12
|
-
|
13
|
-
def call(service)
|
14
|
-
service.on_key(@key, @scancode, @action, @mods)
|
15
|
-
self
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
class Service < Pixo::Ipc::Service
|
20
|
-
attr_reader :renderer
|
21
|
-
|
22
|
-
def initialize(renderer)
|
23
|
-
@renderer = renderer
|
24
|
-
i, o, t = Open3.popen2('bundle exec pixo')
|
25
|
-
super(o, i)
|
26
|
-
@service_thread = Thread.new { self.run }
|
27
|
-
end
|
28
|
-
|
29
|
-
|
30
|
-
def on_key(key, scancode, action, mods)
|
31
|
-
renderer.on_key(key, scancode, action, mods)
|
32
|
-
end
|
33
|
-
|
34
|
-
end
|
2
|
+
class Renderer < Pixo::Rpc::Service
|
3
|
+
attr_reader :service_thread
|
35
4
|
|
36
5
|
def initialize
|
37
|
-
|
6
|
+
i, o, t = Open3.popen2('bundle exec pixo')
|
7
|
+
super(o, i)
|
8
|
+
@service_thread = Thread.new { self.run }
|
38
9
|
end
|
39
10
|
|
40
11
|
def on_key(key, scancode, action, mods)
|
41
12
|
|
42
13
|
end
|
43
14
|
|
44
|
-
def
|
45
|
-
|
15
|
+
def list_patterns
|
16
|
+
request(Pixo::Rpc::ListPatterns.new)
|
46
17
|
end
|
47
18
|
|
48
|
-
def
|
49
|
-
|
19
|
+
def pattern
|
20
|
+
request(Pixo::Rpc::GetPattern.new)
|
50
21
|
end
|
51
22
|
|
52
|
-
def
|
53
|
-
|
23
|
+
def pattern=(name)
|
24
|
+
request(Pixo::Rpc::SetPattern.new(name))
|
54
25
|
end
|
55
26
|
|
56
27
|
def brightness=(brightness)
|
57
|
-
|
28
|
+
request(Pixo::Rpc::SetBrightness.new(brightness))
|
58
29
|
end
|
59
30
|
|
60
31
|
def brightness
|
61
|
-
|
32
|
+
request(Pixo::Rpc::GetBrightness.new())
|
62
33
|
end
|
63
34
|
|
64
35
|
def leds_on=(leds_on)
|
65
|
-
|
36
|
+
request(Pixo::Rpc::SetLedsOn.new(leds_on))
|
66
37
|
end
|
67
38
|
|
68
39
|
def leds_on
|
69
|
-
|
70
|
-
end
|
71
|
-
|
72
|
-
def add_fadecandy(hostname, count)
|
73
|
-
service.request(Pixo::Renderer::AddFadecandy.new(hostname, count), async: true)
|
40
|
+
request(Pixo::Rpc::GetLedsOn.new())
|
74
41
|
end
|
75
42
|
|
76
|
-
|
77
|
-
|
78
|
-
class AddFadecandy
|
79
|
-
def initialize(hostname, count)
|
80
|
-
@hostname = hostname
|
81
|
-
@count = count
|
82
|
-
end
|
83
|
-
|
84
|
-
def call(service)
|
85
|
-
service.user_data.post Proc.new { |app| app.add_fadecandy(Pixo::Native::FadeCandy.new(@hostname, @count)) }
|
86
|
-
self
|
87
|
-
end
|
43
|
+
def add_pattern(name, code)
|
44
|
+
request(Pixo::Rpc::AddPattern.new(name, code))
|
88
45
|
end
|
89
46
|
|
90
|
-
|
91
|
-
|
92
|
-
service.user_data.patterns.key(service.user_data.active_pattern)
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
class GetPatternNames
|
97
|
-
def call(service)
|
98
|
-
service.user_data.patterns.keys
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
class SetPattern
|
103
|
-
def initialize(pattern_name = nil)
|
104
|
-
@pattern_name = pattern_name
|
105
|
-
end
|
106
|
-
|
107
|
-
def call(service)
|
108
|
-
pattern = service.user_data.patterns[@pattern_name]
|
109
|
-
service.user_data.active_pattern = pattern
|
110
|
-
@pattern_name
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
class GetBrightness
|
115
|
-
def call(service)
|
116
|
-
service.user_data.brightness
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
class SetBrightness
|
121
|
-
def initialize(brightness)
|
122
|
-
@brightness = brightness
|
123
|
-
end
|
124
|
-
|
125
|
-
def call(service)
|
126
|
-
service.user_data.brightness = @brightness
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
|
131
|
-
class GetLedsOn
|
132
|
-
def call(service)
|
133
|
-
service.user_data.leds_on
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
class SetLedsOn
|
138
|
-
def initialize(leds_on)
|
139
|
-
@leds_on = leds_on
|
140
|
-
end
|
141
|
-
|
142
|
-
def call(service)
|
143
|
-
service.user_data.leds_on = @leds_on
|
144
|
-
end
|
47
|
+
def add_fadecandy(hostname, count)
|
48
|
+
request(Pixo::Rpc::AddFadecandy.new(hostname, count))
|
145
49
|
end
|
146
|
-
|
147
50
|
end
|
148
51
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Pixo::Rpc
|
2
|
+
class ApplicationService < Pixo::Rpc::Service
|
3
|
+
attr_reader :application
|
4
|
+
|
5
|
+
def initialize(reader_pipe, writer_pipe, app, latch)
|
6
|
+
super(reader_pipe, writer_pipe)
|
7
|
+
@application = app
|
8
|
+
|
9
|
+
@latch = latch
|
10
|
+
@service_thread = Thread.new { self.thread_run }
|
11
|
+
end
|
12
|
+
|
13
|
+
def thread_run
|
14
|
+
@latch.wait(10)
|
15
|
+
run
|
16
|
+
rescue
|
17
|
+
STDERR.puts $!.inspect
|
18
|
+
ensure
|
19
|
+
application.shutdown
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,114 @@
|
|
1
|
+
module Pixo::Rpc
|
2
|
+
|
3
|
+
class OnKey
|
4
|
+
def initialize(key, scancode, action, mods)
|
5
|
+
@key = key
|
6
|
+
@scancode = scancode
|
7
|
+
@action = action
|
8
|
+
@mods = mods
|
9
|
+
end
|
10
|
+
|
11
|
+
def call(service)
|
12
|
+
service.on_key(@key, @scancode, @action, @mods)
|
13
|
+
self
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class AddPattern
|
18
|
+
def initialize(name, code)
|
19
|
+
@name = name
|
20
|
+
@code = code
|
21
|
+
end
|
22
|
+
|
23
|
+
def call(service)
|
24
|
+
result = nil
|
25
|
+
latch = Concurrent::CountDownLatch.new(1)
|
26
|
+
|
27
|
+
service.application.post( Proc.new do |app|
|
28
|
+
app.add_pattern(@name, @code)
|
29
|
+
result = @name
|
30
|
+
latch.count_down
|
31
|
+
end)
|
32
|
+
latch.wait
|
33
|
+
|
34
|
+
result
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
class AddFadecandy
|
39
|
+
def initialize(hostname, count)
|
40
|
+
@hostname = hostname
|
41
|
+
@count = count
|
42
|
+
end
|
43
|
+
|
44
|
+
def call(service)
|
45
|
+
result = nil
|
46
|
+
latch = Concurrent::CountDownLatch.new(1)
|
47
|
+
|
48
|
+
service.application.post( Proc.new do |app|
|
49
|
+
app.add_fadecandy(@hostname, @count)
|
50
|
+
result = @hostname
|
51
|
+
latch.count_down
|
52
|
+
end)
|
53
|
+
latch.wait
|
54
|
+
|
55
|
+
result
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
|
60
|
+
class ListPatterns
|
61
|
+
def call(service)
|
62
|
+
service.application.patterns.keys
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
class GetPattern
|
67
|
+
def call(service)
|
68
|
+
service.application.pattern
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
class SetPattern
|
73
|
+
def initialize(pattern_name = nil)
|
74
|
+
@pattern_name = pattern_name
|
75
|
+
end
|
76
|
+
|
77
|
+
def call(service)
|
78
|
+
service.application.pattern = @pattern_name
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
class GetBrightness
|
83
|
+
def call(service)
|
84
|
+
service.application.brightness
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
class SetBrightness
|
89
|
+
def initialize(brightness)
|
90
|
+
@brightness = brightness
|
91
|
+
end
|
92
|
+
|
93
|
+
def call(service)
|
94
|
+
service.application.brightness = @brightness
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
|
99
|
+
class GetLedsOn
|
100
|
+
def call(service)
|
101
|
+
service.application.leds_on
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
class SetLedsOn
|
106
|
+
def initialize(leds_on)
|
107
|
+
@leds_on = leds_on
|
108
|
+
end
|
109
|
+
|
110
|
+
def call(service)
|
111
|
+
service.application.leds_on = @leds_on
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
@@ -3,11 +3,9 @@ require 'securerandom'
|
|
3
3
|
require 'base64'
|
4
4
|
require 'thread'
|
5
5
|
|
6
|
-
module Pixo::
|
6
|
+
module Pixo::Rpc
|
7
7
|
class Service
|
8
|
-
|
9
|
-
|
10
|
-
def initialize(reader_pipe, writer_pipe, user_data: nil)
|
8
|
+
def initialize(reader_pipe, writer_pipe)
|
11
9
|
@reader_pipe = reader_pipe
|
12
10
|
@writer_pipe = writer_pipe
|
13
11
|
|
@@ -15,15 +13,13 @@ module Pixo::Ipc
|
|
15
13
|
@live_requests = Concurrent::Hash.new
|
16
14
|
|
17
15
|
@pipe_mutex = Mutex.new
|
18
|
-
|
19
|
-
@user_data = user_data
|
20
16
|
end
|
21
17
|
|
22
18
|
def run
|
23
19
|
while @running && (line = @reader_pipe.readline)
|
24
20
|
message = Marshal.load(Base64.strict_decode64(line.strip))
|
25
|
-
if message.is_a?(Pixo::
|
26
|
-
resp = Pixo::
|
21
|
+
if message.is_a?(Pixo::Rpc::RequestMessage)
|
22
|
+
resp = Pixo::Rpc::ResponseMessage.new(message.data.call(self), message.rid)
|
27
23
|
|
28
24
|
bytes_to_write = Base64.strict_encode64(Marshal.dump(resp))
|
29
25
|
@pipe_mutex.synchronize do
|
@@ -31,7 +27,7 @@ module Pixo::Ipc
|
|
31
27
|
@writer_pipe.write($/)
|
32
28
|
@writer_pipe.flush
|
33
29
|
end
|
34
|
-
elsif message.is_a?(Pixo::
|
30
|
+
elsif message.is_a?(Pixo::Rpc::ResponseMessage)
|
35
31
|
@live_requests[message.rid]
|
36
32
|
request = @live_requests[message.rid]
|
37
33
|
request.send_result(message.data) if request
|
@@ -48,7 +44,7 @@ module Pixo::Ipc
|
|
48
44
|
end
|
49
45
|
|
50
46
|
def request(message, timeout: 10, async: false)
|
51
|
-
request = Pixo::
|
47
|
+
request = Pixo::Rpc::Request.new(message)
|
52
48
|
@live_requests[request.message.rid] = request unless async
|
53
49
|
|
54
50
|
bytes_to_write = Base64.strict_encode64(Marshal.dump(request.message))
|
@@ -81,7 +77,7 @@ module Pixo::Ipc
|
|
81
77
|
attr_reader :latch
|
82
78
|
|
83
79
|
def initialize(data)
|
84
|
-
@message = Pixo::
|
80
|
+
@message = Pixo::Rpc::RequestMessage.new(data)
|
85
81
|
|
86
82
|
@latch = Concurrent::CountDownLatch.new(1)
|
87
83
|
end
|
data/lib/pixo/version.rb
CHANGED
data/lib/pixo.rb
CHANGED
@@ -1,8 +1,21 @@
|
|
1
1
|
require "pixo/version"
|
2
|
-
require "pixo/
|
2
|
+
require "pixo/rpc/service"
|
3
|
+
require "pixo/rpc/application_service"
|
4
|
+
require "pixo/rpc/request_types"
|
3
5
|
require "pixo/renderer"
|
4
6
|
require "open3"
|
5
7
|
|
6
8
|
module Pixo
|
7
9
|
|
10
|
+
def self.seed_patterns
|
11
|
+
unless @patterns
|
12
|
+
@patterns = Hash.new
|
13
|
+
patterns_dir = File.join(File.dirname(__FILE__), "..", 'ext', 'pixo', 'patterns')
|
14
|
+
Dir.entries(patterns_dir).each do | pattern_file|
|
15
|
+
next unless pattern_file.end_with?('.glsl')
|
16
|
+
@patterns[pattern_file] = File.read(File.join(patterns_dir, pattern_file))
|
17
|
+
end
|
18
|
+
end
|
19
|
+
@patterns
|
20
|
+
end
|
8
21
|
end
|
data/pixo.gemspec
CHANGED
@@ -31,5 +31,6 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.add_development_dependency "rake", "~> 10.0"
|
32
32
|
spec.add_development_dependency "rake-compiler", "~> 1.0"
|
33
33
|
spec.add_development_dependency "rspec", ">= 3.0"
|
34
|
+
spec.add_development_dependency "rspec-collection_matchers", ">= 1.1.3"
|
34
35
|
|
35
36
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pixo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Constantine
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '3.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec-collection_matchers
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 1.1.3
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 1.1.3
|
83
97
|
description: Write a longer description or delete this line.
|
84
98
|
email:
|
85
99
|
- cconstan@gmail.com
|
@@ -1540,8 +1554,10 @@ files:
|
|
1540
1554
|
- ext/pixo/src/opengl.h
|
1541
1555
|
- lib/pixo.rb
|
1542
1556
|
- lib/pixo/application.rb
|
1543
|
-
- lib/pixo/ipc/service.rb
|
1544
1557
|
- lib/pixo/renderer.rb
|
1558
|
+
- lib/pixo/rpc/application_service.rb
|
1559
|
+
- lib/pixo/rpc/request_types.rb
|
1560
|
+
- lib/pixo/rpc/service.rb
|
1545
1561
|
- lib/pixo/version.rb
|
1546
1562
|
- pixo.gemspec
|
1547
1563
|
homepage: https://github.com/cconstantine
|