int radeondrm_show_screen(void *v, void *cookie, int waitok, void (*cb)(void *, int, int), void *cbarg) { struct rasops_info *ri = v; struct radeon_device *rdev = ri->ri_hw; if (cookie == ri->ri_active) return (0); rdev->switchcb = cb; rdev->switchcbarg = cbarg; if (cb) { workq_queue_task(NULL, &rdev->switchwqt, 0, radeondrm_doswitch, v, cookie); return (EAGAIN); } radeondrm_doswitch(v, cookie); return (0); }
int radeondrm_show_screen(void *v, void *cookie, int waitok, void (*cb)(void *, int, int), void *cbarg) { struct rasops_info *ri = v; struct radeon_device *rdev = ri->ri_hw; if (cookie == ri->ri_active) return (0); rdev->switchcb = cb; rdev->switchcbarg = cbarg; rdev->switchcookie = cookie; if (cb) { task_add(systq, &rdev->switchtask); return (EAGAIN); } radeondrm_doswitch(v); return (0); }