From b7b66e10d0b0a638d58ef7bb6d481492a79f262c Mon Sep 17 00:00:00 2001
From: Miller Puckette <msp@ucsd.edu>
Date: Wed, 15 Aug 2007 18:48:51 -0700
Subject: [PATCH] fixes for MSW

---
 msw/get-msw.sh     |  6 ++--
 src/m_sched.c      |  9 ++++-
 src/makefile.nt    | 85 +++++++++++++++++++++++-----------------------
 src/s_audio_mmio.c |  4 +--
 src/s_stuff.h      |  2 +-
 5 files changed, 57 insertions(+), 49 deletions(-)

diff --git a/msw/get-msw.sh b/msw/get-msw.sh
index 30b4e24c7..8c56ec90d 100755
--- a/msw/get-msw.sh
+++ b/msw/get-msw.sh
@@ -1,8 +1,8 @@
 #!/bin/tcsh
 
-rm -rf image
-mkdir image
-cd image
+rm -rf /tmp/image
+mkdir /tmp/image
+cd /tmp/image
 unzip -q /tmp/pdout.zip
 find . \( -name "*.lib" -o -name "*.exe" -o -name "*.dll" -o -name "*.obj" \
     -o -name "*.exp"  \) \
diff --git a/src/m_sched.c b/src/m_sched.c
index 4f708ec8d..6f3dc3b15 100644
--- a/src/m_sched.c
+++ b/src/m_sched.c
@@ -7,6 +7,9 @@
 #include "m_pd.h"
 #include "m_imp.h"
 #include "s_stuff.h"
+#ifdef MSW
+#include <windows.h>
+#endif
 
     /* LATER consider making this variable.  It's now the LCM of all sample
     rates we expect to see: 32000, 44100, 48000, 88200, 96000. */
@@ -529,7 +532,11 @@ static void m_callbackscheduler(void)
     sys_initmidiqueue();
     while (1)
     {
-        sleep(1);
+#ifdef MSW
+    Sleep(1000);
+#else
+	sleep(1);
+#endif
         if (sys_idlehook)
             sys_idlehook();
     }
diff --git a/src/makefile.nt b/src/makefile.nt
index fc6248965..d60651cdc 100644
--- a/src/makefile.nt
+++ b/src/makefile.nt
@@ -38,19 +38,20 @@ SRC = g_canvas.c g_graph.c g_text.c g_rtext.c g_array.c g_template.c g_io.c \
     $(SYSSRC)
 
 PADIR = ..\portaudio
-INCPA = -I$(PADIR) -I$(PADIR)\pa_common -I$(PADIR)\pablio -I..\lib\asio
-SRCPA = $(PADIR)/pa_common/pa_stream.c \
-        $(PADIR)/pa_common/pa_trace.c \
-        $(PADIR)/pa_common/pa_skeleton.c \
-        $(PADIR)/pa_common/pa_process.c \
-        $(PADIR)/pa_common/pa_front.c \
-        $(PADIR)/pa_common/pa_dither.c \
-        $(PADIR)/pa_common/pa_cpuload.c \
-        $(PADIR)/pa_common/pa_converters.c \
-        $(PADIR)/pa_common/pa_allocation.c \
-        $(PADIR)/pa_win/pa_win_util.c \
-        $(PADIR)/pa_win/pa_win_hostapis.c \
-        $(PADIR)/pa_win_wmme/pa_win_wmme.c 
+INCPA = -I$(PADIR)\include -I$(PADIR)\src\common -I..\lib\asio
+PASRC = $(PADIR)\src
+SRCPA = $(PASRC)/common/pa_stream.c \
+        $(PASRC)/common/pa_trace.c \
+        $(PASRC)/common/pa_skeleton.c \
+        $(PASRC)/common/pa_process.c \
+        $(PASRC)/common/pa_front.c \
+        $(PASRC)/common/pa_dither.c \
+        $(PASRC)/common/pa_cpuload.c \
+        $(PASRC)/common/pa_converters.c \
+        $(PASRC)/common/pa_allocation.c \
+        $(PASRC)/os/win/pa_win_hostapis.c \
+        $(PASRC)/os/win/pa_win_util.c \
+        $(PASRC)/hostapi/wmme/pa_win_wmme.c 
 #        $(PADIR)/pa_win_wdmks/pa_win_wdmks.c
 
 SRCASIO = $(PADIR)/pa_asio/pa_asio.cpp 
@@ -63,12 +64,12 @@ $(LDIR)\odbc32.lib $(LDIR)\odbccp32.lib ..\lib\asio\asiolib.lib
 
 PAOBJ = pa_stream.obj pa_trace.obj pa_skeleton.obj pa_process.obj \
 	pa_front.obj pa_dither.obj pa_cpuload.obj pa_converters.obj \
-	pa_allocation.obj pa_win_util.obj pa_win_hostapis.obj pa_asio.obj \
+	pa_allocation.obj pa_win_hostapis.obj pa_win_util.obj pa_asio.obj \
 	pa_win_wmme.obj 
 #       pa_win_wdmks.obj
 
 PMDIR = ..\portmidi
-INCPM = -I$(PMDIR)\pm_common -I$(PMDIR)\pm_win -I$(PMDIR)\porttime
+INCPM = -I$(PMDIR)\pm_common -I$(PMDIR)\pm_win -I$(PMDIR)\porttime -DNEWBUFFER
 SRCPM = $(PADIR)/pm_common/portmidi.c \
         $(PMDIR)/pm_common/pmutil.c \
         $(PMDIR)/porttime/porttime.c \
@@ -127,37 +128,37 @@ s_entry_com.obj: s_entry.c
 	    ..\bin\pd.lib $(LIB) $(ASIOLIB)
 
 # explicit rules to compile portaudio sources:
-pa_stream.obj: $(PADIR)\pa_common\pa_stream.c
-	cl /c $(ALLCF) $(PADIR)\pa_common\pa_stream.c
-pa_trace.obj: $(PADIR)\pa_common\pa_trace.c
-	cl /c $(ALLCF) $(PADIR)\pa_common\pa_trace.c
-pa_skeleton.obj: $(PADIR)\pa_common\pa_skeleton.c
-	cl /c $(ALLCF) $(PADIR)\pa_common\pa_skeleton.c
-pa_process.obj: $(PADIR)\pa_common\pa_process.c
-	cl /c $(ALLCF) $(PADIR)\pa_common\pa_process.c
-pa_front.obj: $(PADIR)\pa_common\pa_front.c
-	cl /c $(ALLCF) $(PADIR)\pa_common\pa_front.c
-pa_dither.obj: $(PADIR)\pa_common\pa_dither.c
-	cl /c $(ALLCF) $(PADIR)\pa_common\pa_dither.c
-pa_cpuload.obj: $(PADIR)\pa_common\pa_cpuload.c
-	cl /c $(ALLCF) $(PADIR)\pa_common\pa_cpuload.c
-pa_converters.obj: $(PADIR)\pa_common\pa_converters.c
-	cl /c $(ALLCF) $(PADIR)\pa_common\pa_converters.c
-pa_allocation.obj: $(PADIR)\pa_common\pa_allocation.c
-	cl /c $(ALLCF) $(PADIR)\pa_common\pa_allocation.c
-
-pa_win_util.obj: $(PADIR)\pa_win\pa_win_util.c
-	cl /c $(ALLCF) $(PADIR)\pa_win\pa_win_util.c
-pa_win_hostapis.obj: $(PADIR)\pa_win\pa_win_hostapis.c
-	cl /c $(ALLCF) $(PADIR)\pa_win\pa_win_hostapis.c
-pa_win_wmme.obj: $(PADIR)\pa_win_wmme\pa_win_wmme.c
-	cl /c $(ALLCF) $(PADIR)\pa_win_wmme\pa_win_wmme.c
+pa_stream.obj: $(PASRC)\common\pa_stream.c
+	cl /c $(ALLCF) $(PASRC)\common\pa_stream.c
+pa_trace.obj: $(PASRC)\common\pa_trace.c
+	cl /c $(ALLCF) $(PASRC)\common\pa_trace.c
+pa_skeleton.obj: $(PASRC)\common\pa_skeleton.c
+	cl /c $(ALLCF) $(PASRC)\common\pa_skeleton.c
+pa_process.obj: $(PASRC)\common\pa_process.c
+	cl /c $(ALLCF) $(PASRC)\common\pa_process.c
+pa_front.obj: $(PASRC)\common\pa_front.c
+	cl /c $(ALLCF) $(PASRC)\common\pa_front.c
+pa_dither.obj: $(PASRC)\common\pa_dither.c
+	cl /c $(ALLCF) $(PASRC)\common\pa_dither.c
+pa_cpuload.obj: $(PASRC)\common\pa_cpuload.c
+	cl /c $(ALLCF) $(PASRC)\common\pa_cpuload.c
+pa_converters.obj: $(PASRC)\common\pa_converters.c
+	cl /c $(ALLCF) $(PASRC)\common\pa_converters.c
+pa_allocation.obj: $(PASRC)\common\pa_allocation.c
+	cl /c $(ALLCF) $(PASRC)\common\pa_allocation.c
+
+pa_win_hostapis.obj: $(PASRC)\os\win\pa_win_hostapis.c
+	cl /c $(ALLCF) $(PASRC)\os\win\pa_win_hostapis.c
+pa_win_util.obj: $(PASRC)\os\win\pa_win_util.c
+	cl /c $(ALLCF) $(PASRC)\os\win\pa_win_util.c
+pa_win_wmme.obj: $(PASRC)\hostapi\wmme\pa_win_wmme.c
+	cl /c $(ALLCF) $(PASRC)\hostapi\wmme\pa_win_wmme.c
 pa_win_wdmks.obj: $(PADIR)\pa_win_wdmks\pa_win_wdmks.c
 	cl /c $(ALLCF) \
 	-DWINVER=0x400 -DKSAUDIO_SPEAKER_DIRECTOUT \
 	$(PADIR)\pa_win_wdmks\pa_win_wdmks.c
-pa_asio.obj: $(PADIR)\pa_asio\pa_asio.cpp
-	cl /c $(ALLCF) $(PADIR)\pa_asio\pa_asio.cpp
+pa_asio.obj: $(PASRC)\hostapi\asio\pa_asio.cpp
+	cl /c $(ALLCF) $(PASRC)\hostapi\asio\pa_asio.cpp
 
 portmidi.obj: $(PMDIR)\pm_common\portmidi.c
 	cl /c $(ALLCF) $(PMDIR)\pm_common\portmidi.c
diff --git a/src/s_audio_mmio.c b/src/s_audio_mmio.c
index a949767a3..cf79f1351 100644
--- a/src/s_audio_mmio.c
+++ b/src/s_audio_mmio.c
@@ -694,7 +694,7 @@ idle:
 
 /* ------------------- public routines -------------------------- */
 
-void mmio_open_audio(int naudioindev, int *audioindev,
+int mmio_open_audio(int naudioindev, int *audioindev,
     int nchindev, int *chindev, int naudiooutdev, int *audiooutdev,
     int nchoutdev, int *choutdev, int rate)
 {
@@ -724,7 +724,7 @@ void mmio_open_audio(int naudioindev, int *audioindev,
         (nt_nwaveout > 1 ? WAVE_MAPPER : -1) : audiooutdev[0]);
     if (naudiooutdev > 1 || naudioindev > 1)
  post("separate audio device choice not supported; using sequential devices.");
-    mmio_do_open_audio();
+    return (mmio_do_open_audio());
 }
 
 
diff --git a/src/s_stuff.h b/src/s_stuff.h
index 9abd5cd35..4cde9c426 100644
--- a/src/s_stuff.h
+++ b/src/s_stuff.h
@@ -251,7 +251,7 @@ void jack_getdevs(char *indevlist, int *nindevs,
         int maxndev, int devdescsize);
 void jack_listdevs(void);
 
-void mmio_open_audio(int naudioindev, int *audioindev,
+int mmio_open_audio(int naudioindev, int *audioindev,
     int nchindev, int *chindev, int naudiooutdev, int *audiooutdev,
     int nchoutdev, int *choutdev, int rate);
 void mmio_close_audio( void);
-- 
GitLab