From ddce089b7ed78658c91deb93a025e244f4b4c2ff Mon Sep 17 00:00:00 2001 From: Benjamin Berg Date: Wed, 7 Feb 2024 23:18:55 +0100 Subject: [PATCH 1/2] cc: Fix error passing in end-stream signal GError is not reference counted and as such it doesn't make sense for a signal handler to own the passed error instance. Instead, the error should be destroyed by the signal emitter and should be copied by the signal handler if it should be used elsewhere. --- src/cc/cc-http-server.c | 4 +++- src/nd-cc-sink.c | 1 - src/nd-dummy-cc-sink.c | 1 - 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/cc/cc-http-server.c b/src/cc/cc-http-server.c index ecac4ba..ae42547 100644 --- a/src/cc/cc-http-server.c +++ b/src/cc/cc-http-server.c @@ -117,6 +117,7 @@ gst_bus_message_cb (GstBus *bus, GstMessage *msg, CcHttpServer *self) g_signal_emit_by_name (self->multisocketsink, "clear"); cc_http_server_set_pipeline_state (self, GST_STATE_NULL); g_signal_emit_by_name (self, "end-stream", error_); + g_clear_error (&error_); } g_clear_error (&error); @@ -400,6 +401,7 @@ cc_http_server_set_pipeline_state (CcHttpServer *self, GstState state) gst_element_state_get_name (state)); g_warning ("CcHttpServer: %s", error_->message); g_signal_emit_by_name (self, "end-stream", error_); + g_clear_error(&error_); } } @@ -530,7 +532,7 @@ cc_http_server_class_init (CcHttpServerClass *klass) 0, NULL, NULL, NULL, G_TYPE_NONE, - 1, G_TYPE_POINTER); + 1, G_TYPE_ERROR); } void diff --git a/src/nd-cc-sink.c b/src/nd-cc-sink.c index aa45ced..e3230fd 100644 --- a/src/nd-cc-sink.c +++ b/src/nd-cc-sink.c @@ -208,7 +208,6 @@ static void end_stream_callback (gpointer userdata, GError *error) { g_debug ("NdCCSink: Error received: %s", error->message); - g_clear_error (&error); nd_cc_sink_sink_stop_stream (ND_SINK (userdata)); } diff --git a/src/nd-dummy-cc-sink.c b/src/nd-dummy-cc-sink.c index 672bf5d..513ebfd 100644 --- a/src/nd-dummy-cc-sink.c +++ b/src/nd-dummy-cc-sink.c @@ -173,7 +173,6 @@ static void end_stream_callback (gpointer userdata, GError *error) { g_debug ("NdDummyCCSink: Error received: %s", error->message); - g_clear_error (&error); nd_dummy_cc_sink_sink_stop_stream (ND_SINK (userdata)); } -- GitLab From 817f722bc0baffdc7d47b08c3efe909ce328463f Mon Sep 17 00:00:00 2001 From: Benjamin Berg Date: Wed, 7 Feb 2024 23:50:05 +0100 Subject: [PATCH 2/2] cc,wfd: Use g_message to print dummy sink information The dummy sinks are only useful if one knows how to connect. Printing it using g_debug means it is only visible if debug logging is enabled, which makes it kind of pointless. Change it to g_message so that the information is always printed out. --- src/nd-dummy-cc-sink.c | 4 ++-- src/nd-dummy-wfd-sink.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/nd-dummy-cc-sink.c b/src/nd-dummy-cc-sink.c index 513ebfd..9f94731 100644 --- a/src/nd-dummy-cc-sink.c +++ b/src/nd-dummy-cc-sink.c @@ -209,8 +209,8 @@ start_server (NdDummyCCSink *self) g_object_notify (G_OBJECT (self), "state"); } - g_debug ("NdDummyCCSink: You should now be able to connect to http://localhost:%d/", - cc_http_server_get_port (self->http_server)); + g_message ("NdDummyCCSink: You should now be able to connect to http://localhost:%d/", + cc_http_server_get_port (self->http_server)); return G_SOURCE_REMOVE; } diff --git a/src/nd-dummy-wfd-sink.c b/src/nd-dummy-wfd-sink.c index e5c5ad8..48cdcfa 100644 --- a/src/nd-dummy-wfd-sink.c +++ b/src/nd-dummy-wfd-sink.c @@ -248,7 +248,7 @@ nd_dummy_wfd_sink_sink_start_stream (NdSink *sink) if (self->server_source_id == 0) goto error; - g_debug ("NdDummyWFDSink: You should now be able to connect to rtsp://localhost:7236/wfd1.0"); + g_message ("NdDummyWFDSink: You should now be able to connect to rtsp://localhost:7236/wfd1.0"); g_signal_connect_object (self->server, "client-connected", -- GitLab