--- 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();
}