X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fcompositor.c;h=d81fc16cbad9956cefe0846f290d4f9b828aba41;hb=refs%2Fheads%2Fneedlefish;hp=97f4f9b5193388e9436de96284e50c0ed5498bb0;hpb=8cc1032b2f55420280c87e6b2a2bd7020b554394;p=src%2Fagl-compositor.git diff --git a/src/compositor.c b/src/compositor.c index 97f4f9b..d81fc16 100644 --- a/src/compositor.c +++ b/src/compositor.c @@ -321,6 +321,23 @@ parse_transform(const char *transform, uint32_t *out) return -1; } +static int +parse_activation_area(const char *geometry, struct ivi_output *output) +{ + int n; + unsigned width, height, x, y; + + n = sscanf(geometry, "%ux%u+%u,%u", &width, &height, &x, &y); + if (n != 4) { + return -1; + } + output->area_activation.width = width; + output->area_activation.height = height; + output->area_activation.x = x; + output->area_activation.y = y; + return 0; +} + static int configure_output(struct ivi_output *output) { @@ -344,6 +361,10 @@ configure_output(struct ivi_output *output) if (parse_transform(t, &transform) < 0) weston_log("Invalid transform \"%s\" for output %s\n", t, output->name); + weston_config_section_get_string(section, "activation-area", &t, ""); + if (parse_activation_area(t, output) < 0) + weston_log("Invalid activation-area \"%s\" for output %s\n", + t, output->name); free(t); } @@ -876,14 +897,15 @@ load_drm_backend(struct ivi_compositor *ivi, int *argc, char *argv[]) int use_current_mode = 0; int use_pixman = 0; bool use_shadow; + bool without_input = false; int ret; const struct weston_option options[] = { { WESTON_OPTION_STRING, "seat", 0, &config.seat_id }, - { WESTON_OPTION_INTEGER, "tty", 0, &config.tty }, { WESTON_OPTION_STRING, "drm-device", 0, &config.specific_device }, { WESTON_OPTION_BOOLEAN, "current-mode", 0, &use_current_mode }, { WESTON_OPTION_BOOLEAN, "use-pixman", 0, &use_pixman }, + { WESTON_OPTION_BOOLEAN, "continue-without-input", false, &without_input } }; parse_options(options, ARRAY_LENGTH(options), argc, argv); @@ -898,6 +920,9 @@ load_drm_backend(struct ivi_compositor *ivi, int *argc, char *argv[]) weston_config_section_get_bool(section, "pixman-shadow", &use_shadow, 1); config.use_pixman_shadow = use_shadow; + if (without_input) + ivi->compositor->require_input = !without_input; + ret = weston_compositor_load_backend(ivi->compositor, WESTON_BACKEND_DRM, &config.base); if (ret < 0) @@ -1307,7 +1332,8 @@ activate_binding(struct weston_seat *seat, { struct weston_surface *focus_surface; struct weston_surface *main_surface; - struct ivi_surface *surface; + struct ivi_surface *ivi_surface; + struct ivi_shell_seat *ivi_seat = get_ivi_shell_seat(seat); if (!focus_view) return; @@ -1315,11 +1341,12 @@ activate_binding(struct weston_seat *seat, focus_surface = focus_view->surface; main_surface = weston_surface_get_main_surface(focus_surface); - surface = to_ivi_surface(main_surface); - if (!surface) + ivi_surface = to_ivi_surface(main_surface); + if (!ivi_surface) return; - weston_seat_set_keyboard_focus(seat, focus_surface); + if (ivi_seat) + ivi_shell_activate_surface(ivi_surface, ivi_seat, flags); } static void