Skip to content

Commit a5f7d14

Browse files
povidaloGrimler91
authored andcommitted
CameraAPI: fix camera issue, and cleanup after taking a photo
Fixes #124 and #435.
1 parent 92b4cd8 commit a5f7d14

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

app/src/main/java/com/termux/api/PhotoAPI.java

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -126,9 +126,11 @@ public void run() {
126126
} catch (Exception e) {
127127
stdout.println("Error writing image: " + e.getMessage());
128128
TermuxApiLogger.error("Error writing image", e);
129-
} finally {
130-
closeCamera(camera, looper);
131129
}
130+
} finally {
131+
mImageReader.close();
132+
releaseSurfaces(outputSurfaces);
133+
closeCamera(camera, looper);
132134
}
133135
}
134136
}.start(), null);
@@ -156,8 +158,6 @@ public void onConfigured(final CameraCaptureSession session) {
156158
Thread.sleep(500);
157159
session.stopRepeating();
158160
TermuxApiLogger.info("preview stoppend");
159-
previewTexture.release();
160-
dummySurface.release();
161161

162162
final CaptureRequest.Builder jpegRequest = camera.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE);
163163
// Render to our image reader:
@@ -170,13 +170,17 @@ public void onConfigured(final CameraCaptureSession session) {
170170
saveImage(camera, session, jpegRequest.build());
171171
} catch (Exception e) {
172172
TermuxApiLogger.error("onConfigured() error in preview", e);
173+
mImageReader.close();
174+
releaseSurfaces(outputSurfaces);
173175
closeCamera(camera, looper);
174176
}
175177
}
176178

177179
@Override
178180
public void onConfigureFailed(CameraCaptureSession session) {
179181
TermuxApiLogger.error("onConfigureFailed() error in preview");
182+
mImageReader.close();
183+
releaseSurfaces(outputSurfaces);
180184
closeCamera(camera, looper);
181185
}
182186
}, null);
@@ -187,7 +191,6 @@ static void saveImage(final CameraDevice camera, CameraCaptureSession session, C
187191
@Override
188192
public void onCaptureCompleted(CameraCaptureSession completedSession, CaptureRequest request, TotalCaptureResult result) {
189193
TermuxApiLogger.info("onCaptureCompleted()");
190-
closeCamera(camera, null);
191194
}
192195
}, null);
193196
}
@@ -244,6 +247,13 @@ static int correctOrientation(final Context context, final CameraCharacteristics
244247
return jpegOrientation;
245248
}
246249

250+
static void releaseSurfaces(List<Surface> outputSurfaces) {
251+
for (Surface outputSurface : outputSurfaces) {
252+
outputSurface.release();
253+
}
254+
TermuxApiLogger.info("surfaces released");
255+
}
256+
247257
static void closeCamera(CameraDevice camera, Looper looper) {
248258
try {
249259
camera.close();

0 commit comments

Comments
 (0)