drm: record monitor status in output_poll_execute

In order to correctly report monitor connected status changes, the
previous monitor status must be recorded in the connector->status
value instead of being discarded.

Signed-off-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
Keith Packard 2010-11-26 10:45:59 -08:00 committed by Dave Airlie
parent bf9dc102e2
commit c5027dec02

View file

@ -848,7 +848,7 @@ static void output_poll_execute(struct work_struct *work)
struct delayed_work *delayed_work = to_delayed_work(work); struct delayed_work *delayed_work = to_delayed_work(work);
struct drm_device *dev = container_of(delayed_work, struct drm_device, mode_config.output_poll_work); struct drm_device *dev = container_of(delayed_work, struct drm_device, mode_config.output_poll_work);
struct drm_connector *connector; struct drm_connector *connector;
enum drm_connector_status old_status, status; enum drm_connector_status old_status;
bool repoll = false, changed = false; bool repoll = false, changed = false;
if (!drm_kms_helper_poll) if (!drm_kms_helper_poll)
@ -873,8 +873,9 @@ static void output_poll_execute(struct work_struct *work)
!(connector->polled & DRM_CONNECTOR_POLL_HPD)) !(connector->polled & DRM_CONNECTOR_POLL_HPD))
continue; continue;
status = connector->funcs->detect(connector, false); connector->status = connector->funcs->detect(connector, false);
if (old_status != status) DRM_DEBUG_KMS("connector status updated to %d\n", connector->status);
if (old_status != connector->status)
changed = true; changed = true;
} }