- various bugfixes

- version upgrade
f38
Andreas Bierfert 15 years ago
parent 5fea05571a
commit 85ad5c2749

@ -1 +1 @@
wine-1.1.32-fe.tar.bz2 wine-1.1.35-fe.tar.bz2

@ -1 +1 @@
b598afe820bde7c33f5bd0ab62fb7dce wine-1.1.32-fe.tar.bz2 1ade8d4ccd3130692c2c68871683fa9b wine-1.1.35-fe.tar.bz2

@ -0,0 +1,15 @@
--- libs/wine/config.c.orig 2009-11-26 23:36:37.000000000 +0100
+++ libs/wine/config.c 2009-11-26 23:37:36.000000000 +0100
@@ -35,9 +35,9 @@
#endif
#include "wine/library.h"
-static const char server_config_dir[] = "/.wine"; /* config dir relative to $HOME */
-static const char server_root_prefix[] = "/tmp/.wine-"; /* prefix for server root dir */
-static const char server_dir_prefix[] = "/server-"; /* prefix for server dir */
+static const char server_config_dir[] = "/.wine-x86_64"; /* config dir relative to $HOME */
+static const char server_root_prefix[] = "/tmp/.wine-x86_64-"; /* prefix for server root dir */
+static const char server_dir_prefix[] = "/server-x86_64-"; /* prefix for server dir */
static char *bindir;
static char *dlldir;

@ -1,6 +1,6 @@
%define no64bit 0 %define no64bit 0
Name: wine Name: wine
Version: 1.1.32 Version: 1.1.35
Release: 1%{?dist} Release: 1%{?dist}
Summary: A Windows 16/32/64 bit emulator Summary: A Windows 16/32/64 bit emulator
@ -48,14 +48,18 @@ Source300: wine-mime-msi.desktop
# see http://bugs.winehq.org/show_bug.cgi?id=10495 # see http://bugs.winehq.org/show_bug.cgi?id=10495
# and http://art.ified.ca/?page_id=40 # and http://art.ified.ca/?page_id=40
Patch400: http://art.ified.ca/downloads/winepulse-0.32-configure.ac.patch Patch400: http://art.ified.ca/downloads/winepulse-0.32-configure.ac.patch
Patch401: http://art.ified.ca/downloads/winepulse-0.32.patch Patch401: http://art.ified.ca/downloads/winepulse-0.33.patch
Patch402: http://art.ified.ca/downloads/winepulse/winepulse-winecfg-0.6.patch Patch402: http://art.ified.ca/downloads/winepulse/winepulse-winecfg-0.6.patch
Source402: README-FEDORA-PULSEAUDIO Source402: README-FEDORA-PULSEAUDIO
Patch1: wine-rpath.patch Patch1: wine-rpath.patch
# upstream bugs
# currently non
# bugfix patches # bugfix patches
# none # #533806
Patch600: wine-x86_64-prefix.patch
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@ -148,7 +152,6 @@ wine-* sub packages.
Summary: Wine core package Summary: Wine core package
Group: Applications/Emulators Group: Applications/Emulators
Requires: wine-fonts = %{version}-%{release} Requires: wine-fonts = %{version}-%{release}
Requires: %{_bindir}/xmessage
Requires(post): /sbin/ldconfig Requires(post): /sbin/ldconfig
Requires(postun): /sbin/ldconfig Requires(postun): /sbin/ldconfig
Obsoletes: wine <= 0.9.15-1%{?dist} Obsoletes: wine <= 0.9.15-1%{?dist}
@ -162,10 +165,12 @@ Requires: freetype(x86-32)
Requires: nss-mdns(x86-32) Requires: nss-mdns(x86-32)
# require Xrender isa on x86_64 (#510947) # require Xrender isa on x86_64 (#510947)
Requires: libXrender(x86-32) Requires: libXrender(x86-32)
Requires: gnutls(x86-32)
%endif %endif
%ifarch x86_64 %ifarch x86_64
Requires: nss-mdns(x86-64) Requires: nss-mdns(x86-64)
Requires: freetype(x86-64) Requires: freetype(x86-64)
Requires: gnutls(x86-64)
%endif %endif
%description core %description core
@ -315,6 +320,10 @@ This package adds an openal driver for wine.
%patch401 -p1 %patch401 -p1
%patch402 -p1 %patch402 -p1
%ifarch x86_64
%patch600
%endif
autoreconf autoreconf
%build %build
@ -354,7 +363,6 @@ mv %{buildroot}%{_bindir}/wine{,32}
mv %{buildroot}%{_bindir}/wine{,64} mv %{buildroot}%{_bindir}/wine{,64}
%endif %endif
mkdir -p %{buildroot}%{_sysconfdir}/wine mkdir -p %{buildroot}%{_sysconfdir}/wine
# Allow users to launch Windows programs by just clicking on the .exe file... # Allow users to launch Windows programs by just clicking on the .exe file...
@ -561,6 +569,7 @@ update-desktop-database &>/dev/null || :
%{_libdir}/wine/expand.exe.so %{_libdir}/wine/expand.exe.so
%{_libdir}/wine/extrac32.exe.so %{_libdir}/wine/extrac32.exe.so
%{_libdir}/wine/winhlp32.exe.so %{_libdir}/wine/winhlp32.exe.so
%{_libdir}/wine/mshta.exe.so
%{_libdir}/wine/msiexec.exe.so %{_libdir}/wine/msiexec.exe.so
%{_libdir}/wine/net.exe.so %{_libdir}/wine/net.exe.so
%{_libdir}/wine/ntoskrnl.exe.so %{_libdir}/wine/ntoskrnl.exe.so
@ -594,6 +603,7 @@ update-desktop-database &>/dev/null || :
%{_libdir}/wine/authz.dll.so %{_libdir}/wine/authz.dll.so
%{_libdir}/wine/avicap32.dll.so %{_libdir}/wine/avicap32.dll.so
%{_libdir}/wine/avifil32.dll.so %{_libdir}/wine/avifil32.dll.so
%{_libdir}/wine/avrt.dll.so
%{_libdir}/wine/bcrypt.dll.so %{_libdir}/wine/bcrypt.dll.so
%{_libdir}/wine/browseui.dll.so %{_libdir}/wine/browseui.dll.so
%{_libdir}/wine/cabinet.dll.so %{_libdir}/wine/cabinet.dll.so
@ -654,6 +664,7 @@ update-desktop-database &>/dev/null || :
%{_libdir}/wine/faultrep.dll.so %{_libdir}/wine/faultrep.dll.so
%{_libdir}/wine/fltlib.dll.so %{_libdir}/wine/fltlib.dll.so
%{_libdir}/wine/fusion.dll.so %{_libdir}/wine/fusion.dll.so
%{_libdir}/wine/fwpuclnt.dll.so
%{_libdir}/wine/gdi32.dll.so %{_libdir}/wine/gdi32.dll.so
%{_libdir}/wine/gdiplus.dll.so %{_libdir}/wine/gdiplus.dll.so
%{_libdir}/wine/glu32.dll.so %{_libdir}/wine/glu32.dll.so
@ -695,6 +706,7 @@ update-desktop-database &>/dev/null || :
%{_libdir}/wine/mciwave.dll.so %{_libdir}/wine/mciwave.dll.so
%{_libdir}/wine/midimap.dll.so %{_libdir}/wine/midimap.dll.so
%{_libdir}/wine/mlang.dll.so %{_libdir}/wine/mlang.dll.so
%{_libdir}/wine/mmdevapi.dll.so
%{_libdir}/wine/mountmgr.sys.so %{_libdir}/wine/mountmgr.sys.so
%{_libdir}/wine/mpr.dll.so %{_libdir}/wine/mpr.dll.so
%{_libdir}/wine/mprapi.dll.so %{_libdir}/wine/mprapi.dll.so
@ -810,10 +822,12 @@ update-desktop-database &>/dev/null || :
%{_libdir}/wine/vdmdbg.dll.so %{_libdir}/wine/vdmdbg.dll.so
%{_libdir}/wine/version.dll.so %{_libdir}/wine/version.dll.so
%{_libdir}/wine/wbemprox.dll.so %{_libdir}/wine/wbemprox.dll.so
%{_libdir}/wine/wiaservc.dll.so
%{_libdir}/wine/windowscodecs.dll.so %{_libdir}/wine/windowscodecs.dll.so
%{_libdir}/wine/wineaudioio.drv.so %{_libdir}/wine/wineaudioio.drv.so
%{_libdir}/wine/winecoreaudio.drv.so %{_libdir}/wine/winecoreaudio.drv.so
%{_libdir}/wine/winejoystick.drv.so %{_libdir}/wine/winejoystick.drv.so
%{_libdir}/wine/winemapi.dll.so
%{_libdir}/wine/winex11.drv.so %{_libdir}/wine/winex11.drv.so
%{_libdir}/wine/wing32.dll.so %{_libdir}/wine/wing32.dll.so
%{_libdir}/wine/winhttp.dll.so %{_libdir}/wine/winhttp.dll.so
@ -832,6 +846,7 @@ update-desktop-database &>/dev/null || :
%{_libdir}/wine/wsock32.dll.so %{_libdir}/wine/wsock32.dll.so
%{_libdir}/wine/wtsapi32.dll.so %{_libdir}/wine/wtsapi32.dll.so
%{_libdir}/wine/wuapi.dll.so %{_libdir}/wine/wuapi.dll.so
%{_libdir}/wine/wuaueng.dll.so
%{_libdir}/wine/security.dll.so %{_libdir}/wine/security.dll.so
%{_libdir}/wine/sfc.dll.so %{_libdir}/wine/sfc.dll.so
%{_libdir}/wine/wineps.drv.so %{_libdir}/wine/wineps.drv.so
@ -862,18 +877,18 @@ update-desktop-database &>/dev/null || :
%{_libdir}/wine/vtdapi.vxd.so %{_libdir}/wine/vtdapi.vxd.so
%{_libdir}/wine/vwin32.vxd.so %{_libdir}/wine/vwin32.vxd.so
%{_libdir}/wine/w32skrnl.dll.so %{_libdir}/wine/w32skrnl.dll.so
%{_libdir}/wine/commdlg.dll16
%{_libdir}/wine/gdi.exe16
%{_libdir}/wine/wprocs.dll16 %{_libdir}/wine/wprocs.dll16
%{_libdir}/wine/avifile.dll16.so %{_libdir}/wine/avifile.dll16.so
%{_libdir}/wine/comm.drv16.so %{_libdir}/wine/comm.drv16.so
%{_libdir}/wine/commdlg.dll16.so
%{_libdir}/wine/compobj.dll16.so %{_libdir}/wine/compobj.dll16.so
%{_libdir}/wine/ctl3d.dll16.so %{_libdir}/wine/ctl3d.dll16.so
%{_libdir}/wine/ctl3dv2.dll16.so %{_libdir}/wine/ctl3dv2.dll16.so
%{_libdir}/wine/ddeml.dll16.so %{_libdir}/wine/ddeml.dll16.so
%{_libdir}/wine/dispdib.dll16.so %{_libdir}/wine/dispdib.dll16.so
%{_libdir}/wine/display.drv16.so %{_libdir}/wine/display.drv16.so
%{_libdir}/wine/gdi.exe16.so
%{_libdir}/wine/imm.dll16.so %{_libdir}/wine/imm.dll16.so
%{_libdir}/wine/krnl386.exe16 %{_libdir}/wine/krnl386.exe16
%{_libdir}/wine/keyboard.drv16.so %{_libdir}/wine/keyboard.drv16.so
@ -1046,6 +1061,22 @@ update-desktop-database &>/dev/null || :
%{_libdir}/wine/openal32.dll.so %{_libdir}/wine/openal32.dll.so
%changelog %changelog
* Sat Dec 19 2009 Andreas Bierfert <andreas.bierfert[AT]lowlatency.de>
- 1.1.35-1
- version upgrade
* Fri Dec 18 2009 Andreas Bierfert <andreas.bierfert[AT]lowlatency.de>
- 1.1.34-1
- version upgrade (#546749)
* Mon Nov 16 2009 Andreas Bierfert <andreas.bierfert[AT]lowlatency.de>
- 1.1.33-1
- version upgrade
- winepulse update (.33)
- require gnutls (#538694)
- use separate WINEPREFIX on x86_64 per default (workaround for #533806)
- drop explicit xmessage require (#537610)
* Tue Oct 27 2009 Andreas Bierfert <andreas.bierfert[AT]lowlatency.de> * Tue Oct 27 2009 Andreas Bierfert <andreas.bierfert[AT]lowlatency.de>
- 1.1.32-1 - 1.1.32-1
- version upgrade (#531358) - version upgrade (#531358)

@ -1416,10 +1416,10 @@ index 0000000..7cbc781
+#endif /* HAVE_PULSEAUDIO */ +#endif /* HAVE_PULSEAUDIO */
diff --git a/dlls/winepulse.drv/waveout.c b/dlls/winepulse.drv/waveout.c diff --git a/dlls/winepulse.drv/waveout.c b/dlls/winepulse.drv/waveout.c
new file mode 100644 new file mode 100644
index 0000000..334cc72 index 0000000..e7454fd
--- /dev/null --- /dev/null
+++ b/dlls/winepulse.drv/waveout.c +++ b/dlls/winepulse.drv/waveout.c
@@ -0,0 +1,1049 @@ @@ -0,0 +1,1040 @@
+/* +/*
+ * Wine Driver for PulseAudio - WaveOut Functionality + * Wine Driver for PulseAudio - WaveOut Functionality
+ * http://pulseaudio.org/ + * http://pulseaudio.org/
@ -1527,7 +1527,7 @@ index 0000000..334cc72
+ * wodPlayer_NotifyClient [internal] + * wodPlayer_NotifyClient [internal]
+ */ + */
+static DWORD wodPlayer_NotifyClient(WINE_WAVEINST* wwo, WORD wMsg, DWORD dwParam1, DWORD dwParam2) { +static DWORD wodPlayer_NotifyClient(WINE_WAVEINST* wwo, WORD wMsg, DWORD dwParam1, DWORD dwParam2) {
+ TRACE("wMsg = 0x%04x dwParm1 = %04X dwParam2 = %04X\n", wMsg, dwParam1, dwParam2); + /* TRACE("wMsg = 0x%04x dwParm1 = %04X dwParam2 = %04X\n", wMsg, dwParam1, dwParam2); */
+ +
+ switch (wMsg) { + switch (wMsg) {
+ case WOM_OPEN: + case WOM_OPEN:
@ -1617,33 +1617,25 @@ index 0000000..334cc72
+static void wodPlayer_CheckReleasing(WINE_WAVEINST *wwo) { +static void wodPlayer_CheckReleasing(WINE_WAVEINST *wwo) {
+ LPWAVEHDR lpWaveHdr; + LPWAVEHDR lpWaveHdr;
+ +
+ if (wwo->buffer_attr.tlength == -1 && wwo->lpQueuePtr && !wwo->lpPlayPtr && wwo->state != WINE_WS_STOPPED) { + if (wwo->buffer_attr.tlength == -1) {
+ const pa_buffer_attr *returned;
+
+ /* Try and adjust the buffer attributes so that playback can start.
+ * Because of bugs pa_stream_set_buffer_attr() does not work on started
+ * streams for server version 0.9.11 to 0.9.14 */
+
+ pa_threaded_mainloop_lock(PULSE_ml); + pa_threaded_mainloop_lock(PULSE_ml);
+ + if (!wwo->timing_info->playing) {
+ /* Calculate how large a buffer the application has made so far */ +
+ wwo->buffer_attr.tlength = 0; + /* Calculate how large a buffer the application has made so far */
+ for (lpWaveHdr = wwo->lpQueuePtr; lpWaveHdr; lpWaveHdr = lpWaveHdr->lpNext) + wwo->buffer_attr.tlength = 0;
+ wwo->buffer_attr.tlength += lpWaveHdr->dwBufferLength; + wwo->buffer_attr.minreq = wwo->lpQueuePtr->dwBufferLength;
+ + for (lpWaveHdr = wwo->lpQueuePtr; lpWaveHdr; lpWaveHdr = lpWaveHdr->lpNext)
+ WARN("Asking for new buffer target length of %llums (%u bytes)\n", + wwo->buffer_attr.tlength += lpWaveHdr->dwBufferLength;
+ pa_bytes_to_usec(wwo->buffer_attr.tlength, &wwo->sample_spec) / 1000, +
+ wwo->buffer_attr.tlength); + WARN("Asking for new buffer target length of %llums (%u bytes)\n",
+ + pa_bytes_to_usec(wwo->buffer_attr.tlength, &wwo->sample_spec) / 1000,
+ PULSE_WaitForOperation(pa_stream_set_buffer_attr(wwo->stream, &wwo->buffer_attr, PULSE_StreamSuccessCallback, wwo)); + wwo->buffer_attr.tlength);
+ +
+ returned = pa_stream_get_buffer_attr(wwo->stream); + /* Try and adjust the buffer attributes so that playback can start.
+ + * Because of bugs pa_stream_set_buffer_attr() does not work on started
+ if (returned->tlength > wwo->timing_info->write_index) { + * streams for server version 0.9.11 to 0.9.14 */
+ WARN("Couldn't get the buffer size needed. Triggering and hoping for the best.\n"); + PULSE_WaitForOperation(pa_stream_set_buffer_attr(wwo->stream, &wwo->buffer_attr, PULSE_StreamSuccessCallback, wwo));
+ PULSE_WaitForOperation(pa_stream_trigger(wwo->stream, PULSE_StreamSuccessCallback, wwo));
+ } + }
+
+ pa_threaded_mainloop_unlock(PULSE_ml); + pa_threaded_mainloop_unlock(PULSE_ml);
+ } + }
+} +}
@ -1676,6 +1668,7 @@ index 0000000..334cc72
+ return wait ?: 1; + return wait ?: 1;
+ } + }
+ } + }
+ TRACE("Returning %p.[%i]\n", lpWaveHdr, (DWORD)lpWaveHdr->reserved);
+ +
+ /* return the wavehdr */ + /* return the wavehdr */
+ wwo->lpQueuePtr = lpWaveHdr->lpNext; + wwo->lpQueuePtr = lpWaveHdr->lpNext;
@ -1696,7 +1689,7 @@ index 0000000..334cc72
+ * Write either how much free space or how much data we have, depending on + * Write either how much free space or how much data we have, depending on
+ * which is less + * which is less
+ */ + */
+static int wodPlayer_WriteMax(WINE_WAVEINST *wwo, size_t *space) { +static DWORD wodPlayer_WriteMax(WINE_WAVEINST *wwo, size_t *space) {
+ LPWAVEHDR lpWaveHdr = wwo->lpPlayPtr; + LPWAVEHDR lpWaveHdr = wwo->lpPlayPtr;
+ size_t nbytes; + size_t nbytes;
+ +
@ -1724,10 +1717,7 @@ index 0000000..334cc72
+ */ + */
+static void wodPlayer_Feed(WINE_WAVEINST* wwo, size_t space) { +static void wodPlayer_Feed(WINE_WAVEINST* wwo, size_t space) {
+ +
+ /* No more room... no need to try to feed */ + if (!space || !wwo->stream || !PULSE_context ||
+ if (space == 0) return;
+
+ if (!wwo->stream || !PULSE_context ||
+ pa_context_get_state(PULSE_context) != PA_CONTEXT_READY || + pa_context_get_state(PULSE_context) != PA_CONTEXT_READY ||
+ pa_stream_get_state(wwo->stream) != PA_STREAM_READY) + pa_stream_get_state(wwo->stream) != PA_STREAM_READY)
+ return; + return;
@ -1741,8 +1731,9 @@ index 0000000..334cc72
+ if (wwo->dwPartialOffset == 0 && wwo->lpPlayPtr) { + if (wwo->dwPartialOffset == 0 && wwo->lpPlayPtr) {
+ do { + do {
+ wwo->lpPlayPtr->reserved = wwo->timing_info->write_index; + wwo->lpPlayPtr->reserved = wwo->timing_info->write_index;
+ } while (wodPlayer_WriteMax(wwo, &space) > 0 && wwo->lpPlayPtr && space > 0); + } while (wodPlayer_WriteMax(wwo, &space) && wwo->lpPlayPtr && space > 0);
+ } + }
+
+ pa_threaded_mainloop_unlock(PULSE_ml); + pa_threaded_mainloop_unlock(PULSE_ml);
+} +}
+ +
@ -1846,15 +1837,14 @@ index 0000000..334cc72
+/************************************************************************** +/**************************************************************************
+ * wodPlayer_ProcessMessages [internal] + * wodPlayer_ProcessMessages [internal]
+ */ + */
+static DWORD wodPlayer_ProcessMessages(WINE_WAVEINST* wwo) { +static void wodPlayer_ProcessMessages(WINE_WAVEINST* wwo) {
+ LPWAVEHDR lpWaveHdr; + LPWAVEHDR lpWaveHdr;
+ enum win_wm_message msg; + enum win_wm_message msg;
+ DWORD param, msgcount = 0; + DWORD param;
+ HANDLE ev; + HANDLE ev;
+ +
+ while (PULSE_RetrieveRingMessage(&wwo->msgRing, &msg, &param, &ev)) { + while (PULSE_RetrieveRingMessage(&wwo->msgRing, &msg, &param, &ev)) {
+ TRACE("Received %s %x\n", PULSE_getCmdString(msg), param); + TRACE("Received %s %x\n", PULSE_getCmdString(msg), param);
+ msgcount++;
+ +
+ switch (msg) { + switch (msg) {
+ case WINE_WM_PAUSING: + case WINE_WM_PAUSING:
@ -1870,8 +1860,8 @@ index 0000000..334cc72
+ wwo->state = WINE_WS_PLAYING; + wwo->state = WINE_WS_PLAYING;
+ pa_threaded_mainloop_lock(PULSE_ml); + pa_threaded_mainloop_lock(PULSE_ml);
+ PULSE_WaitForOperation(pa_stream_cork(wwo->stream, 0, PULSE_StreamSuccessCallback, wwo)); + PULSE_WaitForOperation(pa_stream_cork(wwo->stream, 0, PULSE_StreamSuccessCallback, wwo));
+ /* If the serverside buffer was near full before pause, we need to + /* If the serverside buffer was near full before pausing, we
+ * have space to write soon, so force playback start */ + * need to have space to write soon, so force playback start */
+ PULSE_WaitForOperation(pa_stream_trigger(wwo->stream, PULSE_StreamSuccessCallback, wwo)); + PULSE_WaitForOperation(pa_stream_trigger(wwo->stream, PULSE_StreamSuccessCallback, wwo));
+ pa_threaded_mainloop_unlock(PULSE_ml); + pa_threaded_mainloop_unlock(PULSE_ml);
+ } + }
@ -1909,13 +1899,11 @@ index 0000000..334cc72
+ break; + break;
+ +
+ case WINE_WM_FEED: /* Sent by the pulse thread */ + case WINE_WM_FEED: /* Sent by the pulse thread */
+ msgcount--; /* Don't count this message for stall detection */
+ wodPlayer_Feed(wwo, pa_stream_writable_size(wwo->stream)); + wodPlayer_Feed(wwo, pa_stream_writable_size(wwo->stream));
+ SetEvent(ev); + SetEvent(ev);
+ break; + break;
+ +
+ case WINE_WM_XRUN: /* Sent by the pulse thread */ + case WINE_WM_XRUN: /* Sent by the pulse thread */
+ msgcount--; /* Don't count this message for stall detection */
+ WARN("Trying to recover from underrun.\n"); + WARN("Trying to recover from underrun.\n");
+ /* Return all the queued wavehdrs, so the app will send more data */ + /* Return all the queued wavehdrs, so the app will send more data */
+ wodPlayer_NotifyCompletions(wwo, FALSE, (pa_usec_t)-1); + wodPlayer_NotifyCompletions(wwo, FALSE, (pa_usec_t)-1);
@ -1938,8 +1926,6 @@ index 0000000..334cc72
+ break; + break;
+ } + }
+ } + }
+
+ return msgcount;
+} +}
+ +
+/************************************************************************** +/**************************************************************************
@ -1951,6 +1937,7 @@ index 0000000..334cc72
+static DWORD CALLBACK wodPlayer(LPVOID lpParam) { +static DWORD CALLBACK wodPlayer(LPVOID lpParam) {
+ WINE_WAVEINST *wwo = (WINE_WAVEINST*)lpParam; + WINE_WAVEINST *wwo = (WINE_WAVEINST*)lpParam;
+ DWORD dwSleepTime = INFINITE; + DWORD dwSleepTime = INFINITE;
+ int64_t delta_write;
+ +
+ wwo->state = WINE_WS_STOPPED; + wwo->state = WINE_WS_STOPPED;
+ SetEvent(wwo->hStartUpEvent); + SetEvent(wwo->hStartUpEvent);
@ -1961,9 +1948,13 @@ index 0000000..334cc72
+ TRACE("Waiting %u ms\n", dwSleepTime); + TRACE("Waiting %u ms\n", dwSleepTime);
+ PULSE_WaitRingMessage(&wwo->msgRing, dwSleepTime); + PULSE_WaitRingMessage(&wwo->msgRing, dwSleepTime);
+ +
+ /* If no messages were processed during the timeout it might be because + delta_write = wwo->timing_info->write_index;
+ * audio is not flowing yet, so check. */ + wodPlayer_ProcessMessages(wwo);
+ if (wodPlayer_ProcessMessages(wwo) == 0) +
+ /* Check for a stall situaiton */
+ if (delta_write == wwo->timing_info->write_index
+ && wwo->lpQueuePtr && !wwo->lpPlayPtr
+ && wwo->state != WINE_WS_STOPPED)
+ wodPlayer_CheckReleasing(wwo); + wodPlayer_CheckReleasing(wwo);
+ +
+ /* If there is audio playing, return headers and get next timeout */ + /* If there is audio playing, return headers and get next timeout */
@ -2252,7 +2243,7 @@ index 0000000..334cc72
+ * Context-sanity check here, as if we respond with 0, WINE will move on + * Context-sanity check here, as if we respond with 0, WINE will move on
+ * to the next waveout driver. + * to the next waveout driver.
+ */ + */
+static DWORD wodGetNumDevs() { +static DWORD wodGetNumDevs(void) {
+ if (!PULSE_ml || !PULSE_context || pa_context_get_state(PULSE_context) != PA_CONTEXT_READY) + if (!PULSE_ml || !PULSE_context || pa_context_get_state(PULSE_context) != PA_CONTEXT_READY)
+ return 0; + return 0;
+ +
Loading…
Cancel
Save