diff --git a/modules/videoio/src/cap_ios_video_camera.mm b/modules/videoio/src/cap_ios_video_camera.mm index 6c4c21f164..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]; - [videoDataOutput release]; - 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"); - } - [recordAssetWriter release]; + [videoDataOutput release]; + if (videoDataOutputQueue) { + dispatch_release(videoDataOutputQueue); } - [recordAssetWriterInput release]; - [recordPixelBufferAdaptor release]; - } + 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; + } } }