Commit b1528dae authored by Youness Alaoui's avatar Youness Alaoui
Browse files

Fix/clean threaded-example

parent 6eb3fc68
...@@ -45,7 +45,6 @@ ...@@ -45,7 +45,6 @@
#include <agent.h> #include <agent.h>
static GMainLoop *gloop; static GMainLoop *gloop;
static GIOChannel* io_stdin;
static gchar *stun_addr = NULL; static gchar *stun_addr = NULL;
static guint stun_port; static guint stun_port;
static gboolean controlling; static gboolean controlling;
...@@ -104,15 +103,14 @@ main(int argc, char *argv[]) ...@@ -104,15 +103,14 @@ main(int argc, char *argv[])
g_type_init(); g_type_init();
gloop = g_main_loop_new(NULL, FALSE); 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; exit_thread = FALSE;
gloopthread = g_thread_new("example thread", &example_thread, NULL); gloopthread = g_thread_new("example thread", &example_thread, NULL);
g_main_loop_run (gloop); g_main_loop_run (gloop);
exit_thread = TRUE; exit_thread = TRUE;
g_main_loop_unref(gloop); g_main_loop_unref(gloop);
g_io_channel_unref (io_stdin);
g_thread_join (gloopthread); g_thread_join (gloopthread);
g_thread_unref (gloopthread); g_thread_unref (gloopthread);
...@@ -124,10 +122,13 @@ example_thread(void *data) ...@@ -124,10 +122,13 @@ example_thread(void *data)
{ {
NiceAgent *agent; NiceAgent *agent;
NiceCandidate *local, *remote; NiceCandidate *local, *remote;
GIOChannel* io_stdin;
guint stream_id; guint stream_id;
gchar *line = NULL; gchar *line = NULL;
int rval; int rval;
io_stdin = g_io_channel_unix_new(fileno(stdin));
// Create the nice agent // Create the nice agent
agent = nice_agent_new(g_main_loop_get_context (gloop), agent = nice_agent_new(g_main_loop_get_context (gloop),
NICE_COMPATIBILITY_RFC5245); NICE_COMPATIBILITY_RFC5245);
...@@ -188,8 +189,7 @@ example_thread(void *data) ...@@ -188,8 +189,7 @@ example_thread(void *data)
// Parse remote candidate list and set it on the agent // Parse remote candidate list and set it on the agent
rval = parse_remote_data(agent, stream_id, 1, line); rval = parse_remote_data(agent, stream_id, 1, line);
if (rval == EXIT_SUCCESS) { if (rval == EXIT_SUCCESS) {
// Return FALSE so we stop listening to stdin since we parsed the g_free (line);
// candidates correctly
break; break;
} else { } else {
fprintf(stderr, "ERROR: failed to parse remote data\n"); fprintf(stderr, "ERROR: failed to parse remote data\n");
...@@ -240,6 +240,7 @@ example_thread(void *data) ...@@ -240,6 +240,7 @@ example_thread(void *data)
} }
end: end:
g_io_channel_unref (io_stdin);
g_object_unref(agent); g_object_unref(agent);
g_main_loop_quit (gloop); g_main_loop_quit (gloop);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment