Module: wine
Branch: master
Commit: fd6f2a1781354a1a86a0469abd0766afd6304005
URL: http://source.winehq.org/git/wine.git/?a=commit;h=fd6f2a1781354a1a86a0469ab…
Author: Ken Thomases <ken(a)codeweavers.com>
Date: Fri Dec 8 02:54:06 2017 -0600
winemac: Check the display link running state as well as the window count to decide whether to start/stop it.
The display link may be stopped even if there are associated windows, due to
idleness. So, it may need to be started when a window is added even if it's
not the first window.
Signed-off-by: Ken Thomases <ken(a)codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard(a)winehq.org>
---
dlls/winemac.drv/cocoa_window.m | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/dlls/winemac.drv/cocoa_window.m b/dlls/winemac.drv/cocoa_window.m
index 65dc392..1b1d171 100644
--- a/dlls/winemac.drv/cocoa_window.m
+++ b/dlls/winemac.drv/cocoa_window.m
@@ -218,25 +218,25 @@ static CVReturn WineDisplayLinkCallback(CVDisplayLinkRef displayLink, const CVTi
- (void) addWindow:(WineWindow*)window
{
- BOOL needsStart;
+ BOOL firstWindow;
@synchronized(self) {
- needsStart = !_windows.count;
+ firstWindow = !_windows.count;
[_windows addObject:window];
}
- if (needsStart)
+ if (firstWindow || !CVDisplayLinkIsRunning(_link))
CVDisplayLinkStart(_link);
}
- (void) removeWindow:(WineWindow*)window
{
- BOOL shouldStop = FALSE;
+ BOOL lastWindow = FALSE;
@synchronized(self) {
- BOOL wasRunning = _windows.count > 0;
+ BOOL hadWindows = _windows.count > 0;
[_windows removeObject:window];
- if (wasRunning && !_windows.count)
- shouldStop = TRUE;
+ if (hadWindows && !_windows.count)
+ lastWindow = TRUE;
}
- if (shouldStop)
+ if (lastWindow && CVDisplayLinkIsRunning(_link))
CVDisplayLinkStop(_link);
}