X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Flayout.c;h=332b4d7ac3764db3640c7479c61e167c213f3a50;hb=refs%2Fchanges%2F66%2F28066%2F2;hp=5d24a1fc0c6373b94c8ed5267cedd22f5e82efb1;hpb=af1cda87d2ca69fe3aaf380bf7fbb5791d7499c5;p=src%2Fagl-compositor.git diff --git a/src/layout.c b/src/layout.c index 5d24a1f..332b4d7 100644 --- a/src/layout.c +++ b/src/layout.c @@ -151,17 +151,40 @@ ivi_panel_init(struct ivi_compositor *ivi, struct ivi_output *output, void ivi_layout_init(struct ivi_compositor *ivi, struct ivi_output *output) { - ivi_background_init(ivi, output); + bool use_default_area = true; - output->area.x = 0; - output->area.y = 0; - output->area.width = output->output->width; - output->area.height = output->output->height; + ivi_background_init(ivi, output); - ivi_panel_init(ivi, output, output->top); - ivi_panel_init(ivi, output, output->bottom); - ivi_panel_init(ivi, output, output->left); - ivi_panel_init(ivi, output, output->right); + if (output->area_activation.width || + output->area_activation.height || + output->area_activation.x || + output->area_activation.y) { + /* Sanity check target area is within output bounds */ + if ((output->area_activation.x + output->area_activation.width) < output->output->width || + (output->area_activation.y + output->area_activation.height) < output->output->height) { + weston_log("Using specified area for output %s, ignoring panels\n", + output->name); + output->area.x = output->area_activation.x; + output->area.y = output->area_activation.y; + output->area.width = output->area_activation.width; + output->area.height = output->area_activation.height; + use_default_area = false; + } else { + weston_log("Invalid activation-area position for output %s, ignoring\n", + output->name); + } + } + if (use_default_area) { + output->area.x = 0; + output->area.y = 0; + output->area.width = output->output->width; + output->area.height = output->output->height; + + ivi_panel_init(ivi, output, output->top); + ivi_panel_init(ivi, output, output->bottom); + ivi_panel_init(ivi, output, output->left); + ivi_panel_init(ivi, output, output->right); + } weston_compositor_schedule_repaint(ivi->compositor);