This is the expected API to identify all the user listeners of the
library. You can keep the returned ID, a simple int, to remove the
listener from the object later if needed. With the current API, you
cannot remove graph listeners, but we could add the functions to do so
in the future.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
the_graph = ctx->graph;
ret = bt_graph_add_port_added_listener(ctx->graph,
graph_port_added_listener, ctx);
the_graph = ctx->graph;
ret = bt_graph_add_port_added_listener(ctx->graph,
graph_port_added_listener, ctx);
+ if (ret < 0) {
+ BT_LOGE_STR("Cannot add \"port added\" listener to graph.");
goto error;
}
ret = bt_graph_add_port_removed_listener(ctx->graph,
graph_port_removed_listener, ctx);
goto error;
}
ret = bt_graph_add_port_removed_listener(ctx->graph,
graph_port_removed_listener, ctx);
+ if (ret < 0) {
+ BT_LOGE_STR("Cannot add \"port removed\" listener to graph.");
goto error;
}
ret = bt_graph_add_ports_connected_listener(ctx->graph,
graph_ports_connected_listener, ctx);
goto error;
}
ret = bt_graph_add_ports_connected_listener(ctx->graph,
graph_ports_connected_listener, ctx);
+ if (ret < 0) {
+ BT_LOGE_STR("Cannot add \"ports connected\" listener to graph.");
goto error;
}
ret = bt_graph_add_ports_disconnected_listener(ctx->graph,
graph_ports_disconnected_listener, ctx);
goto error;
}
ret = bt_graph_add_ports_disconnected_listener(ctx->graph,
graph_ports_disconnected_listener, ctx);
+ if (ret < 0) {
+ BT_LOGE_STR("Cannot add \"ports disconnected\" listener to graph.");
*/
extern enum bt_graph_status bt_graph_consume(struct bt_graph *graph);
*/
extern enum bt_graph_status bt_graph_consume(struct bt_graph *graph);
-extern enum bt_graph_status bt_graph_add_port_added_listener(
- struct bt_graph *graph,
+extern int bt_graph_add_port_added_listener(struct bt_graph *graph,
bt_graph_port_added_listener listener, void *data);
bt_graph_port_added_listener listener, void *data);
-extern enum bt_graph_status bt_graph_add_port_removed_listener(
- struct bt_graph *graph,
+extern int bt_graph_add_port_removed_listener(struct bt_graph *graph,
bt_graph_port_removed_listener listener, void *data);
bt_graph_port_removed_listener listener, void *data);
-extern enum bt_graph_status bt_graph_add_ports_connected_listener(
- struct bt_graph *graph,
+extern int bt_graph_add_ports_connected_listener(struct bt_graph *graph,
bt_graph_ports_connected_listener listener, void *data);
bt_graph_ports_connected_listener listener, void *data);
-extern enum bt_graph_status bt_graph_add_ports_disconnected_listener(
- struct bt_graph *graph,
+extern int bt_graph_add_ports_disconnected_listener(struct bt_graph *graph,
bt_graph_ports_disconnected_listener listener, void *data);
extern enum bt_graph_status bt_graph_cancel(struct bt_graph *graph);
bt_graph_ports_disconnected_listener listener, void *data);
extern enum bt_graph_status bt_graph_cancel(struct bt_graph *graph);
-void add_listener(GArray *listeners, void *func, void *data)
+int add_listener(GArray *listeners, void *func, void *data)
{
struct bt_graph_listener listener = {
.func = func,
{
struct bt_graph_listener listener = {
.func = func,
};
g_array_append_val(listeners, listener);
};
g_array_append_val(listeners, listener);
+ return listeners->len - 1;
-enum bt_graph_status bt_graph_add_port_added_listener(
+int bt_graph_add_port_added_listener(
struct bt_graph *graph,
bt_graph_port_added_listener listener, void *data)
{
struct bt_graph *graph,
bt_graph_port_added_listener listener, void *data)
{
- enum bt_graph_status status = BT_GRAPH_STATUS_OK;
if (!graph) {
BT_LOGW_STR("Invalid parameter: graph is NULL.");
if (!graph) {
BT_LOGW_STR("Invalid parameter: graph is NULL.");
- status = BT_GRAPH_STATUS_INVALID;
goto end;
}
if (!listener) {
BT_LOGW_STR("Invalid parameter: listener is NULL.");
goto end;
}
if (!listener) {
BT_LOGW_STR("Invalid parameter: listener is NULL.");
- status = BT_GRAPH_STATUS_INVALID;
- add_listener(graph->listeners.port_added, listener, data);
+ ret = add_listener(graph->listeners.port_added, listener, data);
BT_LOGV("Added \"port added\" listener to graph: "
BT_LOGV("Added \"port added\" listener to graph: "
- "graph-addr=%p, listener-addr=%p", graph, listener);
+ "graph-addr=%p, listener-addr=%p, pos=%d",
+ graph, listener, ret);
-enum bt_graph_status bt_graph_add_port_removed_listener(
+int bt_graph_add_port_removed_listener(
struct bt_graph *graph,
bt_graph_port_removed_listener listener, void *data)
{
struct bt_graph *graph,
bt_graph_port_removed_listener listener, void *data)
{
- enum bt_graph_status status = BT_GRAPH_STATUS_OK;
if (!graph) {
BT_LOGW_STR("Invalid parameter: graph is NULL.");
if (!graph) {
BT_LOGW_STR("Invalid parameter: graph is NULL.");
- status = BT_GRAPH_STATUS_INVALID;
goto end;
}
if (!listener) {
BT_LOGW_STR("Invalid parameter: listener is NULL.");
goto end;
}
if (!listener) {
BT_LOGW_STR("Invalid parameter: listener is NULL.");
- status = BT_GRAPH_STATUS_INVALID;
- add_listener(graph->listeners.port_removed, listener, data);
+ ret = add_listener(graph->listeners.port_removed, listener, data);
BT_LOGV("Added \"port removed\" listener to graph: "
BT_LOGV("Added \"port removed\" listener to graph: "
- "graph-addr=%p, listener-addr=%p", graph, listener);
+ "graph-addr=%p, listener-addr=%p, pos=%d",
+ graph, listener, ret);
-enum bt_graph_status bt_graph_add_ports_connected_listener(
+int bt_graph_add_ports_connected_listener(
struct bt_graph *graph,
bt_graph_ports_connected_listener listener, void *data)
{
struct bt_graph *graph,
bt_graph_ports_connected_listener listener, void *data)
{
- enum bt_graph_status status = BT_GRAPH_STATUS_OK;
if (!graph) {
BT_LOGW_STR("Invalid parameter: graph is NULL.");
if (!graph) {
BT_LOGW_STR("Invalid parameter: graph is NULL.");
- status = BT_GRAPH_STATUS_INVALID;
goto end;
}
if (!listener) {
BT_LOGW_STR("Invalid parameter: listener is NULL.");
goto end;
}
if (!listener) {
BT_LOGW_STR("Invalid parameter: listener is NULL.");
- status = BT_GRAPH_STATUS_INVALID;
- add_listener(graph->listeners.ports_connected, listener, data);
+ ret = add_listener(graph->listeners.ports_connected, listener, data);
BT_LOGV("Added \"port connected\" listener to graph: "
BT_LOGV("Added \"port connected\" listener to graph: "
- "graph-addr=%p, listener-addr=%p", graph, listener);
+ "graph-addr=%p, listener-addr=%p, pos=%d",
+ graph, listener, ret);
-enum bt_graph_status bt_graph_add_ports_disconnected_listener(
+int bt_graph_add_ports_disconnected_listener(
struct bt_graph *graph,
bt_graph_ports_disconnected_listener listener, void *data)
{
struct bt_graph *graph,
bt_graph_ports_disconnected_listener listener, void *data)
{
- enum bt_graph_status status = BT_GRAPH_STATUS_OK;
if (!graph) {
BT_LOGW_STR("Invalid parameter: graph is NULL.");
if (!graph) {
BT_LOGW_STR("Invalid parameter: graph is NULL.");
- status = BT_GRAPH_STATUS_INVALID;
goto end;
}
if (!listener) {
BT_LOGW_STR("Invalid parameter: listener is NULL.");
goto end;
}
if (!listener) {
BT_LOGW_STR("Invalid parameter: listener is NULL.");
- status = BT_GRAPH_STATUS_INVALID;
- add_listener(graph->listeners.ports_disconnected, listener, data);
+ ret = add_listener(graph->listeners.ports_disconnected, listener, data);
BT_LOGV("Added \"port disconnected\" listener to graph: "
BT_LOGV("Added \"port disconnected\" listener to graph: "
- "graph-addr=%p, listener-addr=%p", graph, listener);
+ "graph-addr=%p, listener-addr=%p, pos=%d",
+ graph, listener, ret);
assert(graph);
ret = bt_graph_add_port_added_listener(graph, graph_port_added, NULL);
assert(graph);
ret = bt_graph_add_port_added_listener(graph, graph_port_added, NULL);
ret = bt_graph_add_port_removed_listener(graph, graph_port_removed,
NULL);
ret = bt_graph_add_port_removed_listener(graph, graph_port_removed,
NULL);
ret = bt_graph_add_ports_connected_listener(graph, graph_ports_connected,
NULL);
ret = bt_graph_add_ports_connected_listener(graph, graph_ports_connected,
NULL);
ret = bt_graph_add_ports_disconnected_listener(graph,
graph_ports_disconnected, NULL);
ret = bt_graph_add_ports_disconnected_listener(graph,
graph_ports_disconnected, NULL);
ret = bt_graph_add_port_added_listener(graph,
graph_port_added_listener_connect_to_avail_muxer_port,
&graph_listener_data);
ret = bt_graph_add_port_added_listener(graph,
graph_port_added_listener_connect_to_avail_muxer_port,
&graph_listener_data);
/* Connect source output ports to muxer input ports */
count = bt_component_source_get_output_port_count(src_comp);
/* Connect source output ports to muxer input ports */
count = bt_component_source_get_output_port_count(src_comp);
ret = bt_graph_add_port_added_listener(graph,
graph_port_added_listener_connect_to_avail_muxer_port,
&graph_listener_data);
ret = bt_graph_add_port_added_listener(graph,
graph_port_added_listener_connect_to_avail_muxer_port,
&graph_listener_data);
/* Connect source output ports to muxer input ports */
count = bt_component_source_get_output_port_count(src_comp);
/* Connect source output ports to muxer input ports */
count = bt_component_source_get_output_port_count(src_comp);