summaryrefslogtreecommitdiff
path: root/bsd-core
diff options
context:
space:
mode:
Diffstat (limited to 'bsd-core')
-rw-r--r--bsd-core/drm_drawable.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/bsd-core/drm_drawable.c b/bsd-core/drm_drawable.c
index 7c443522..268b956c 100644
--- a/bsd-core/drm_drawable.c
+++ b/bsd-core/drm_drawable.c
@@ -136,8 +136,10 @@ int drm_update_draw(struct drm_device *dev, void *data,
if (info->rects == NULL) {
info->rects = drm_alloc(sizeof(*info->rects) *
update->num, DRM_MEM_DRAWABLE);
- if (info->rects == NULL)
+ if (info->rects == NULL) {
+ DRM_SPINUNLOCK(&dev->drw_lock);
return ENOMEM;
+ }
info->num_rects = update->num;
}
/* For some reason the pointer arg is unsigned long long. */
erve_crtc(conn) plane = res.reserve_overlay_plane(crtc, fmt) mode = conn.get_default_mode() modeb = mode.to_blob(card) req = pykms.AtomicReq(card) req.add(conn, "CRTC_ID", crtc.id) req.add(crtc, {"ACTIVE": 1, "MODE_ID": modeb.id}) req.commit_sync(allow_modeset = True) NUM_BUFS = 5 fbs = [] for i in range(NUM_BUFS): fb = pykms.DumbFramebuffer(card, w, h, fmt) fbs.append(fb) vidpath = pykms.VideoDevice.get_capture_devices()[0] vid = pykms.VideoDevice(vidpath) cap = vid.capture_streamer cap.set_port(0) cap.set_format(fmt, w, h) cap.set_queue_size(NUM_BUFS) for fb in fbs: cap.queue(fb) cap.stream_on() def readvid(conn, mask): fb = cap.dequeue() if card.has_atomic: plane.set_props({ "FB_ID": fb.id, "CRTC_ID": crtc.id, "SRC_W": fb.width << 16, "SRC_H": fb.height << 16,