summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnuskuss2022-09-11 01:36:49 +0200
committerAnuskuss2022-09-11 01:36:49 +0200
commit2233bd4934677add244b0c8a0f1ceb5fc886a199 (patch)
treeeda0cbe65779cea1508fe47ed3fb187c813d9a21
parent67956e6b69dc08d9c5041a32427ada56d2efcad2 (diff)
downloadaur-2233bd4934677add244b0c8a0f1ceb5fc886a199.tar.gz
Fixed DSUController patch and added patch which fixes dark themes
-rw-r--r--.SRCINFO6
-rw-r--r--PKGBUILD14
-rw-r--r--dark.diff25
-rw-r--r--dsu.diff61
4 files changed, 97 insertions, 9 deletions
diff --git a/.SRCINFO b/.SRCINFO
index c02649c800f9..808daba64ed9 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = cemu
pkgdesc = Software to emulate Wii U games and applications on PC (with cutting edge Linux patches)
pkgver = 2.0.116
- pkgrel = 1
+ pkgrel = 2
url = https://cemu.info
install = cemu.install
arch = x86_64
@@ -34,6 +34,7 @@ pkgbase = cemu
source = xdg.diff
source = overlay.diff
source = dsu.diff
+ source = dark.diff
sha256sums = SKIP
sha256sums = 9f14c788aee15b777051e48f868c5d4d959bd679fc5050e3d2a29de80d8fd32e
sha256sums = 262faed507149c89aab7572fd2c2a968f843ca2900043e30a9c339735ed08a8f
@@ -44,6 +45,7 @@ pkgbase = cemu
sha256sums = SKIP
sha256sums = 4061e28533d391ebc4745cdc47470438b20c64dd11f7308e5acf35d0fbc54326
sha256sums = f25d13fe76cc6a0b475f0131211a951288160ddae92cd7a815f5aea61d7cfc0f
- sha256sums = 19a8fbc50dd1fe5beab3c3fc08ea1a0b767fa388b80c9d5d1a98b565855603a0
+ sha256sums = 9af0cb88f07acad70aa5b7133ccbbaddacca542edea5817e622b4571cc26046d
+ sha256sums = 15243ffa555559ade19cdb99d42dc10a6b4d1402c9cee045a623dd4b30827a1d
pkgname = cemu
diff --git a/PKGBUILD b/PKGBUILD
index 2b1bf1db87a2..dd60e792a44e 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,7 +1,7 @@
# Maintainer: Anuskuss <anuskuss@googlemail.com>
pkgname=cemu
pkgver=2.0.116
-pkgrel=1
+pkgrel=2
pkgdesc='Software to emulate Wii U games and applications on PC (with cutting edge Linux patches)'
arch=(x86_64)
url=https://cemu.info
@@ -41,7 +41,8 @@ source=(
# patches
xdg.diff # 963f9b38349c5d03b26ab2a50ead2ee4e743ca41
overlay.diff # edeb14d4c68ee8bf500b990b13079177e01c25f1
- dsu.diff # b0e523a44ee7d69e6d2453325dcc669e2bcb719d
+ dsu.diff # dbe8c94dd427585fc2f0c49947fa2d8051d8f218 + 56b140f159f3322cce00bb87f34274d1f62c314b
+ dark.diff # 557d25c0525fd0dd662f41529c60fb9d722e5a0e
)
sha256sums=(
SKIP
@@ -54,7 +55,8 @@ sha256sums=(
SKIP
4061e28533d391ebc4745cdc47470438b20c64dd11f7308e5acf35d0fbc54326
f25d13fe76cc6a0b475f0131211a951288160ddae92cd7a815f5aea61d7cfc0f
- 19a8fbc50dd1fe5beab3c3fc08ea1a0b767fa388b80c9d5d1a98b565855603a0
+ 9af0cb88f07acad70aa5b7133ccbbaddacca542edea5817e622b4571cc26046d
+ 15243ffa555559ade19cdb99d42dc10a6b4d1402c9cee045a623dd4b30827a1d
)
pkgver() {
@@ -104,7 +106,11 @@ prepare() {
git apply "$srcdir/overlay.diff"
# experimental: dsu controller (https://github.com/cemu-project/Cemu/pull/234)
+ rm -f src/input/api/DSU/ReceiveTimeoutSocketOption.h
git apply "$srcdir/dsu.diff"
+
+ # experimental: dark mode fix (https://github.com/cemu-project/Cemu/pull/241)
+ git apply "$srcdir/dark.diff"
}
build() {
@@ -145,6 +151,6 @@ package() {
# install -Dm644 bin/shaderCache/info.txt "$pkgdir/opt/cemu/shaderCache/info.txt"
install -Dm644 src/resource/logo_icon.png "$pkgdir/usr/share/icons/hicolor/128x128/apps/cemu.png"
- sed -i "s|^Icon=info.cemu.Cemu$|Icon=cemu|;s|^Exec=cemu$|Exec=env GDK_BACKEND=x11 /usr/bin/cemu|" dist/linux/info.cemu.Cemu.desktop
+ sed -i -e '/^Icon=/cIcon=cemu' -e '/^Exec=/cExec=env GDK_BACKEND=x11 cemu' dist/linux/info.cemu.Cemu.desktop
install -Dm644 dist/linux/info.cemu.Cemu.desktop "$pkgdir/usr/share/applications/cemu.desktop"
}
diff --git a/dark.diff b/dark.diff
new file mode 100644
index 000000000000..ac6baba6b11d
--- /dev/null
+++ b/dark.diff
@@ -0,0 +1,25 @@
+--- a/src/gui/components/wxGameList.cpp
++++ b/src/gui/components/wxGameList.cpp
+@@ -274,11 +274,20 @@ void wxGameList::UpdateItemColors(sint32 startIndex)
+ {
+ const auto titleId = (uint64)GetItemData(i);
+ if (GetConfig().IsGameListFavorite(titleId))//entry->favorite)
++ {
+ SetItemBackgroundColour(i, kFavoriteColor);
++ SetItemTextColour(i, 0x000000UL);
++ }
+ else if ((i&1) != 0)
+- SetItemBackgroundColour(i, kSecondColor);
++ {
++ SetItemBackgroundColour(i, wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
++ SetItemTextColour(i, wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT));
++ }
+ else
+- SetItemBackgroundColour(i, 0xFFFFFFUL);
++ {
++ SetItemBackgroundColour(i, wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWFRAME));
++ SetItemTextColour(i, wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT));
++ }
+ }
+ }
+
diff --git a/dsu.diff b/dsu.diff
index 403d8b4a1da8..61e3e639a1ff 100644
--- a/dsu.diff
+++ b/dsu.diff
@@ -4,16 +4,28 @@
api/DSU/DSUControllerProvider.h
api/DSU/DSUMessages.h
api/DSU/DSUMessages.cpp
-+ api/DSU/TimeoutSocketOption.h
++ api/DSU/ReceiveTimeoutSocketOption.h
)
# Keyboard controller
+--- a/src/input/api/DSU/DSUController.cpp
++++ b/src/input/api/DSU/DSUController.cpp
+@@ -164,5 +164,8 @@ ControllerState DSUController::raw_state()
+ result.rotation.y = (float)state.data.ry / std::numeric_limits<uint8>::max();
+ result.rotation.y = (result.rotation.y * 2.0f) - 1.0f;
+
+- return result;
++ result.trigger.x = (float)state.data.l2 / std::numeric_limits<uint8>::max();
++ result.trigger.y = (float)state.data.r2 / std::numeric_limits<uint8>::max();
++
++ return result;
+ }
--- a/src/input/api/DSU/DSUControllerProvider.cpp
+++ b/src/input/api/DSU/DSUControllerProvider.cpp
@@ -1,5 +1,6 @@
#include "input/api/DSU/DSUControllerProvider.h"
#include "input/api/DSU/DSUController.h"
-+#include "input/api/DSU/TimeoutSocketOption.h"
++#include "input/api/DSU/ReceiveTimeoutSocketOption.h"
DSUControllerProvider::DSUControllerProvider()
: base_type(), m_uid(rand()), m_socket(m_io_service)
@@ -24,7 +36,50 @@
+
// set timeout for our threads to give a chance to exit
- m_socket.set_option(boost::asio::detail::socket_option::integer<SOL_SOCKET, SO_RCVTIMEO>{200});
-+ m_socket.set_option(TimeoutSocketOption{200});
++ m_socket.set_option(ReceiveTimeoutSocketOption{200});
// reset data
m_state = {};
+--- /dev/null
++++ b/src/input/api/DSU/ReceiveTimeoutSocketOption.h
+@@ -0,0 +1,39 @@
++#pragma once
++
++#if BOOST_OS_WINDOWS
++#include <boost/asio/detail/socket_option.hpp>
++#include <winsock2.h> // For SOL_SOCKET, SO_RCVTIMEO
++using ReceiveTimeoutSocketOption = boost::asio::detail::socket_option::integer<SOL_SOCKET, SO_RCVTIMEO>;
++#elif BOOST_OS_LINUX || BOOST_OS_MACOS
++
++class ReceiveTimeoutSocketOption {
++ timeval m_data; // POSIX only allows timeeval to be parameter to option SO_RCVTIMEO
++public:
++ constexpr explicit ReceiveTimeoutSocketOption(int time_ms)
++ : m_data(timeval{.tv_usec = time_ms * 1000}){
++ }
++ ReceiveTimeoutSocketOption& operator=(int time_ms){
++ m_data = timeval{.tv_usec = time_ms * 1000};
++ return *this;
++ }
++ template <typename Protocol>
++ int level(const Protocol&) const {
++ return SOL_SOCKET;
++ }
++
++ template <typename Protocol>
++ int name(const Protocol&) const {
++ return SO_RCVTIMEO;
++ }
++
++ template <typename Protocol>
++ const timeval* data(Protocol&) const {
++ return &m_data;
++ }
++
++ template <typename Protocol>
++ std::size_t size(const Protocol&) const {
++ return sizeof(timeval);
++ }
++};
++#endif
+\ No newline at end of file