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
|
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
|
||||||
|
|
|
@ -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 <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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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>
|
||||||
|
|
Loading…
Reference in New Issue