Use CVDisplayLinkIsRunning() rather than tracking started state since the OS can apparently shutdown the thread on its own in some scenarios
This commit is contained in:
parent
710e146d22
commit
86305fdeb3
3 changed files with 2 additions and 7 deletions
|
|
@ -245,11 +245,8 @@ bool refreshMonitorScreen(_GLFWmonitor* monitor)
|
|||
void _glfwClearDisplayLinks() {
|
||||
[_glfw.ns.displayLinks.lock lock];
|
||||
for (size_t i = 0; i < _glfw.ns.displayLinks.count; i++) {
|
||||
if (_glfw.ns.displayLinks.entries[i].displayLinkStarted) {
|
||||
CVDisplayLinkStop(_glfw.ns.displayLinks.entries[i].displayLink);
|
||||
_glfw.ns.displayLinks.entries[i].displayLinkStarted = false;
|
||||
}
|
||||
if (_glfw.ns.displayLinks.entries[i].displayLink) {
|
||||
CVDisplayLinkStop(_glfw.ns.displayLinks.entries[i].displayLink);
|
||||
CVDisplayLinkRelease(_glfw.ns.displayLinks.entries[i].displayLink);
|
||||
_glfw.ns.displayLinks.entries[i].displayLink = nil;
|
||||
}
|
||||
|
|
|
|||
1
glfw/cocoa_platform.h
vendored
1
glfw/cocoa_platform.h
vendored
|
|
@ -144,7 +144,6 @@ typedef struct _GLFWDisplayLinkNS
|
|||
{
|
||||
CVDisplayLinkRef displayLink;
|
||||
CGDirectDisplayID displayID;
|
||||
bool displayLinkStarted;
|
||||
bool renderFrameRequested;
|
||||
} _GLFWDisplayLinkNS;
|
||||
|
||||
|
|
|
|||
|
|
@ -78,9 +78,8 @@ CGDirectDisplayID displayIDForWindow(_GLFWwindow *w) {
|
|||
_GLFWDisplayLinkNS *dl = &_glfw.ns.displayLinks.entries[i];
|
||||
if (dl->displayID == displayID) {
|
||||
dl->renderFrameRequested = true;
|
||||
if (!dl->displayLinkStarted) {
|
||||
if (!CVDisplayLinkIsRunning(dl->displayLink)) {
|
||||
CVDisplayLinkStart(dl->displayLink);
|
||||
dl->displayLinkStarted = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue