ivi-shell: add new method to remove a callback to get notificaiton of ivi_layer property changes.

To get property changes of ivi_layer, callbacks can be registered.
However there was no API to remove a callback rather than removing all
callbacks by using layer_remove_notification.
layer_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>
This commit is contained in:
Nobuhiko Tanibata 2015-06-22 15:31:39 +09:00 committed by Pekka Paalanen
parent 82051705b5
commit db8efd1f26
2 changed files with 23 additions and 2 deletions

View File

@ -790,6 +790,13 @@ struct ivi_controller_interface {
surface_property_notification_func callback, surface_property_notification_func callback,
void *userdata); void *userdata);
/**
* \brief remove notification by callback on property changes of ivi_layer
*/
void (*layer_remove_notification_by_callback)(struct ivi_layout_layer *ivilayer,
layer_property_notification_func callback,
void *userdata);
}; };
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -1882,6 +1882,19 @@ ivi_layout_layer_remove_notification(struct ivi_layout_layer *ivilayer)
remove_all_notification(&ivilayer->property_changed.listener_list); remove_all_notification(&ivilayer->property_changed.listener_list);
} }
static void
ivi_layout_layer_remove_notification_by_callback(struct ivi_layout_layer *ivilayer,
layer_property_notification_func callback,
void *userdata)
{
if (ivilayer == NULL) {
weston_log("ivi_layout_layer_remove_notification_by_callback: invalid argument\n");
return;
}
remove_notification(&ivilayer->property_changed.listener_list, callback, userdata);
}
static void static void
ivi_layout_layer_remove(struct ivi_layout_layer *ivilayer) ivi_layout_layer_remove(struct ivi_layout_layer *ivilayer)
{ {
@ -2982,9 +2995,10 @@ static struct ivi_controller_interface ivi_controller_interface = {
.surface_dump = ivi_layout_surface_dump, .surface_dump = ivi_layout_surface_dump,
/** /**
* remove notification by callback on property changes of ivi_surface * remove notification by callback on property changes of ivi_surface/layer
*/ */
.surface_remove_notification_by_callback = ivi_layout_surface_remove_notification_by_callback .surface_remove_notification_by_callback = ivi_layout_surface_remove_notification_by_callback,
.layer_remove_notification_by_callback = ivi_layout_layer_remove_notification_by_callback
}; };
int int