early-access version 1703
This commit is contained in:
parent
0ac1837ecc
commit
228906ab0b
@ -1,7 +1,7 @@
|
|||||||
yuzu emulator early access
|
yuzu emulator early access
|
||||||
=============
|
=============
|
||||||
|
|
||||||
This is the source code for early-access 1702.
|
This is the source code for early-access 1703.
|
||||||
|
|
||||||
## Legal Notice
|
## Legal Notice
|
||||||
|
|
||||||
|
@ -241,7 +241,7 @@ Device::Device() {
|
|||||||
has_variable_aoffi = TestVariableAoffi();
|
has_variable_aoffi = TestVariableAoffi();
|
||||||
has_component_indexing_bug = is_amd;
|
has_component_indexing_bug = is_amd;
|
||||||
has_precise_bug = TestPreciseBug();
|
has_precise_bug = TestPreciseBug();
|
||||||
has_broken_texture_view_formats = is_amd || is_intel;
|
has_broken_texture_view_formats = is_amd || (!is_linux && is_intel);
|
||||||
has_nv_viewport_array2 = GLAD_GL_NV_viewport_array2;
|
has_nv_viewport_array2 = GLAD_GL_NV_viewport_array2;
|
||||||
has_vertex_buffer_unified_memory = GLAD_GL_NV_vertex_buffer_unified_memory;
|
has_vertex_buffer_unified_memory = GLAD_GL_NV_vertex_buffer_unified_memory;
|
||||||
has_debugging_tool_attached = IsDebugToolAttached(extensions);
|
has_debugging_tool_attached = IsDebugToolAttached(extensions);
|
||||||
|
@ -2,8 +2,11 @@
|
|||||||
// Licensed under GPLv2 or any later version
|
// Licensed under GPLv2 or any later version
|
||||||
// Refer to the license.txt file included.
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include <QAbstractButton>
|
||||||
|
#include <QDialogButtonBox>
|
||||||
#include <QHash>
|
#include <QHash>
|
||||||
#include <QListWidgetItem>
|
#include <QListWidgetItem>
|
||||||
|
#include <QPushButton>
|
||||||
#include <QSignalBlocker>
|
#include <QSignalBlocker>
|
||||||
#include "common/settings.h"
|
#include "common/settings.h"
|
||||||
#include "core/core.h"
|
#include "core/core.h"
|
||||||
@ -31,6 +34,12 @@ ConfigureDialog::ConfigureDialog(QWidget* parent, HotkeyRegistry& registry,
|
|||||||
connect(ui->selectorList, &QListWidget::itemSelectionChanged, this,
|
connect(ui->selectorList, &QListWidget::itemSelectionChanged, this,
|
||||||
&ConfigureDialog::UpdateVisibleTabs);
|
&ConfigureDialog::UpdateVisibleTabs);
|
||||||
|
|
||||||
|
if (Core::System::GetInstance().IsPoweredOn()) {
|
||||||
|
QPushButton* apply_button = ui->buttonBox->addButton(QDialogButtonBox::Apply);
|
||||||
|
connect(apply_button, &QAbstractButton::clicked, this,
|
||||||
|
&ConfigureDialog::HandleApplyButtonClicked);
|
||||||
|
}
|
||||||
|
|
||||||
adjustSize();
|
adjustSize();
|
||||||
ui->selectorList->setCurrentRow(0);
|
ui->selectorList->setCurrentRow(0);
|
||||||
}
|
}
|
||||||
@ -80,6 +89,11 @@ void ConfigureDialog::RetranslateUI() {
|
|||||||
ui->tabWidget->setCurrentIndex(old_index);
|
ui->tabWidget->setCurrentIndex(old_index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ConfigureDialog::HandleApplyButtonClicked() {
|
||||||
|
UISettings::values.configuration_applied = true;
|
||||||
|
ApplyConfiguration();
|
||||||
|
}
|
||||||
|
|
||||||
Q_DECLARE_METATYPE(QList<QWidget*>);
|
Q_DECLARE_METATYPE(QList<QWidget*>);
|
||||||
|
|
||||||
void ConfigureDialog::PopulateSelectionList() {
|
void ConfigureDialog::PopulateSelectionList() {
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
#include <QAbstractButton>
|
||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
|
|
||||||
class HotkeyRegistry;
|
class HotkeyRegistry;
|
||||||
@ -35,9 +36,10 @@ signals:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
void changeEvent(QEvent* event) override;
|
void changeEvent(QEvent* event) override;
|
||||||
|
|
||||||
void RetranslateUI();
|
void RetranslateUI();
|
||||||
|
|
||||||
|
void HandleApplyButtonClicked();
|
||||||
|
|
||||||
void SetConfiguration();
|
void SetConfiguration();
|
||||||
void UpdateVisibleTabs();
|
void UpdateVisibleTabs();
|
||||||
void PopulateSelectionList();
|
void PopulateSelectionList();
|
||||||
|
@ -6,9 +6,12 @@
|
|||||||
#include <memory>
|
#include <memory>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
|
#include <QAbstractButton>
|
||||||
#include <QCheckBox>
|
#include <QCheckBox>
|
||||||
|
#include <QDialogButtonBox>
|
||||||
#include <QHeaderView>
|
#include <QHeaderView>
|
||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
|
#include <QPushButton>
|
||||||
#include <QStandardItemModel>
|
#include <QStandardItemModel>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
@ -42,6 +45,12 @@ ConfigurePerGame::ConfigurePerGame(QWidget* parent, u64 title_id)
|
|||||||
scene = new QGraphicsScene;
|
scene = new QGraphicsScene;
|
||||||
ui->icon_view->setScene(scene);
|
ui->icon_view->setScene(scene);
|
||||||
|
|
||||||
|
if (Core::System::GetInstance().IsPoweredOn()) {
|
||||||
|
QPushButton* apply_button = ui->buttonBox->addButton(QDialogButtonBox::Apply);
|
||||||
|
connect(apply_button, &QAbstractButton::clicked, this,
|
||||||
|
&ConfigurePerGame::HandleApplyButtonClicked);
|
||||||
|
}
|
||||||
|
|
||||||
LoadConfiguration();
|
LoadConfiguration();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -74,6 +83,11 @@ void ConfigurePerGame::RetranslateUI() {
|
|||||||
ui->retranslateUi(this);
|
ui->retranslateUi(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ConfigurePerGame::HandleApplyButtonClicked() {
|
||||||
|
UISettings::values.configuration_applied = true;
|
||||||
|
ApplyConfiguration();
|
||||||
|
}
|
||||||
|
|
||||||
void ConfigurePerGame::LoadFromFile(FileSys::VirtualFile file) {
|
void ConfigurePerGame::LoadFromFile(FileSys::VirtualFile file) {
|
||||||
this->file = std::move(file);
|
this->file = std::move(file);
|
||||||
LoadConfiguration();
|
LoadConfiguration();
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
#include <memory>
|
#include <memory>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
#include <QAbstractButton>
|
||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
#include <QList>
|
#include <QList>
|
||||||
|
|
||||||
@ -39,6 +40,8 @@ private:
|
|||||||
void changeEvent(QEvent* event) override;
|
void changeEvent(QEvent* event) override;
|
||||||
void RetranslateUI();
|
void RetranslateUI();
|
||||||
|
|
||||||
|
void HandleApplyButtonClicked();
|
||||||
|
|
||||||
void LoadConfiguration();
|
void LoadConfiguration();
|
||||||
|
|
||||||
std::unique_ptr<Ui::ConfigurePerGame> ui;
|
std::unique_ptr<Ui::ConfigurePerGame> ui;
|
||||||
|
@ -2575,12 +2575,12 @@ void GMainWindow::OnConfigure() {
|
|||||||
&GMainWindow::OnLanguageChanged);
|
&GMainWindow::OnLanguageChanged);
|
||||||
|
|
||||||
const auto result = configure_dialog.exec();
|
const auto result = configure_dialog.exec();
|
||||||
if (result != QDialog::Accepted) {
|
if (result != QDialog::Accepted && !UISettings::values.configuration_applied) {
|
||||||
return;
|
return;
|
||||||
}
|
} else if (result == QDialog::Accepted) {
|
||||||
|
|
||||||
configure_dialog.ApplyConfiguration();
|
configure_dialog.ApplyConfiguration();
|
||||||
controller_dialog->refreshConfiguration();
|
controller_dialog->refreshConfiguration();
|
||||||
|
}
|
||||||
InitializeHotkeys();
|
InitializeHotkeys();
|
||||||
if (UISettings::values.theme != old_theme) {
|
if (UISettings::values.theme != old_theme) {
|
||||||
UpdateUITheme();
|
UpdateUITheme();
|
||||||
@ -2595,6 +2595,8 @@ void GMainWindow::OnConfigure() {
|
|||||||
game_list->PopulateAsync(UISettings::values.game_dirs);
|
game_list->PopulateAsync(UISettings::values.game_dirs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UISettings::values.configuration_applied = false;
|
||||||
|
|
||||||
config->Save();
|
config->Save();
|
||||||
|
|
||||||
if ((UISettings::values.hide_mouse || Settings::values.mouse_panning) && emulation_running) {
|
if ((UISettings::values.hide_mouse || Settings::values.mouse_panning) && emulation_running) {
|
||||||
@ -2624,8 +2626,13 @@ void GMainWindow::OpenPerGameConfiguration(u64 title_id, const std::string& file
|
|||||||
ConfigurePerGame dialog(this, title_id);
|
ConfigurePerGame dialog(this, title_id);
|
||||||
dialog.LoadFromFile(v_file);
|
dialog.LoadFromFile(v_file);
|
||||||
const auto result = dialog.exec();
|
const auto result = dialog.exec();
|
||||||
if (result == QDialog::Accepted) {
|
|
||||||
|
if (result != QDialog::Accepted && !UISettings::values.configuration_applied) {
|
||||||
|
Settings::RestoreGlobalState(system.IsPoweredOn());
|
||||||
|
return;
|
||||||
|
} else if (result == QDialog::Accepted) {
|
||||||
dialog.ApplyConfiguration();
|
dialog.ApplyConfiguration();
|
||||||
|
}
|
||||||
|
|
||||||
const auto reload = UISettings::values.is_game_list_reload_pending.exchange(false);
|
const auto reload = UISettings::values.is_game_list_reload_pending.exchange(false);
|
||||||
if (reload) {
|
if (reload) {
|
||||||
@ -2636,12 +2643,11 @@ void GMainWindow::OpenPerGameConfiguration(u64 title_id, const std::string& file
|
|||||||
const bool is_powered_on = system.IsPoweredOn();
|
const bool is_powered_on = system.IsPoweredOn();
|
||||||
Settings::RestoreGlobalState(is_powered_on);
|
Settings::RestoreGlobalState(is_powered_on);
|
||||||
|
|
||||||
|
UISettings::values.configuration_applied = false;
|
||||||
|
|
||||||
if (!is_powered_on) {
|
if (!is_powered_on) {
|
||||||
config->Save();
|
config->Save();
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
Settings::RestoreGlobalState(system.IsPoweredOn());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GMainWindow::OnLoadAmiibo() {
|
void GMainWindow::OnLoadAmiibo() {
|
||||||
|
@ -95,6 +95,8 @@ struct Values {
|
|||||||
uint8_t row_2_text_id;
|
uint8_t row_2_text_id;
|
||||||
std::atomic_bool is_game_list_reload_pending{false};
|
std::atomic_bool is_game_list_reload_pending{false};
|
||||||
bool cache_game_list;
|
bool cache_game_list;
|
||||||
|
|
||||||
|
bool configuration_applied;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern Values values;
|
extern Values values;
|
||||||
|
Loading…
Reference in New Issue
Block a user