early-access version 2773

This commit is contained in:
pineappleEA 2022-06-11 22:06:59 +02:00
parent 9164561603
commit 065059f75c
5 changed files with 62 additions and 5 deletions

View file

@ -1,7 +1,7 @@
yuzu emulator early access yuzu emulator early access
============= =============
This is the source code for early-access 2770. This is the source code for early-access 2773.
## Legal Notice ## Legal Notice

View file

@ -244,6 +244,7 @@ elseif(WIN32)
target_link_libraries(yuzu PRIVATE Qt5::WinMain) target_link_libraries(yuzu PRIVATE Qt5::WinMain)
endif() endif()
if(MSVC) if(MSVC)
target_link_libraries(yuzu PRIVATE version.lib)
set_target_properties(yuzu PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS") set_target_properties(yuzu PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS")
elseif(MINGW) elseif(MINGW)
set_target_properties(yuzu PROPERTIES LINK_FLAGS_RELEASE "-Wl,--subsystem,windows") set_target_properties(yuzu PROPERTIES LINK_FLAGS_RELEASE "-Wl,--subsystem,windows")

View file

@ -870,7 +870,7 @@ GameListPlaceholder::GameListPlaceholder(GMainWindow* parent) : QWidget{parent}
layout->setAlignment(Qt::AlignCenter); layout->setAlignment(Qt::AlignCenter);
image->setPixmap(QIcon::fromTheme(QStringLiteral("plus_folder")).pixmap(200)); image->setPixmap(QIcon::fromTheme(QStringLiteral("plus_folder")).pixmap(200));
text->setText(tr("Double-click to add a new folder to the game list")); RetranslateUI();
QFont font = text->font(); QFont font = text->font();
font.setPointSize(20); font.setPointSize(20);
text->setFont(font); text->setFont(font);
@ -891,3 +891,15 @@ void GameListPlaceholder::onUpdateThemedIcons() {
void GameListPlaceholder::mouseDoubleClickEvent(QMouseEvent* event) { void GameListPlaceholder::mouseDoubleClickEvent(QMouseEvent* event) {
emit GameListPlaceholder::AddDirectory(); emit GameListPlaceholder::AddDirectory();
} }
void GameListPlaceholder::changeEvent(QEvent* event) {
if (event->type() == QEvent::LanguageChange) {
RetranslateUI();
}
QWidget::changeEvent(event);
}
void GameListPlaceholder::RetranslateUI() {
text->setText(tr("Double-click to add a new folder to the game list"));
}

View file

@ -166,6 +166,9 @@ protected:
void mouseDoubleClickEvent(QMouseEvent* event) override; void mouseDoubleClickEvent(QMouseEvent* event) override;
private: private:
void changeEvent(QEvent* event) override;
void RetranslateUI();
QVBoxLayout* layout = nullptr; QVBoxLayout* layout = nullptr;
QLabel* image = nullptr; QLabel* image = nullptr;
QLabel* text = nullptr; QLabel* text = nullptr;

View file

@ -52,7 +52,6 @@ static FileSys::VirtualFile VfsDirectoryCreateFileWrapper(const FileSys::Virtual
#define QT_NO_OPENGL #define QT_NO_OPENGL
#include <QClipboard> #include <QClipboard>
#include <QDesktopServices> #include <QDesktopServices>
#include <QDesktopWidget>
#include <QFile> #include <QFile>
#include <QFileDialog> #include <QFileDialog>
#include <QInputDialog> #include <QInputDialog>
@ -60,6 +59,7 @@ static FileSys::VirtualFile VfsDirectoryCreateFileWrapper(const FileSys::Virtual
#include <QProgressBar> #include <QProgressBar>
#include <QProgressDialog> #include <QProgressDialog>
#include <QPushButton> #include <QPushButton>
#include <QScreen>
#include <QShortcut> #include <QShortcut>
#include <QStatusBar> #include <QStatusBar>
#include <QString> #include <QString>
@ -199,6 +199,34 @@ static void RemoveCachedContents() {
Common::FS::RemoveDirRecursively(offline_system_data); Common::FS::RemoveDirRecursively(offline_system_data);
} }
static void LogRuntimes() {
#ifdef _MSC_VER
// It is possible that the name of the dll will change.
// vcruntime140.dll is for 2015 and onwards
constexpr char runtime_dll_name[] = "vcruntime140.dll";
UINT sz = GetFileVersionInfoSizeA(runtime_dll_name, nullptr);
bool runtime_version_inspection_worked = false;
if (sz > 0) {
std::vector<u8> buf(sz);
if (GetFileVersionInfoA(runtime_dll_name, 0, sz, buf.data())) {
VS_FIXEDFILEINFO* pvi;
sz = sizeof(VS_FIXEDFILEINFO);
if (VerQueryValueA(buf.data(), "\\", reinterpret_cast<LPVOID*>(&pvi), &sz)) {
if (pvi->dwSignature == VS_FFI_SIGNATURE) {
runtime_version_inspection_worked = true;
LOG_INFO(Frontend, "MSVC Compiler: {} Runtime: {}.{}.{}.{}", _MSC_VER,
pvi->dwProductVersionMS >> 16, pvi->dwProductVersionMS & 0xFFFF,
pvi->dwProductVersionLS >> 16, pvi->dwProductVersionLS & 0xFFFF);
}
}
}
}
if (!runtime_version_inspection_worked) {
LOG_INFO(Frontend, "Unable to inspect {}", runtime_dll_name);
}
#endif
}
static QString PrettyProductName() { static QString PrettyProductName() {
#ifdef _WIN32 #ifdef _WIN32
// After Windows 10 Version 2004, Microsoft decided to switch to a different notation: 20H2 // After Windows 10 Version 2004, Microsoft decided to switch to a different notation: 20H2
@ -269,6 +297,7 @@ GMainWindow::GMainWindow()
const auto yuzu_build_version = override_build.empty() ? yuzu_build : override_build; const auto yuzu_build_version = override_build.empty() ? yuzu_build : override_build;
LOG_INFO(Frontend, "yuzu Version: {}", yuzu_build_version); LOG_INFO(Frontend, "yuzu Version: {}", yuzu_build_version);
LogRuntimes();
#ifdef ARCHITECTURE_x86_64 #ifdef ARCHITECTURE_x86_64
const auto& caps = Common::GetCPUCaps(); const auto& caps = Common::GetCPUCaps();
std::string cpu_string = caps.cpu_string; std::string cpu_string = caps.cpu_string;
@ -1044,7 +1073,7 @@ void GMainWindow::InitializeHotkeys() {
void GMainWindow::SetDefaultUIGeometry() { void GMainWindow::SetDefaultUIGeometry() {
// geometry: 53% of the window contents are in the upper screen half, 47% in the lower half // geometry: 53% of the window contents are in the upper screen half, 47% in the lower half
const QRect screenRect = QApplication::desktop()->screenGeometry(this); const QRect screenRect = QGuiApplication::primaryScreen()->geometry();
const int w = screenRect.width() * 2 / 3; const int w = screenRect.width() * 2 / 3;
const int h = screenRect.height() * 2 / 3; const int h = screenRect.height() * 2 / 3;
@ -2627,6 +2656,18 @@ void GMainWindow::ToggleFullscreen() {
} }
} }
// We're going to return the screen that the given window has the most pixels on
static QScreen* GuessCurrentScreen(QWidget* window) {
const QList<QScreen*> screens = QGuiApplication::screens();
return *std::max_element(
screens.cbegin(), screens.cend(), [window](const QScreen* left, const QScreen* right) {
const QSize left_size = left->geometry().intersected(window->geometry()).size();
const QSize right_size = right->geometry().intersected(window->geometry()).size();
return (left_size.height() * left_size.width()) <
(right_size.height() * right_size.width());
});
}
void GMainWindow::ShowFullscreen() { void GMainWindow::ShowFullscreen() {
const auto show_fullscreen = [](QWidget* window) { const auto show_fullscreen = [](QWidget* window) {
if (Settings::values.fullscreen_mode.GetValue() == Settings::FullscreenMode::Exclusive) { if (Settings::values.fullscreen_mode.GetValue() == Settings::FullscreenMode::Exclusive) {
@ -2635,7 +2676,7 @@ void GMainWindow::ShowFullscreen() {
} }
window->hide(); window->hide();
window->setWindowFlags(window->windowFlags() | Qt::FramelessWindowHint); window->setWindowFlags(window->windowFlags() | Qt::FramelessWindowHint);
const auto screen_geometry = QApplication::desktop()->screenGeometry(window); const auto screen_geometry = GuessCurrentScreen(window)->geometry();
window->setGeometry(screen_geometry.x(), screen_geometry.y(), screen_geometry.width(), window->setGeometry(screen_geometry.x(), screen_geometry.y(), screen_geometry.width(),
screen_geometry.height() + 1); screen_geometry.height() + 1);
window->raise(); window->raise();