ivi-shell: fit source rectangle of ivi-surface to the size of application content.

When application changes the size of its content, UI shall fit the source
rectangle, view area, to the size of its content to show whole content.

Signed-off-by: Nobuhiko Tanibata <nobuhiko_tanibata@xddp.denso.co.jp>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
dev
Nobuhiko Tanibata 10 years ago committed by Pekka Paalanen
parent bcff632727
commit 65160dcade
  1. 39
      ivi-shell/hmi-controller.c

@ -542,6 +542,45 @@ set_notification_configure_surface(struct ivi_layout_surface *ivisurf,
void *userdata)
{
struct hmi_controller *hmi_ctrl = userdata;
struct ivi_layout_layer *application_layer =
hmi_ctrl->application_layer.ivilayer;
struct weston_surface *surface;
struct ivi_layout_surface **ivisurfs;
int32_t length = 0;
int32_t i;
/* return if the surface is not application content */
if (is_surf_in_ui_widget(hmi_ctrl, ivisurf)) {
return;
}
/*
* if application changes size of wl_buffer. The source rectangle shall be
* fit to the size.
*/
surface = ivi_controller_interface->surface_get_weston_surface(ivisurf);
if (surface) {
ivi_controller_interface->surface_set_source_rectangle(
ivisurf, 0, 0, surface->width,
surface->height);
}
/*
* search if the surface is already added to layer.
* If not yet, it is newly invoded application to go to switch_mode.
*/
ivi_controller_interface->get_surfaces_on_layer(application_layer,
&length, &ivisurfs);
for (i = 0; i < length; i++) {
if (ivisurf == ivisurfs[i]) {
/*
* if it is non new invoked application, just call
* commit_changes to apply source_rectangle.
*/
ivi_controller_interface->commit_changes();
return;
}
}
switch_mode(hmi_ctrl, hmi_ctrl->layout_mode);
}

Loading…
Cancel
Save