From 9503daa56ab5a33bad27bcb0e5f3bc492e3963cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Mon, 7 May 2012 23:57:08 +0100 Subject: [PATCH] rfbsrc: call WSAStartup/Cleanup on win32 If we link against libwinsock2, we should probably call Startup/Cleanup as well. https://bugzilla.gnome.org/show_bug.cgi?id=675415 --- gst/librfb/gstrfbsrc.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/gst/librfb/gstrfbsrc.c b/gst/librfb/gstrfbsrc.c index e19de55924..235acd5a88 100644 --- a/gst/librfb/gstrfbsrc.c +++ b/gst/librfb/gstrfbsrc.c @@ -34,6 +34,10 @@ #include #endif +#ifdef G_OS_WIN32 +#include +#endif + enum { ARG_0, @@ -70,7 +74,7 @@ GST_STATIC_PAD_TEMPLATE ("src", "height = (int) [ 16, 4096 ], " "framerate = (fraction) 0/1") ); -static void gst_rfb_src_dispose (GObject * object); +static void gst_rfb_src_finalize (GObject * object); static void gst_rfb_src_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec); static void gst_rfb_src_get_property (GObject * object, guint prop_id, @@ -114,7 +118,7 @@ gst_rfb_src_class_init (GstRfbSrcClass * klass) gstbasesrc_class = (GstBaseSrcClass *) klass; gstpushsrc_class = (GstPushSrcClass *) klass; - gobject_class->dispose = gst_rfb_src_dispose; + gobject_class->finalize = gst_rfb_src_finalize; gobject_class->set_property = gst_rfb_src_set_property; gobject_class->get_property = gst_rfb_src_get_property; @@ -188,10 +192,19 @@ gst_rfb_src_init (GstRfbSrc * src, GstRfbSrcClass * klass) src->decoder = rfb_decoder_new (); +#ifdef G_OS_WIN32 + { + WSADATA wsa_data; + + if (WSAStartup (MAKEWORD (2, 2), &wsa_data) != 0) { + GST_ERROR_OBJECT (sink, "WSAStartup failed: 0x%08x", WSAGetLastError ()); + } + } +#endif } static void -gst_rfb_src_dispose (GObject * object) +gst_rfb_src_finalize (GObject * object) { GstRfbSrc *src = GST_RFB_SRC (object); @@ -201,8 +214,11 @@ gst_rfb_src_dispose (GObject * object) g_free (src->decoder); src->decoder = NULL; } +#ifdef G_OS_WIN32 + WSACleanup (); +#endif - G_OBJECT_CLASS (parent_class)->dispose (object); + G_OBJECT_CLASS (parent_class)->finalize (object); } static void