-+ weston_config_section_get_bool(section, "recorder", &recorded_output, 0);
-+ if (recorded_output) {
-+ char model[64];
-+ char *ip;
-+ int port;
-+
-+ weston_config_section_get_string(section, "ip", &ip, "<nil>");
-+ weston_config_section_get_int(section, "port", &port, -1);
-+ snprintf(model, 64, "Virtual RTP %s:%d", ip, port);
-+ output->base.model = strdup(model);
-+ } else {
-+ output->base.model = "Virtual Display";
-+ }
-+
-+ mode = b->configure_output(b->compositor, b->use_current_mode,
-+ output->base.name, &config);
-+
-+ if (mode == WESTON_DRM_BACKEND_OUTPUT_PREFERRED) {
-+ if (config.modeline && sscanf(config.modeline, "%dx%d@%d", &width, &height, &fps) >= 3)
-+ valid_mode = 1;
-+ }
-+
-+ weston_config_section_get_int(section, "scale", &scale, 1);
-+ weston_config_section_get_string(section, "transform", &s, "normal");
-+ if (weston_parse_transform(s, &transform) < 0)
-+ weston_log("Invalid transform \"%s\" for output %s\n",
-+ s, output->base.name);
-+ free(s);
-+
-+ if (parse_gbm_format(config.gbm_format, b->gbm_format, &output->gbm_format) == -1)
-+ output->gbm_format = b->gbm_format;
-+
-+ weston_config_section_get_string(section, "seat", &s, "");
-+ setup_output_seat_constraint(b, &output->base, s);
-+ free(s);
-+
-+ output->pipe = 0;
-+ b->crtc_allocator |= (1 << output->crtc_id);
-+ output->connector_id = 0;
-+ b->connector_allocator |= (1 << output->connector_id);
-+
-+ /* this is virtual output */
-+ output->virtual = 1;
-+
-+
-+ output->original_crtc = NULL;
-+ output->dpms_prop = NULL;
-+
-+ /* set static mode */
-+ if (valid_mode) {
-+ /* TODO: calculate proper mode settings to get desirable framerate */
-+ drmModeModeInfo static_drm_mode = {
-+ width * height * fps,
-+ width, 0, 0, width, width,
-+ height, 0, 0, height, height,
-+ fps * 1000,
-+ 0, //flags
-+ 0, //type
-+ "virtual"
-+ };
-+
-+ drm_mode = drm_output_add_mode(output, &static_drm_mode);
-+ if (!drm_mode)
-+ goto err_free;
-+
-+ drm_mode->base.refresh = fps * 1000;
-+ }
-+
-+ if (mode == WESTON_DRM_BACKEND_OUTPUT_OFF) {
-+ weston_log("Disabling output %s\n", output->base.name);
-+ drmModeSetCrtc(b->drm.fd, output->crtc_id,
-+ 0, 0, 0, 0, 0, NULL);
-+ goto err_free;
-+ }
-+
-+ current = drm_output_choose_initial_mode(b, output, mode, &config,
-+ &crtc_mode);
-+ if (!current)
-+ goto err_free;
-+ output->base.current_mode = ¤t->base;
-+ output->base.current_mode->flags |= WL_OUTPUT_MODE_CURRENT;
-+
-+ weston_output_init(&output->base, b->compositor, x, y,
-+ 100, 100 * height / width, /* FIXME: calculate proper mm_width and mm_height */
-+ config.base.transform, config.base.scale);