summaryrefslogtreecommitdiff
path: root/src/fruits/ctv
diff options
context:
space:
mode:
authorAndrew Opalach <andrew@akon.city> 2024-12-27 11:02:38 -0500
committerAndrew Opalach <andrew@akon.city> 2024-12-27 11:02:38 -0500
commit4af2d16c06a8a67ab225caa61ccd94df3c572bdc (patch)
tree6f5b364ea409c93aa9f0b795f252ac78c7d833f9 /src/fruits/ctv
parent9026e7f49f11e920eac666bd4159ec459b979623 (diff)
downloadcamu-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.c56
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);
}
}