--- nono/host/hostcom.cpp 2026/04/29 17:05:47 1.1.1.8 +++ nono/host/hostcom.cpp 2026/04/29 17:05:51 1.1.1.9 @@ -117,7 +117,7 @@ HostCOMDevice::SetLogLevel(int loglevel_ { inherited::SetLogLevel(loglevel_); - std::lock_guard guard(driverlock); + RWLockGuard_Read guard(driverlock); if ((bool)driver) { driver->SetLogLevel(loglevel_); } @@ -158,7 +158,7 @@ HostCOMDevice::Create2() bool HostCOMDevice::SelectDriver(bool startup) { - std::lock_guard guard(driverlock); + RWLockGuard_Write guard(driverlock); driver.reset(); errmsg.clear(); @@ -210,7 +210,7 @@ HostCOMDevice::SelectDriver(bool startup } else { // UI に通知してフォールバック。 int n = (key == "debugger") ? -1 : GetId() - OBJ_HOSTCOM0; - UIMessage::Post(UIMessage::HOSTCOM_FAILED, n); + gMainApp.GetUIMessage()->Post(UIMessage::HOSTCOM_FAILED, n); CreateNone(); } @@ -310,7 +310,7 @@ HostCOMDevice::Dispatch(int udata) { // driver の Dispatch は処理し終わったら DONE を返す { - std::lock_guard guard(driverlock); + RWLockGuard_Read guard(driverlock); udata = driver->Dispatch(udata); } @@ -385,7 +385,7 @@ HostCOMDevice::Rx() int HostCOMDevice::Read() { - std::lock_guard guard(driverlock); + RWLockGuard_Read guard(driverlock); assert((bool)driver); int data = driver->Read(); @@ -411,7 +411,7 @@ HostCOMDevice::Write() { uint8 data; - std::lock_guard guard(driverlock); + RWLockGuard_Read guard(driverlock); assert(driver); // 送信キューを全部吐き出す @@ -425,7 +425,7 @@ HostCOMDevice::Write() const std::string HostCOMDevice::GetDriverName() { - std::lock_guard guard(driverlock); + RWLockGuard_Read guard(driverlock); assert((bool)driver); return driver->GetDriverName(); } @@ -438,7 +438,7 @@ HostCOMDevice::MonitorUpdate(Monitor *, screen.Print(0, 0, "Device(Port) : %s", GetPortName().c_str()); { - std::lock_guard guard(driverlock); + RWLockGuard_Read gurad(driverlock); screen.Print(0, 1, "HostCOM Driver: %s", driver->GetDriverName()); // 次の1行はドライバ依存情報 driver->MonitorUpdateMD(screen, 2);