From dbdcae9f8afb9964becd29200d7d6936e8269baa Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Wed, 25 Mar 2015 20:44:01 +0000 Subject: [PATCH] sna: Refresh properties even if we skip the detection probe Properties may refresh quickly, more often than the output status changes. We want to query the properties without doing a forced probe, so make sure we refresh the values if the user requests a property. Signed-off-by: Chris Wilson --- src/sna/sna_display.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c index d9b9923a..633133da 100644 --- a/src/sna/sna_display.c +++ b/src/sna/sna_display.c @@ -220,6 +220,7 @@ struct sna_output { uint32_t last_detect; uint32_t status; + bool update_properties; int num_modes; struct drm_mode_modeinfo *modes; @@ -2988,6 +2989,7 @@ sna_output_detect(xf86OutputPtr output) uint32_t now; DBG(("%s(%s:%d)\n", __FUNCTION__, output->name, sna_output->id)); + sna_output->update_properties = false; if (!sna_output->id) { DBG(("%s(%s) hiding due to lost connection\n", __FUNCTION__, output->name)); @@ -3001,6 +3003,7 @@ sna_output_detect(xf86OutputPtr output) DBG(("%s(%s) reporting cached status (since %dms): %d\n", __FUNCTION__, output->name, now - sna_output->last_detect, sna_output->status)); + sna_output->update_properties = true; return sna_output->status; } @@ -3675,6 +3678,7 @@ static void update_properties(struct sna *sna, struct sna_output *output) &compat_conn.conn); assert(compat_conn.conn.count_props == output->num_props); + output->update_properties = false; } static Bool @@ -3719,7 +3723,7 @@ sna_output_get_property(xf86OutputPtr output, Atom property) if (p->atoms == NULL || p->atoms[0] != property) continue; - if (0&&output->scrn->vtSema) + if (sna_output->update_properties && output->scrn->vtSema) update_properties(to_sna(output->scrn), sna_output); err = 0;