summaryrefslogtreecommitdiffstats
path: root/src/citra_qt
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/citra_qt/CMakeLists.txt3
-rw-r--r--src/citra_qt/bootmanager.cpp59
-rw-r--r--src/citra_qt/bootmanager.h2
-rw-r--r--src/citra_qt/config.cpp2
-rw-r--r--src/citra_qt/configure.ui27
-rw-r--r--src/citra_qt/configure_debug.cpp4
-rw-r--r--src/citra_qt/configure_debug.ui4
-rw-r--r--src/citra_qt/configure_dialog.cpp1
-rw-r--r--src/citra_qt/configure_general.cpp14
-rw-r--r--src/citra_qt/configure_general.ui38
-rw-r--r--src/citra_qt/configure_graphics.cpp37
-rw-r--r--src/citra_qt/configure_graphics.h29
-rw-r--r--src/citra_qt/configure_graphics.ui92
-rw-r--r--src/citra_qt/main.cpp2
14 files changed, 232 insertions, 82 deletions
diff --git a/src/citra_qt/CMakeLists.txt b/src/citra_qt/CMakeLists.txt
index 4402ad995..e97d33da4 100644
--- a/src/citra_qt/CMakeLists.txt
+++ b/src/citra_qt/CMakeLists.txt
@@ -22,6 +22,7 @@ set(SRCS
configure_debug.cpp
configure_dialog.cpp
configure_general.cpp
+ configure_graphics.cpp
configure_system.cpp
configure_input.cpp
game_list.cpp
@@ -54,6 +55,7 @@ set(HEADERS
configure_debug.h
configure_dialog.h
configure_general.h
+ configure_graphics.h
configure_system.h
configure_input.h
game_list.h
@@ -73,6 +75,7 @@ set(UIS
configure_audio.ui
configure_debug.ui
configure_general.ui
+ configure_graphics.ui
configure_system.ui
configure_input.ui
hotkeys.ui
diff --git a/src/citra_qt/bootmanager.cpp b/src/citra_qt/bootmanager.cpp
index 414b2f8af..6dddde9ba 100644
--- a/src/citra_qt/bootmanager.cpp
+++ b/src/citra_qt/bootmanager.cpp
@@ -107,36 +107,13 @@ private:
};
GRenderWindow::GRenderWindow(QWidget* parent, EmuThread* emu_thread) :
- QWidget(parent), keyboard_id(0), emu_thread(emu_thread) {
+ QWidget(parent), keyboard_id(0), emu_thread(emu_thread), child(nullptr) {
std::string window_title = Common::StringFromFormat("Citra | %s-%s", Common::g_scm_branch, Common::g_scm_desc);
setWindowTitle(QString::fromStdString(window_title));
keyboard_id = KeyMap::NewDeviceId();
ReloadSetKeymaps();
-
- // TODO: One of these flags might be interesting: WA_OpaquePaintEvent, WA_NoBackground, WA_DontShowOnScreen, WA_DeleteOnClose
- QGLFormat fmt;
- fmt.setVersion(3,3);
- fmt.setProfile(QGLFormat::CoreProfile);
- // Requests a forward-compatible context, which is required to get a 3.2+ context on OS X
- fmt.setOption(QGL::NoDeprecatedFunctions);
-
- child = new GGLWidgetInternal(fmt, this);
- QBoxLayout* layout = new QHBoxLayout(this);
-
- resize(VideoCore::kScreenTopWidth, VideoCore::kScreenTopHeight + VideoCore::kScreenBottomHeight);
- layout->addWidget(child);
- layout->setMargin(0);
- setLayout(layout);
-
- OnMinimalClientAreaChangeRequest(GetActiveConfig().min_client_area_size);
-
- OnFramebufferSizeChanged();
- NotifyClientAreaSizeChanged(std::pair<unsigned,unsigned>(child->width(), child->height()));
-
- BackupGeometry();
-
}
void GRenderWindow::moveContext()
@@ -281,6 +258,40 @@ void GRenderWindow::OnClientAreaResized(unsigned width, unsigned height)
NotifyClientAreaSizeChanged(std::make_pair(width, height));
}
+void GRenderWindow::InitRenderTarget() {
+ if (child) {
+ delete child;
+ }
+
+ if (layout()) {
+ delete layout();
+ }
+
+ // TODO: One of these flags might be interesting: WA_OpaquePaintEvent, WA_NoBackground, WA_DontShowOnScreen, WA_DeleteOnClose
+ QGLFormat fmt;
+ fmt.setVersion(3, 3);
+ fmt.setProfile(QGLFormat::CoreProfile);
+ fmt.setSwapInterval(Settings::values.use_vsync);
+
+ // Requests a forward-compatible context, which is required to get a 3.2+ context on OS X
+ fmt.setOption(QGL::NoDeprecatedFunctions);
+
+ child = new GGLWidgetInternal(fmt, this);
+ QBoxLayout* layout = new QHBoxLayout(this);
+
+ resize(VideoCore::kScreenTopWidth, VideoCore::kScreenTopHeight + VideoCore::kScreenBottomHeight);
+ layout->addWidget(child);
+ layout->setMargin(0);
+ setLayout(layout);
+
+ OnMinimalClientAreaChangeRequest(GetActiveConfig().min_client_area_size);
+
+ OnFramebufferSizeChanged();
+ NotifyClientAreaSizeChanged(std::pair<unsigned, unsigned>(child->width(), child->height()));
+
+ BackupGeometry();
+}
+
void GRenderWindow::OnMinimalClientAreaChangeRequest(const std::pair<unsigned,unsigned>& minimal_size) {
setMinimumSize(minimal_size.first, minimal_size.second);
}
diff --git a/src/citra_qt/bootmanager.h b/src/citra_qt/bootmanager.h
index 0dcf3e5eb..c1da2bc5f 100644
--- a/src/citra_qt/bootmanager.h
+++ b/src/citra_qt/bootmanager.h
@@ -126,6 +126,8 @@ public:
void OnClientAreaResized(unsigned width, unsigned height);
+ void InitRenderTarget();
+
public slots:
void moveContext(); // overridden
diff --git a/src/citra_qt/config.cpp b/src/citra_qt/config.cpp
index ff3bfe1bd..fa3fa210c 100644
--- a/src/citra_qt/config.cpp
+++ b/src/citra_qt/config.cpp
@@ -48,6 +48,7 @@ void Config::ReadValues() {
Settings::values.use_hw_renderer = qt_config->value("use_hw_renderer", true).toBool();
Settings::values.use_shader_jit = qt_config->value("use_shader_jit", true).toBool();
Settings::values.use_scaled_resolution = qt_config->value("use_scaled_resolution", false).toBool();
+ Settings::values.use_vsync = qt_config->value("use_vsync", false).toBool();
Settings::values.bg_red = qt_config->value("bg_red", 1.0).toFloat();
Settings::values.bg_green = qt_config->value("bg_green", 1.0).toFloat();
@@ -140,6 +141,7 @@ void Config::SaveValues() {
qt_config->setValue("use_hw_renderer", Settings::values.use_hw_renderer);
qt_config->setValue("use_shader_jit", Settings::values.use_shader_jit);
qt_config->setValue("use_scaled_resolution", Settings::values.use_scaled_resolution);
+ qt_config->setValue("use_vsync", Settings::values.use_vsync);
// Cast to double because Qt's written float values are not human-readable
qt_config->setValue("bg_red", (double)Settings::values.bg_red);
diff --git a/src/citra_qt/configure.ui b/src/citra_qt/configure.ui
index 15fe17323..28b4a3b90 100644
--- a/src/citra_qt/configure.ui
+++ b/src/citra_qt/configure.ui
@@ -34,11 +34,16 @@
<string>Input</string>
</attribute>
</widget>
- <widget class="ConfigureAudio" name="audioTab">
+ <widget class="ConfigureGraphics" name="graphicsTab">
<attribute name="title">
- <string>Audio</string>
+ <string>Graphics</string>
</attribute>
</widget>
+ <widget class="ConfigureAudio" name="audioTab">
+ <attribute name="title">
+ <string>Audio</string>
+ </attribute>
+ </widget>
<widget class="ConfigureDebug" name="debugTab">
<attribute name="title">
<string>Debug</string>
@@ -80,12 +85,18 @@
<header>configure_debug.h</header>
<container>1</container>
</customwidget>
- <customwidget>
- <class>ConfigureInput</class>
- <extends>QWidget</extends>
- <header>configure_input.h</header>
- <container>1</container>
- </customwidget>
+ <customwidget>
+ <class>ConfigureInput</class>
+ <extends>QWidget</extends>
+ <header>configure_input.h</header>
+ <container>1</container>
+ </customwidget>
+ <customwidget>
+ <class>ConfigureGraphics</class>
+ <extends>QWidget</extends>
+ <header>configure_graphics.h</header>
+ <container>1</container>
+ </customwidget>
</customwidgets>
<resources/>
<connections>
diff --git a/src/citra_qt/configure_debug.cpp b/src/citra_qt/configure_debug.cpp
index dc3d7b906..fa57a7f72 100644
--- a/src/citra_qt/configure_debug.cpp
+++ b/src/citra_qt/configure_debug.cpp
@@ -19,13 +19,13 @@ ConfigureDebug::~ConfigureDebug() {
}
void ConfigureDebug::setConfiguration() {
- ui->toogle_gdbstub->setChecked(Settings::values.use_gdbstub);
+ ui->toggle_gdbstub->setChecked(Settings::values.use_gdbstub);
ui->gdbport_spinbox->setEnabled(Settings::values.use_gdbstub);
ui->gdbport_spinbox->setValue(Settings::values.gdbstub_port);
}
void ConfigureDebug::applyConfiguration() {
- Settings::values.use_gdbstub = ui->toogle_gdbstub->isChecked();
+ Settings::values.use_gdbstub = ui->toggle_gdbstub->isChecked();
Settings::values.gdbstub_port = ui->gdbport_spinbox->value();
Settings::Apply();
}
diff --git a/src/citra_qt/configure_debug.ui b/src/citra_qt/configure_debug.ui
index 3ba7f44da..bbbb0e3f4 100644
--- a/src/citra_qt/configure_debug.ui
+++ b/src/citra_qt/configure_debug.ui
@@ -25,7 +25,7 @@
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
- <widget class="QCheckBox" name="toogle_gdbstub">
+ <widget class="QCheckBox" name="toggle_gdbstub">
<property name="text">
<string>Enable GDB Stub</string>
</property>
@@ -83,7 +83,7 @@
<resources/>
<connections>
<connection>
- <sender>toogle_gdbstub</sender>
+ <sender>toggle_gdbstub</sender>
<signal>toggled(bool)</signal>
<receiver>gdbport_spinbox</receiver>
<slot>setEnabled(bool)</slot>
diff --git a/src/citra_qt/configure_dialog.cpp b/src/citra_qt/configure_dialog.cpp
index 459fac4bb..7da8ad067 100644
--- a/src/citra_qt/configure_dialog.cpp
+++ b/src/citra_qt/configure_dialog.cpp
@@ -31,6 +31,7 @@ void ConfigureDialog::applyConfiguration() {
ui->generalTab->applyConfiguration();
ui->systemTab->applyConfiguration();
ui->inputTab->applyConfiguration();
+ ui->graphicsTab->applyConfiguration();
ui->audioTab->applyConfiguration();
ui->debugTab->applyConfiguration();
}
diff --git a/src/citra_qt/configure_general.cpp b/src/citra_qt/configure_general.cpp
index 62648e665..95aab9f2e 100644
--- a/src/citra_qt/configure_general.cpp
+++ b/src/citra_qt/configure_general.cpp
@@ -20,20 +20,14 @@ ConfigureGeneral::~ConfigureGeneral() {
}
void ConfigureGeneral::setConfiguration() {
- ui->toogle_deepscan->setChecked(UISettings::values.gamedir_deepscan);
- ui->toogle_check_exit->setChecked(UISettings::values.confirm_before_closing);
+ ui->toggle_deepscan->setChecked(UISettings::values.gamedir_deepscan);
+ ui->toggle_check_exit->setChecked(UISettings::values.confirm_before_closing);
ui->region_combobox->setCurrentIndex(Settings::values.region_value);
- ui->toogle_hw_renderer->setChecked(Settings::values.use_hw_renderer);
- ui->toogle_shader_jit->setChecked(Settings::values.use_shader_jit);
- ui->toogle_scaled_resolution->setChecked(Settings::values.use_scaled_resolution);
}
void ConfigureGeneral::applyConfiguration() {
- UISettings::values.gamedir_deepscan = ui->toogle_deepscan->isChecked();
- UISettings::values.confirm_before_closing = ui->toogle_check_exit->isChecked();
+ UISettings::values.gamedir_deepscan = ui->toggle_deepscan->isChecked();
+ UISettings::values.confirm_before_closing = ui->toggle_check_exit->isChecked();
Settings::values.region_value = ui->region_combobox->currentIndex();
- Settings::values.use_hw_renderer = ui->toogle_hw_renderer->isChecked();
- Settings::values.use_shader_jit = ui->toogle_shader_jit->isChecked();
- Settings::values.use_scaled_resolution = ui->toogle_scaled_resolution->isChecked();
Settings::Apply();
}
diff --git a/src/citra_qt/configure_general.ui b/src/citra_qt/configure_general.ui
index 5eb309793..343f804c0 100644
--- a/src/citra_qt/configure_general.ui
+++ b/src/citra_qt/configure_general.ui
@@ -25,14 +25,14 @@
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
- <widget class="QCheckBox" name="toogle_deepscan">
+ <widget class="QCheckBox" name="toggle_deepscan">
<property name="text">
<string>Recursive scan for game folder</string>
</property>
</widget>
</item>
<item>
- <widget class="QCheckBox" name="toogle_check_exit">
+ <widget class="QCheckBox" name="toggle_check_exit">
<property name="text">
<string>Confirm exit while emulation is running</string>
</property>
@@ -107,40 +107,6 @@
</widget>
</item>
<item>
- <widget class="QGroupBox" name="groupBox_2">
- <property name="title">
- <string>Performance</string>
- </property>
- <layout class="QHBoxLayout" name="horizontalLayout_2">
- <item>
- <layout class="QVBoxLayout" name="verticalLayout_3">
- <item>
- <widget class="QCheckBox" name="toogle_hw_renderer">
- <property name="text">
- <string>Enable hardware renderer</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QCheckBox" name="toogle_shader_jit">
- <property name="text">
- <string>Enable shader JIT</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QCheckBox" name="toogle_scaled_resolution">
- <property name="text">
- <string>Enable scaled resolution</string>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- </layout>
- </widget>
- </item>
- <item>
<widget class="QGroupBox" name="groupBox_3">
<property name="title">
<string>Hotkeys</string>
diff --git a/src/citra_qt/configure_graphics.cpp b/src/citra_qt/configure_graphics.cpp
new file mode 100644
index 000000000..5a8101795
--- /dev/null
+++ b/src/citra_qt/configure_graphics.cpp
@@ -0,0 +1,37 @@
+// Copyright 2016 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "citra_qt/configure_graphics.h"
+#include "ui_configure_graphics.h"
+
+#include "core/settings.h"
+#include "core/system.h"
+
+ConfigureGraphics::ConfigureGraphics(QWidget *parent) :
+ QWidget(parent),
+ ui(new Ui::ConfigureGraphics)
+{
+ ui->setupUi(this);
+ this->setConfiguration();
+
+ ui->toggle_vsync->setEnabled(!System::IsPoweredOn());
+}
+
+ConfigureGraphics::~ConfigureGraphics() {
+}
+
+void ConfigureGraphics::setConfiguration() {
+ ui->toggle_hw_renderer->setChecked(Settings::values.use_hw_renderer);
+ ui->toggle_shader_jit->setChecked(Settings::values.use_shader_jit);
+ ui->toggle_scaled_resolution->setChecked(Settings::values.use_scaled_resolution);
+ ui->toggle_vsync->setChecked(Settings::values.use_vsync);
+}
+
+void ConfigureGraphics::applyConfiguration() {
+ Settings::values.use_hw_renderer = ui->toggle_hw_renderer->isChecked();
+ Settings::values.use_shader_jit = ui->toggle_shader_jit->isChecked();
+ Settings::values.use_scaled_resolution = ui->toggle_scaled_resolution->isChecked();
+ Settings::values.use_vsync = ui->toggle_vsync->isChecked();
+ Settings::Apply();
+}
diff --git a/src/citra_qt/configure_graphics.h b/src/citra_qt/configure_graphics.h
new file mode 100644
index 000000000..dfb0c0461
--- /dev/null
+++ b/src/citra_qt/configure_graphics.h
@@ -0,0 +1,29 @@
+// Copyright 2016 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include <memory>
+#include <QWidget>
+
+namespace Ui {
+class ConfigureGraphics;
+}
+
+class ConfigureGraphics : public QWidget
+{
+ Q_OBJECT
+
+public:
+ explicit ConfigureGraphics(QWidget *parent = nullptr);
+ ~ConfigureGraphics();
+
+ void applyConfiguration();
+
+private:
+ void setConfiguration();
+
+private:
+ std::unique_ptr<Ui::ConfigureGraphics> ui;
+};
diff --git a/src/citra_qt/configure_graphics.ui b/src/citra_qt/configure_graphics.ui
new file mode 100644
index 000000000..da6e19ce1
--- /dev/null
+++ b/src/citra_qt/configure_graphics.ui
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ConfigureGraphics</class>
+ <widget class="QWidget" name="ConfigureGraphics">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <item>
+ <widget class="QGroupBox" name="groupBox">
+ <property name="title">
+ <string>Graphics</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QCheckBox" name="toggle_hw_renderer">
+ <property name="text">
+ <string>Enable hardware renderer</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="toggle_shader_jit">
+ <property name="text">
+ <string>Enable shader JIT</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="toggle_scaled_resolution">
+ <property name="text">
+ <string>Enable scaled resolution</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="toggle_vsync">
+ <property name="text">
+ <string>Enable V-Sync</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>toggle_gdbstub</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>gdbport_spinbox</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>84</x>
+ <y>157</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>342</x>
+ <y>158</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/src/citra_qt/main.cpp b/src/citra_qt/main.cpp
index 68a936087..9fd4482f6 100644
--- a/src/citra_qt/main.cpp
+++ b/src/citra_qt/main.cpp
@@ -243,7 +243,9 @@ bool GMainWindow::InitializeSystem() {
if (emu_thread != nullptr)
ShutdownGame();
+ render_window->InitRenderTarget();
render_window->MakeCurrent();
+
if (!gladLoadGL()) {
QMessageBox::critical(this, tr("Error while starting Citra!"),
tr("Failed to initialize the video core!\n\n"