[pulseaudio-commits] [Git][pulseaudio/pulseaudio][master] win32: Fix WSAStartup issues

PulseAudio Marge Bot gitlab at gitlab.freedesktop.org
Wed Jan 13 03:21:49 UTC 2021



PulseAudio Marge Bot pushed to branch master at PulseAudio / pulseaudio


Commits:
0edcf725 by Patrick Gaskin at 2021-01-13T03:16:06+00:00
win32: Fix WSAStartup issues

WSAStartup was not being called for pacat and pactl built with meson,
causing them to fail in pa_mainloop_new with "cannot create wakeup
pipe". This issue also affects other applications linking to libpulse
other than the pulseaudio daemon, which calls WSAStartup itself.

When built with autotools, WSAStartup would have been called in
DllMain, which is recommended against by the documentation [1].

To fix these issues, the WSAStartup/WSACleanup calls can be moved
into pa_mainloop_new/pa_mainloop_free.

[1] https://docs.microsoft.com/en-us/windows/win32/api/winsock/nf-winsock-wsastartup

Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/456>

- - - - -


3 changed files:

- src/Makefile.am
- src/pulse/mainloop.c
- − src/pulsecore/dllmain.c


Changes:

=====================================
src/Makefile.am
=====================================
@@ -842,10 +842,6 @@ libpulsecommon_ at PA_MAJORMINOR@_la_CFLAGS += $(LIBASYNCNS_CFLAGS)
 libpulsecommon_ at PA_MAJORMINOR@_la_LIBADD += $(LIBASYNCNS_LIBS)
 endif
 
-if OS_IS_WIN32
-libpulsecommon_ at PA_MAJORMINOR@_la_SOURCES += pulsecore/dllmain.c
-endif
-
 if HAVE_DBUS
 libpulsecommon_ at PA_MAJORMINOR@_la_SOURCES += \
 		pulsecore/dbus-util.c pulsecore/dbus-util.h \


=====================================
src/pulse/mainloop.c
=====================================
@@ -32,6 +32,10 @@
 #include <pulsecore/pipe.h>
 #endif
 
+#ifdef OS_IS_WIN32
+#include <winsock2.h>
+#endif
+
 #include <pulse/rtclock.h>
 #include <pulse/timeval.h>
 #include <pulse/xmalloc.h>
@@ -450,6 +454,17 @@ static const pa_mainloop_api vtable = {
 pa_mainloop *pa_mainloop_new(void) {
     pa_mainloop *m;
 
+#ifdef OS_IS_WIN32
+    {
+        int r;
+        WSADATA data;
+        if ((r = WSAStartup(MAKEWORD(2, 0), &data))) {
+            pa_log_error("ERROR: cannot initialize Winsock2 (%d)", r);
+            return NULL;
+        }
+    }
+#endif
+
     pa_init_i18n();
 
     m = pa_xnew0(pa_mainloop, 1);
@@ -579,6 +594,12 @@ void pa_mainloop_free(pa_mainloop *m) {
     pa_close_pipe(m->wakeup_pipe);
 
     pa_xfree(m);
+
+#ifdef OS_IS_WIN32
+    {
+        WSACleanup();
+    }
+#endif
 }
 
 static void scan_dead(pa_mainloop *m) {


=====================================
src/pulsecore/dllmain.c deleted
=====================================
@@ -1,53 +0,0 @@
-/***
-  This file is part of PulseAudio.
-
-  Copyright 2006 Pierre Ossman <ossman at cendio.se> for Cendio AB
-
-  PulseAudio is free software; you can redistribute it and/or modify
-  it under the terms of the GNU Lesser General Public License as published
-  by the Free Software Foundation; either version 2.1 of the License,
-  or (at your option) any later version.
-
-  PulseAudio is distributed in the hope that it will be useful, but
-  WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  General Public License for more details.
-
-  You should have received a copy of the GNU Lesser General Public License
-  along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
-***/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifdef OS_IS_WIN32
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#include <windows.h>
-#include <winsock2.h>
-
-extern char *pa_win32_get_toplevel(HANDLE handle);
-
-BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {
-    WSADATA data;
-
-    switch (fdwReason) {
-
-    case DLL_PROCESS_ATTACH:
-        if (!pa_win32_get_toplevel(hinstDLL))
-            return FALSE;
-        WSAStartup(MAKEWORD(2, 0), &data);
-        break;
-
-    case DLL_PROCESS_DETACH:
-        WSACleanup();
-        break;
-
-    }
-    return TRUE;
-}
-
-#endif /* OS_IS_WIN32 */



View it on GitLab: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/commit/0edcf725bcb77c5a3ae0c3473b775a85dbcd0236

-- 
View it on GitLab: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/commit/0edcf725bcb77c5a3ae0c3473b775a85dbcd0236
You're receiving this email because of your account on gitlab.freedesktop.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/pulseaudio-commits/attachments/20210113/0c25cc7d/attachment-0001.htm>


More information about the pulseaudio-commits mailing list