Module: wine Branch: master Commit: 5f80cc43bfe3e741bdcbed744812472d5edd27c9 URL: http://source.winehq.org/git/wine.git/?a=commit;h=5f80cc43bfe3e741bdcbed7448...
Author: Ken Thomases ken@codeweavers.com Date: Fri Dec 8 02:54:08 2017 -0600
winemac: Stop the display link after 2 seconds of idleness, not the first time it's idle.
Signed-off-by: Ken Thomases ken@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/winemac.drv/cocoa_window.m | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/dlls/winemac.drv/cocoa_window.m b/dlls/winemac.drv/cocoa_window.m index 03a9e78..991db57 100644 --- a/dlls/winemac.drv/cocoa_window.m +++ b/dlls/winemac.drv/cocoa_window.m @@ -166,6 +166,8 @@ static inline NSUInteger adjusted_modifiers_for_option_behavior(NSUInteger modif
NSTimeInterval _actualRefreshPeriod; NSTimeInterval _nominalRefreshPeriod; + + NSTimeInterval _lastDisplayTime; }
- (id) initWithDisplayID:(CGDirectDisplayID)displayID; @@ -224,7 +226,7 @@ static CVReturn WineDisplayLinkCallback(CVDisplayLinkRef displayLink, const CVTi [_windows addObject:window]; } if (firstWindow || !CVDisplayLinkIsRunning(_link)) - CVDisplayLinkStart(_link); + [self start]; }
- (void) removeWindow:(WineWindow*)window @@ -256,7 +258,11 @@ static CVReturn WineDisplayLinkCallback(CVDisplayLinkRef displayLink, const CVTi anyDisplayed = YES; } } - if (!anyDisplayed) + + NSTimeInterval now = [[NSProcessInfo processInfo] systemUptime]; + if (anyDisplayed) + _lastDisplayTime = now; + else if (_lastDisplayTime + 2.0 < now) CVDisplayLinkStop(_link); }); [windows release]; @@ -279,6 +285,7 @@ static CVReturn WineDisplayLinkCallback(CVDisplayLinkRef displayLink, const CVTi
- (void) start { + _lastDisplayTime = [[NSProcessInfo processInfo] systemUptime]; CVDisplayLinkStart(_link); }