diff --git a/modules/videoio/src/cap_ios_abstract_camera.mm b/modules/videoio/src/cap_ios_abstract_camera.mm index 79e0c3d7a9..032ab850fa 100644 --- a/modules/videoio/src/cap_ios_abstract_camera.mm +++ b/modules/videoio/src/cap_ios_abstract_camera.mm @@ -203,11 +203,11 @@ } [self.captureSession stopRunning]; - self.captureSession = nil; + [captureSession release]; } - self.captureVideoPreviewLayer = nil; - self.videoCaptureConnection = nil; + [captureVideoPreviewLayer release]; + [videoCaptureConnection release]; captureSessionLoaded = NO; } diff --git a/modules/videoio/src/cap_ios_video_camera.mm b/modules/videoio/src/cap_ios_video_camera.mm index 54471cee2d..8a19a47f2f 100644 --- a/modules/videoio/src/cap_ios_video_camera.mm +++ b/modules/videoio/src/cap_ios_video_camera.mm @@ -129,31 +129,33 @@ static CGFloat DegreesToRadians(CGFloat degrees) {return degrees * M_PI / 180;} - (void)stop; { - [super stop]; + if (self.running == YES) { + [super stop]; - self.videoDataOutput = nil; - if (videoDataOutputQueue) { - dispatch_release(videoDataOutputQueue); - } - - if (self.recordVideo == YES) { - if (self.recordAssetWriter) { - if (self.recordAssetWriter.status == AVAssetWriterStatusWriting) { - [self.recordAssetWriter finishWriting]; - NSLog(@"[Camera] recording stopped"); - } else { - NSLog(@"[Camera] Recording Error: asset writer status is not writing"); - } - self.recordAssetWriter = nil; + [videoDataOutput release]; + if (videoDataOutputQueue) { + dispatch_release(videoDataOutputQueue); } - self.recordAssetWriterInput = nil; - self.recordPixelBufferAdaptor = nil; - } + if (self.recordVideo == YES) { + if (self.recordAssetWriter) { + if (self.recordAssetWriter.status == AVAssetWriterStatusWriting) { + [self.recordAssetWriter finishWriting]; + NSLog(@"[Camera] recording stopped"); + } else { + NSLog(@"[Camera] Recording Error: asset writer status is not writing"); + } + [recordAssetWriter release]; + } - if (self.customPreviewLayer) { - [self.customPreviewLayer removeFromSuperlayer]; - self.customPreviewLayer = nil; + [recordAssetWriterInput release]; + [recordPixelBufferAdaptor release]; + } + + if (self.customPreviewLayer) { + [self.customPreviewLayer removeFromSuperlayer]; + self.customPreviewLayer = nil; + } } }