summaryrefslogtreecommitdiffstats
path: root/video/out/vo_vaapi.c
diff options
context:
space:
mode:
Diffstat (limited to 'video/out/vo_vaapi.c')
-rw-r--r--video/out/vo_vaapi.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/video/out/vo_vaapi.c b/video/out/vo_vaapi.c
index 3c760ac07c..fa23c931c6 100644
--- a/video/out/vo_vaapi.c
+++ b/video/out/vo_vaapi.c
@@ -212,6 +212,8 @@ static bool render_to_screen(struct priv *p, struct mp_image *mpi)
if (surface == VA_INVALID_ID)
return false;
+ va_lock(p->mpvaapi);
+
for (int n = 0; n < MAX_OSD_PARTS; n++) {
struct vaapi_osd_part *part = &p->osd_parts[n];
if (part->active) {
@@ -261,6 +263,8 @@ static bool render_to_screen(struct priv *p, struct mp_image *mpi)
}
}
+ va_unlock(p->mpvaapi);
+
return true;
}
@@ -427,6 +431,8 @@ static void draw_osd(struct vo *vo)
if (!p->osd_format.fourcc)
return;
+ va_lock(p->mpvaapi);
+
struct mp_osd_res vid_res = osd_res_from_image_params(vo->params);
struct mp_osd_res *res;
@@ -439,6 +445,8 @@ static void draw_osd(struct vo *vo)
for (int n = 0; n < MAX_OSD_PARTS; n++)
p->osd_parts[n].active = false;
osd_draw(vo->osd, *res, pts, 0, osd_formats, draw_osd_cb, p);
+
+ va_unlock(p->mpvaapi);
}
static int get_displayattribtype(const char *name)
@@ -495,7 +503,9 @@ static int set_equalizer(struct priv *p, const char *name, int value)
return VO_NOTIMPL;
attr->value = ((value + 100) * r) / 200 + attr->min_value;
+ va_lock(p->mpvaapi);
status = vaSetDisplayAttributes(p->display, attr, 1);
+ va_unlock(p->mpvaapi);
if (!CHECK_VA_STATUS(p, "vaSetDisplayAttributes()"))
return VO_FALSE;
return VO_TRUE;