aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjbeich <jbeich@FreeBSD.org>2017-11-06 08:44:04 +0800
committerjbeich <jbeich@FreeBSD.org>2017-11-06 08:44:04 +0800
commit8ae7087b44d76d43fde034c513f774b77ad257cf (patch)
treef22b4ab6639739820802dad3710d62e6aa952359
parent8eb7b9353be7a25941951f780ff05f9fc117e077 (diff)
downloadfreebsd-ports-gnome-8ae7087b44d76d43fde034c513f774b77ad257cf.tar.gz
freebsd-ports-gnome-8ae7087b44d76d43fde034c513f774b77ad257cf.tar.zst
freebsd-ports-gnome-8ae7087b44d76d43fde034c513f774b77ad257cf.zip
emulators/citra: update to s20171105
Changes: https://github.com/citra-emu/citra/compare/1f6da9fb...4fc04480
-rw-r--r--emulators/citra/Makefile10
-rw-r--r--emulators/citra/distinfo18
-rw-r--r--emulators/citra/files/patch-revert-pr3042119
3 files changed, 133 insertions, 14 deletions
diff --git a/emulators/citra/Makefile b/emulators/citra/Makefile
index ab1cbb38c215..9a5b31a6a953 100644
--- a/emulators/citra/Makefile
+++ b/emulators/citra/Makefile
@@ -1,7 +1,7 @@
# $FreeBSD$
PORTNAME= citra
-PORTVERSION= s20171028
+PORTVERSION= s20171105
PORTREVISION?= 0
CATEGORIES= emulators
@@ -26,11 +26,11 @@ ONLY_FOR_ARCHS_REASON= https://github.com/MerryMage/dynarmic/issues/35
USE_GITHUB= yes
GH_ACCOUNT= citra-emu
-GH_TAGNAME= 1f6da9fb
+GH_TAGNAME= 4fc04480
GH_TUPLE= citra-emu:ext-soundtouch:019d208:soundtouch/externals/soundtouch \
- MerryMage:dynarmic:8f15e3f:dynarmic/externals/dynarmic \
- fmtlib:fmt:3.0.0-187-gac5484c:fmt/externals/fmt \
- herumi:xbyak:v5.40:xbyak/externals/xbyak \
+ MerryMage:dynarmic:d3fb603:dynarmic/externals/dynarmic \
+ fmtlib:fmt:4.0.0:fmt/externals/fmt \
+ herumi:xbyak:v5.53-1-gc5da377:xbyak/externals/xbyak \
lsalzman:enet:a84c120:enet/externals/enet \
neobrain:nihstro:7e24743:nihstro/externals/nihstro \
philsquared:Catch:v1.9.4:catch/externals/catch \
diff --git a/emulators/citra/distinfo b/emulators/citra/distinfo
index 291651774534..e1f7d0302f84 100644
--- a/emulators/citra/distinfo
+++ b/emulators/citra/distinfo
@@ -1,14 +1,14 @@
-TIMESTAMP = 1509212336
-SHA256 (citra-emu-citra-s20171028-1f6da9fb_GH0.tar.gz) = 816e73d9e5ccef3927a0924515f3b66469d8ef8acdb9ff3367ea5b5603224e24
-SIZE (citra-emu-citra-s20171028-1f6da9fb_GH0.tar.gz) = 1588279
+TIMESTAMP = 1509870766
+SHA256 (citra-emu-citra-s20171105-4fc04480_GH0.tar.gz) = 05301e6316b858c94d068d936e086c20faa8c86c32aaab0bd3645f3acc953b89
+SIZE (citra-emu-citra-s20171105-4fc04480_GH0.tar.gz) = 1619629
SHA256 (citra-emu-ext-soundtouch-019d208_GH0.tar.gz) = f48c211bbabe7ad79e1c504af1082756c74241be6bab4aca13140803f4b694e7
SIZE (citra-emu-ext-soundtouch-019d208_GH0.tar.gz) = 59366
-SHA256 (MerryMage-dynarmic-8f15e3f_GH0.tar.gz) = 3e5b184c8d190849374fa426ee6a511f3375682232b46aaa8e060632eaa4cadb
-SIZE (MerryMage-dynarmic-8f15e3f_GH0.tar.gz) = 420423
-SHA256 (fmtlib-fmt-3.0.0-187-gac5484c_GH0.tar.gz) = 1400d4e807c5bb0329e44784210bbabddd4f42103f3d9d86c8d3d97188bc9975
-SIZE (fmtlib-fmt-3.0.0-187-gac5484c_GH0.tar.gz) = 615682
-SHA256 (herumi-xbyak-v5.40_GH0.tar.gz) = 106bbe15dc7e5d025ff98d1b5dd62a3f0a26d2569debe77fcde14852d50a66e1
-SIZE (herumi-xbyak-v5.40_GH0.tar.gz) = 203521
+SHA256 (MerryMage-dynarmic-d3fb603_GH0.tar.gz) = a6e159eab0d40a39e868dbab7d250af5076fb3cef5a4030dcaa0eaa8ead71f66
+SIZE (MerryMage-dynarmic-d3fb603_GH0.tar.gz) = 421395
+SHA256 (fmtlib-fmt-4.0.0_GH0.tar.gz) = 35300a0d356529447a79ed5ccf419239d8b34f916e5d4625f046fd37afa3650a
+SIZE (fmtlib-fmt-4.0.0_GH0.tar.gz) = 617818
+SHA256 (herumi-xbyak-v5.53-1-gc5da377_GH0.tar.gz) = 51129bc945fe2650f5fcd41f3b0166555b17589f03bda5d2216927234ef6446a
+SIZE (herumi-xbyak-v5.53-1-gc5da377_GH0.tar.gz) = 206888
SHA256 (lsalzman-enet-a84c120_GH0.tar.gz) = 409d458f2da9d8bba49191ab6abaeb6bcf89193cd5eff07382c1d7b5f3fb06f0
SIZE (lsalzman-enet-a84c120_GH0.tar.gz) = 79369
SHA256 (neobrain-nihstro-7e24743_GH0.tar.gz) = 063728b01f7de99ca91693c46bd5c5a0fb03c0058baf4452d539f630b10f3650
diff --git a/emulators/citra/files/patch-revert-pr3042 b/emulators/citra/files/patch-revert-pr3042
new file mode 100644
index 000000000000..e24c68f2f655
--- /dev/null
+++ b/emulators/citra/files/patch-revert-pr3042
@@ -0,0 +1,119 @@
+https://github.com/citra-emu/citra/issues/3079
+
+--- src/core/hle/kernel/errors.h.orig 2017-11-05 08:32:46 UTC
++++ src/core/hle/kernel/errors.h
+@@ -13,7 +13,6 @@ enum {
+ OutOfHandles = 19,
+ SessionClosedByRemote = 26,
+ PortNameTooLong = 30,
+- WrongLockingThread = 31,
+ NoPendingSessions = 35,
+ WrongPermission = 46,
+ InvalidBufferDescriptor = 48,
+--- src/core/hle/kernel/mutex.cpp.orig 2017-11-05 08:32:46 UTC
++++ src/core/hle/kernel/mutex.cpp
+@@ -7,7 +7,6 @@
+ #include <boost/range/algorithm_ext/erase.hpp>
+ #include "common/assert.h"
+ #include "core/core.h"
+-#include "core/hle/kernel/errors.h"
+ #include "core/hle/kernel/kernel.h"
+ #include "core/hle/kernel/mutex.h"
+ #include "core/hle/kernel/thread.h"
+@@ -59,35 +58,20 @@ void Mutex::Acquire(Thread* thread) {
+ lock_count++;
+ }
+
+-ResultCode Mutex::Release(Thread* thread) {
+- // We can only release the mutex if it's held by the calling thread.
+- if (thread != holding_thread) {
+- if (holding_thread) {
+- LOG_ERROR(
+- Kernel,
+- "Tried to release a mutex (owned by thread id %u) from a different thread id %u",
+- holding_thread->thread_id, thread->thread_id);
++void Mutex::Release() {
++ // Only release if the mutex is held
++ if (lock_count > 0) {
++ lock_count--;
++
++ // Yield to the next thread only if we've fully released the mutex
++ if (lock_count == 0) {
++ holding_thread->held_mutexes.erase(this);
++ holding_thread->UpdatePriority();
++ holding_thread = nullptr;
++ WakeupAllWaitingThreads();
++ Core::System::GetInstance().PrepareReschedule();
+ }
+- return ResultCode(ErrCodes::WrongLockingThread, ErrorModule::Kernel,
+- ErrorSummary::InvalidArgument, ErrorLevel::Permanent);
+ }
+-
+- // Note: It should not be possible for the situation where the mutex has a holding thread with a
+- // zero lock count to occur. The real kernel still checks for this, so we do too.
+- if (lock_count <= 0)
+- return ResultCode(ErrorDescription::InvalidResultValue, ErrorModule::Kernel,
+- ErrorSummary::InvalidState, ErrorLevel::Permanent);
+-
+- lock_count--;
+-
+- // Yield to the next thread only if we've fully released the mutex
+- if (lock_count == 0) {
+- holding_thread->held_mutexes.erase(this);
+- holding_thread->UpdatePriority();
+- holding_thread = nullptr;
+- WakeupAllWaitingThreads();
+- Core::System::GetInstance().PrepareReschedule();
+- }
+ }
+
+ void Mutex::AddWaitingThread(SharedPtr<Thread> thread) {
+@@ -118,4 +102,4 @@ void Mutex::UpdatePriority() {
+ }
+ }
+
+-} // namespace Kernel
++} // namespace
+--- src/core/hle/kernel/mutex.h.orig 2017-11-05 08:32:46 UTC
++++ src/core/hle/kernel/mutex.h
+@@ -8,7 +8,6 @@
+ #include "common/common_types.h"
+ #include "core/hle/kernel/kernel.h"
+ #include "core/hle/kernel/wait_object.h"
+-#include "core/hle/result.h"
+
+ namespace Kernel {
+
+@@ -53,12 +52,7 @@ class Mutex final : public WaitObject { (public)
+ void AddWaitingThread(SharedPtr<Thread> thread) override;
+ void RemoveWaitingThread(Thread* thread) override;
+
+- /**
+- * Attempts to release the mutex from the specified thread.
+- * @param thread Thread that wants to release the mutex.
+- * @returns The result code of the operation.
+- */
+- ResultCode Release(Thread* thread);
++ void Release();
+
+ private:
+ Mutex();
+@@ -71,4 +65,4 @@ class Mutex final : public WaitObject { (public)
+ */
+ void ReleaseThreadMutexes(Thread* thread);
+
+-} // namespace Kernel
++} // namespace
+--- src/core/hle/svc.cpp.orig 2017-11-05 08:32:46 UTC
++++ src/core/hle/svc.cpp
+@@ -818,7 +818,9 @@ static ResultCode ReleaseMutex(Kernel::Handle handle)
+ if (mutex == nullptr)
+ return ERR_INVALID_HANDLE;
+
+- return mutex->Release(Kernel::GetCurrentThread());
++ mutex->Release();
++
++ return RESULT_SUCCESS;
+ }
+
+ /// Get the ID of the specified process