summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorYouness Alaoui <youness.alaoui@collabora.co.uk>2013-02-04 22:14:06 -0500
committerYouness Alaoui <youness.alaoui@collabora.co.uk>2013-02-04 22:14:06 -0500
commitb1528dae91d92d5576bec753c5e7ec16f5ec0c8e (patch)
treeec0797290c1a181ba3b13dc7d0780bf02bc7acf8 /examples
parent6eb3fc6857124691cfc3f85b72b4d9d189b97408 (diff)
downloadlibnice-b1528dae91d92d5576bec753c5e7ec16f5ec0c8e.tar.gz
Fix/clean threaded-example
Diffstat (limited to 'examples')
-rw-r--r--examples/threaded-example.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/examples/threaded-example.c b/examples/threaded-example.c
index 683097e..7c125f2 100644
--- a/examples/threaded-example.c
+++ b/examples/threaded-example.c
@@ -45,7 +45,6 @@
#include <agent.h>
static GMainLoop *gloop;
-static GIOChannel* io_stdin;
static gchar *stun_addr = NULL;
static guint stun_port;
static gboolean controlling;
@@ -104,15 +103,14 @@ main(int argc, char *argv[])
g_type_init();
gloop = g_main_loop_new(NULL, FALSE);
- io_stdin = g_io_channel_unix_new(fileno(stdin));
+ // Run the mainloop and the example thread
exit_thread = FALSE;
gloopthread = g_thread_new("example thread", &example_thread, NULL);
g_main_loop_run (gloop);
exit_thread = TRUE;
g_main_loop_unref(gloop);
- g_io_channel_unref (io_stdin);
g_thread_join (gloopthread);
g_thread_unref (gloopthread);
@@ -124,10 +122,13 @@ example_thread(void *data)
{
NiceAgent *agent;
NiceCandidate *local, *remote;
+ GIOChannel* io_stdin;
guint stream_id;
gchar *line = NULL;
int rval;
+ io_stdin = g_io_channel_unix_new(fileno(stdin));
+
// Create the nice agent
agent = nice_agent_new(g_main_loop_get_context (gloop),
NICE_COMPATIBILITY_RFC5245);
@@ -188,8 +189,7 @@ example_thread(void *data)
// Parse remote candidate list and set it on the agent
rval = parse_remote_data(agent, stream_id, 1, line);
if (rval == EXIT_SUCCESS) {
- // Return FALSE so we stop listening to stdin since we parsed the
- // candidates correctly
+ g_free (line);
break;
} else {
fprintf(stderr, "ERROR: failed to parse remote data\n");
@@ -240,6 +240,7 @@ example_thread(void *data)
}
end:
+ g_io_channel_unref (io_stdin);
g_object_unref(agent);
g_main_loop_quit (gloop);