early-access version 2133

This commit is contained in:
pineappleEA 2021-10-15 19:18:28 +02:00
parent 8018c187dc
commit 4141a45db7
7 changed files with 97 additions and 2 deletions

View File

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

View File

@ -524,7 +524,9 @@ private:
Disconnect = 11,
AllocateBuffers = 13,
SetPreallocatedBuffer = 14
SetPreallocatedBuffer = 14,
GetBufferHistory = 17
};
void TransactParcel(Kernel::HLERequestContext& ctx) {
@ -641,6 +643,14 @@ private:
ctx.WriteBuffer(response.Serialize());
break;
}
case TransactionId::GetBufferHistory: {
LOG_WARNING(Service_VI, "(STUBBED) called, transaction=GetBufferHistory");
[[maybe_unused]] const auto buffer = ctx.ReadBuffer();
IGBPEmptyResponseParcel response{};
ctx.WriteBuffer(response.Serialize());
break;
}
default:
ASSERT_MSG(false, "Unimplemented");
}

View File

@ -285,6 +285,11 @@ if (USE_DISCORD_PRESENCE)
target_compile_definitions(yuzu PRIVATE -DUSE_DISCORD_PRESENCE)
endif()
if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
find_package(Qt5 ${QT_VERSION} REQUIRED COMPONENTS DBus ${QT_PREFIX_HINT} ${YUZU_QT_NO_CMAKE_SYSTEM_PATH} REQUIRED)
target_link_libraries(yuzu PRIVATE Qt5::DBus)
endif()
if (YUZU_USE_QT_WEB_ENGINE)
target_link_libraries(yuzu PRIVATE Qt5::WebEngineCore Qt5::WebEngineWidgets)
target_compile_definitions(yuzu PRIVATE -DYUZU_USE_QT_WEB_ENGINE)

View File

@ -48,6 +48,12 @@ static FileSys::VirtualFile VfsDirectoryCreateFileWrapper(const FileSys::Virtual
#define QT_NO_OPENGL
#include <QClipboard>
#ifdef __linux__
#include <QDBusConnection>
#include <QDBusError>
#include <QDBusInterface>
#include <QDBusReply>
#endif
#include <QDesktopServices>
#include <QDesktopWidget>
#include <QDialogButtonBox>
@ -1220,12 +1226,72 @@ void GMainWindow::OnDisplayTitleBars(bool show) {
void GMainWindow::PreventOSSleep() {
#ifdef _WIN32
SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED);
#elif defined(__linux__)
QDBusConnection bus = QDBusConnection::sessionBus();
if (bus.isConnected()) {
// Specs: https://specifications.freedesktop.org/idle-inhibit-spec/0.1/re01.html
const QString service = QStringLiteral("org.freedesktop.ScreenSaver");
const QString path = QStringLiteral("/org/freedesktop/ScreenSaver");
QDBusInterface screen_saver_interface(service, path, service, bus, this);
if (screen_saver_interface.isValid()) {
const QString method = QStringLiteral("Inhibit");
const QString application_name = QStringLiteral("org.yuzu-emu.Yuzu");
const QString reason_for_inhibit = QStringLiteral("Playing a game");
QDBusReply<uint32_t> reply =
screen_saver_interface.call(method, application_name, reason_for_inhibit);
if (reply.isValid()) {
screensaver_dbus_cookie = reply.value();
screensaver_inhibited = true;
LOG_INFO(Frontend, "Screen saver disabled successfully (cookie: {})",
screensaver_dbus_cookie);
} else {
QDBusError error = reply.error();
LOG_ERROR(Frontend, "Could not disable screen saver: {} {}",
error.message().toStdString(), error.name().toStdString());
}
}
}
#endif
}
void GMainWindow::AllowOSSleep() {
#ifdef _WIN32
SetThreadExecutionState(ES_CONTINUOUS);
#elif defined(__linux__)
if (!screensaver_inhibited) {
LOG_WARNING(Frontend, "Screen saver already enabled.");
return;
}
QDBusConnection bus = QDBusConnection::sessionBus();
if (bus.isConnected()) {
// Specs: https://specifications.freedesktop.org/idle-inhibit-spec/0.1/re01.html
const QString service = QStringLiteral("org.freedesktop.ScreenSaver");
const QString path = QStringLiteral("/org/freedesktop/ScreenSaver");
QDBusInterface screen_saver_interface(service, path, service, bus, this);
if (screen_saver_interface.isValid()) {
const QString method = QStringLiteral("UnInhibit");
QDBusReply<void> reply = screen_saver_interface.call(method, screensaver_dbus_cookie);
if (reply.isValid()) {
LOG_INFO(Frontend, "Screen saver enabled successfully (cookie: {})",
screensaver_dbus_cookie);
screensaver_dbus_cookie = 0;
screensaver_inhibited = false;
} else {
QDBusError error = reply.error();
LOG_ERROR(Frontend, "Could not disable screen saver: {} {}",
error.message().toStdString(), error.name().toStdString());
}
}
}
#endif
}

View File

@ -342,6 +342,11 @@ private:
bool auto_paused = false;
QTimer mouse_hide_timer;
#ifdef __linux__
bool screensaver_inhibited = false;
uint32_t screensaver_dbus_cookie;
#endif
// FS
std::shared_ptr<FileSys::VfsFilesystem> vfs;
std::unique_ptr<FileSys::ManualContentProvider> provider;

View File

@ -518,6 +518,9 @@ void Config::ReadValues() {
ReadSetting("WebService", Settings::values.web_api_url);
ReadSetting("WebService", Settings::values.yuzu_username);
ReadSetting("WebService", Settings::values.yuzu_token);
// Network
ReadSetting("Network", Settings::values.network_interface);
}
void Config::Reload() {

View File

@ -428,6 +428,12 @@ web_api_url = https://api.yuzu-emu.org
yuzu_username =
yuzu_token =
[Network]
# Name of the network interface device to use with yuzu LAN play.
# e.g. On *nix: 'enp7s0', 'wlp6s0u1u3u3', 'lo'
# e.g. On Windows: 'Ethernet', 'Wi-Fi'
network_interface =
[AddOns]
# Used to disable add-ons
# List of title IDs of games that will have add-ons disabled (separated by '|'):