iOS: Added support for SDL_DisableScreenSaver and SDL_EnableScreenSaver.
authorAlex Szpakowski <slime73@gmail.com>
Sat, 16 May 2015 16:55:56 -0300
changeset 9603 8e570fd79352
parent 9602 3c3800abc52f
child 9604 b8d8f9674717
iOS: Added support for SDL_DisableScreenSaver and SDL_EnableScreenSaver.
include/SDL_hints.h
src/video/uikit/SDL_uikitvideo.h
src/video/uikit/SDL_uikitvideo.m
--- a/include/SDL_hints.h	Sat May 16 21:15:59 2015 +0200
+++ b/include/SDL_hints.h	Sat May 16 16:55:56 2015 -0300
@@ -243,6 +243,9 @@
  *  this is problematic. This functionality can be disabled by setting this
  *  hint.
  *
+ *  As of SDL 2.0.4, SDL_EnableScreenSaver and SDL_DisableScreenSaver accomplish
+ *  the same thing on iOS. They should be preferred over this hint.
+ *
  *  This variable can be set to the following values:
  *    "0"       - Enable idle timer
  *    "1"       - Disable idle timer
--- a/src/video/uikit/SDL_uikitvideo.h	Sat May 16 21:15:59 2015 +0200
+++ b/src/video/uikit/SDL_uikitvideo.h	Sat May 16 16:55:56 2015 -0300
@@ -25,6 +25,8 @@
 
 #include "../SDL_sysvideo.h"
 
+void UIKit_SuspendScreenSaver(_THIS);
+
 BOOL UIKit_IsSystemVersionAtLeast(double version);
 CGRect UIKit_ComputeViewFrame(SDL_Window *window, UIScreen *screen);
 
--- a/src/video/uikit/SDL_uikitvideo.m	Sat May 16 21:15:59 2015 +0200
+++ b/src/video/uikit/SDL_uikitvideo.m	Sat May 16 16:55:56 2015 -0300
@@ -26,6 +26,7 @@
 
 #include "SDL_video.h"
 #include "SDL_mouse.h"
+#include "SDL_hints.h"
 #include "../SDL_sysvideo.h"
 #include "../SDL_pixels_c.h"
 #include "../../events/SDL_events_c.h"
@@ -74,6 +75,7 @@
     device->GetDisplayModes = UIKit_GetDisplayModes;
     device->SetDisplayMode = UIKit_SetDisplayMode;
     device->PumpEvents = UIKit_PumpEvents;
+    device->SuspendScreenSaver = UIKit_SuspendScreenSaver;
     device->CreateWindow = UIKit_CreateWindow;
     device->SetWindowTitle = UIKit_SetWindowTitle;
     device->ShowWindow = UIKit_ShowWindow;
@@ -130,6 +132,21 @@
     UIKit_QuitModes(_this);
 }
 
+void
+UIKit_SuspendScreenSaver(_THIS)
+{
+    @autoreleasepool {
+        /* Ignore ScreenSaver API calls if the idle timer hint has been set. */
+        /* FIXME: The idle timer hint should be deprecated for SDL 2.1. */
+        if (SDL_GetHint(SDL_HINT_IDLE_TIMER_DISABLED) == NULL) {
+            UIApplication *app = [UIApplication sharedApplication];
+
+            /* Prevent the display from dimming and going to sleep. */
+            app.idleTimerDisabled = (_this->suspend_screensaver != SDL_FALSE);
+        }
+    }
+}
+
 BOOL
 UIKit_IsSystemVersionAtLeast(double version)
 {