rpms/wine/devel winepulse-0.28.patch, NONE, 1.1 .cvsignore, 1.74, 1.75 sources, 1.75, 1.76 wine.spec, 1.106, 1.107 winepulse-0.25.patch, 1.1, NONE
Andreas Bierfert
awjb at fedoraproject.org
Sat Jun 20 08:03:17 UTC 2009
- Previous message: rpms/wine/F-11 winepulse-0.28.patch, NONE, 1.1 .cvsignore, 1.74, 1.75 sources, 1.75, 1.76 wine.spec, 1.104, 1.105 winepulse-0.25.patch, 1.1, NONE
- Next message: rpms/kernel/F-11 linux-2.6-drivers-char-low-latency-removal.patch, NONE, 1.1 kernel.spec, 1.1656, 1.1657
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: awjb
Update of /cvs/pkgs/rpms/wine/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv32519/devel
Modified Files:
.cvsignore sources wine.spec
Added Files:
winepulse-0.28.patch
Removed Files:
winepulse-0.25.patch
Log Message:
- version upgrade
- WinePulse update
- drop requires for esd and jack in meta package
winepulse-0.28.patch:
--- NEW FILE winepulse-0.28.patch ---
diff --git a/dlls/winepulse.drv/Makefile.in b/dlls/winepulse.drv/Makefile.in
new file mode 100644
index 0000000..c99c1da
--- /dev/null
+++ b/dlls/winepulse.drv/Makefile.in
@@ -0,0 +1,15 @@
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../..
+SRCDIR = @srcdir@
+VPATH = @srcdir@
+MODULE = winepulse.drv
+IMPORTS = winmm user32 kernel32
+EXTRALIBS = @PULSELIBS@
+
+C_SRCS = waveout.c \
+ wavein.c \
+ pulse.c
+
+ at MAKE_DLL_RULES@
+
+ at DEPENDENCIES@ # everything below this line is overwritten by make depend
diff --git a/dlls/winepulse.drv/pulse.c b/dlls/winepulse.drv/pulse.c
new file mode 100644
index 0000000..392ac0b
--- /dev/null
+++ b/dlls/winepulse.drv/pulse.c
@@ -0,0 +1,794 @@
+/*
+ * Wine Driver for PulseAudio
+ * http://pulseaudio.org/
+ *
+ * Copyright 2009 Arthur Taylor <theycallhimart at gmail.com>
+ *
+ * Contains code from other wine sound drivers.
+ *
+ * This library 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.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+
+#include <stdarg.h>
+#include <stdio.h>
+
+#include "windef.h"
+#include "winbase.h"
+#include "wingdi.h"
+#include "winuser.h"
+#include "winreg.h"
+#include "mmddk.h"
+#include "ks.h"
+#include "ksguid.h"
+#include "ksmedia.h"
+
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#include <poll.h>
+
+#ifdef HAVE_PULSEAUDIO
+
+#include "wine/unicode.h"
+#include "wine/debug.h"
+#include "wine/library.h"
+
+#include <winepulse.h>
+#include <pulse/pulseaudio.h>
+WINE_DEFAULT_DEBUG_CHANNEL(wave);
+
+/* These strings used only for tracing */
+const char * PULSE_getCmdString(enum win_wm_message msg) {
+ static char unknown[32];
+#define MSG_TO_STR(x) case x: return #x
+ switch(msg) {
+ MSG_TO_STR(WINE_WM_PAUSING);
+ MSG_TO_STR(WINE_WM_RESTARTING);
+ MSG_TO_STR(WINE_WM_RESETTING);
+ MSG_TO_STR(WINE_WM_HEADER);
+ MSG_TO_STR(WINE_WM_BREAKLOOP);
+ MSG_TO_STR(WINE_WM_CLOSING);
+ MSG_TO_STR(WINE_WM_STARTING);
+ MSG_TO_STR(WINE_WM_STOPPING);
+ MSG_TO_STR(WINE_WM_XRUN);
+ MSG_TO_STR(WINE_WM_FEED);
+ }
+#undef MSG_TO_STR
+ sprintf(unknown, "UNKNOWN(0x%08x)", msg);
+ return unknown;
+}
+
+/*======================================================================*
+ * Ring Buffer Functions - copied from winealsa.drv *
+ *======================================================================*/
+
+/* unless someone makes a wineserver kernel module, Unix pipes are faster than win32 events */
+#define USE_PIPE_SYNC
+
+#ifdef USE_PIPE_SYNC
+#define INIT_OMR(omr) do { if (pipe(omr->msg_pipe) < 0) { omr->msg_pipe[0] = omr->msg_pipe[1] = -1; } } while (0)
+#define CLOSE_OMR(omr) do { close(omr->msg_pipe[0]); close(omr->msg_pipe[1]); } while (0)
+#define SIGNAL_OMR(omr) do { int x = 0; write((omr)->msg_pipe[1], &x, sizeof(x)); } while (0)
+#define CLEAR_OMR(omr) do { int x = 0; read((omr)->msg_pipe[0], &x, sizeof(x)); } while (0)
+#define RESET_OMR(omr) do { } while (0)
+#define WAIT_OMR(omr, sleep) \
+ do { struct pollfd pfd; pfd.fd = (omr)->msg_pipe[0]; \
+ pfd.events = POLLIN; poll(&pfd, 1, sleep); } while (0)
+#else
+#define INIT_OMR(omr) do { omr->msg_event = CreateEventW(NULL, FALSE, FALSE, NULL); } while (0)
+#define CLOSE_OMR(omr) do { CloseHandle(omr->msg_event); } while (0)
+#define SIGNAL_OMR(omr) do { SetEvent((omr)->msg_event); } while (0)
+#define CLEAR_OMR(omr) do { } while (0)
+#define RESET_OMR(omr) do { ResetEvent((omr)->msg_event); } while (0)
+#define WAIT_OMR(omr, sleep) \
+ do { WaitForSingleObject((omr)->msg_event, sleep); } while (0)
+#endif
+
+#define PULSE_RING_BUFFER_INCREMENT 64
+
+/******************************************************************
+ * PULSE_InitRingMessage
+ *
+ * Initialize the ring of messages for passing between driver's caller
+ * and playback/record thread
+ */
+int PULSE_InitRingMessage(PULSE_MSG_RING* omr)
+{
+ omr->msg_toget = 0;
+ omr->msg_tosave = 0;
+ INIT_OMR(omr);
+ omr->ring_buffer_size = PULSE_RING_BUFFER_INCREMENT;
+ omr->messages = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,omr->ring_buffer_size * sizeof(PULSE_MSG));
+
+ InitializeCriticalSection(&omr->msg_crst);
+ omr->msg_crst.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": PULSE_MSG_RING.msg_crst");
+ return 0;
+}
+
+/******************************************************************
+ * PULSE_DestroyRingMessage
+ *
+ */
+int PULSE_DestroyRingMessage(PULSE_MSG_RING* omr)
+{
+ CLOSE_OMR(omr);
+ HeapFree(GetProcessHeap(),0,omr->messages);
+ omr->messages = NULL;
+ omr->ring_buffer_size = PULSE_RING_BUFFER_INCREMENT;
+ omr->msg_crst.DebugInfo->Spare[0] = 0;
+ DeleteCriticalSection(&omr->msg_crst);
+ return 0;
+}
+/******************************************************************
+ * PULSE_ResetRingMessage
+ *
+ */
+void PULSE_ResetRingMessage(PULSE_MSG_RING* omr)
+{
+ RESET_OMR(omr);
+}
+
+/******************************************************************
+ * PULSE_WaitRingMessage
+ *
+ */
+void PULSE_WaitRingMessage(PULSE_MSG_RING* omr, DWORD sleep)
+{
+ WAIT_OMR(omr, sleep);
+}
+
+/******************************************************************
+ * PULSE_AddRingMessage
+ *
+ * Inserts a new message into the ring (should be called from DriverProc derived routines)
+ */
+int PULSE_AddRingMessage(PULSE_MSG_RING* omr, enum win_wm_message msg, DWORD param, BOOL wait)
+{
+ HANDLE hEvent = INVALID_HANDLE_VALUE;
+
+ EnterCriticalSection(&omr->msg_crst);
+ if ((omr->msg_toget == ((omr->msg_tosave + 1) % omr->ring_buffer_size)))
+ {
+ int old_ring_buffer_size = omr->ring_buffer_size;
+ omr->ring_buffer_size += PULSE_RING_BUFFER_INCREMENT;
+ omr->messages = HeapReAlloc(GetProcessHeap(),0,omr->messages, omr->ring_buffer_size * sizeof(PULSE_MSG));
+ /* Now we need to rearrange the ring buffer so that the new
+ buffers just allocated are in between omr->msg_tosave and
+ omr->msg_toget.
+ */
[...2326 lines suppressed...]
index 0000000..4a834cd
--- /dev/null
+++ b/dlls/winepulse.drv/winepulse.h
@@ -0,0 +1,196 @@
+/* Definitions for PulseAudio Wine Driver
+ *
+ * Copyright 2009 Arthur Taylor <theycallhimart at gmail.com>
+ *
+ * This library 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.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_CONFIG_H
+# error You must include config.h to use this header
+#endif
+
+#if defined(HAVE_PULSEAUDIO) && !defined(__WINEPULSE_H)
+#define __WINEPULSE_H
+
+#include "mmreg.h"
+#include "dsound.h"
+#include "dsdriver.h"
+
+#include "ks.h"
+#include "ksmedia.h"
+#include "ksguid.h"
+
+#include <pulse/pulseaudio.h>
+
+/* state diagram for waveOut writing:
+ *
+ * +---------+-------------+---------------+---------------------------------+
+ * | state | function | event | new state |
+ * +---------+-------------+---------------+---------------------------------+
+ * | | open() | | STOPPED |
+ * | PAUSED | write() | | PAUSED |
+ * | STOPPED | write() | <thrd create> | PLAYING |
+ * | PLAYING | write() | HEADER | PLAYING |
+ * | (other) | write() | <error> | |
+ * | (any) | pause() | PAUSING | PAUSED |
+ * | PAUSED | restart() | RESTARTING | PLAYING (if no thrd => STOPPED) |
+ * | (any) | reset() | RESETTING | STOPPED |
+ * | (any) | close() | CLOSING | CLOSED |
+ * +---------+-------------+---------------+---------------------------------+
+ */
+
+/* states of the playing device */
+#define WINE_WS_PLAYING 1
+#define WINE_WS_PAUSED 2
+#define WINE_WS_STOPPED 3
+#define WINE_WS_CLOSED 4
+#define WINE_WS_FAILED 5
+
+#define PULSE_ALL_FORMATS \
+ WAVE_FORMAT_1M08 | /* Mono 11025Hz 8-bit */\
+ WAVE_FORMAT_1M16 | /* Mono 11025Hz 16-bit */\
+ WAVE_FORMAT_1S08 | /* Stereo 11025Hz 8-bit */\
+ WAVE_FORMAT_1S16 | /* Stereo 11025Hz 16-bit */\
+ WAVE_FORMAT_2M08 | /* Mono 22050Hz 8-bit */\
+ WAVE_FORMAT_2M16 | /* Mono 22050Hz 16-bit */\
+ WAVE_FORMAT_2S08 | /* Stereo 22050Hz 8-bit */\
+ WAVE_FORMAT_2S16 | /* Stereo 22050Hz 16-bit */\
+ WAVE_FORMAT_4M08 | /* Mono 44100Hz 8-bit */\
+ WAVE_FORMAT_4M16 | /* Mono 44100Hz 16-bit */\
+ WAVE_FORMAT_4S08 | /* Stereo 44100Hz 8-bit */\
+ WAVE_FORMAT_4S16 | /* Stereo 44100Hz 16-bit */\
+ WAVE_FORMAT_48M08 | /* Mono 48000Hz 8-bit */\
+ WAVE_FORMAT_48S08 | /* Stereo 48000Hz 8-bit */\
+ WAVE_FORMAT_48M16 | /* Mono 48000Hz 16-bit */\
+ WAVE_FORMAT_48S16 | /* Stereo 48000Hz 16-bit */\
+ WAVE_FORMAT_96M08 | /* Mono 96000Hz 8-bit */\
+ WAVE_FORMAT_96S08 | /* Stereo 96000Hz 8-bit */\
+ WAVE_FORMAT_96M16 | /* Mono 96000Hz 16-bit */\
+ WAVE_FORMAT_96S16 /* Stereo 96000Hz 16-bit */
+
+/* events to be sent to device */
+enum win_wm_message {
+ WINE_WM_PAUSING = WM_USER + 1, WINE_WM_RESTARTING, WINE_WM_RESETTING, WINE_WM_HEADER,
+ WINE_WM_BREAKLOOP, WINE_WM_CLOSING, WINE_WM_STARTING, WINE_WM_STOPPING, WINE_WM_XRUN, WINE_WM_FEED
+};
+
+typedef struct {
+ enum win_wm_message msg; /* message identifier */
+ DWORD param; /* parameter for this message */
+ HANDLE hEvent; /* if message is synchronous, handle of event for synchro */
+} PULSE_MSG;
+
+/* implement an in-process message ring for better performance
+ * (compared to passing thru the server)
+ * this ring will be used by the input (resp output) record (resp playback) routine
+ */
+typedef struct {
+ PULSE_MSG * messages;
+ int ring_buffer_size;
+ int msg_tosave;
+ int msg_toget;
+/* Either pipe or event is used, but that is defined in pulse.c,
+ * since this is a global header we define both here */
+ int msg_pipe[2];
+ HANDLE msg_event;
+ CRITICAL_SECTION msg_crst;
+} PULSE_MSG_RING;
+
+typedef struct WINE_WAVEDEV WINE_WAVEDEV;
+typedef struct WINE_WAVEINST WINE_WAVEINST;
+
+/* Per-playback/record device */
+struct WINE_WAVEDEV {
+ char interface_name[MAXPNAMELEN * 2];
+ char *device_name;
+ pa_cvolume volume;
+
+ union {
+ WAVEOUTCAPSW out;
+ WAVEINCAPSW in;
+ } caps;
+
+ /* DirectSound stuff */
+ DSDRIVERDESC ds_desc;
+ DSDRIVERCAPS ds_caps;
+};
+
+/* Per-playback/record instance */
+struct WINE_WAVEINST {
+ volatile INT state; /* one of the WINE_WS_ manifest constants */
+ WAVEOPENDESC waveDesc;
+ WORD wFlags;
+
+ /* PulseAudio specific data */
+ pa_stream *stream; /* The PulseAudio stream */
+ const pa_timing_info *timing_info; /* The timing info structure for the stream */
+ pa_sample_spec sample_spec; /* Sample spec of this stream / device */
+ pa_cvolume volume; /* Software volume of the stream */
+ pa_buffer_attr buffer_attr; /* Buffer attribute, may not be used */
+
+ /* waveIn / waveOut wavaHdr */
+ LPWAVEHDR lpQueuePtr; /* Start of queued WAVEHDRs (waiting to be notified) */
+ LPWAVEHDR lpPlayPtr; /* Start of not yet fully written buffers */
+ DWORD dwPartialOffset; /* Offset of not yet written bytes in lpPlayPtr */
+ LPWAVEHDR lpLoopPtr; /* Pointer of first buffer in loop, if any */
+ DWORD dwLoops; /* Private copy of loop counter */
+ DWORD dwLastReset; /* When the last reset occured, as pa stream time doesn't reset */
+
+ /* waveIn specific */
+ const void *buffer; /* Pointer to the latest data fragment for recording streams */
+ DWORD buffer_length; /* How large the latest data fragment is */
+ DWORD buffer_read_offset; /* How far into latest data fragment we last read */
+
+ /* Thread communication and synchronization stuff */
+ HANDLE hStartUpEvent;
+ HANDLE hThread;
+ DWORD dwThreadID;
+ PULSE_MSG_RING msgRing;
+};
+
+/* We establish one context per instance, so make it global to the lib */
+pa_context *PULSE_context; /* Connection Context */
+pa_threaded_mainloop *PULSE_ml; /* PA Runtime information */
+
+/* WaveIn / WaveOut devices */
+WINE_WAVEDEV *WOutDev;
+WINE_WAVEDEV *WInDev;
+DWORD PULSE_WodNumDevs;
+DWORD PULSE_WidNumDevs;
+
+/* pulse.c: PulseAudio Async Callbacks */
+void PULSE_StreamSuccessCallback(pa_stream *s, int success, void *userdata);
+void PULSE_StreamStateCallback(pa_stream *s, void *userdata);
+void PULSE_StreamUnderflowCallback(pa_stream *s, void *userdata);
+void PULSE_StreamSuspendedCallback(pa_stream *s, void *userdata);
+void PULSE_StreamMovedCallback(pa_stream *s, void *userdata);
+void PULSE_ContextSuccessCallback(pa_context *c, int success, void *userdata);
+
+/* pulse.c: General Functions */
+void PULSE_WaitForOperation(pa_operation *o);
+BOOL PULSE_SetupFormat(LPWAVEFORMATEX wf, pa_sample_spec *ss);
+HRESULT PULSE_UsecToMMTime(pa_usec_t time, LPMMTIME lpTime, const pa_sample_spec *ss);
+
+/* pulse.c: Message Ring */
+int PULSE_InitRingMessage(PULSE_MSG_RING* omr);
+int PULSE_DestroyRingMessage(PULSE_MSG_RING* omr);
+void PULSE_ResetRingMessage(PULSE_MSG_RING* omr);
+void PULSE_WaitRingMessage(PULSE_MSG_RING* omr, DWORD sleep);
+int PULSE_AddRingMessage(PULSE_MSG_RING* omr, enum win_wm_message msg, DWORD param, BOOL wait);
+int PULSE_RetrieveRingMessage(PULSE_MSG_RING* omr, enum win_wm_message *msg, DWORD *param, HANDLE *hEvent);
+
+/* pulse.c: Tracing */
+const char * PULSE_getCmdString(enum win_wm_message msg);
+#endif
Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/wine/devel/.cvsignore,v
retrieving revision 1.74
retrieving revision 1.75
diff -u -p -r1.74 -r1.75
--- .cvsignore 11 Jun 2009 21:17:26 -0000 1.74
+++ .cvsignore 20 Jun 2009 08:02:46 -0000 1.75
@@ -1 +1 @@
-wine-1.1.23-fe.tar.bz2
+wine-1.1.24-fe.tar.bz2
Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/wine/devel/sources,v
retrieving revision 1.75
retrieving revision 1.76
diff -u -p -r1.75 -r1.76
--- sources 11 Jun 2009 21:17:26 -0000 1.75
+++ sources 20 Jun 2009 08:02:46 -0000 1.76
@@ -1 +1 @@
-eb26fea9e52e1cbbe48b107b23564988 wine-1.1.23-fe.tar.bz2
+6879c4fbd2e8cf3c4589465868b021a1 wine-1.1.24-fe.tar.bz2
Index: wine.spec
===================================================================
RCS file: /cvs/pkgs/rpms/wine/devel/wine.spec,v
retrieving revision 1.106
retrieving revision 1.107
diff -u -p -r1.106 -r1.107
--- wine.spec 11 Jun 2009 21:17:26 -0000 1.106
+++ wine.spec 20 Jun 2009 08:02:46 -0000 1.107
@@ -1,5 +1,5 @@
Name: wine
-Version: 1.1.23
+Version: 1.1.24
Release: 1%{?dist}
Summary: A Windows 16/32/64 bit emulator
@@ -43,7 +43,7 @@ Source300: wine-mime-msi.desktop
# see http://bugs.winehq.org/show_bug.cgi?id=10495
# and http://art.ified.ca/?page_id=40
Patch400: http://art.ified.ca/downloads/winepulse-0.17-configure.ac.patch
-Patch401: http://art.ified.ca/downloads/winepulse-0.25.patch
+Patch401: http://art.ified.ca/downloads/winepulse-0.28.patch
Patch402: http://art.ified.ca/downloads/adding-pulseaudio-to-winecfg.patch
Source402: README-FEDORA-PULSEAUDIO
@@ -105,8 +105,6 @@ Requires: wine-core = %{version}-%
Requires: wine-capi = %{version}-%{release}
Requires: wine-cms = %{version}-%{release}
Requires: wine-desktop = %{version}-%{release}
-Requires: wine-esd = %{version}-%{release}
-Requires: wine-jack = %{version}-%{release}
Requires: wine-ldap = %{version}-%{release}
Requires: wine-nas = %{version}-%{release}
Requires: wine-tools = %{version}-%{release}
@@ -677,6 +675,7 @@ update-desktop-database &>/dev/null || :
%{_libdir}/wine/vwin32.vxd.so
%{_libdir}/wine/w32skrnl.dll.so
%{_libdir}/wine/wbemprox.dll.so
+%{_libdir}/wine/windowscodecs.dll.so
%{_libdir}/wine/wineaudioio.drv.so
%{_libdir}/wine/winedos.dll.so
%{_libdir}/wine/wineoss.drv.so
@@ -866,6 +865,12 @@ update-desktop-database &>/dev/null || :
%{_libdir}/wine/winepulse.drv.so
%changelog
+* Fri Jun 19 2009 Andreas Bierfert <andreas.bierfert[AT]lowlatency.de>
+- 1.1.24-1
+- version upgrade
+- WinePulse 0.28
+- drop meta package requires for jack and esd
+
* Wed Jun 10 2009 Andreas Bierfert <andreas.bierfert[AT]lowlatency.de>
- 1.1.23-1
- version upgrade (#491321)
--- winepulse-0.25.patch DELETED ---
- Previous message: rpms/wine/F-11 winepulse-0.28.patch, NONE, 1.1 .cvsignore, 1.74, 1.75 sources, 1.75, 1.76 wine.spec, 1.104, 1.105 winepulse-0.25.patch, 1.1, NONE
- Next message: rpms/kernel/F-11 linux-2.6-drivers-char-low-latency-removal.patch, NONE, 1.1 kernel.spec, 1.1656, 1.1657
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the scm-commits
mailing list