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>
This commit is contained in:
parent
4b601e152e
commit
82051705b5
@ -783,6 +783,13 @@ struct ivi_controller_interface {
|
|||||||
int32_t x, int32_t y,
|
int32_t x, int32_t y,
|
||||||
int32_t width, int32_t height);
|
int32_t width, int32_t height);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* remove notification by callback on property changes of ivi_surface
|
||||||
|
*/
|
||||||
|
void (*surface_remove_notification_by_callback)(struct ivi_layout_surface *ivisurf,
|
||||||
|
surface_property_notification_func callback,
|
||||||
|
void *userdata);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@ -111,6 +111,9 @@ struct ivi_layout_notification_callback {
|
|||||||
void *data;
|
void *data;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void
|
||||||
|
remove_notification(struct wl_list *listener_list, void *callback, void *userdata);
|
||||||
|
|
||||||
static struct ivi_layout ivilayout = {0};
|
static struct ivi_layout ivilayout = {0};
|
||||||
|
|
||||||
struct ivi_layout *
|
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);
|
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
|
* 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_get_size = ivi_layout_surface_get_size,
|
||||||
.surface_dump = ivi_layout_surface_dump,
|
.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
|
int
|
||||||
|
Loading…
Reference in New Issue
Block a user