summaryrefslogtreecommitdiff
path: root/ivi-shell/ivi-layout.c
diff options
context:
space:
mode:
authorNobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>2015-06-22 15:31:26 +0900
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>2015-06-23 15:57:15 +0300
commit82051705b50e93d988f27dfaea5d1af46e1b842b (patch)
tree06c233d1d89443a653924f3e02b5a09b3a80222b /ivi-shell/ivi-layout.c
parent4b601e152ec3d2d140f8748a066704957b85757a (diff)
downloadweston-82051705b50e93d988f27dfaea5d1af46e1b842b.tar.gz
ivi-shell: add new method to remove a callback to get notification of ivi_surface property changes.
To get property changes of ivi_surface, callbacks can be registered. However there was no API to remove a callback rather than remove all callbacks by using surface_remove_notification. surface_remove_notification_by_callback can do it. Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp> Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Diffstat (limited to 'ivi-shell/ivi-layout.c')
-rw-r--r--ivi-shell/ivi-layout.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/ivi-shell/ivi-layout.c b/ivi-shell/ivi-layout.c
index d7108b60..6dc57233 100644
--- a/ivi-shell/ivi-layout.c
+++ b/ivi-shell/ivi-layout.c
@@ -111,6 +111,9 @@ struct ivi_layout_notification_callback {
void *data;
};
+static void
+remove_notification(struct wl_list *listener_list, void *callback, void *userdata);
+
static struct ivi_layout ivilayout = {0};
struct ivi_layout *
@@ -319,6 +322,19 @@ ivi_layout_surface_remove_notification(struct ivi_layout_surface *ivisurf)
remove_all_notification(&ivisurf->property_changed.listener_list);
}
+static void
+ivi_layout_surface_remove_notification_by_callback(struct ivi_layout_surface *ivisurf,
+ surface_property_notification_func callback,
+ void *userdata)
+{
+ if (ivisurf == NULL) {
+ weston_log("ivi_layout_surface_remove_notification_by_callback: invalid argument\n");
+ return;
+ }
+
+ remove_notification(&ivisurf->property_changed.listener_list, callback, userdata);
+}
+
/**
* Called at destruction of wl_surface/ivi_surface
*/
@@ -2964,6 +2980,11 @@ static struct ivi_controller_interface ivi_controller_interface = {
*/
.surface_get_size = ivi_layout_surface_get_size,
.surface_dump = ivi_layout_surface_dump,
+
+ /**
+ * remove notification by callback on property changes of ivi_surface
+ */
+ .surface_remove_notification_by_callback = ivi_layout_surface_remove_notification_by_callback
};
int