Commit 48bbe31bc63de67ef118f3d9f40b710178cb78b9

Jaylon Gowie 2021-07-20T21:45:21

Add PreSwapCallback for updating SceCommonDialog

diff --git a/src/video/vita/SDL_vitagl.c b/src/video/vita/SDL_vitagl.c
index ae6087b..c3fc5d9 100644
--- a/src/video/vita/SDL_vitagl.c
+++ b/src/video/vita/SDL_vitagl.c
@@ -44,6 +44,23 @@
         }                                       \
     } while (0)
 
+void 
+VITA_GL_KeyboardCallback(ScePigletPreSwapData *data)
+{
+    SceCommonDialogUpdateParam commonDialogParam;
+    SDL_zero(commonDialogParam);
+    commonDialogParam.renderTarget.colorFormat = data->colorFormat;
+    commonDialogParam.renderTarget.surfaceType = data->surfaceType;
+    commonDialogParam.renderTarget.colorSurfaceData = data->colorSurfaceData;
+    commonDialogParam.renderTarget.depthSurfaceData = data->depthSurfaceData;
+    commonDialogParam.renderTarget.width = data->width;
+    commonDialogParam.renderTarget.height = data->height;
+    commonDialogParam.renderTarget.strideInPixels = data->strideInPixels;
+    commonDialogParam.displaySyncObject = data->displaySyncObject;
+
+    sceCommonDialogUpdate(&commonDialogParam);
+}
+
 int
 VITA_GL_LoadLibrary(_THIS, const char *path)
 {
@@ -78,6 +95,7 @@ VITA_GL_CreateContext(_THIS, SDL_Window * window)
     EGLSurface surface;
     EGLConfig config;
     EGLint num_configs;
+    PFNEGLPIGLETVITASETPRESWAPCALLBACKSCEPROC preSwapCallback;
     int i;
 
     const EGLint contextAttribs[] = {
@@ -140,6 +158,9 @@ VITA_GL_CreateContext(_THIS, SDL_Window * window)
     _this->gl_data->context = context;
     _this->gl_data->surface = surface;
 
+    preSwapCallback = (PFNEGLPIGLETVITASETPRESWAPCALLBACKSCEPROC) eglGetProcAddress("eglPigletVitaSetPreSwapCallbackSCE");
+    preSwapCallback(VITA_GL_KeyboardCallback);
+
     return context;
 }