diff --git a/src/Captura.Loc/LanguageFields.cs b/src/Captura.Loc/LanguageFields.cs index 686f18567..baaed3ec2 100644 --- a/src/Captura.Loc/LanguageFields.cs +++ b/src/Captura.Loc/LanguageFields.cs @@ -27,7 +27,12 @@ void Set(string Value, [CallerMemberName] string PropertyName = null) RaisePropertyChanged(PropertyName); } + /// + /// Fired when the language changes. This event is invoked by derived classes (e.g., LanguageManager). + /// +#pragma warning disable CS0067 // The event is never used - invoked by derived classes public virtual event Action LanguageChanged; +#pragma warning restore CS0067 public string About { diff --git a/src/Captura.MouseKeyHook/Steps/StepsRecorder.cs b/src/Captura.MouseKeyHook/Steps/StepsRecorder.cs index d2b0f5c2b..1a9cf44cb 100644 --- a/src/Captura.MouseKeyHook/Steps/StepsRecorder.cs +++ b/src/Captura.MouseKeyHook/Steps/StepsRecorder.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Reactive; using System.Reactive.Linq; using System.Reactive.Subjects; @@ -167,23 +167,52 @@ public StepsRecorder(IMouseKeyHook Hook, void DoRecord(IObservable StepsObservable, IObservable ShotObservable) { - var frames = ShotObservable.Select(M => _imageProvider.Capture()) - .Zip(StepsObservable, (Frame, Step) => - { - Step.Draw(Frame, _imageProvider.PointTransform); + try + { + var frames = ShotObservable.Select(M => _imageProvider.Capture()) + .Zip(StepsObservable, (Frame, Step) => + { + Step.Draw(Frame, _imageProvider.PointTransform); - return Frame.GenerateFrame(TimeSpan.Zero); - }); + return Frame.GenerateFrame(TimeSpan.Zero); + }); - foreach (var frame in frames.ToEnumerable()) + foreach (var frame in frames.ToEnumerable()) + { + _videoWriter.WriteFrame(frame); + } + } + catch (Exception e) { - _videoWriter.WriteFrame(frame); + ErrorOccurred?.Invoke(e); } } - public void Start() => _recording = true; + public void Start() + { + try + { + _recording = true; + } + catch (Exception e) + { + ErrorOccurred?.Invoke(e); + throw; + } + } - public void Stop() => _recording = false; + public void Stop() + { + try + { + _recording = false; + } + catch (Exception e) + { + ErrorOccurred?.Invoke(e); + throw; + } + } public event Action ErrorOccurred; diff --git a/src/Screna/AudioRecorder.cs b/src/Screna/AudioRecorder.cs index 672c77971..85dc04d75 100644 --- a/src/Screna/AudioRecorder.cs +++ b/src/Screna/AudioRecorder.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Threading; using System.Threading.Tasks; @@ -54,16 +54,32 @@ public void Dispose() public void Start() { - _audioProvider.Start(); + try + { + _audioProvider.Start(); - _continueEvent.Set(); + _continueEvent.Set(); + } + catch (Exception e) + { + ErrorOccurred?.Invoke(e); + throw; + } } public void Stop() { - _continueEvent.Reset(); + try + { + _continueEvent.Reset(); - _audioProvider.Stop(); + _audioProvider.Stop(); + } + catch (Exception e) + { + ErrorOccurred?.Invoke(e); + throw; + } } void Loop() @@ -80,13 +96,20 @@ bool CanContinue() } } - while (CanContinue()) + try { - var read = _audioProvider.Read(_buffer, 0, _buffer.Length); + while (CanContinue()) + { + var read = _audioProvider.Read(_buffer, 0, _buffer.Length); - _audioWriter.Write(_buffer, 0, read); + _audioWriter.Write(_buffer, 0, read); - Thread.Sleep(ReadInterval); + Thread.Sleep(ReadInterval); + } + } + catch (Exception e) + { + ErrorOccurred?.Invoke(e); } }