summaryrefslogtreecommitdiff
path: root/src/render
diff options
context:
space:
mode:
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;
}
}