mirror of https://github.com/inolen/redream.git
initial audio scaffolding
This commit is contained in:
parent
a8ab33ede4
commit
d356d14569
|
@ -137,6 +137,7 @@ endif()
|
|||
#--------------------------------------------------
|
||||
|
||||
set(REDREAM_SOURCES
|
||||
src/audio/sdl_backend.c
|
||||
src/core/assert.c
|
||||
src/core/interval_tree.c
|
||||
src/core/list.c
|
||||
|
|
|
@ -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
|
|
@ -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);
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
#include <SDL.h>
|
||||
#include <stdlib.h>
|
||||
#include "ui/window.h"
|
||||
#include "audio/backend.h"
|
||||
#include "core/assert.h"
|
||||
#include "core/list.h"
|
||||
#include "ui/microprofile.h"
|
||||
|
@ -855,6 +856,14 @@ struct window *win_create() {
|
|||
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
|
||||
win->video = video_create(win);
|
||||
if (!win->video) {
|
||||
|
@ -895,6 +904,10 @@ void win_destroy(struct window *win) {
|
|||
video_destroy(win->video);
|
||||
}
|
||||
|
||||
if (win->audio) {
|
||||
audio_destroy(win->audio);
|
||||
}
|
||||
|
||||
if (win->handle) {
|
||||
SDL_DestroyWindow(win->handle);
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
#include "core/list.h"
|
||||
#include "ui/keycode.h"
|
||||
|
||||
struct audio_backend;
|
||||
struct imgui;
|
||||
struct microprofile;
|
||||
struct nuklear;
|
||||
|
@ -36,6 +37,7 @@ struct window_listener {
|
|||
struct window {
|
||||
// public
|
||||
struct SDL_Window *handle;
|
||||
struct audio_backend *audio;
|
||||
struct video_backend *video;
|
||||
struct nuklear *nk;
|
||||
struct microprofile *mp;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#ifndef RENDERER_BACKEND_H
|
||||
#define RENDERER_BACKEND_H
|
||||
#ifndef VIDEO_BACKEND_H
|
||||
#define VIDEO_BACKEND_H
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
|
|
Loading…
Reference in New Issue