--- nono/wx/wxlcdwindow.cpp 2026/04/29 17:04:56 1.1.1.3 +++ nono/wx/wxlcdwindow.cpp 2026/04/29 17:04:59 1.1.1.4 @@ -12,6 +12,7 @@ #include "wxbitmapbuf.h" #include "wxcolor.h" #include "wxtextscreen.h" +#include "wxuimessage.h" #include "lcd.h" // パネルの大きさ (定数) @@ -26,7 +27,6 @@ // イベントテーブル wxBEGIN_EVENT_TABLE(WXLCDPanel, inherited) - EVT_TIMER(wxID_ANY, WXLCDPanel::OnTimer) EVT_PAINT(WXLCDPanel::OnPaint) wxEND_EVENT_TABLE() @@ -37,33 +37,25 @@ WXLCDPanel::WXLCDPanel(wxWindow *parent) { bitmap.Create(PANEL_WIDTH, PANEL_HEIGHT); - count = (uint32)-1; ddram = gLCD->GetDDRAM(); - // 更新タイマー。そんなに応答速度速くなくていい - timer.SetOwner(this); - timer.Start(50); + // VM からの通知を受け取る + WXUIMessage::Connect(UIMessage::LCD, this, + wxCommandEventHandler(WXLCDPanel::OnLCDChanged)); } // デストラクタ WXLCDPanel::~WXLCDPanel() { + WXUIMessage::Disconnect(UIMessage::LCD, + wxCommandEventHandler(WXLCDPanel::OnLCDChanged)); } -// タイマーイベント +// LCD 状態変更イベント (UIMessage) void -WXLCDPanel::OnTimer(wxTimerEvent& event) +WXLCDPanel::OnLCDChanged(wxCommandEvent& event) { - uint32 devcount; - - // 更新があれば.. - devcount = gLCD->GetCounter(); - if (count != devcount) { - count = devcount; - - // 再描画を起こす - Refresh(); - } + Refresh(); } // 描画イベント (UI スレッドから呼ばれる)