From e9bd2342d78ddf4a709ec4fa42d180eee37e5f23 Mon Sep 17 00:00:00 2001 From: cacheflowe Date: Fri, 13 Oct 2023 12:43:15 -0400 Subject: [PATCH] Defensive checks for null `frame` --- .../bildspur/realsense/RealSenseCamera.java | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/main/java/ch/bildspur/realsense/RealSenseCamera.java b/src/main/java/ch/bildspur/realsense/RealSenseCamera.java index bc856c7..65c1db4 100644 --- a/src/main/java/ch/bildspur/realsense/RealSenseCamera.java +++ b/src/main/java/ch/bildspur/realsense/RealSenseCamera.java @@ -308,7 +308,7 @@ public void readFrames() { if (align.isEnabled()) { FrameList temp = align.getBlock().process(frames); - frames.release(); + if (frames != null) frames.release(); frames = temp; } @@ -320,7 +320,7 @@ public void readFrames() { if (!filters.isEmpty()) { for (RSFilterBlock filter : filters) { DepthFrame temp = filter.getBlock().process(frame); - frame.release(); + if (frame != null) frame.release(); frame = temp; } } @@ -332,31 +332,31 @@ public void readFrames() { coloredFrame.release(); } - frame.release(); + if (frame != null) frame.release(); } if (colorStream.isEnabled()) { VideoFrame frame = frames.getColorFrame(); colorStream.copyPixels(frame); - frame.release(); + if (frame != null) frame.release(); } if (firstIRStream.isEnabled()) { VideoFrame frame = getStreamByIndex(frames, Stream.Infrared, Format.Any, firstIRStream.getIndex()); firstIRStream.copyPixels(frame); - frame.release(); + if (frame != null) frame.release(); } if (secondIRStream.isEnabled()) { VideoFrame frame = getStreamByIndex(frames, Stream.Infrared, Format.Any, secondIRStream.getIndex()); secondIRStream.copyPixels(frame); - frame.release(); + if (frame != null) frame.release(); } if (poseStream.isEnabled()) { PoseFrame frame = frames.getPoseFrame(); - frame.release(); + if (frame != null) frame.release(); } } @@ -368,7 +368,7 @@ private T getStreamByIndex(FrameList frames, Stream stream, Fo && frame.getProfile().getIndex() == index) { return (T) frame; } - frame.release(); + if (frame != null) frame.release(); } return null; } @@ -620,9 +620,13 @@ public PVector getProjectedPoint(int x, int y) { public short[][] getDepthData() { checkRunning(); - DepthFrame frame = frames.getDepthFrame(); - depthStream.updateDepthData(frame); - frame.release(); + if (frames != null) { + DepthFrame frame = frames.getDepthFrame(); + if (frame != null) { + depthStream.updateDepthData(frame); + frame.release(); + } + } return depthStream.getData(); }