--- nono/wx/wxmainview.cpp 2026/04/29 17:05:23 1.1.1.14 +++ nono/wx/wxmainview.cpp 2026/04/29 17:05:27 1.1.1.15 @@ -10,7 +10,6 @@ #include "wxmainview.h" #include "wxuimessage.h" -#include "bitmap.h" #include "config.h" #include "event.h" #include "keyboard.h" @@ -66,12 +65,6 @@ WXMainView::WXMainView(wxWindow *parent) keyboard = gMainApp.FindObject(OBJ_KEYBOARD); renderer = GetRenderer(); - // 仮想画面(VM が描画する画面) - rendwidth = renderer->GetWidth(); - rendheight = renderer->GetHeight(); - - renderer->Enable(); - // マウスモード変更イベント Connect(NONO_EVT_MOUSEMODE, wxCommandEventHandler(WXMainView::OnMouseMode), NULL, this); @@ -155,18 +148,12 @@ WXMainView::OnPaint(wxPaintEvent& event) return; } - const BitmapRGB& bitmap0 = renderer->GetBitmap(); - BitmapRGB bitmap1; - uint8 *p = const_cast(bitmap0.GetBuf()); - - if (viewwidth != rendwidth || viewheight != rendheight) { - bitmap1.Create(viewwidth, viewheight); - Rect rect(0, 0, viewwidth, viewheight); - bitmap1.StretchDraw(rect, bitmap0); - p = bitmap1.GetBuf(); + BitmapRGB *bitmap24 = renderer->GetBitmap(); + if (__predict_false(bitmap24 == NULL)) { + return; } - wxImage image(viewwidth, viewheight, p, true); + wxImage image(viewwidth, viewheight, bitmap24->GetBuf(), true); wxBitmap bmp(image); // 実画面 DC にコピー @@ -179,12 +166,16 @@ void WXMainView::DoResize(double scale) { screen_scale = scale; - int width = (double)rendwidth * scale; - int height = (double)rendheight * scale; + int width = (double)renderer->GetWidth() * scale; + int height = (double)renderer->GetHeight() * scale; if (viewwidth != width || viewheight != height) { - // ウィンドウサイズ変更 viewwidth = width; viewheight = height; + + // レンダラにリサイズ指示。 + renderer->ResizeView(viewwidth, viewheight); + + // ウィンドウサイズ変更 SetClientSize(viewwidth, viewheight); SetMinClientSize(wxSize(viewwidth, viewheight)); }