Skip to content

Commit 0fbc9e5

Browse files
authored
Merge pull request #42 from cacheflowe/master
Add defensive checks for null `frame`
2 parents e855c14 + 7706ab7 commit 0fbc9e5

File tree

1 file changed

+44
-27
lines changed

1 file changed

+44
-27
lines changed

src/main/java/ch/bildspur/realsense/RealSenseCamera.java

Lines changed: 44 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -308,55 +308,66 @@ public void readFrames() {
308308

309309
if (align.isEnabled()) {
310310
FrameList temp = align.getBlock().process(frames);
311-
frames.release();
311+
if (frames != null) frames.release();
312312
frames = temp;
313313
}
314314

315315
// copy streams
316316
if (depthStream.isEnabled()) {
317317
DepthFrame frame = frames.getDepthFrame();
318+
if (frame != null) {
319+
320+
// apply depth filter
321+
if (!filters.isEmpty()) {
322+
for (RSFilterBlock filter : filters) {
323+
DepthFrame temp = filter.getBlock().process(frame);
324+
frame.release();
325+
frame = temp;
326+
}
327+
}
318328

319-
// apply depth filter
320-
if (!filters.isEmpty()) {
321-
for (RSFilterBlock filter : filters) {
322-
DepthFrame temp = filter.getBlock().process(frame);
323-
frame.release();
324-
frame = temp;
329+
// update colors if colorized is there
330+
if (colorizer.isEnabled()) {
331+
VideoFrame coloredFrame = colorizer.getBlock().colorize(frame);
332+
if(coloredFrame != null) {
333+
depthStream.copyPixels(coloredFrame);
334+
coloredFrame.release();
335+
}
325336
}
326-
}
327337

328-
// update colors if colorized is there
329-
if (colorizer.isEnabled()) {
330-
VideoFrame coloredFrame = colorizer.getBlock().colorize(frame);
331-
depthStream.copyPixels(coloredFrame);
332-
coloredFrame.release();
338+
frame.release();
333339
}
334-
335-
frame.release();
336340
}
337341

338342
if (colorStream.isEnabled()) {
339343
VideoFrame frame = frames.getColorFrame();
340-
colorStream.copyPixels(frame);
341-
frame.release();
344+
if (frame != null) {
345+
colorStream.copyPixels(frame);
346+
frame.release();
347+
}
342348
}
343349

344350
if (firstIRStream.isEnabled()) {
345351
VideoFrame frame = getStreamByIndex(frames, Stream.Infrared, Format.Any, firstIRStream.getIndex());
346-
firstIRStream.copyPixels(frame);
347-
frame.release();
352+
if (frame != null) {
353+
firstIRStream.copyPixels(frame);
354+
frame.release();
355+
}
348356
}
349357

350358
if (secondIRStream.isEnabled()) {
351359
VideoFrame frame = getStreamByIndex(frames, Stream.Infrared, Format.Any, secondIRStream.getIndex());
352-
secondIRStream.copyPixels(frame);
353-
frame.release();
360+
if (frame != null) {
361+
secondIRStream.copyPixels(frame);
362+
frame.release();
363+
}
354364
}
355365

356366
if (poseStream.isEnabled()) {
357367
PoseFrame frame = frames.getPoseFrame();
358-
359-
frame.release();
368+
if (frame != null) {
369+
frame.release();
370+
}
360371
}
361372
}
362373

@@ -368,7 +379,9 @@ private <T extends Frame> T getStreamByIndex(FrameList frames, Stream stream, Fo
368379
&& frame.getProfile().getIndex() == index) {
369380
return (T) frame;
370381
}
371-
frame.release();
382+
if (frame != null) {
383+
frame.release();
384+
}
372385
}
373386
return null;
374387
}
@@ -620,9 +633,13 @@ public PVector getProjectedPoint(int x, int y) {
620633
public short[][] getDepthData() {
621634
checkRunning();
622635

623-
DepthFrame frame = frames.getDepthFrame();
624-
depthStream.updateDepthData(frame);
625-
frame.release();
636+
if (frames != null) {
637+
DepthFrame frame = frames.getDepthFrame();
638+
if (frame != null) {
639+
depthStream.updateDepthData(frame);
640+
frame.release();
641+
}
642+
}
626643
return depthStream.getData();
627644
}
628645

0 commit comments

Comments
 (0)