Procházet zdrojové kódy

psp: Hook up event subsystem init/quit.

Fixes #8554.
Ryan C. Gordon před 1 rokem
rodič
revize
0e9d050296

+ 4 - 5
src/video/psp/SDL_pspevents.c

@@ -237,7 +237,7 @@ void PSP_InitOSKeymap(_THIS)
 #endif
 }
 
-void PSP_EventInit(_THIS)
+int PSP_EventInit(_THIS)
 {
 #ifdef PSPIRKEYB
     int outputmode = PSP_IRKBD_OUTPUT_MODE_SCANCODE;
@@ -251,14 +251,13 @@ void PSP_EventInit(_THIS)
 #endif
     /* Start thread to read data */
     if ((event_sem = SDL_CreateSemaphore(1)) == NULL) {
-        SDL_SetError("Can't create input semaphore");
-        return;
+        return SDL_SetError("Can't create input semaphore");
     }
     running = 1;
     if ((thread = SDL_CreateThreadInternal(EventUpdate, "PSPInputThread", 4096, NULL)) == NULL) {
-        SDL_SetError("Can't create input thread");
-        return;
+        return SDL_SetError("Can't create input thread");
     }
+    return 0;
 }
 
 void PSP_EventQuit(_THIS)

+ 2 - 0
src/video/psp/SDL_pspevents_c.h

@@ -23,5 +23,7 @@
 
 extern void PSP_InitOSKeymap(_THIS);
 extern void PSP_PumpEvents(_THIS);
+extern int PSP_EventInit(_THIS);
+extern void PSP_EventQuit(_THIS);
 
 /* end of SDL_pspevents_c.h ... */

+ 7 - 1
src/video/psp/SDL_pspvideo.c

@@ -145,6 +145,10 @@ int PSP_VideoInit(_THIS)
     SDL_VideoDisplay display;
     SDL_DisplayMode current_mode;
 
+    if (PSP_EventInit(_this) == -1) {
+        return -1;  /* error string would already be set */
+    }
+
     SDL_zero(current_mode);
 
     current_mode.w = 480;
@@ -169,11 +173,13 @@ int PSP_VideoInit(_THIS)
     SDL_AddDisplayMode(&display, &current_mode);
 
     SDL_AddVideoDisplay(&display, SDL_FALSE);
-    return 1;
+
+    return 0;
 }
 
 void PSP_VideoQuit(_THIS)
 {
+    PSP_EventQuit(_this);
 }
 
 void PSP_GetDisplayModes(_THIS, SDL_VideoDisplay *display)