@@ -11947,14 +11947,18 @@ static void intel_modeset_update_connector_atomic_state(struct drm_device *dev)
struct intel_connector *connector;
for_each_intel_connector(dev, connector) {
+ if (connector->base.state->crtc) {
+ connector->base.state->best_encoder = NULL;
+ connector->base.state->crtc = NULL;
+ drm_connector_unreference(&connector->base);
+ }
+
if (connector->base.encoder) {
- connector->base.state->best_encoder =
- connector->base.encoder;
+ drm_connector_reference(&connector->base);
connector->base.state->crtc =
connector->base.encoder->crtc;
- } else {
- connector->base.state->best_encoder = NULL;
- connector->base.state->crtc = NULL;
+ connector->base.state->best_encoder =
+ connector->base.encoder;
}
}
}