X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fcompositor.c;h=e03b860a74a3e8328e0f0b69dd6ea52dacef1913;hb=f980c0d90329bf83a082c966d69b0015e34c218b;hp=9a3a825d9fb075ae4520e32380b12c9289d6ab01;hpb=a02c5606aa6621c9d3e0cc968180e7993201e2da;p=src%2Fagl-compositor.git diff --git a/src/compositor.c b/src/compositor.c index 9a3a825..e03b860 100644 --- a/src/compositor.c +++ b/src/compositor.c @@ -876,14 +876,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 +899,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) @@ -1303,18 +1307,25 @@ to_ivi_surface(struct weston_surface *surface) static void activate_binding(struct weston_seat *seat, - struct weston_view *focus_view) + struct weston_view *focus_view, uint32_t flags) { - struct weston_surface *focus = focus_view->surface; - struct weston_surface *main_surface = - weston_surface_get_main_surface(focus); - struct ivi_surface *surface; + struct weston_surface *focus_surface; + struct weston_surface *main_surface; + struct ivi_surface *ivi_surface; + struct ivi_shell_seat *ivi_seat = get_ivi_shell_seat(seat); + + if (!focus_view) + return; + + 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); + if (ivi_seat) + ivi_shell_activate_surface(ivi_surface, ivi_seat, flags); } static void @@ -1327,7 +1338,8 @@ click_to_activate_binding(struct weston_pointer *pointer, if (pointer->focus == NULL) return; - activate_binding(pointer->seat, pointer->focus); + activate_binding(pointer->seat, pointer->focus, + WESTON_ACTIVATE_FLAG_CLICKED); } static void @@ -1340,7 +1352,8 @@ touch_to_activate_binding(struct weston_touch *touch, if (touch->focus == NULL) return; - activate_binding(touch->seat, touch->focus); + activate_binding(touch->seat, touch->focus, + WESTON_ACTIVATE_FLAG_NONE); } static void @@ -1633,6 +1646,7 @@ int wet_main(int argc, char *argv[], const struct weston_testsuite_data *test_da wl_list_init(&ivi.split_pending_apps); wl_list_init(&ivi.remote_pending_apps); wl_list_init(&ivi.desktop_clients); + wl_list_init(&ivi.child_process_list); /* Prevent any clients we spawn getting our stdin */ os_fd_set_cloexec(STDIN_FILENO); @@ -1678,8 +1692,10 @@ int wet_main(int argc, char *argv[], const struct weston_testsuite_data *test_da backend = choose_default_backend(); } /* from [core] */ - weston_config_section_get_bool(section, "hide-cursor", &ivi.hide_cursor, false); - weston_config_section_get_bool(section, "activate-by-default", &ivi.activate_by_default, true); + weston_config_section_get_bool(section, "hide-cursor", + &ivi.hide_cursor, false); + weston_config_section_get_bool(section, "activate-by-default", + &ivi.activate_by_default, true); display = wl_display_create(); loop = wl_display_get_event_loop(display);