summaryrefslogtreecommitdiffstats
path: root/video/out/vo_opengl.c
diff options
context:
space:
mode:
Diffstat (limited to 'video/out/vo_opengl.c')
-rw-r--r--video/out/vo_opengl.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/video/out/vo_opengl.c b/video/out/vo_opengl.c
index a9435eeac2..9318914dbd 100644
--- a/video/out/vo_opengl.c
+++ b/video/out/vo_opengl.c
@@ -276,6 +276,19 @@ static bool get_and_update_icc_profile(struct gl_priv *p, int *events)
return true;
}
+static void get_and_update_ambient_lighting(struct gl_priv *p, int *events)
+{
+ int lux;
+ int r = p->glctx->vo_control(p->vo, events, VOCTRL_GET_AMBIENT_LUX, &lux);
+ if (r == VO_TRUE) {
+ gl_video_set_ambient_lux(p->renderer, lux);
+ }
+ if (r != VO_TRUE && p->renderer_opts->gamma_auto) {
+ MP_ERR(p, "gamma_auto option provided, but querying for ambient"
+ " lighting is not supported on this platform\n");
+ }
+}
+
static bool reparse_cmdline(struct gl_priv *p, char *args)
{
struct m_config *cfg = NULL;
@@ -390,6 +403,10 @@ static int control(struct vo *vo, uint32_t request, void *data)
get_and_update_icc_profile(p, &events);
vo->want_redraw = true;
}
+ if (events & VO_EVENT_AMBIENT_LIGHTING_CHANGED) {
+ get_and_update_ambient_lighting(p, &events);
+ vo->want_redraw = true;
+ }
if (events & VO_EVENT_RESIZE)
resize(p);
if (events & VO_EVENT_EXPOSE)