Skip to content

Commit d2c77a0

Browse files
committed
[orx-kinect] Change shutdown handler to inner class
1 parent ddc81fc commit d2c77a0

File tree

1 file changed

+36
-32
lines changed
  • orx-kinect-common/src/main/kotlin/org/openrndr/extra/kinect/impl

1 file changed

+36
-32
lines changed

orx-kinect-common/src/main/kotlin/org/openrndr/extra/kinect/impl/KinectImpl.kt

Lines changed: 36 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -13,23 +13,21 @@ import java.util.function.Supplier
1313
import kotlin.concurrent.thread
1414

1515
class DefaultKinects<CTX>(
16-
private val program: Program,
17-
private val manager: KinectsManager<CTX>
16+
private val program: Program,
17+
private val manager: KinectsManager<CTX>
1818
) : Kinects<CTX> {
1919

20+
private inner class Destroyer : Thread() {
21+
override fun run() {
22+
manager.shutdown()
23+
}
24+
}
25+
2026
init {
2127
manager.initialize()
2228
// as we don't have explicit shutdown mechanism in OPENRNDR
2329
// we need to install a shutdown hook for now
24-
Runtime.getRuntime().addShutdownHook(
25-
thread(
26-
name = "${manager.javaClass.simpleName}-closer",
27-
start = false,
28-
isDaemon = false
29-
) {
30-
manager.shutdown()
31-
}
32-
)
30+
Runtime.getRuntime().addShutdownHook(Destroyer())
3331
}
3432

3533
override fun countDevices(): Int {
@@ -65,8 +63,8 @@ interface KinectCommandsExecutor<CTX> {
6563
}
6664

6765
class DefaultKinectDevice<CTX>(
68-
override val depthCamera: DefaultKinectDepthCamera,
69-
private val commandsExecutor: KinectCommandsExecutor<CTX>
66+
override val depthCamera: DefaultKinectDepthCamera,
67+
private val commandsExecutor: KinectCommandsExecutor<CTX>
7068
) : KinectDevice<CTX> {
7169
override var enabled: Boolean = true
7270
override fun beforeDraw(drawer: Drawer, program: Program) {
@@ -79,13 +77,13 @@ class DefaultKinectDevice<CTX>(
7977
}
8078

8179
class DefaultKinectDepthCamera(
82-
override val width: Int,
83-
override val height: Int,
84-
depthScale: Double,
85-
private val enabler: KinectFeatureEnabler,
86-
private val bytesSupplier: Supplier<ByteBuffer?>
80+
override val width: Int,
81+
override val height: Int,
82+
depthScale: Double,
83+
private val enabler: KinectFeatureEnabler,
84+
private val bytesSupplier: Supplier<ByteBuffer?>
8785
) :
88-
KinectDepthCamera, UpdatableKinectCamera {
86+
KinectDepthCamera, UpdatableKinectCamera {
8987

9088
override var enabled: Boolean
9189
get() = enabler.enabled
@@ -94,16 +92,16 @@ class DefaultKinectDepthCamera(
9492
}
9593

9694
private val rawBuffer: ColorBuffer = colorBuffer(
97-
width,
98-
height,
99-
format = ColorFormat.R,
100-
type = ColorType.UINT16 // it would be perfect if we could use isampler in the shader
95+
width,
96+
height,
97+
format = ColorFormat.R,
98+
type = ColorType.UINT16 // it would be perfect if we could use isampler in the shader
10199
)
102100
override val currentFrame: ColorBuffer = colorBuffer(
103-
width,
104-
height,
105-
format = ColorFormat.R,
106-
type = ColorType.FLOAT16 // in the future we might want to choose the precision here
101+
width,
102+
height,
103+
format = ColorFormat.R,
104+
type = ColorType.FLOAT16 // in the future we might want to choose the precision here
107105
)
108106

109107
private val depthMapper = KinectRawDataToDepthMapper()
@@ -132,15 +130,21 @@ class DefaultKinectDepthCamera(
132130

133131
override var mirror: Boolean
134132
get() = depthMapper.mirror
135-
set(value) { depthMapper.mirror = value }
133+
set(value) {
134+
depthMapper.mirror = value
135+
}
136136

137137
}
138138

139139
private class KinectRawDataToDepthMapper :
140-
Filter(filterShaderFromUrl(
141-
resourceUrl("kinect-raw-to-depth.frag",
142-
DefaultKinects::class.java))
143-
) {
140+
Filter(
141+
filterShaderFromUrl(
142+
resourceUrl(
143+
"kinect-raw-to-depth.frag",
144+
DefaultKinects::class.java
145+
)
146+
)
147+
) {
144148
var depthScale: Double by parameters
145149
var mirror: Boolean by parameters
146150
var resolution: Vector2 by parameters

0 commit comments

Comments
 (0)