From 9eea36efa5627a29aae0fe816389f08bc05b3b17 Mon Sep 17 00:00:00 2001 From: Atreya Bain Date: Thu, 20 Feb 2025 08:10:40 +0000 Subject: [PATCH] add: more helpful warning msgs --- src/device/device.rs | 1 - src/main.rs | 3 +-- src/util.rs | 16 ++++++++++++++++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/device/device.rs b/src/device/device.rs index 1e840c5..3b23bfb 100644 --- a/src/device/device.rs +++ b/src/device/device.rs @@ -3,7 +3,6 @@ use crate::device::keyboard::Keyboard; use crate::device::timer::DeviceTimerManager; use crate::util::{DeviceConfig, EmulatorResult}; use rand::random; -use rand::seq::IteratorRandom; use std::sync::{Arc, Mutex}; use std::thread::sleep; use std::time::Duration; diff --git a/src/main.rs b/src/main.rs index 03abf89..7c10c94 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,7 +2,6 @@ use std::sync::{Arc, Mutex}; use std::sync::mpsc::Sender; use std::thread; use std::thread::JoinHandle; -use std::time::Duration; use clap::Parser; use log::LevelFilter; use sdl2::audio::{AudioQueue, AudioSpecDesired}; @@ -66,7 +65,7 @@ fn main() -> EmulatorResult<()> { match event { Event::Quit { .. } | Event::KeyDown { keycode: Some(Keycode::Escape), .. } => { - device_termination_signal_sender.send(()).expect("Could not send"); + device_termination_signal_sender.send(())?; break 'running; } Event::KeyDown { keycode: Some(keycode), repeat: false, .. } => { diff --git a/src/util.rs b/src/util.rs index 27687c4..1784655 100644 --- a/src/util.rs +++ b/src/util.rs @@ -1,6 +1,7 @@ use crate::device::keyboard::KeyboardEvent; use sdl2::video::WindowBuildError; use sdl2::IntegerOrSdlError; +use std::fmt::Display; use std::sync::mpsc::SendError; use std::sync::PoisonError; use std::time::Duration; @@ -51,6 +52,21 @@ pub enum EmulatorError { MutexInvalidState(String), } +impl Display for EmulatorError{ + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self{ + EmulatorError::SdlError(err) => write!(f,"Error with SDL: {}",err), + EmulatorError::IOError(io_err) => write!(f,"IO Error: {}",io_err), + EmulatorError::MutexInvalidState(invalid_mutex_err) => write!(f,"Issue from mutex: {}",invalid_mutex_err), + } + } +} + +impl From> for EmulatorError{ + fn from(value: SendError<()>) -> Self { + Self::IOError(String::from("Could not update as: ")+value.to_string().as_str()) + } +} impl From for EmulatorError { fn from(value: String) -> Self { Self::SdlError(value)