summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUcan, Emre (ADITG/SW1) <eucan@de.adit-jv.com>2017-03-02 08:47:33 +0000
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>2017-07-24 13:13:37 +0300
commitdeee858b0b199d8cfa8033a46d7078f30b23725e (patch)
tree9baf9e85fc74914b1cdd235dc9cdc0c44d867c52
parent3e5303daf4212334f1859a025a3de7449efa2b49 (diff)
ivi-shell: add_screen_remove_layer API
It is analagous to layer_remove_surface API. The API removes a layer from the render order of the screen. v3: add the new vfunc at the end of the ivi_layout_interface struct. Signed-off-by: Emre Ucan <eucan@de.adit-jv.com> Reviewed-by: Eugen Friedrich <friedrix@gmail.com> Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-rw-r--r--ivi-shell/ivi-layout-export.h10
-rw-r--r--ivi-shell/ivi-layout.c22
2 files changed, 32 insertions, 0 deletions
diff --git a/ivi-shell/ivi-layout-export.h b/ivi-shell/ivi-layout-export.h
index 2317d6e9..39ffde13 100644
--- a/ivi-shell/ivi-layout-export.h
+++ b/ivi-shell/ivi-layout-export.h
@@ -578,6 +578,16 @@ struct ivi_layout_interface {
*/
struct ivi_layout_surface *
(*get_surface)(struct weston_surface *surface);
+
+ /**
+ * \brief Remove a ivi_layer to a weston_output which is currently managed
+ * by the service
+ *
+ * \return IVI_SUCCEEDED if the method call was successful
+ * \return IVI_FAILED if the method call was failed
+ */
+ int32_t (*screen_remove_layer)(struct weston_output *output,
+ struct ivi_layout_layer *removelayer);
};
#ifdef __cplusplus
diff --git a/ivi-shell/ivi-layout.c b/ivi-shell/ivi-layout.c
index 298e18ea..8e4280ba 100644
--- a/ivi-shell/ivi-layout.c
+++ b/ivi-shell/ivi-layout.c
@@ -1664,6 +1664,27 @@ ivi_layout_screen_add_layer(struct weston_output *output,
}
static int32_t
+ivi_layout_screen_remove_layer(struct weston_output *output,
+ struct ivi_layout_layer *removelayer)
+{
+ struct ivi_layout_screen *iviscrn;
+
+ if (output == NULL || removelayer == NULL) {
+ weston_log("ivi_layout_screen_remove_layer: invalid argument\n");
+ return IVI_FAILED;
+ }
+
+ iviscrn = get_screen_from_output(output);
+
+ wl_list_remove(&removelayer->pending.link);
+ wl_list_init(&removelayer->pending.link);
+
+ iviscrn->order.dirty = 1;
+
+ return IVI_SUCCEEDED;
+}
+
+static int32_t
ivi_layout_screen_set_render_order(struct weston_output *output,
struct ivi_layout_layer **pLayer,
const int32_t number)
@@ -2088,6 +2109,7 @@ static struct ivi_layout_interface ivi_layout_interface = {
*/
.get_screens_under_layer = ivi_layout_get_screens_under_layer,
.screen_add_layer = ivi_layout_screen_add_layer,
+ .screen_remove_layer = ivi_layout_screen_remove_layer,
.screen_set_render_order = ivi_layout_screen_set_render_order,
/**