diff -r 66171ce586cc -r 9c259fb4d405 qmlfrontend/gameview.cpp --- a/qmlfrontend/gameview.cpp Sun Jan 07 09:48:26 2018 +0100 +++ b/qmlfrontend/gameview.cpp Wed Jan 10 23:49:47 2018 +0100 @@ -1,5 +1,7 @@ #include "gameview.h" +#include +#include #include #include #include @@ -9,6 +11,7 @@ extern "C" { extern GameTick_t* flibGameTick; extern ResizeWindow_t* flibResizeWindow; +extern updateMousePosition_t* flibUpdateMousePosition; } GameView::GameView() @@ -22,8 +25,14 @@ void GameView::tick(quint32 delta) { m_delta = delta; - if (window()) - window()->update(); + + if (window()) { + QTimer* timer = new QTimer(this); + connect(timer, &QTimer::timeout, window(), &QQuickWindow::update); + timer->start(100); + + //window()->update(); + } } void GameView::handleWindowChanged(QQuickWindow* win) @@ -53,8 +62,16 @@ connect(window(), &QQuickWindow::beforeRendering, m_renderer, &GameViewRenderer::paint, Qt::DirectConnection); } - if (m_windowChanged) - m_renderer->setViewportSize(window()->size() * window()->devicePixelRatio()); + if (m_windowChanged) { + QSize windowSize = window()->size(); + m_renderer->setViewportSize(windowSize * window()->devicePixelRatio()); + m_centerX = windowSize.width() / 2; + m_centerY = windowSize.height() / 2; + } + + QPoint mousePos = mapFromGlobal(QCursor::pos()).toPoint(); + if (flibUpdateMousePosition(m_centerX, m_centerY, mousePos.x(), mousePos.y())) + QCursor::setPos(mapToGlobal(QPointF(m_centerX, m_centerY)).toPoint()); m_renderer->tick(m_delta); }