Add PreSwapCallback for updating SceCommonDialog
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
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;
}