summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ico_ivi_shell.c65
1 files changed, 35 insertions, 30 deletions
diff --git a/src/ico_ivi_shell.c b/src/ico_ivi_shell.c
index 0a74799..5f7c376 100644
--- a/src/ico_ivi_shell.c
+++ b/src/ico_ivi_shell.c
@@ -1706,11 +1706,12 @@ get_default_output(struct weston_compositor *compositor)
static void
restore_output_mode(struct weston_output *output)
{
- if (output->current != output->origin ||
- (int32_t)output->scale != output->origin_scale)
+ if (output->current_mode != output->original_mode ||
+ (int32_t)output->current_scale != output->original_scale)
weston_output_switch_mode(output,
- output->origin,
- output->origin_scale);
+ output->original_mode,
+ output->original_scale,
+ WESTON_MODE_SWITCH_RESTORE_NATIVE);
}
static void
@@ -2062,7 +2063,8 @@ shell_configure_fullscreen(struct shell_surface *shsurf)
surf_height * surface->buffer_scale,
shsurf->fullscreen.framerate};
- if (weston_output_switch_mode(output, &mode, surface->buffer_scale) == 0) {
+ if (weston_output_switch_mode(output, &mode, surface->buffer_scale,
+ WESTON_MODE_SWITCH_SET_TEMPORARY) == 0) {
weston_surface_set_position(surface,
output->x - surf_x,
output->y - surf_y);
@@ -2277,13 +2279,14 @@ static void
popup_grab_motion(struct weston_pointer_grab *grab, uint32_t time)
{
struct weston_pointer *pointer = grab->pointer;
+ struct wl_resource *resource;
wl_fixed_t sx, sy;
- if (pointer->focus_resource) {
+ wl_resource_for_each(resource, &pointer->focus_resource_list) {
weston_surface_from_global_fixed(pointer->focus,
- pointer->x, pointer->y,
- &sx, &sy);
- wl_pointer_send_motion(pointer->focus_resource, time, sx, sy);
+ pointer->x, pointer->y,
+ &sx, &sy);
+ wl_pointer_send_motion(resource, time, sx, sy);
}
}
@@ -2294,18 +2297,21 @@ popup_grab_button(struct weston_pointer_grab *grab,
struct wl_resource *resource;
struct shell_seat *shseat =
container_of(grab, struct shell_seat, popup_grab.grab);
- struct wl_display *display;
+ struct wl_display *display = shseat->seat->compositor->wl_display;
enum wl_pointer_button_state state = state_w;
uint32_t serial;
+ struct wl_list *resource_list;
- resource = grab->pointer->focus_resource;
- if (resource) {
- display = wl_client_get_display(wl_resource_get_client(resource));
+ resource_list = &grab->pointer->focus_resource_list;
+ if (!wl_list_empty(resource_list)) {
serial = wl_display_get_serial(display);
- wl_pointer_send_button(resource, serial, time, button, state);
+ wl_resource_for_each(resource, resource_list) {
+ wl_pointer_send_button(resource, serial,
+ time, button, state);
+ }
} else if (state == WL_POINTER_BUTTON_STATE_RELEASED &&
- (shseat->popup_grab.initial_up ||
- time - shseat->seat->pointer->grab_time > 500)) {
+ (shseat->popup_grab.initial_up ||
+ time - shseat->seat->pointer->grab_time > 500)) {
popup_grab_end(grab->pointer);
}
@@ -4595,12 +4601,14 @@ debug_binding_key(struct weston_keyboard_grab *grab, uint32_t time,
uint32_t key, uint32_t state)
{
struct debug_binding_grab *db = (struct debug_binding_grab *) grab;
+ struct weston_compositor *ec = db->seat->compositor;
+ struct wl_display *display = ec->wl_display;
struct wl_resource *resource;
- struct wl_display *display;
uint32_t serial;
int send = 0, terminate = 0;
int check_binding = 1;
int i;
+ struct wl_list *resource_list;
if (state == WL_KEYBOARD_KEY_STATE_RELEASED) {
/* Do not run bindings on key releases */
@@ -4631,10 +4639,8 @@ debug_binding_key(struct weston_keyboard_grab *grab, uint32_t time,
}
if (check_binding) {
- struct weston_compositor *ec = db->seat->compositor;
-
if (weston_compositor_run_debug_binding(ec, db->seat, time,
- key, state)) {
+ key, state)) {
/* We ran a binding so swallow the press and keep the
* grab to swallow the released too. */
send = 0;
@@ -4649,11 +4655,9 @@ debug_binding_key(struct weston_keyboard_grab *grab, uint32_t time,
}
if (send) {
- resource = grab->keyboard->focus_resource;
-
- if (resource) {
- display = wl_client_get_display(wl_resource_get_client(resource));
- serial = wl_display_next_serial(display);
+ serial = wl_display_next_serial(display);
+ resource_list = &grab->keyboard->focus_resource_list;
+ wl_resource_for_each(resource, resource_list) {
wl_keyboard_send_key(resource, serial, time, key, state);
}
}
@@ -4672,13 +4676,14 @@ debug_binding_modifiers(struct weston_keyboard_grab *grab, uint32_t serial,
uint32_t mods_locked, uint32_t group)
{
struct wl_resource *resource;
+ struct wl_list *resource_list;
- resource = grab->keyboard->focus_resource;
- if (!resource)
- return;
+ resource_list = &grab->keyboard->focus_resource_list;
- wl_keyboard_send_modifiers(resource, serial, mods_depressed,
- mods_latched, mods_locked, group);
+ wl_resource_for_each(resource, resource_list) {
+ wl_keyboard_send_modifiers(resource, serial, mods_depressed,
+ mods_latched, mods_locked, group);
+ }
}
struct weston_keyboard_grab_interface debug_binding_keyboard_grab = {