early-access version 1577
This commit is contained in:
parent
a20c9bc240
commit
7cfa731bca
4 changed files with 13 additions and 10 deletions
|
@ -1,7 +1,7 @@
|
||||||
yuzu emulator early access
|
yuzu emulator early access
|
||||||
=============
|
=============
|
||||||
|
|
||||||
This is the source code for early-access 1576.
|
This is the source code for early-access 1577.
|
||||||
|
|
||||||
## Legal Notice
|
## Legal Notice
|
||||||
|
|
||||||
|
|
|
@ -195,9 +195,9 @@ private:
|
||||||
KSpinLock guard{};
|
KSpinLock guard{};
|
||||||
};
|
};
|
||||||
|
|
||||||
class KScopedSchedulerLock : KScopedLock<GlobalSchedulerContext::LockType> {
|
class [[nodiscard]] KScopedSchedulerLock : KScopedLock<GlobalSchedulerContext::LockType> {
|
||||||
public:
|
public:
|
||||||
explicit KScopedSchedulerLock(KernelCore& kernel);
|
explicit KScopedSchedulerLock(KernelCore & kernel);
|
||||||
~KScopedSchedulerLock();
|
~KScopedSchedulerLock();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -20,19 +20,22 @@ concept KLockable = !std::is_reference_v<T> && requires(T & t) {
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
requires KLockable<T> class KScopedLock {
|
requires KLockable<T> class [[nodiscard]] KScopedLock {
|
||||||
public:
|
public:
|
||||||
explicit KScopedLock(T* l) : lock_ptr(l) {
|
explicit KScopedLock(T * l) : lock_ptr(l) {
|
||||||
this->lock_ptr->Lock();
|
this->lock_ptr->Lock();
|
||||||
}
|
}
|
||||||
explicit KScopedLock(T& l) : KScopedLock(std::addressof(l)) { /* ... */
|
explicit KScopedLock(T & l) : KScopedLock(std::addressof(l)) {}
|
||||||
}
|
|
||||||
~KScopedLock() {
|
~KScopedLock() {
|
||||||
this->lock_ptr->Unlock();
|
this->lock_ptr->Unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
KScopedLock(const KScopedLock&) = delete;
|
KScopedLock(const KScopedLock&) = delete;
|
||||||
KScopedLock(KScopedLock&&) = delete;
|
KScopedLock& operator=(const KScopedLock&) = delete;
|
||||||
|
|
||||||
|
KScopedLock(KScopedLock &&) = delete;
|
||||||
|
KScopedLock& operator=(KScopedLock&&) = delete;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
T* lock_ptr;
|
T* lock_ptr;
|
||||||
|
|
|
@ -15,9 +15,9 @@
|
||||||
|
|
||||||
namespace Kernel {
|
namespace Kernel {
|
||||||
|
|
||||||
class KScopedSchedulerLockAndSleep {
|
class [[nodiscard]] KScopedSchedulerLockAndSleep {
|
||||||
public:
|
public:
|
||||||
explicit KScopedSchedulerLockAndSleep(KernelCore& kernel, KThread* t, s64 timeout)
|
explicit KScopedSchedulerLockAndSleep(KernelCore & kernel, KThread * t, s64 timeout)
|
||||||
: kernel(kernel), thread(t), timeout_tick(timeout) {
|
: kernel(kernel), thread(t), timeout_tick(timeout) {
|
||||||
// Lock the scheduler.
|
// Lock the scheduler.
|
||||||
kernel.GlobalSchedulerContext().scheduler_lock.Lock();
|
kernel.GlobalSchedulerContext().scheduler_lock.Lock();
|
||||||
|
|
Loading…
Reference in a new issue