SDL: Vita: add support for disabling 'screensaver' (screen dimming and suspend)

From 8d1e0ca32455c3c5872279d7f76f39c5b506b86f Mon Sep 17 00:00:00 2001
From: Ivan Epifanov <[EMAIL REDACTED]>
Date: Thu, 16 Sep 2021 12:48:39 +0300
Subject: [PATCH] Vita: add support for disabling 'screensaver' (screen dimming
 and suspend)

---
 CMakeLists.txt                 | 1 +
 src/video/vita/SDL_vitavideo.c | 9 ++++++++-
 src/video/vita/SDL_vitavideo.h | 1 -
 3 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 01e2c54985..880415ed3b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2246,6 +2246,7 @@ elseif(VITA)
       SceHid_stub
       SceMotion_stub
       ScePower_stub
+      SceProcessmgr_stub
       m
     )
     if(HAVE_VIDEO_VITA_PIB)
diff --git a/src/video/vita/SDL_vitavideo.c b/src/video/vita/SDL_vitavideo.c
index 0de9c1d1b8..4ea96faaef 100644
--- a/src/video/vita/SDL_vitavideo.c
+++ b/src/video/vita/SDL_vitavideo.c
@@ -33,6 +33,7 @@
 #include "../../events/SDL_keyboard_c.h"
 
 /* VITA declarations */
+#include <psp2/kernel/processmgr.h>
 #include "SDL_vitavideo.h"
 #include "SDL_vitatouch.h"
 #include "SDL_vitakeyboard.h"
@@ -346,8 +347,8 @@ VITA_RestoreWindow(_THIS, SDL_Window * window)
 void
 VITA_SetWindowGrab(_THIS, SDL_Window * window, SDL_bool grabbed)
 {
-
 }
+
 void
 VITA_DestroyWindow(_THIS, SDL_Window * window)
 {
@@ -555,6 +556,12 @@ void VITA_PumpEvents(_THIS)
 #if !defined(SDL_VIDEO_VITA_PVR)
     SDL_VideoData *videodata = (SDL_VideoData *)_this->driverdata;
 #endif
+
+    if (_this->suspend_screensaver) {
+        // cancel all idle timers to prevent vita going to sleep
+        sceKernelPowerTick(SCE_KERNEL_POWER_TICK_DEFAULT);
+    }
+
     VITA_PollTouch();
     VITA_PollKeyboard();
     VITA_PollMouse();
diff --git a/src/video/vita/SDL_vitavideo.h b/src/video/vita/SDL_vitavideo.h
index 372c192ef7..1b1aa4f6fe 100644
--- a/src/video/vita/SDL_vitavideo.h
+++ b/src/video/vita/SDL_vitavideo.h
@@ -38,7 +38,6 @@ typedef struct SDL_VideoData
 
     SceWChar16 ime_buffer[SCE_IME_DIALOG_MAX_TEXT_LENGTH];
     SDL_bool ime_active;
-
 } SDL_VideoData;