Signed-off-by: Bryce Harrington <br...@osg.samsung.com> --- src/compositor-drm.c | 93 ++++++++++++++++++++++++++++++++++++++++++++-------- src/compositor-drm.h | 41 ----------------------- src/main.c | 43 ------------------------ 3 files changed, 80 insertions(+), 97 deletions(-)
diff --git a/src/compositor-drm.c b/src/compositor-drm.c index 6ef706a..d129adc 100644 --- a/src/compositor-drm.c +++ b/src/compositor-drm.c @@ -75,6 +75,41 @@ #define GBM_BO_USE_CURSOR GBM_BO_USE_CURSOR_64X64 #endif +enum weston_drm_backend_output_mode { + /** The output is disabled */ + WESTON_DRM_BACKEND_OUTPUT_OFF, + + /** The output will use the current active mode */ + WESTON_DRM_BACKEND_OUTPUT_CURRENT, + + /** The output will use the preferred mode. A modeline can be provided + * by setting weston_backend_output_config::modeline in the form of + * "WIDTHxHEIGHT" or in the form of an explicit modeline calculated + * using e.g. the cvt tool. If a valid modeline is supplied it will be + * used, if invalid or NULL the preferred available mode will be used. */ + WESTON_DRM_BACKEND_OUTPUT_PREFERRED, +}; + +struct weston_drm_backend_output_config { + struct weston_backend_output_config base; + + /** The pixel format to be used by the output. Valid values are: + * - NULL - The format set at backend creation time will be used + * - "xrgb8888" + * - "rgb565" + * - "xrgb2101010" + */ + char *gbm_format; + + /** The seat to be used by the output. Set to NULL to use the + * default seat. */ + char *seat; + + /** The modeline to be used by the output. Refer to the documentation + * of WESTON_DRM_BACKEND_OUTPUT_PREFERRED for details. */ + char *modeline; +}; + struct drm_backend { struct weston_backend base; struct weston_compositor *compositor; @@ -121,16 +156,6 @@ struct drm_backend { int32_t cursor_width; int32_t cursor_height; - /** Callback used to configure the outputs. - * - * This function will be called by the backend when a new DRM - * output needs to be configured. - */ - enum weston_drm_backend_output_mode - (*configure_output)(struct weston_compositor *compositor, - bool use_current_mode, - const char *name, - struct weston_drm_backend_output_config *output_config); bool use_current_mode; }; @@ -2275,6 +2300,49 @@ connector_get_current_mode(drmModeConnector *connector, int drm_fd, return 0; } +static enum weston_drm_backend_output_mode +drm_configure_output(struct weston_compositor *c, + bool use_current_mode, + const char *name, + struct weston_drm_backend_output_config *config) +{ + struct weston_config *wc = weston_compositor_get_user_data(c); + struct weston_config_section *section; + char *s; + int scale; + enum weston_drm_backend_output_mode mode = + WESTON_DRM_BACKEND_OUTPUT_PREFERRED; + + section = weston_config_get_section(wc, "output", "name", name); + weston_config_section_get_string(section, "mode", &s, "preferred"); + if (strcmp(s, "off") == 0) { + free(s); + return WESTON_DRM_BACKEND_OUTPUT_OFF; + } + + if (use_current_mode || strcmp(s, "current") == 0) { + mode = WESTON_DRM_BACKEND_OUTPUT_CURRENT; + } else if (strcmp(s, "preferred") != 0) { + config->modeline = s; + s = NULL; + } + free(s); + + weston_config_section_get_int(section, "scale", &scale, 1); + config->base.scale = scale >= 1 ? scale : 1; + weston_config_section_get_string(section, "transform", &s, "normal"); + if (weston_parse_transform(s, &config->base.transform) < 0) + weston_log("Invalid transform \"%s\" for output %s\n", + s, name); + free(s); + + weston_config_section_get_string(section, + "gbm-format", &config->gbm_format, NULL); + weston_config_section_get_string(section, "seat", &config->seat, ""); + return mode; +} + + /** * Create and configure a Weston output structure * @@ -2321,8 +2389,8 @@ create_output_for_connector(struct drm_backend *b, output->base.serial_number = "unknown"; wl_list_init(&output->base.mode_list); - mode = b->configure_output(b->compositor, b->use_current_mode, - output->base.name, &config); + mode = drm_configure_output(b->compositor, b->use_current_mode, + output->base.name, &config); if (parse_gbm_format(config.gbm_format, b->gbm_format, &output->gbm_format) == -1) output->gbm_format = b->gbm_format; @@ -3059,7 +3127,6 @@ drm_backend_create(struct weston_compositor *compositor, b->sprites_are_broken = 1; b->compositor = compositor; b->use_pixman = config->use_pixman; - b->configure_output = config->configure_output; b->use_current_mode = config->use_current_mode; if (parse_gbm_format(config->gbm_format, GBM_FORMAT_XRGB8888, &b->gbm_format) < 0) diff --git a/src/compositor-drm.h b/src/compositor-drm.h index 3b2dc17..e57b742 100644 --- a/src/compositor-drm.h +++ b/src/compositor-drm.h @@ -36,37 +36,6 @@ extern "C" { #define WESTON_DRM_BACKEND_CONFIG_VERSION 1 -enum weston_drm_backend_output_mode { - /** The output is disabled */ - WESTON_DRM_BACKEND_OUTPUT_OFF, - /** The output will use the current active mode */ - WESTON_DRM_BACKEND_OUTPUT_CURRENT, - /** The output will use the preferred mode. A modeline can be provided - * by setting weston_backend_output_config::modeline in the form of - * "WIDTHxHEIGHT" or in the form of an explicit modeline calculated - * using e.g. the cvt tool. If a valid modeline is supplied it will be - * used, if invalid or NULL the preferred available mode will be used. */ - WESTON_DRM_BACKEND_OUTPUT_PREFERRED, -}; - -struct weston_drm_backend_output_config { - struct weston_backend_output_config base; - - /** The pixel format to be used by the output. Valid values are: - * - NULL - The format set at backend creation time will be used; - * - "xrgb8888"; - * - "rgb565" - * - "xrgb2101010" - */ - char *gbm_format; - /** The seat to be used by the output. Set to NULL to use the - * default seat. */ - char *seat; - /** The modeline to be used by the output. Refer to the documentation - * of WESTON_DRM_BACKEND_OUTPUT_PREFERRED for details. */ - char *modeline; -}; - /** The backend configuration struct. * * weston_drm_backend_config contains the configuration used by a DRM @@ -107,16 +76,6 @@ struct weston_drm_backend_config { */ char *gbm_format; - /** Callback used to configure the outputs. - * - * This function will be called by the backend when a new DRM - * output needs to be configured. - */ - enum weston_drm_backend_output_mode - (*configure_output)(struct weston_compositor *compositor, - bool use_current_mode, - const char *name, - struct weston_drm_backend_output_config *output_config); bool use_current_mode; }; diff --git a/src/main.c b/src/main.c index 21b7f5c..dcd5ee6 100644 --- a/src/main.c +++ b/src/main.c @@ -674,48 +674,6 @@ load_backend_new(struct weston_compositor *compositor, const char *backend, return backend_init(compositor, NULL, NULL, NULL, config_base); } -static enum weston_drm_backend_output_mode -drm_configure_output(struct weston_compositor *c, - bool use_current_mode, - const char *name, - struct weston_drm_backend_output_config *config) -{ - struct weston_config *wc = weston_compositor_get_user_data(c); - struct weston_config_section *section; - char *s; - int scale; - enum weston_drm_backend_output_mode mode = - WESTON_DRM_BACKEND_OUTPUT_PREFERRED; - - section = weston_config_get_section(wc, "output", "name", name); - weston_config_section_get_string(section, "mode", &s, "preferred"); - if (strcmp(s, "off") == 0) { - free(s); - return WESTON_DRM_BACKEND_OUTPUT_OFF; - } - - if (use_current_mode || strcmp(s, "current") == 0) { - mode = WESTON_DRM_BACKEND_OUTPUT_CURRENT; - } else if (strcmp(s, "preferred") != 0) { - config->modeline = s; - s = NULL; - } - free(s); - - weston_config_section_get_int(section, "scale", &scale, 1); - config->base.scale = scale >= 1 ? scale : 1; - weston_config_section_get_string(section, "transform", &s, "normal"); - if (weston_parse_transform(s, &config->base.transform) < 0) - weston_log("Invalid transform \"%s\" for output %s\n", - s, name); - free(s); - - weston_config_section_get_string(section, - "gbm-format", &config->gbm_format, NULL); - weston_config_section_get_string(section, "seat", &config->seat, ""); - return mode; -} - static int load_drm_backend(struct weston_compositor *c, const char *backend, int *argc, char **argv, struct weston_config *wc) @@ -745,7 +703,6 @@ load_drm_backend(struct weston_compositor *c, const char *backend, config->base.struct_version = WESTON_DRM_BACKEND_CONFIG_VERSION; config->base.struct_size = sizeof(struct weston_drm_backend_config); - config->configure_output = drm_configure_output; ret = load_backend_new(c, backend, (struct weston_backend_config *)config); -- 1.9.1 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/wayland-devel