Qt: Fix aliasing on background logo (closes #1886)

This commit is contained in:
Vicki Pfau 2020-10-14 20:39:47 -07:00
parent c7a1475981
commit 6ffa43d453
3 changed files with 18 additions and 10 deletions

View File

@ -74,6 +74,7 @@ Other fixes:
- Qt: Fix drawing on macOS break when using OpenGL (fixes mgba.io/i/1899)
- Qt: Load/save bytes from memory viewer in the order visible (fixes mgba.io/i/1900)
- Qt: Fix stride changing when toggling SGB borders (fixes mgba.io/i/1898)
- Qt: Fix aliasing on background logo (fixes mgba.io/i/1886)
- mGUI: Fix closing down a game if an exit is signalled
- mVL: Fix injecting accidentally draining non-injection buffer
- SM83: Simplify register pair access on big endian

View File

@ -137,10 +137,7 @@ Window::Window(CoreManager* manager, ConfigController* config, int playerId, QWi
#elif defined(M_CORE_GB)
resizeFrame(QSize(GB_VIDEO_HORIZONTAL_PIXELS * i, GB_VIDEO_VERTICAL_PIXELS * i));
#endif
m_screenWidget->setPixmap(m_logo);
m_screenWidget->setDimensions(m_logo.width(), m_logo.height());
m_screenWidget->setLockIntegerScaling(false);
m_screenWidget->setLockAspectRatio(true);
setLogo();
setCentralWidget(m_screenWidget);
connect(this, &Window::shutdown, m_logView, &QWidget::hide);
@ -746,6 +743,7 @@ void Window::gameStarted() {
m_config->updateOption("lockIntegerScaling");
m_config->updateOption("lockAspectRatio");
m_config->updateOption("interframeBlending");
m_config->updateOption("resampleVideo");
m_config->updateOption("showOSD");
if (m_savedScale > 0) {
resizeFrame(size * m_savedScale);
@ -814,11 +812,7 @@ void Window::gameStopped() {
}
setWindowFilePath(QString());
detachWidget(m_display.get());
m_screenWidget->setDimensions(m_logo.width(), m_logo.height());
m_screenWidget->setLockIntegerScaling(false);
m_screenWidget->setLockAspectRatio(true);
m_screenWidget->setPixmap(m_logo);
m_screenWidget->unsetCursor();
setLogo();
if (m_display) {
#ifdef M_CORE_GB
m_display->setMinimumSize(GB_VIDEO_HORIZONTAL_PIXELS, GB_VIDEO_VERTICAL_PIXELS);
@ -1406,7 +1400,9 @@ void Window::setupMenu(QMenuBar* menubar) {
if (m_display) {
m_display->filter(value.toBool());
}
m_screenWidget->filter(value.toBool());
if (m_controller) {
m_screenWidget->filter(value.toBool());
}
}, this);
m_config->updateOption("resampleVideo");
@ -1937,6 +1933,15 @@ void Window::attachDisplay() {
changeRenderer();
}
void Window::setLogo() {
m_screenWidget->setPixmap(m_logo);
m_screenWidget->setDimensions(m_logo.width(), m_logo.height());
m_screenWidget->setLockIntegerScaling(false);
m_screenWidget->setLockAspectRatio(true);
m_screenWidget->filter(true);
m_screenWidget->unsetCursor();
}
WindowBackground::WindowBackground(QWidget* parent)
: QWidget(parent)
{

View File

@ -142,6 +142,8 @@ private slots:
void updateFrame();
void setLogo();
private:
static const int FPS_TIMER_INTERVAL = 2000;
static const int MUST_RESTART_TIMEOUT = 10000;