Fix VISIGen hang on X11/NVIDIA

pthread_cancel left some internal X/glX mutexes in an inconsistent
state; removing it altogether allows VISIRenderer to clean up
properly.
This commit is contained in:
Luke Street 2019-11-19 23:39:49 -05:00
parent b23575f2aa
commit b895a2a757
2 changed files with 1 additions and 2 deletions

View File

@ -254,6 +254,7 @@ int main(int argc, const char** argv) {
Log.report(logvisor::Fatal, fmt("unable to make GLX context current"));
XUnlockDisplay(xDisp);
UpdatePercent(0);
renderer.Run(UpdatePercent);
XLockDisplay(xDisp);
@ -295,7 +296,6 @@ int main(int argc, const char** argv) {
}
renderer.Terminate();
pthread_cancel(clientThread.native_handle());
if (clientThread.joinable())
clientThread.join();

View File

@ -265,7 +265,6 @@ std::vector<uint8_t> VISIBuilder::build(const zeus::CAABox& fullAabb, size_t mod
Progress prog(updatePercent);
#ifndef _WIN32
parentPid = getppid();
auto terminate = [this, parentPid]() {
return renderCache.m_renderer.m_terminate || (parentPid ? kill(parentPid, 0) : false);
};