unsigned int mode;
struct kmscon_video *vid;
- if ((type == UTERM_MONITOR_FBDEV) != !!kmscon_conf.use_fbdev)
- return;
+ if (kmscon_conf.use_fbdev) {
+ if (type != UTERM_MONITOR_FBDEV &&
+ type != UTERM_MONITOR_FBDEV_DRM) {
+ log_debug("ignoring %s as it is not fbdev device",
+ node);
+ return;
+ }
+ } else {
+ if (type == UTERM_MONITOR_FBDEV_DRM) {
+ log_debug("ignoring %s as it is a DRM-fbdev device",
+ node);
+ return;
+ }
+ }
vid = malloc(sizeof(*vid));
if (!vid)
memset(vid, 0, sizeof(*vid));
vid->vdev = dev;
- if (kmscon_conf.use_fbdev)
+ if (type == UTERM_MONITOR_DRM) {
+ if (kmscon_conf.dumb)
+ mode = UTERM_VIDEO_DUMB;
+ else
+ mode = UTERM_VIDEO_DRM;
+ } else {
mode = UTERM_VIDEO_FBDEV;
- else if (kmscon_conf.dumb)
- mode = UTERM_VIDEO_DUMB;
- else
- mode = UTERM_VIDEO_DRM;
+ }
ret = uterm_video_new(&vid->video, seat->app->eloop, mode, node);
if (ret) {
if (!seat)
break;
if (ev->dev_type == UTERM_MONITOR_DRM ||
- ev->dev_type == UTERM_MONITOR_FBDEV)
+ ev->dev_type == UTERM_MONITOR_FBDEV ||
+ ev->dev_type == UTERM_MONITOR_FBDEV_DRM)
seat_add_video(seat, ev->dev, ev->dev_type,
ev->dev_node);
else if (ev->dev_type == UTERM_MONITOR_INPUT)
if (!seat)
break;
if (ev->dev_type == UTERM_MONITOR_DRM ||
- ev->dev_type == UTERM_MONITOR_FBDEV)
+ ev->dev_type == UTERM_MONITOR_FBDEV ||
+ ev->dev_type == UTERM_MONITOR_FBDEV_DRM)
seat_rm_video(seat, ev->dev);
else if (ev->dev_type == UTERM_MONITOR_INPUT)
uterm_input_remove_dev(seat->input, ev->dev_node);