Make it possible to call _init multiple times
authorJens Georg <mail@jensge.org>
Sat, 10 Nov 2012 18:47:59 +0000 (19:47 +0100)
committerJens Georg <mail@jensge.org>
Sat, 10 Nov 2012 18:47:59 +0000 (19:47 +0100)
libgssdp/gssdp-client.c

index c96286d..2415bd6 100644 (file)
@@ -95,6 +95,7 @@ struct _GSSDPClientPrivate {
         GSSDPSocketSource *search_socket;
 
         gboolean           active;
+        gboolean           initialized;
 };
 
 enum {
@@ -167,6 +168,10 @@ gssdp_client_initable_init (GInitable     *initable,
 {
         GSSDPClient *client = GSSDP_CLIENT (initable);
         GError *internal_error = NULL;
+
+        if (client->priv->initialized)
+                return TRUE;
+
 #ifdef G_OS_WIN32
         WSADATA wsaData = {0};
         if (WSAStartup (MAKEWORD (2,2), &wsaData) != 0) {
@@ -257,6 +262,8 @@ gssdp_client_initable_init (GInitable     *initable,
         gssdp_socket_source_attach (client->priv->multicast_socket);
         gssdp_socket_source_attach (client->priv->search_socket);
 
+        client->priv->initialized = TRUE;
+
         return TRUE;
 }