diff options
| author | 2025-01-17 12:12:01 -0500 | |
|---|---|---|
| committer | 2025-01-17 12:12:01 -0500 | |
| commit | 37684729283f62fd7f1e74bc2b318dc9ad2cb695 (patch) | |
| tree | 2f5be73bf64ac6573e35e8f499515659472a14c9 /src/render | |
| parent | d1f1eb9b3713a450c0736caad17febae0721af4d (diff) | |
| download | camu-37684729283f62fd7f1e74bc2b318dc9ad2cb695.tar.gz camu-37684729283f62fd7f1e74bc2b318dc9ad2cb695.tar.bz2 camu-37684729283f62fd7f1e74bc2b318dc9ad2cb695.zip | |
Account for dependency changes, platform testing
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src/render')
| -rw-r--r-- | src/render/queue_libplacebo.c | 2 | ||||
| -rw-r--r-- | src/render/renderer.h | 2 | ||||
| -rw-r--r-- | src/render/renderer_libplacebo.c | 24 | ||||
| -rw-r--r-- | src/render/renderer_libplacebo.h | 1 |
4 files changed, 20 insertions, 9 deletions
diff --git a/src/render/queue_libplacebo.c b/src/render/queue_libplacebo.c index 861dd5e..22df3dc 100644 --- a/src/render/queue_libplacebo.c +++ b/src/render/queue_libplacebo.c @@ -219,7 +219,7 @@ static bool map_av_frame(pl_gpu gpu, pl_tex *tex, const struct pl_source_frame * ASS_Image *ass_frame = ass_render_frame(lq->ass_renderer, lq->ass_track, now, &change); if (ass_frame) { struct camu_overlay_lp *overlay = NULL; - if (lq->overlays.size > 0) { + if (lq->overlays.count > 0) { overlay = al_array_last(lq->overlays); } if (!overlay || change > 0) { diff --git a/src/render/renderer.h b/src/render/renderer.h index a9780e5..c78e1c1 100644 --- a/src/render/renderer.h +++ b/src/render/renderer.h @@ -39,7 +39,7 @@ struct camu_renderer { void *priv); struct camu_frame_queue *(*create_queue)(struct camu_renderer *); u32 (*get_latency)(struct camu_renderer *); - void (*resize)(struct camu_renderer *, s32 *, s32 *); + void (*resize)(struct camu_renderer *, s32 *, s32 *, bool); void (*render)(struct camu_renderer *, struct camu_screen *, bool); #ifdef CAMU_HAVE_FFMPEG s32 (*get_buffer2)(struct AVCodecContext *s, AVFrame *frame, s32 flags); diff --git a/src/render/renderer_libplacebo.c b/src/render/renderer_libplacebo.c index 3de0fdc..2539e1f 100644 --- a/src/render/renderer_libplacebo.c +++ b/src/render/renderer_libplacebo.c @@ -13,7 +13,7 @@ static f32 clear_color[4] = { 0.0f, 0.0f, 0.0f, 1.f }; -static void renderer_lp_resize(struct camu_renderer *renderer, s32 *width, s32 *height) +static void renderer_lp_resize(struct camu_renderer *renderer, s32 *width, s32 *height, bool double_swap) { struct camu_renderer_lp *lr = (struct camu_renderer_lp *)renderer; if (lr->swapchain) { @@ -22,14 +22,18 @@ static void renderer_lp_resize(struct camu_renderer *renderer, s32 *width, s32 * lr->have_frame = false; } pl_swapchain_resize(lr->swapchain, width, height); + lr->double_swap = double_swap; } } static void log_callback(void *userdata, enum pl_log_level level, const char *message) { (void)userdata; - (void)level; - al_log_info("render_libplacebo", message); + if (level < PL_LOG_INFO) { + al_log_info("render_libplacebo", message); + } else { + al_log_debug("render_libplacebo", message); + } } static bool renderer_lp_create_renderer(struct camu_renderer *renderer, s32 *width, s32 *height, @@ -140,9 +144,10 @@ static bool renderer_lp_create_renderer(struct camu_renderer *renderer, s32 *wid lr->renderer = pl_renderer_create(lr->logger, lr->gpu); - lr->have_frame = false; - pl_swapchain_resize(lr->swapchain, width, height); + lr->double_swap = false; + + lr->have_frame = false; al_memset(&lr->params, 0, sizeof(struct pl_render_params)); //lr->params = pl_render_fast_params; @@ -215,6 +220,11 @@ static void renderer_lp_render(struct camu_renderer *renderer, struct camu_scree } #endif + if (lr->double_swap) { + pl_swapchain_swap_buffers(lr->swapchain); + lr->double_swap = false; + } + if (!lr->have_frame) { struct pl_swapchain_frame frame; pl_swapchain_start_frame(lr->swapchain, &frame); @@ -229,7 +239,7 @@ static void renderer_lp_render(struct camu_renderer *renderer, struct camu_scree bool do_gpu_finish = false; struct camu_screen_video *video; - while (scr->videos.size > 0) { + while (scr->videos.count > 0) { bool any_eof = false; al_array_foreach_ptr(scr->videos, i, video) { bool weighted; @@ -269,7 +279,7 @@ static void renderer_lp_render(struct camu_renderer *renderer, struct camu_scree } } - if (al_array_is_empty(scr->videos) && !force) { + if (!scr->videos.count && !force) { return; } diff --git a/src/render/renderer_libplacebo.h b/src/render/renderer_libplacebo.h index 38407bb..a4bd40e 100644 --- a/src/render/renderer_libplacebo.h +++ b/src/render/renderer_libplacebo.h @@ -26,6 +26,7 @@ struct camu_renderer_lp { pl_gpu gpu; pl_log logger; pl_swapchain swapchain; + bool double_swap; struct pl_frame target; bool have_frame; pl_renderer renderer; |