typedef enum bt_notification_iterator_status
(*bt_component_class_notification_iterator_init_method)(
- struct bt_private_component *private_component,
- struct bt_private_port *private_port,
- struct bt_private_notification_iterator *private_notification_iterator);
+ struct bt_private_notification_iterator *private_notification_iterator,
+ struct bt_private_port *private_port);
typedef void (*bt_component_class_notification_iterator_finalize_method)(
struct bt_private_notification_iterator *private_notification_iterator);
if (init_method) {
enum bt_notification_iterator_status status = init_method(
- bt_private_component_from_component(upstream_component),
- bt_private_port_from_port(upstream_port),
- bt_private_notification_iterator_from_notification_iterator(iterator));
+ bt_private_notification_iterator_from_notification_iterator(iterator),
+ bt_private_port_from_port(upstream_port));
if (status < 0) {
goto error;
}
}
struct bt_private_port *
-bt_private_component_filter_get_default_private_input_port(
+bt_private_component_filter_get_default_input_private_port(
struct bt_private_component *private_component)
{
return bt_private_port_from_port(
}
struct bt_private_port *
-bt_private_component_filter_get_default_private_output_port(
+bt_private_component_filter_get_default_output_private_port(
struct bt_private_component *private_component)
{
return bt_private_port_from_port(
return bt_get(iterator->component);
}
+struct bt_private_component *
+bt_private_notification_iterator_get_private_component(
+ struct bt_private_notification_iterator *private_iterator)
+{
+ return bt_private_component_from_component(
+ bt_notification_iterator_get_component(
+ bt_notification_iterator_from_private(private_iterator)));
+}
+
enum bt_notification_iterator_status bt_notification_iterator_seek_time(
struct bt_notification_iterator *iterator,
enum bt_notification_iterator_seek_origin seek_origin,
}
enum bt_notification_iterator_status ctf_fs_iterator_init(
- struct bt_private_component *source,
- struct bt_private_port *port,
- struct bt_private_notification_iterator *it)
+ struct bt_private_notification_iterator *it,
+ struct bt_private_port *port)
{
struct ctf_fs_iterator *ctf_it;
struct ctf_fs_component *ctf_fs;
+ struct bt_private_component *source =
+ bt_private_notification_iterator_get_private_component(it);
enum bt_notification_iterator_status ret = BT_NOTIFICATION_ITERATOR_STATUS_OK;
assert(source && it);
goto error;
}
-end:
- return ret;
+ goto end;
+
error:
(void) bt_private_notification_iterator_set_user_data(it, NULL);
ctf_fs_iterator_destroy_data(ctf_it);
- goto end;
+
+end:
+ bt_put(source);
+ return ret;
}
static
BT_HIDDEN
enum bt_notification_iterator_status ctf_fs_iterator_init(
- struct bt_private_component *source,
- struct bt_private_port *port,
- struct bt_private_notification_iterator *it);
+ struct bt_private_notification_iterator *it,
+ struct bt_private_port *port);
void ctf_fs_iterator_finalize(struct bt_private_notification_iterator *it);
BT_HIDDEN
enum bt_notification_iterator_status trimmer_iterator_init(
- struct bt_private_component *component,
- struct bt_private_port *port,
- struct bt_private_notification_iterator *iterator)
+ struct bt_private_notification_iterator *iterator,
+ struct bt_private_port *port)
{
enum bt_notification_iterator_status ret =
BT_NOTIFICATION_ITERATOR_STATUS_OK;
enum bt_notification_iterator_status it_ret;
struct bt_private_port *input_port = NULL;
struct bt_private_connection *connection = NULL;
+ struct bt_private_component *component =
+ bt_private_notification_iterator_get_private_component(iterator);
struct trimmer_iterator *it_data = g_new0(struct trimmer_iterator, 1);
if (!it_data) {
goto end;
}
end:
+ bt_put(component);
bt_put(connection);
bt_put(input_port);
return ret;
BT_HIDDEN
enum bt_notification_iterator_status trimmer_iterator_init(
- struct bt_private_component *component,
- struct bt_private_port *port,
- struct bt_private_notification_iterator *iterator);
+ struct bt_private_notification_iterator *iterator,
+ struct bt_private_port *port);
BT_HIDDEN
void trimmer_iterator_finalize(struct bt_private_notification_iterator *it);
}
static enum bt_notification_iterator_status dummy_iterator_init_method(
- struct bt_private_component *private_component,
- struct bt_private_port *private_port,
- struct bt_private_notification_iterator *private_iterator)
+ struct bt_private_notification_iterator *private_iterator,
+ struct bt_private_port *private_port)
{
return BT_NOTIFICATION_ITERATOR_STATUS_OK;
}