mirror of https://github.com/mpv-player/mpv
vo_gpu_next: fix -Wembedded-directive warning
warning: embedding a directive within macro arguments has undefined behavior
This commit is contained in:
parent
59f23f5c29
commit
a6f8d1d961
|
@ -143,18 +143,17 @@ struct gpu_ctx *gpu_ctx_create(struct vo *vo, struct ra_ctx_opts *ctx_opts)
|
||||||
#if HAVE_GL && defined(PL_HAVE_OPENGL)
|
#if HAVE_GL && defined(PL_HAVE_OPENGL)
|
||||||
if (ra_is_gl(ctx->ra_ctx->ra)) {
|
if (ra_is_gl(ctx->ra_ctx->ra)) {
|
||||||
struct GL *gl = ra_gl_get(ctx->ra_ctx->ra);
|
struct GL *gl = ra_gl_get(ctx->ra_ctx->ra);
|
||||||
pl_opengl opengl = pl_opengl_create(ctx->pllog,
|
struct pl_opengl_params params = *pl_opengl_params(
|
||||||
pl_opengl_params(
|
|
||||||
.debug = ctx_opts->debug,
|
.debug = ctx_opts->debug,
|
||||||
.allow_software = ctx_opts->allow_sw,
|
.allow_software = ctx_opts->allow_sw,
|
||||||
.get_proc_addr_ex = (void *) gl->get_fn,
|
.get_proc_addr_ex = (void *) gl->get_fn,
|
||||||
.proc_ctx = gl->fn_ctx,
|
.proc_ctx = gl->fn_ctx,
|
||||||
# if HAVE_EGL
|
|
||||||
.egl_display = eglGetCurrentDisplay(),
|
|
||||||
.egl_context = eglGetCurrentContext(),
|
|
||||||
# endif
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
|
# if HAVE_EGL
|
||||||
|
params.egl_display = eglGetCurrentDisplay();
|
||||||
|
params.egl_context = eglGetCurrentContext();
|
||||||
|
# endif
|
||||||
|
pl_opengl opengl = pl_opengl_create(ctx->pllog, ¶ms);
|
||||||
if (!opengl)
|
if (!opengl)
|
||||||
goto err_out;
|
goto err_out;
|
||||||
ctx->gpu = opengl->gpu;
|
ctx->gpu = opengl->gpu;
|
||||||
|
|
|
@ -1002,14 +1002,15 @@ static void draw_frame(struct vo *vo, struct vo_frame *frame)
|
||||||
if (!should_draw || !pl_swapchain_start_frame(p->sw, &swframe)) {
|
if (!should_draw || !pl_swapchain_start_frame(p->sw, &swframe)) {
|
||||||
if (frame->current) {
|
if (frame->current) {
|
||||||
// Advance the queue state to the current PTS to discard unused frames
|
// Advance the queue state to the current PTS to discard unused frames
|
||||||
pl_queue_update(p->queue, NULL, pl_queue_params(
|
struct pl_queue_params qparams = *pl_queue_params(
|
||||||
.pts = frame->current->pts + pts_offset,
|
.pts = frame->current->pts + pts_offset,
|
||||||
.radius = pl_frame_mix_radius(¶ms),
|
.radius = pl_frame_mix_radius(¶ms),
|
||||||
.vsync_duration = can_interpolate ? frame->ideal_frame_vsync_duration : 0,
|
.vsync_duration = can_interpolate ? frame->ideal_frame_vsync_duration : 0,
|
||||||
|
);
|
||||||
#if PL_API_VER >= 340
|
#if PL_API_VER >= 340
|
||||||
.drift_compensation = 0,
|
qparams.drift_compensation = 0;
|
||||||
#endif
|
#endif
|
||||||
));
|
pl_queue_update(p->queue, NULL, &qparams);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1035,10 +1036,10 @@ static void draw_frame(struct vo *vo, struct vo_frame *frame)
|
||||||
.radius = pl_frame_mix_radius(¶ms),
|
.radius = pl_frame_mix_radius(¶ms),
|
||||||
.vsync_duration = can_interpolate ? frame->ideal_frame_vsync_duration : 0,
|
.vsync_duration = can_interpolate ? frame->ideal_frame_vsync_duration : 0,
|
||||||
.interpolation_threshold = opts->interpolation_threshold,
|
.interpolation_threshold = opts->interpolation_threshold,
|
||||||
#if PL_API_VER >= 340
|
|
||||||
.drift_compensation = 0,
|
|
||||||
#endif
|
|
||||||
);
|
);
|
||||||
|
#if PL_API_VER >= 340
|
||||||
|
qparams.drift_compensation = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Depending on the vsync ratio, we may be up to half of the vsync
|
// Depending on the vsync ratio, we may be up to half of the vsync
|
||||||
// duration before the current frame time. This works fine because
|
// duration before the current frame time. This works fine because
|
||||||
|
@ -1295,12 +1296,13 @@ static void video_screenshot(struct vo *vo, struct voctrl_screenshot *args)
|
||||||
// Retrieve the current frame from the frame queue
|
// Retrieve the current frame from the frame queue
|
||||||
struct pl_frame_mix mix;
|
struct pl_frame_mix mix;
|
||||||
enum pl_queue_status status;
|
enum pl_queue_status status;
|
||||||
status = pl_queue_update(p->queue, &mix, pl_queue_params(
|
struct pl_queue_params qparams = *pl_queue_params(
|
||||||
.pts = p->last_pts,
|
.pts = p->last_pts,
|
||||||
|
);
|
||||||
#if PL_API_VER >= 340
|
#if PL_API_VER >= 340
|
||||||
.drift_compensation = 0,
|
qparams.drift_compensation = 0;
|
||||||
#endif
|
#endif
|
||||||
));
|
status = pl_queue_update(p->queue, &mix, &qparams);
|
||||||
assert(status != PL_QUEUE_EOF);
|
assert(status != PL_QUEUE_EOF);
|
||||||
if (status == PL_QUEUE_ERR) {
|
if (status == PL_QUEUE_ERR) {
|
||||||
MP_ERR(vo, "Unknown error occurred while trying to take screenshot!\n");
|
MP_ERR(vo, "Unknown error occurred while trying to take screenshot!\n");
|
||||||
|
|
Loading…
Reference in New Issue