hmi-controller: activate and deactivate sruface
Activate when a surface is created and change focus when an active surface is removed. The Surface is added to layers when it is created, because it must be added to a layer to be active. Signed-off-by: Tomohito Esaki <etom@igel.co.jp>
This commit is contained in:
parent
0e082315d7
commit
7dbb166de6
|
@ -583,9 +583,25 @@ set_notification_remove_surface(struct wl_listener *listener, void *data)
|
||||||
struct hmi_controller *hmi_ctrl =
|
struct hmi_controller *hmi_ctrl =
|
||||||
wl_container_of(listener, hmi_ctrl,
|
wl_container_of(listener, hmi_ctrl,
|
||||||
surface_removed);
|
surface_removed);
|
||||||
(void)data;
|
struct ivi_layout_surface *ivisurf = data;
|
||||||
|
|
||||||
switch_mode(hmi_ctrl, hmi_ctrl->layout_mode);
|
switch_mode(hmi_ctrl, hmi_ctrl->layout_mode);
|
||||||
|
|
||||||
|
/* set focus */
|
||||||
|
if (hmi_ctrl->interface->surface_is_active(ivisurf)) {
|
||||||
|
struct ivi_layout_surface **pp_surface = NULL;
|
||||||
|
int32_t surface_length = 0;
|
||||||
|
int32_t i;
|
||||||
|
|
||||||
|
hmi_ctrl->interface->get_surfaces(&surface_length, &pp_surface);
|
||||||
|
|
||||||
|
for (i = 0; i < surface_length; i++) {
|
||||||
|
if (pp_surface[i] != ivisurf) {
|
||||||
|
hmi_ctrl->interface->surface_activate(pp_surface[i]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -643,6 +659,9 @@ set_notification_configure_surface(struct wl_listener *listener, void *data)
|
||||||
ivisurfs = NULL;
|
ivisurfs = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hmi_ctrl->interface->layer_add_surface(application_layer, ivisurf);
|
||||||
|
hmi_ctrl->interface->surface_activate(ivisurf);
|
||||||
|
|
||||||
switch_mode(hmi_ctrl, hmi_ctrl->layout_mode);
|
switch_mode(hmi_ctrl, hmi_ctrl->layout_mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -678,7 +697,9 @@ set_notification_configure_desktop_surface(struct wl_listener *listener, void *d
|
||||||
0, surface->width, surface->height);
|
0, surface->width, surface->height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hmi_ctrl->interface->surface_activate(ivisurf);
|
||||||
hmi_ctrl->interface->commit_changes();
|
hmi_ctrl->interface->commit_changes();
|
||||||
|
|
||||||
switch_mode(hmi_ctrl, hmi_ctrl->layout_mode);
|
switch_mode(hmi_ctrl, hmi_ctrl->layout_mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue