summaryrefslogtreecommitdiff
path: root/src/render
diff options
context:
space:
mode:
authorAndrew Opalach <andrew@akon.city> 2024-10-27 15:50:21 -0400
committerAndrew Opalach <andrew@akon.city> 2024-10-27 15:50:21 -0400
commit72eb0c6381f9406a4e45d23f65373d4936770433 (patch)
tree13e1303372f858a69bfa5324f0aa9d17428fc43a /src/render
parent831f260ba2f6bc89f0451f6cc628bd131913a363 (diff)
downloadcamu-72eb0c6381f9406a4e45d23f65373d4936770433.tar.gz
camu-72eb0c6381f9406a4e45d23f65373d4936770433.tar.bz2
camu-72eb0c6381f9406a4e45d23f65373d4936770433.zip
More synced list, another vcr fix
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src/render')
-rw-r--r--src/render/renderer_libplacebo.c38
1 files changed, 22 insertions, 16 deletions
diff --git a/src/render/renderer_libplacebo.c b/src/render/renderer_libplacebo.c
index eeef565..8dde7f5 100644
--- a/src/render/renderer_libplacebo.c
+++ b/src/render/renderer_libplacebo.c
@@ -204,27 +204,33 @@ static void renderer_lp_render(struct camu_renderer *renderer, struct camu_scree
struct camu_screen_video *video;
while (scr->videos.size > 0) {
- video = &al_array_last(scr->videos);
- if (camu_video_buffer_read(video->buf, &mix) && mix.frames) {
- target.crop = mix.frames[0]->crop;
- target.crop.x1 *= video->view.zoom / video->view.stretch;
- target.crop.y1 *= video->view.zoom * video->view.stretch;
- target.crop.x0 += video->view.x_offset;
- target.crop.y0 += video->view.y_offset;
- target.crop.x1 += video->view.x_offset;
- target.crop.y1 += video->view.y_offset;
- target.rotation = video->view.rotation;
- //lr->params.color_adjustment = pl_color_adjustment(
- // .saturation = 0.0
- //);
- pl_render_image_mix(lr->renderer, &mix, &target, &lr->params);
- break;
+ bool any_eof = false;
+ al_array_foreach_ptr(scr->videos, i, video) {
+ if (camu_video_buffer_read(video->buf, &mix) && mix.frames) {
+ target.crop = mix.frames[0]->crop;
+ target.crop.x1 *= video->view.zoom / video->view.stretch;
+ target.crop.y1 *= video->view.zoom * video->view.stretch;
+ target.crop.x0 += video->view.x_offset;
+ target.crop.y0 += video->view.y_offset;
+ target.crop.x1 += video->view.x_offset;
+ target.crop.y1 += video->view.y_offset;
+ target.rotation = video->view.rotation;
+ //lr->params.color_adjustment = pl_color_adjustment(
+ // .saturation = 0.0
+ //);
+ pl_render_image_mix(lr->renderer, &mix, &target, &lr->params);
+ } else {
+ any_eof = true;
+ }
+ }
+ if (any_eof) {
#ifdef CAMU_SCREEN_THREADED
- } else {
if (al_atomic_load(u8)(&scr->queued, AL_ATOMIC_RELAXED)) {
camu_screen_run_queue(scr);
}
#endif
+ } else {
+ break;
}
}