backend/drm: call get_drm_connector_props() when creating connector

This function fetches property IDs. These don't change for the
lifetime of the connector. Instead of refreshing the property IDs
on hotplug (and leaving property IDs unset for disconnected
connectors), only fetch the property IDs when we create the
connector.
master
Simon Ser 9 months ago
parent feb54979c0
commit 836cb820d0

@ -1379,6 +1379,11 @@ static struct wlr_drm_connector *create_drm_connector(struct wlr_drm_backend *dr
wlr_conn->status = DRM_MODE_DISCONNECTED; wlr_conn->status = DRM_MODE_DISCONNECTED;
wlr_conn->id = drm_conn->connector_id; wlr_conn->id = drm_conn->connector_id;
if (!get_drm_connector_props(drm->fd, wlr_conn->id, &wlr_conn->props)) {
free(wlr_conn);
return false;
}
const char *conn_name = const char *conn_name =
drmModeGetConnectorTypeName(drm_conn->connector_type); drmModeGetConnectorTypeName(drm_conn->connector_type);
if (conn_name == NULL) { if (conn_name == NULL) {
@ -1511,10 +1516,6 @@ static bool connect_drm_connector(struct wlr_drm_connector *wlr_conn,
wlr_log(WLR_ERROR, "Unknown subpixel value: %d", (int)drm_conn->subpixel); wlr_log(WLR_ERROR, "Unknown subpixel value: %d", (int)drm_conn->subpixel);
} }
if (!get_drm_connector_props(drm->fd, wlr_conn->id, &wlr_conn->props)) {
return false;
}
uint64_t non_desktop; uint64_t non_desktop;
if (get_drm_prop(drm->fd, wlr_conn->id, if (get_drm_prop(drm->fd, wlr_conn->id,
wlr_conn->props.non_desktop, &non_desktop)) { wlr_conn->props.non_desktop, &non_desktop)) {

Loading…
Cancel
Save