diff options
author | dec05eba <dec05eba@protonmail.com> | 2023-06-18 20:48:36 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2023-06-18 20:48:36 +0200 |
commit | 7f2099b3ca28b140ec8c9eed9a08c83c1e49c241 (patch) | |
tree | 7a9223b666f29357d6ee28d5a7e149f62f87f286 /kms/server/kms_server.c | |
parent | ba86d20b2db5cc268a55f1333462217b3c2e9370 (diff) |
Update readme
Diffstat (limited to 'kms/server/kms_server.c')
-rw-r--r-- | kms/server/kms_server.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/kms/server/kms_server.c b/kms/server/kms_server.c index 5aa6590..a15eb2b 100644 --- a/kms/server/kms_server.c +++ b/kms/server/kms_server.c @@ -167,28 +167,29 @@ static int kms_get_plane_ids(gsr_drm *drm) { } for(uint32_t i = 0; i < planes->count_planes && drm->num_plane_ids < GSR_KMS_MAX_PLANES; ++i) { + drmModeFB2Ptr drmfb = NULL; drmModePlanePtr plane = drmModeGetPlane(drm->drmfd, planes->planes[i]); if(!plane) { fprintf(stderr, "kms server warning: failed to get drmModePlanePtr for plane %#x: %s (%d)\n", planes->planes[i], strerror(errno), errno); continue; } - if(!plane->fb_id) { - drmModeFreePlane(plane); - continue; - } + if(!plane->fb_id) + goto next; if(plane_is_cursor_plane(drm->drmfd, plane->plane_id)) - continue; + goto next; // TODO: Fallback to getfb(1)? - drmModeFB2Ptr drmfb = drmModeGetFB2(drm->drmfd, plane->fb_id); + drmfb = drmModeGetFB2(drm->drmfd, plane->fb_id); if(drmfb) { drm->plane_ids[drm->num_plane_ids] = plane->plane_id; drm->connector_ids[drm->num_plane_ids] = get_connector_by_crtc_id(&c2crtc_map, plane->crtc_id); ++drm->num_plane_ids; drmModeFreeFB2(drmfb); } + + next: drmModeFreePlane(plane); } |