diff options
| author | 2024-12-27 11:02:38 -0500 | |
|---|---|---|
| committer | 2024-12-27 11:02:38 -0500 | |
| commit | 4af2d16c06a8a67ab225caa61ccd94df3c572bdc (patch) | |
| tree | 6f5b364ea409c93aa9f0b795f252ac78c7d833f9 /src/fruits/ctv | |
| parent | 9026e7f49f11e920eac666bd4159ec459b979623 (diff) | |
| download | camu-4af2d16c06a8a67ab225caa61ccd94df3c572bdc.tar.gz camu-4af2d16c06a8a67ab225caa61ccd94df3c572bdc.tar.bz2 camu-4af2d16c06a8a67ab225caa61ccd94df3c572bdc.zip | |
Fix some configurations, add sink loop mode
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src/fruits/ctv')
| -rw-r--r-- | src/fruits/ctv/ctv.c | 56 |
1 files changed, 33 insertions, 23 deletions
diff --git a/src/fruits/ctv/ctv.c b/src/fruits/ctv/ctv.c index c7bd250..b350c8a 100644 --- a/src/fruits/ctv/ctv.c +++ b/src/fruits/ctv/ctv.c @@ -8,7 +8,9 @@ #include "../../mixer/audio_null.h" #include "../../mixer/audio_miniaudio.h" #include "../../sink/common.h" -#include "../../server/common.c" +#include "../../server/common.h" + +#include "../common.h" struct ctv { struct nn_event_loop loop; @@ -44,37 +46,44 @@ static nn_thread_result NNWT_THREADCALL event_loop_thread(void *userdata) return 0; } +static void to_be_removed_inline_create_client(struct ctv *c, GLFMDisplay *display) +{ + c->scr.callback = screen_callback; + c->scr.userdata = c; + camu_screen_init(&c->scr, display); + camu_screen_create_window(&c->scr, "ctv"); + c->renderer = camu_renderer_lp_create(); + camu_screen_create_renderer(&c->scr, c->renderer); + + camu_mixer_init(&c->mixer, camu_audio_miniaudio_create()); + c->mixer.audio->configure_stream(c->mixer.audio, NULL); + camu_mixer_pick_format(&c->mixer, &c->mixer.fmt); + + nn_event_loop_init(&c->loop); + + camu_sink_init(&c->sink, &c->loop, &c->mixer, c->renderer); + al_str_from(&c->sink.default_list, "default"); + c->sink.callback = sink_callback; + c->sink.userdata = c; + camu_sink_connect(&c->sink, NNWT_SOCKET_TCP, CAMU_TEST_IP, CAMU_PORT, al_str_c("ctv")); + + nn_thread_create(&c->thread, event_loop_thread, c); +} + static void onSurfaceCreated(GLFMDisplay *display, s32 width, s32 height) { struct ctv *c = (struct ctv *)glfmGetUserData(display); (void)width; (void)height; + GLFMRenderingAPI api = glfmGetRenderingAPI(display); al_log_info("window_glfm", "Created GLES context of version %s.", api == GLFMRenderingAPIOpenGLES32 ? "3.2" : api == GLFMRenderingAPIOpenGLES31 ? "3.1" : api == GLFMRenderingAPIOpenGLES3 ? "3.0" : "2.0"); - if (!c->created) { - c->scr.callback = screen_callback; - c->scr.userdata = c; - camu_screen_init(&c->scr, display); - camu_screen_create_window(&c->scr, "ctv"); - c->renderer = camu_renderer_lp_create(); - camu_screen_create_renderer(&c->scr, c->renderer); - - camu_mixer_init(&c->mixer, camu_audio_miniaudio_create()); - c->mixer.audio->configure_stream(c->mixer.audio, NULL); - camu_mixer_pick_format(&c->mixer, &c->mixer.fmt); - - nn_event_loop_init(&c->loop); - - camu_sink_init(&c->sink, &c->loop, &c->mixer, c->renderer); - c->sink.callback = sink_callback; - c->sink.userdata = c; - camu_sink_connect(&c->sink, NNWT_SOCKET_TCP, CAMU_SERVER_IP, CAMU_PORT, al_str_c("ctv")); - - nn_thread_create(&c->thread, event_loop_thread, c); + if (!c->created) { + to_be_removed_inline_create_client(c, display); c->created = true; } } @@ -87,8 +96,9 @@ static void onSurfaceDestroyed(GLFMDisplay *display) static void onDraw(GLFMDisplay *display) { struct ctv *c = (struct ctv *)glfmGetUserData(display); - if (camu_screen_tick(&c->scr)) { - c->renderer->render(c->renderer, &c->scr); + bool force; + if (camu_screen_tick(&c->scr, &force)) { + c->renderer->render(c->renderer, &c->scr, force); } } |