|
@@ -490,11 +490,14 @@ static NSCursor *Cocoa_GetDesiredCursor(void)
|
|
|
isMoving = NO;
|
|
|
isDragAreaRunning = NO;
|
|
|
pendingWindowWarpX = pendingWindowWarpY = INT_MAX;
|
|
|
+ liveResizeTimer = nil;
|
|
|
|
|
|
center = [NSNotificationCenter defaultCenter];
|
|
|
|
|
|
if ([window delegate] != nil) {
|
|
|
[center addObserver:self selector:@selector(windowDidExpose:) name:NSWindowDidExposeNotification object:window];
|
|
|
+ [center addObserver:self selector:@selector(windowWillStartLiveResize:) name:NSWindowWillStartLiveResizeNotification object:window];
|
|
|
+ [center addObserver:self selector:@selector(windowDidEndLiveResize:) name:NSWindowDidEndLiveResizeNotification object:window];
|
|
|
[center addObserver:self selector:@selector(windowDidMove:) name:NSWindowDidMoveNotification object:window];
|
|
|
[center addObserver:self selector:@selector(windowDidResize:) name:NSWindowDidResizeNotification object:window];
|
|
|
[center addObserver:self selector:@selector(windowDidMiniaturize:) name:NSWindowDidMiniaturizeNotification object:window];
|
|
@@ -628,6 +631,8 @@ static NSCursor *Cocoa_GetDesiredCursor(void)
|
|
|
|
|
|
if ([window delegate] != self) {
|
|
|
[center removeObserver:self name:NSWindowDidExposeNotification object:window];
|
|
|
+ [center removeObserver:self name:NSWindowWillStartLiveResizeNotification object:window];
|
|
|
+ [center removeObserver:self name:NSWindowDidEndLiveResizeNotification object:window];
|
|
|
[center removeObserver:self name:NSWindowDidMoveNotification object:window];
|
|
|
[center removeObserver:self name:NSWindowDidResizeNotification object:window];
|
|
|
[center removeObserver:self name:NSWindowDidMiniaturizeNotification object:window];
|
|
@@ -738,6 +743,26 @@ static NSCursor *Cocoa_GetDesiredCursor(void)
|
|
|
SDL_SendWindowEvent(_data.window, SDL_WINDOWEVENT_EXPOSED, 0, 0);
|
|
|
}
|
|
|
|
|
|
+- (void)windowWillStartLiveResize:(NSNotification *)aNotification
|
|
|
+{
|
|
|
+ // We'll try to maintain 60 FPS during live resizing
|
|
|
+ const NSTimeInterval interval = 1.0 / 60.0;
|
|
|
+ liveResizeTimer = [NSTimer scheduledTimerWithTimeInterval:interval
|
|
|
+ repeats:TRUE
|
|
|
+ block:^(NSTimer *unusedTimer)
|
|
|
+ {
|
|
|
+ SDL_OnWindowLiveResizeUpdate(_data.window);
|
|
|
+ }];
|
|
|
+
|
|
|
+ [[NSRunLoop currentRunLoop] addTimer:liveResizeTimer forMode:NSRunLoopCommonModes];
|
|
|
+}
|
|
|
+
|
|
|
+- (void)windowDidEndLiveResize:(NSNotification *)aNotification
|
|
|
+{
|
|
|
+ [liveResizeTimer invalidate];
|
|
|
+ liveResizeTimer = nil;
|
|
|
+}
|
|
|
+
|
|
|
- (void)windowWillMove:(NSNotification *)aNotification
|
|
|
{
|
|
|
if ([_data.nswindow isKindOfClass:[SDLWindow class]]) {
|