Remove circular dependencies between libs, use callback function pointers instead
[mercenary-reloaded.git] / src / libsdl / sdl.c
index ad57dad..99178db 100644 (file)
@@ -30,6 +30,8 @@ static int sdl_initialized = 0;
 static int audio_initialized = 0;
 static SDL_Window *gl_window = NULL;
 static SDL_GLContext gl_context = NULL;
+static void (*keyboard_sdl)(int down, SDL_Keycode sym) = NULL;
+static void (*audio_sdl)(float *data, int len) = NULL;
 
 static void audio_cb(void __attribute__((unused)) *userdata, Uint8 *stream, int len)
 {
@@ -40,10 +42,13 @@ static void audio_cb(void __attribute__((unused)) *userdata, Uint8 *stream, int
        SDL_MixAudio(stream, (Uint8 *)audio_data, len, SDL_MIX_MAXVOLUME);
 }
 
-int init_sdl(const char *progname, int width, int height, int sound_samplerate, int sound_chunk)
+int init_sdl(const char *progname, int width, int height, int sound_samplerate, int sound_chunk, void (*keyboard)(int down, SDL_Keycode sym), void (*audio)(float *data, int len))
 {
        int rc;
 
+       keyboard_sdl = keyboard;
+       audio_sdl = audio;
+
        /* init SDL library */
        rc = SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO);
        if (rc < 0) {