struct drm_mode_crtc crtc;
drmModeCrtcPtr r;
- crtc.count_connectors = 0;
- crtc.connectors = 0;
- crtc.count_possibles = 0;
- crtc.possibles = 0;
crtc.crtc_id = crtcId;
if (ioctl(fd, DRM_IOCTL_MODE_GETCRTC, &crtc))
memcpy(&r->mode, &crtc.mode, sizeof(struct drm_mode_modeinfo));
r->buffer_id = crtc.fb_id;
r->gamma_size = crtc.gamma_size;
- r->count_connectors = crtc.count_connectors;
- r->count_possibles = crtc.count_possibles;
- /* TODO we realy should test if these alloc & cpy fails. */
- r->connectors = crtc.connectors;
- r->possibles = crtc.possibles;
-
return r;
}
if (!(r = drmMalloc(sizeof(*r))))
return 0;
+ r->encoder_id = enc.encoder_id;
+ r->crtc = enc.crtc;
r->encoder_type = enc.encoder_type;
r->crtcs = enc.crtcs;
r->clones = enc.clones;
}
r->connector_id = conn.connector;
- r->crtc = conn.crtc;
+ r->encoder = conn.encoder;
r->connection = conn.connection;
r->mmWidth = conn.mm_width;
r->mmHeight = conn.mm_height;
typedef struct _drmModeEncoder {
unsigned int encoder_id;
unsigned int encoder_type;
+ uint32_t crtc;
uint32_t crtcs;
uint32_t clones;
} drmModeEncoder, *drmModeEncoderPtr;
typedef struct _drmModeConnector {
unsigned int connector_id;
- unsigned int crtc; /**< Crtc currently connected to */
+ unsigned int encoder; /**< Crtc currently connected to */
unsigned int connector_type;
unsigned int connector_type_id;
drmModeConnection connection;
{
struct drm_mode_crtc *crtc_resp = data;
struct drm_crtc *crtc;
- struct drm_connector *connector;
- int ocount;
int ret = 0;
mutex_lock(&dev->mode_config.mutex);
drm_crtc_convert_to_umode(&crtc_resp->mode, &crtc->mode);
crtc_resp->mode_valid = 1;
- ocount = 0;
- list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
- if (connector->encoder->crtc == crtc)
- crtc_resp->connectors |= 1 << (ocount++);
- }
} else {
crtc_resp->mode_valid = 0;
printf("Connector: %d-%d\n", connector->connector_type, connector->connector_type_id);
printf("\tid : %i\n", id);
- printf("\tcrtc id : %i\n", connector->crtc);
+ printf("\tencoder id : %i\n", connector->encoder);
printf("\tconn : %s\n", getConnectionText(connector->connection));
printf("\tsize : %ix%i (mm)\n", connector->mmWidth, connector->mmHeight);
printf("\tcount_modes : %i\n", connector->count_modes);
for (i = 0; i < connector->count_encoders; i++) {
enc = drmModeGetEncoder(fd, connector->encoders[i]);
if (enc) {
- printf("Encoder: %d %d %d %d\n", enc->encoder_id, enc->encoder_type, enc->crtcs, enc->clones);
+ printf("Encoder: %d %d %d %d %d\n", enc->crtc, enc->encoder_id, enc->encoder_type, enc->crtcs, enc->clones);
}
}