initial audio scaffolding

This commit is contained in:
Anthony Pesch 2016-10-15 16:13:56 -07:00
parent a8ab33ede4
commit d356d14569
6 changed files with 50 additions and 2 deletions

View File

@ -137,6 +137,7 @@ endif()
#-------------------------------------------------- #--------------------------------------------------
set(REDREAM_SOURCES set(REDREAM_SOURCES
src/audio/sdl_backend.c
src/core/assert.c src/core/assert.c
src/core/interval_tree.c src/core/interval_tree.c
src/core/list.c src/core/list.c

12
src/audio/backend.h Normal file
View File

@ -0,0 +1,12 @@
#ifndef AUDIO_BACKEND_H
#define AUDIO_BACKEND_H
struct audio_backend;
struct window;
void audio_queue(void *data, int samples);
struct audio_backend *audio_create(struct window *window);
void audio_destroy(struct audio_backend *audio);
#endif

20
src/audio/sdl_backend.c Normal file
View File

@ -0,0 +1,20 @@
#include "audio/backend.h"
#include "ui/window.h"
struct audio_backend {
struct window *window;
};
void audio_queue(void *data, int samples) {}
struct audio_backend *audio_create(struct window *window) {
struct audio_backend *audio =
(struct audio_backend *)calloc(1, sizeof(struct audio_backend));
audio->window = window;
return audio;
}
void audio_destroy(struct audio_backend *audio) {
free(audio);
}

View File

@ -1,6 +1,7 @@
#include <SDL.h> #include <SDL.h>
#include <stdlib.h> #include <stdlib.h>
#include "ui/window.h" #include "ui/window.h"
#include "audio/backend.h"
#include "core/assert.h" #include "core/assert.h"
#include "core/list.h" #include "core/list.h"
#include "ui/microprofile.h" #include "ui/microprofile.h"
@ -855,6 +856,14 @@ struct window *win_create() {
return NULL; return NULL;
} }
// setup audio backend
win->audio = audio_create(win);
if (!win->audio) {
LOG_WARNING("Audio backend creation failed");
win_destroy(win);
return NULL;
}
// setup video backend // setup video backend
win->video = video_create(win); win->video = video_create(win);
if (!win->video) { if (!win->video) {
@ -895,6 +904,10 @@ void win_destroy(struct window *win) {
video_destroy(win->video); video_destroy(win->video);
} }
if (win->audio) {
audio_destroy(win->audio);
}
if (win->handle) { if (win->handle) {
SDL_DestroyWindow(win->handle); SDL_DestroyWindow(win->handle);
} }

View File

@ -6,6 +6,7 @@
#include "core/list.h" #include "core/list.h"
#include "ui/keycode.h" #include "ui/keycode.h"
struct audio_backend;
struct imgui; struct imgui;
struct microprofile; struct microprofile;
struct nuklear; struct nuklear;
@ -36,6 +37,7 @@ struct window_listener {
struct window { struct window {
// public // public
struct SDL_Window *handle; struct SDL_Window *handle;
struct audio_backend *audio;
struct video_backend *video; struct video_backend *video;
struct nuklear *nk; struct nuklear *nk;
struct microprofile *mp; struct microprofile *mp;

View File

@ -1,5 +1,5 @@
#ifndef RENDERER_BACKEND_H #ifndef VIDEO_BACKEND_H
#define RENDERER_BACKEND_H #define VIDEO_BACKEND_H
#include <stdbool.h> #include <stdbool.h>
#include <stdint.h> #include <stdint.h>