diff -r bf58f2403953 -r adb1fccc706a qmlfrontend/gameview.cpp --- a/qmlfrontend/gameview.cpp Sat Jan 06 03:17:12 2018 +0100 +++ b/qmlfrontend/gameview.cpp Sun Jan 07 01:21:42 2018 +0100 @@ -8,11 +8,13 @@ extern "C" { extern GameTick_t* flibGameTick; +extern ResizeWindow_t* flibResizeWindow; } GameView::GameView() : m_delta(0) , m_renderer(0) + , m_windowChanged(true) { connect(this, &QQuickItem::windowChanged, this, &GameView::handleWindowChanged); } @@ -31,6 +33,8 @@ connect(win, &QQuickWindow::sceneGraphInvalidated, this, &GameView::cleanup, Qt::DirectConnection); win->setClearBeforeRendering(false); + + m_windowChanged = true; } } @@ -42,19 +46,26 @@ } } -GameViewRenderer::~GameViewRenderer() -{ -} - void GameView::sync() { if (!m_renderer) { m_renderer = new GameViewRenderer(); connect(window(), &QQuickWindow::beforeRendering, m_renderer, &GameViewRenderer::paint, Qt::DirectConnection); } - m_renderer->setViewportSize(window()->size() * window()->devicePixelRatio()); + + if (m_windowChanged) + m_renderer->setViewportSize(window()->size() * window()->devicePixelRatio()); + m_renderer->tick(m_delta); - m_renderer->setWindow(window()); +} + +GameViewRenderer::~GameViewRenderer() +{ +} + +void GameViewRenderer::setViewportSize(const QSize& size) +{ + flibResizeWindow(size.width(), size.height()); } void GameViewRenderer::paint() @@ -64,5 +75,5 @@ flibGameTick(m_delta); - m_window->resetOpenGLState(); + //m_window->resetOpenGLState(); }