Compare commits
1 Commits
lock-term-
...
discfix
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ed577ebf12 |
10
.github/ISSUE_TEMPLATE/config.yml
vendored
10
.github/ISSUE_TEMPLATE/config.yml
vendored
@@ -1,8 +1,6 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: yuzu Discord
|
||||
url: https://discord.com/invite/u77vRWY
|
||||
about: If you are experiencing an issue with yuzu, and you need tech support, or if you have a general question, try asking in the official yuzu Discord linked here. Piracy is not allowed.
|
||||
- name: Community forums
|
||||
url: https://community.citra-emu.org
|
||||
about: This is an alternative place for tech support, however helpers there are not as active.
|
||||
- name: Eden Discord
|
||||
url: https://discord.gg/kXAmGCXBGD
|
||||
- name: Eden Revolt
|
||||
url: https://rvlt.gg/qKgFEAbH
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<!--
|
||||
SPDX-FileCopyrightText: 2018 yuzu Emulator Project
|
||||
SPDX-License-Identifier: GPL-2.0-or-later
|
||||
-->
|
||||
# Contributing
|
||||
|
||||
**The Contributor's Guide has moved to [the yuzu wiki](https://github.com/yuzu-emu/yuzu/wiki/Contributing).**
|
||||
Want to contribute to Eden? That's awesome!
|
||||
|
||||
- [Get started by building the emulator](./docs/Build.md)
|
||||
- [Make an account on the git](./docs/SIGNUP.md)
|
||||
- [Read the documentation](./docs/README.md)
|
||||
|
||||
@@ -82,7 +82,7 @@ Any donations received will go towards things such as:
|
||||
* Additional hardware (e.g. GPUs as needed to improve rendering support, other peripherals to add support for, etc.)
|
||||
* CI Infrastructure
|
||||
|
||||
If you would prefer to support us in a different way, please join our [Discord](https://discord.gg/edenemu) and talk to Camille or any of our other developers.
|
||||
If you would prefer to support us in a different way, please join our [Discord](https://discord.gg/kXAmGCXBGD) and talk to Camille or any of our other developers.
|
||||
|
||||
## License
|
||||
|
||||
|
||||
@@ -429,23 +429,19 @@ void KThread::StartTermination() {
|
||||
}
|
||||
|
||||
void KThread::FinishTermination() {
|
||||
// Acquire the scheduler lock.
|
||||
KScopedSchedulerLock lk{m_kernel};
|
||||
|
||||
// Ensure that the thread is not executing on any core.
|
||||
if (m_parent != nullptr) {
|
||||
bool wait_thread = true;
|
||||
lk.unlock();
|
||||
while (wait_thread) {
|
||||
// now "pin" the scheduler so it wont change stuff mid-way
|
||||
lk.lock();
|
||||
for (std::size_t i = 0; i < std::size_t(Core::Hardware::NUM_CPU_CORES); ++i)
|
||||
is_on_schedule |= m_kernel.Scheduler(i).GetSchedulerCurrentThread() == this;
|
||||
// let scheduler try again
|
||||
if (wait_thread)
|
||||
lk.unlock();
|
||||
for (std::size_t i = 0; i < static_cast<std::size_t>(Core::Hardware::NUM_CPU_CORES); ++i) {
|
||||
KThread* core_thread{};
|
||||
do {
|
||||
core_thread = m_kernel.Scheduler(i).GetSchedulerCurrentThread();
|
||||
} while (core_thread == this);
|
||||
}
|
||||
}
|
||||
|
||||
// Acquire the scheduler lock.
|
||||
KScopedSchedulerLock sl{m_kernel};
|
||||
|
||||
// Signal.
|
||||
m_signaled = true;
|
||||
KSynchronizationObject::NotifyAvailable();
|
||||
|
||||
Reference in New Issue
Block a user