early-access version 1703

This commit is contained in:
pineappleEA 2021-05-21 09:31:35 +02:00
parent 0ac1837ecc
commit 228906ab0b
8 changed files with 63 additions and 22 deletions

View File

@ -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

View File

@ -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);

View File

@ -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() {

View File

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

View File

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

View File

@ -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;

View File

@ -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();
controller_dialog->refreshConfiguration();
} }
configure_dialog.ApplyConfiguration();
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,23 +2626,27 @@ 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) {
dialog.ApplyConfiguration();
const auto reload = UISettings::values.is_game_list_reload_pending.exchange(false); if (result != QDialog::Accepted && !UISettings::values.configuration_applied) {
if (reload) {
game_list->PopulateAsync(UISettings::values.game_dirs);
}
// Do not cause the global config to write local settings into the config file
const bool is_powered_on = system.IsPoweredOn();
Settings::RestoreGlobalState(is_powered_on);
if (!is_powered_on) {
config->Save();
}
} else {
Settings::RestoreGlobalState(system.IsPoweredOn()); Settings::RestoreGlobalState(system.IsPoweredOn());
return;
} else if (result == QDialog::Accepted) {
dialog.ApplyConfiguration();
}
const auto reload = UISettings::values.is_game_list_reload_pending.exchange(false);
if (reload) {
game_list->PopulateAsync(UISettings::values.game_dirs);
}
// Do not cause the global config to write local settings into the config file
const bool is_powered_on = system.IsPoweredOn();
Settings::RestoreGlobalState(is_powered_on);
UISettings::values.configuration_applied = false;
if (!is_powered_on) {
config->Save();
} }
} }

View File

@ -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;