diff options
Diffstat (limited to 'video')
-rw-r--r-- | video/out/vo_opengl.c | 14 | ||||
-rw-r--r-- | video/out/x11_common.c | 3 |
2 files changed, 11 insertions, 6 deletions
diff --git a/video/out/vo_opengl.c b/video/out/vo_opengl.c index 9318914dbd..887a8d8fbd 100644 --- a/video/out/vo_opengl.c +++ b/video/out/vo_opengl.c @@ -254,15 +254,17 @@ static bool get_and_update_icc_profile(struct gl_priv *p, int *events) { if (p->icc_opts->profile_auto) { MP_VERBOSE(p, "Querying ICC profile...\n"); - bstr icc; + bstr icc = bstr0(NULL); int r = p->glctx->vo_control(p->vo, events, VOCTRL_GET_ICC_PROFILE, &icc); - if (r == VO_TRUE) { + if (r != VO_NOTAVAIL) { + if (r == VO_FALSE) { + MP_WARN(p, "Could not retrieve an ICC profile.\n"); + } else if (r == VO_NOTIMPL) { + MP_ERR(p, "icc-profile-auto not implemented on this platform.\n"); + } + gl_lcms_set_memory_profile(p->cms, &icc); - } else if (r == VO_NOTIMPL) { - MP_ERR(p, "icc-profile-auto not implemented on this platform.\n"); - } else { - MP_ERR(p, "Could not retrieve an ICC profile.\n"); } } diff --git a/video/out/x11_common.c b/video/out/x11_common.c index 50a4256c8f..3ae753a234 100644 --- a/video/out/x11_common.c +++ b/video/out/x11_common.c @@ -1703,6 +1703,8 @@ int vo_x11_control(struct vo *vo, int *events, int request, void *arg) return VO_TRUE; } case VOCTRL_GET_ICC_PROFILE: { + if (!x11->pseudo_mapped) + return VO_NOTAVAIL; int screen = 0; // xinerama screen number for (int n = 0; n < x11->num_displays; n++) { struct xrandr_display *disp = &x11->displays[n]; @@ -1717,6 +1719,7 @@ int vo_x11_control(struct vo *vo, int *events, int request, void *arg) mp_snprintf_cat(prop, sizeof(prop), "_%d", screen); x11->icc_profile_property = XAs(x11, prop); int len; + MP_VERBOSE(x11, "Retrieving ICC profile for display: %d\n", screen); void *icc = x11_get_property(x11, x11->rootwin, x11->icc_profile_property, XA_CARDINAL, 8, &len); if (!icc) |