gst/rtsp/gstrtspsrc.c: Call WSAStartup() and WSACleanup before using the Winsock...
authorOle André Vadla Ravnås <ole.andre.ravnas@tandberg.com>
Mon, 17 Mar 2008 15:56:01 +0000 (15:56 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Mon, 17 Mar 2008 15:56:01 +0000 (15:56 +0000)
Original commit message from CVS:
Patch by: Ole André Vadla Ravnås  <ole.andre.ravnas@tandberg.com>
* gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_init),
(gst_rtspsrc_finalize):
Call WSAStartup() and WSACleanup before using the Winsock API.
See #520808.

ChangeLog
gst/rtsp/gstrtspsrc.c

index a74776d..28ee005 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2008-03-17  Wim Taymans  <wim.taymans@collabora.co.uk>
+
+       Patch by: Ole André Vadla Ravnås  <ole.andre.ravnas@tandberg.com>
+
+       * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_init),
+       (gst_rtspsrc_finalize):
+       Call WSAStartup() and WSACleanup before using the Winsock API.
+       See #520808.
+
 2008-03-16  Stefan Kost  <ensonic@users.sf.net>
 
        * gst/avi/gstavidemux.c:
index d3811de..ca32b4b 100644 (file)
 
 #include "gstrtspsrc.h"
 
+#ifdef G_OS_WIN32
+#include <winsock2.h>
+#endif
+
 GST_DEBUG_CATEGORY_STATIC (rtspsrc_debug);
 #define GST_CAT_DEFAULT (rtspsrc_debug)
 
@@ -321,6 +325,14 @@ gst_rtspsrc_class_init (GstRTSPSrcClass * klass)
 static void
 gst_rtspsrc_init (GstRTSPSrc * src, GstRTSPSrcClass * g_class)
 {
+#ifdef G_OS_WIN32
+  WSADATA wsa_data;
+
+  if (WSAStartup (MAKEWORD (2, 2), &wsa_data) != 0) {
+    GST_ERROR_OBJECT (src, "WSAStartup failed: 0x%08x", WSAGetLastError ());
+  }
+#endif
+
   src->location = g_strdup (DEFAULT_LOCATION);
   src->url = NULL;
 
@@ -368,6 +380,10 @@ gst_rtspsrc_finalize (GObject * object)
   g_static_rec_mutex_free (rtspsrc->conn_rec_lock);
   g_free (rtspsrc->conn_rec_lock);
 
+#ifdef G_OS_WIN32
+  WSACleanup ();
+#endif
+
   G_OBJECT_CLASS (parent_class)->finalize (object);
 }