Przeglądaj źródła

emscripten: Unify creation of Module['SDL3'] in at SDL_Init time.

(cherry picked from commit 7d093940a71b395fbbd7e0ac5781007733a2a784)
Ryan C. Gordon 1 miesiąc temu
rodzic
commit
f9bb023eeb

+ 8 - 0
src/SDL.c

@@ -326,6 +326,14 @@ bool SDL_InitSubSystem(SDL_InitFlags flags)
         return SDL_SetError("Application didn't initialize properly, did you include SDL_main.h in the file containing your main() function?");
     }
 
+#ifdef SDL_PLATFORM_EMSCRIPTEN
+    MAIN_THREAD_EM_ASM({
+        if (typeof(Module['SDL3']) === 'undefined') {
+            Module['SDL3'] = {};
+        }
+    });
+#endif
+
     SDL_InitMainThread();
 
 #ifdef SDL_USE_LIBDBUS

+ 0 - 3
src/audio/dummy/SDL_dummyaudio.c

@@ -116,9 +116,6 @@ static bool DUMMYAUDIO_Init(SDL_AudioDriverImpl *impl)
     // on Emscripten without threads, we just fire a repeating timer to consume audio.
     #if defined(SDL_PLATFORM_EMSCRIPTEN) && !defined(__EMSCRIPTEN_PTHREADS__)
     MAIN_THREAD_EM_ASM({
-        if (typeof(Module['SDL3']) === 'undefined') {
-            Module['SDL3'] = {};
-        }
         Module['SDL3'].dummy_audio = {};
         Module['SDL3'].dummy_audio.timers = [];
         Module['SDL3'].dummy_audio.timers[0] = undefined;

+ 0 - 3
src/audio/emscripten/SDL_emscriptenaudio.c

@@ -151,9 +151,6 @@ static bool EMSCRIPTENAUDIO_OpenDevice(SDL_AudioDevice *device)
 
     // create context
     const bool result = MAIN_THREAD_EM_ASM_INT({
-        if (typeof(Module['SDL3']) === 'undefined') {
-            Module['SDL3'] = {};
-        }
         var SDL3 = Module['SDL3'];
         if (typeof(SDL3.audio_playback) === 'undefined') {
             SDL3.audio_playback = {};

+ 0 - 3
src/camera/emscripten/SDL_camera_emscripten.c

@@ -247,9 +247,6 @@ static void EMSCRIPTENCAMERA_DetectDevices(void)
 static bool EMSCRIPTENCAMERA_Init(SDL_CameraDriverImpl *impl)
 {
     MAIN_THREAD_EM_ASM({
-        if (typeof(Module['SDL3']) === 'undefined') {
-            Module['SDL3'] = {};
-        }
         Module['SDL3'].camera = {};
     });
 

+ 0 - 7
src/video/emscripten/SDL_emscriptenevents.c

@@ -957,9 +957,6 @@ EMSCRIPTEN_KEEPALIVE void Emscripten_HandlePointerGeneric(SDL_WindowData *window
 static void Emscripten_prep_pointer_event_callbacks(void)
 {
     MAIN_THREAD_EM_ASM({
-        if (typeof(Module['SDL3']) === 'undefined') {
-            Module['SDL3'] = {};
-        }
         var SDL3 = Module['SDL3'];
 
         if (SDL3.makePointerEventCStruct === undefined) {
@@ -1166,10 +1163,6 @@ static void Emscripten_set_drag_event_callbacks(SDL_WindowData *data)
         var target = document.querySelector(UTF8ToString($1));
         if (target) {
             var data = $0;
-
-            if (typeof(Module['SDL3']) === 'undefined') {
-                Module['SDL3'] = {};
-            }
             var SDL3 = Module['SDL3'];
 
             var makeDropEventCStruct = function(event) {

+ 0 - 1
src/video/emscripten/SDL_emscriptenframebuffer.c

@@ -75,7 +75,6 @@ bool Emscripten_UpdateWindowFramebuffer(SDL_VideoDevice *_this, SDL_Window *wind
         var canvas = document.querySelector(canvasId);
 
         //TODO: this should store a context per canvas
-        if (!Module['SDL3']) Module['SDL3'] = {};
         var SDL3 = Module['SDL3'];
         if (SDL3.ctxCanvas !== canvas) {
             SDL3.ctx = Browser.createContext(canvas, false, true);

+ 0 - 3
src/video/emscripten/SDL_emscriptenmouse.c

@@ -228,9 +228,6 @@ void Emscripten_InitMouse(void)
 
     // Add event listeners to track mouse events on the document
     MAIN_THREAD_EM_ASM({
-        if (!Module['SDL3']) {
-            Module['SDL3'] = {};
-        }
         var SDL3 = Module['SDL3'];
         SDL3['mouse_x'] = 0;
         SDL3['mouse_y'] = 0;

+ 0 - 4
src/video/emscripten/SDL_emscriptenvideo.c

@@ -101,10 +101,6 @@ static void Emscripten_ListenSystemTheme(void)
 {
     MAIN_THREAD_EM_ASM({
         if (window.matchMedia) {
-            if (typeof(Module['SDL3']) === 'undefined') {
-                Module['SDL3'] = {};
-            }
-
             var SDL3 = Module['SDL3'];
 
             SDL3.eventHandlerThemeChanged = function(event) {