|
|
|
@ -1,7 +1,26 @@
|
|
|
|
|
diff -uNr wine-1.5.4.old/configure wine-1.5.4/configure
|
|
|
|
|
--- wine-1.5.4.old/configure 2012-05-11 21:08:09.000000000 +0300
|
|
|
|
|
+++ wine-1.5.4/configure 2012-05-23 12:37:16.166737017 +0300
|
|
|
|
|
@@ -629,6 +629,8 @@
|
|
|
|
|
diff -uNr wine-1.5.16.orig/configure wine-1.5.16/configure
|
|
|
|
|
--- wine-1.5.16.orig/configure 2012-10-28 11:24:58.288429351 +0100
|
|
|
|
|
+++ wine-1.5.16/configure 2012-10-28 11:32:47.643026610 +0100
|
|
|
|
|
@@ -1,6 +1,6 @@
|
|
|
|
|
#! /bin/sh
|
|
|
|
|
# Guess values for system-dependent variables and create Makefiles.
|
|
|
|
|
-# Generated by GNU Autoconf 2.69 for Wine 1.5.16.
|
|
|
|
|
+# Generated by GNU Autoconf 2.69 for Wine 1.5.15.
|
|
|
|
|
#
|
|
|
|
|
# Report bugs to <wine-devel@winehq.org>.
|
|
|
|
|
#
|
|
|
|
|
@@ -580,8 +580,8 @@
|
|
|
|
|
# Identity of this package.
|
|
|
|
|
PACKAGE_NAME='Wine'
|
|
|
|
|
PACKAGE_TARNAME='wine'
|
|
|
|
|
-PACKAGE_VERSION='1.5.16'
|
|
|
|
|
-PACKAGE_STRING='Wine 1.5.16'
|
|
|
|
|
+PACKAGE_VERSION='1.5.15'
|
|
|
|
|
+PACKAGE_STRING='Wine 1.5.15'
|
|
|
|
|
PACKAGE_BUGREPORT='wine-devel@winehq.org'
|
|
|
|
|
PACKAGE_URL='http://www.winehq.org'
|
|
|
|
|
|
|
|
|
|
@@ -649,6 +649,8 @@
|
|
|
|
|
ALSALIBS
|
|
|
|
|
GSTREAMER_INCL
|
|
|
|
|
GSTREAMER_LIBS
|
|
|
|
@ -10,7 +29,7 @@ diff -uNr wine-1.5.4.old/configure wine-1.5.4/configure
|
|
|
|
|
LIBGETTEXTPO
|
|
|
|
|
ZLIB
|
|
|
|
|
FREETYPEINCL
|
|
|
|
|
@@ -805,6 +807,7 @@
|
|
|
|
|
@@ -826,6 +828,7 @@
|
|
|
|
|
with_oss
|
|
|
|
|
with_png
|
|
|
|
|
with_pthread
|
|
|
|
@ -18,7 +37,25 @@ diff -uNr wine-1.5.4.old/configure wine-1.5.4/configure
|
|
|
|
|
with_sane
|
|
|
|
|
with_tiff
|
|
|
|
|
with_v4l
|
|
|
|
|
@@ -1495,6 +1498,7 @@
|
|
|
|
|
@@ -1400,7 +1403,7 @@
|
|
|
|
|
# Omit some internal or obsolete options to make the list less imposing.
|
|
|
|
|
# This message is too long to be a string in the A/UX 3.1 sh.
|
|
|
|
|
cat <<_ACEOF
|
|
|
|
|
-\`configure' configures Wine 1.5.16 to adapt to many kinds of systems.
|
|
|
|
|
+\`configure' configures Wine 1.5.15 to adapt to many kinds of systems.
|
|
|
|
|
|
|
|
|
|
Usage: $0 [OPTION]... [VAR=VALUE]...
|
|
|
|
|
|
|
|
|
|
@@ -1469,7 +1472,7 @@
|
|
|
|
|
|
|
|
|
|
if test -n "$ac_init_help"; then
|
|
|
|
|
case $ac_init_help in
|
|
|
|
|
- short | recursive ) echo "Configuration of Wine 1.5.16:";;
|
|
|
|
|
+ short | recursive ) echo "Configuration of Wine 1.5.15:";;
|
|
|
|
|
esac
|
|
|
|
|
cat <<\_ACEOF
|
|
|
|
|
|
|
|
|
|
@@ -1516,6 +1519,7 @@
|
|
|
|
|
--without-oss do not use the OSS sound support
|
|
|
|
|
--without-png do not use PNG
|
|
|
|
|
--without-pthread do not use the pthread library
|
|
|
|
@ -26,7 +63,25 @@ diff -uNr wine-1.5.4.old/configure wine-1.5.4/configure
|
|
|
|
|
--without-sane do not use SANE (scanner support)
|
|
|
|
|
--without-tiff do not use TIFF
|
|
|
|
|
--without-v4l do not use v4l1 (v4l support)
|
|
|
|
|
@@ -2679,6 +2683,12 @@
|
|
|
|
|
@@ -1616,7 +1620,7 @@
|
|
|
|
|
test -n "$ac_init_help" && exit $ac_status
|
|
|
|
|
if $ac_init_version; then
|
|
|
|
|
cat <<\_ACEOF
|
|
|
|
|
-Wine configure 1.5.16
|
|
|
|
|
+Wine configure 1.5.15
|
|
|
|
|
generated by GNU Autoconf 2.69
|
|
|
|
|
|
|
|
|
|
Copyright (C) 2012 Free Software Foundation, Inc.
|
|
|
|
|
@@ -2134,7 +2138,7 @@
|
|
|
|
|
This file contains any messages produced by compilers while
|
|
|
|
|
running configure, to aid debugging if configure makes a mistake.
|
|
|
|
|
|
|
|
|
|
-It was created by Wine $as_me 1.5.16, which was
|
|
|
|
|
+It was created by Wine $as_me 1.5.15, which was
|
|
|
|
|
generated by GNU Autoconf 2.69. Invocation command line was
|
|
|
|
|
|
|
|
|
|
$ $0 $@
|
|
|
|
|
@@ -2707,6 +2711,12 @@
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -39,7 +94,7 @@ diff -uNr wine-1.5.4.old/configure wine-1.5.4/configure
|
|
|
|
|
# Check whether --with-sane was given.
|
|
|
|
|
if test "${with_sane+set}" = set; then :
|
|
|
|
|
withval=$with_sane;
|
|
|
|
|
@@ -10639,6 +10649,87 @@
|
|
|
|
|
@@ -10807,6 +10817,87 @@
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
@ -127,7 +182,7 @@ diff -uNr wine-1.5.4.old/configure wine-1.5.4/configure
|
|
|
|
|
if test "x$with_gstreamer" != "xno"
|
|
|
|
|
then
|
|
|
|
|
ac_save_CPPFLAGS="$CPPFLAGS"
|
|
|
|
|
@@ -11898,12 +11989,13 @@
|
|
|
|
|
@@ -12066,12 +12157,13 @@
|
|
|
|
|
|
|
|
|
|
test -n "$ALSALIBS" || enable_winealsa_drv=${enable_winealsa_drv:-no}
|
|
|
|
|
test -n "$COREAUDIO" || enable_winecoreaudio_drv=${enable_winecoreaudio_drv:-no}
|
|
|
|
@ -143,7 +198,7 @@ diff -uNr wine-1.5.4.old/configure wine-1.5.4/configure
|
|
|
|
|
then
|
|
|
|
|
as_fn_append wine_warnings "|No sound system was found. Windows applications will be silent."
|
|
|
|
|
fi
|
|
|
|
|
@@ -15430,6 +15522,7 @@
|
|
|
|
|
@@ -15832,6 +15924,7 @@
|
|
|
|
|
wine_fn_config_dll wineoss.drv enable_wineoss_drv
|
|
|
|
|
wine_fn_config_dll wineps.drv enable_wineps_drv install-lib,po
|
|
|
|
|
wine_fn_config_dll wineps16.drv16 enable_win16
|
|
|
|
@ -151,10 +206,28 @@ diff -uNr wine-1.5.4.old/configure wine-1.5.4/configure
|
|
|
|
|
wine_fn_config_dll wineqtdecoder enable_wineqtdecoder
|
|
|
|
|
wine_fn_config_dll winequartz.drv enable_winequartz_drv
|
|
|
|
|
wine_fn_config_dll winex11.drv enable_winex11_drv
|
|
|
|
|
diff -uNr wine-1.5.4.old/configure.ac wine-1.5.4/configure.ac
|
|
|
|
|
--- wine-1.5.4.old/configure.ac 2012-05-11 21:08:09.000000000 +0300
|
|
|
|
|
+++ wine-1.5.4/configure.ac 2012-05-23 12:38:20.969468598 +0300
|
|
|
|
|
@@ -74,6 +74,7 @@
|
|
|
|
|
@@ -16588,7 +16681,7 @@
|
|
|
|
|
# report actual input values of CONFIG_FILES etc. instead of their
|
|
|
|
|
# values after options handling.
|
|
|
|
|
ac_log="
|
|
|
|
|
-This file was extended by Wine $as_me 1.5.16, which was
|
|
|
|
|
+This file was extended by Wine $as_me 1.5.15, which was
|
|
|
|
|
generated by GNU Autoconf 2.69. Invocation command line was
|
|
|
|
|
|
|
|
|
|
CONFIG_FILES = $CONFIG_FILES
|
|
|
|
|
@@ -16659,7 +16752,7 @@
|
|
|
|
|
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
|
|
|
|
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
|
|
|
|
ac_cs_version="\\
|
|
|
|
|
-Wine config.status 1.5.16
|
|
|
|
|
+Wine config.status 1.5.15
|
|
|
|
|
configured by $0, generated by GNU Autoconf 2.69,
|
|
|
|
|
with options \\"\$ac_cs_config\\"
|
|
|
|
|
|
|
|
|
|
diff -uNr wine-1.5.16.orig/configure.ac wine-1.5.16/configure.ac
|
|
|
|
|
--- wine-1.5.16.orig/configure.ac 2012-10-28 11:24:58.766394415 +0100
|
|
|
|
|
+++ wine-1.5.16/configure.ac 2012-10-28 11:32:49.545887232 +0100
|
|
|
|
|
@@ -76,6 +76,7 @@
|
|
|
|
|
[if test "x$withval" = "xno"; then ac_cv_header_png_h=no; fi])
|
|
|
|
|
AC_ARG_WITH(pthread, AS_HELP_STRING([--without-pthread],[do not use the pthread library]),
|
|
|
|
|
[if test "x$withval" = "xno"; then ac_cv_header_pthread_h=no; fi])
|
|
|
|
@ -162,7 +235,7 @@ diff -uNr wine-1.5.4.old/configure.ac wine-1.5.4/configure.ac
|
|
|
|
|
AC_ARG_WITH(sane, AS_HELP_STRING([--without-sane],[do not use SANE (scanner support)]))
|
|
|
|
|
AC_ARG_WITH(tiff, AS_HELP_STRING([--without-tiff],[do not use TIFF]),
|
|
|
|
|
[if test "x$withval" = "xno"; then ac_cv_header_tiffio_h=no; fi])
|
|
|
|
|
@@ -1482,6 +1483,30 @@
|
|
|
|
|
@@ -1512,6 +1513,30 @@
|
|
|
|
|
[GetText ${notice_platform}development files not found (or too old), po files can't be rebuilt.])
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
@ -193,7 +266,7 @@ diff -uNr wine-1.5.4.old/configure.ac wine-1.5.4/configure.ac
|
|
|
|
|
dnl **** Check for gstreamer ****
|
|
|
|
|
if test "x$with_gstreamer" != "xno"
|
|
|
|
|
then
|
|
|
|
|
@@ -1688,13 +1713,14 @@
|
|
|
|
|
@@ -1718,13 +1743,14 @@
|
|
|
|
|
dnl **** Disable unsupported winmm drivers ****
|
|
|
|
|
test -n "$ALSALIBS" || enable_winealsa_drv=${enable_winealsa_drv:-no}
|
|
|
|
|
test -n "$COREAUDIO" || enable_winecoreaudio_drv=${enable_winecoreaudio_drv:-no}
|
|
|
|
@ -210,7 +283,7 @@ diff -uNr wine-1.5.4.old/configure.ac wine-1.5.4/configure.ac
|
|
|
|
|
then
|
|
|
|
|
WINE_WARNING([No sound system was found. Windows applications will be silent.])
|
|
|
|
|
fi
|
|
|
|
|
@@ -2918,6 +2944,7 @@
|
|
|
|
|
@@ -3055,6 +3081,7 @@
|
|
|
|
|
WINE_CONFIG_DLL(wineoss.drv)
|
|
|
|
|
WINE_CONFIG_DLL(wineps.drv,,[install-lib,po])
|
|
|
|
|
WINE_CONFIG_DLL(wineps16.drv16,enable_win16)
|
|
|
|
@ -218,21 +291,9 @@ diff -uNr wine-1.5.4.old/configure.ac wine-1.5.4/configure.ac
|
|
|
|
|
WINE_CONFIG_DLL(wineqtdecoder)
|
|
|
|
|
WINE_CONFIG_DLL(winequartz.drv)
|
|
|
|
|
WINE_CONFIG_DLL(winex11.drv)
|
|
|
|
|
diff -uNr wine-1.5.4.old/dlls/mmdevapi/main.c wine-1.5.4/dlls/mmdevapi/main.c
|
|
|
|
|
--- wine-1.5.4.old/dlls/mmdevapi/main.c 2012-05-11 21:08:09.000000000 +0300
|
|
|
|
|
+++ wine-1.5.4/dlls/mmdevapi/main.c 2012-05-23 12:13:41.597012820 +0300
|
|
|
|
|
@@ -111,7 +111,7 @@
|
|
|
|
|
{
|
|
|
|
|
static const WCHAR drv_value[] = {'A','u','d','i','o',0};
|
|
|
|
|
|
|
|
|
|
- static WCHAR default_list[] = {'a','l','s','a',',','o','s','s',',',
|
|
|
|
|
+ static WCHAR default_list[] = {'p','u','l','s','e',',','a','l','s','a',',','o','s','s',',',
|
|
|
|
|
'c','o','r','e','a','u','d','i','o',0};
|
|
|
|
|
|
|
|
|
|
DriverFuncs driver;
|
|
|
|
|
diff -uNr wine-1.5.4.old/dlls/winepulse.drv/Makefile.in wine-1.5.4/dlls/winepulse.drv/Makefile.in
|
|
|
|
|
--- wine-1.5.4.old/dlls/winepulse.drv/Makefile.in 1970-01-01 02:00:00.000000000 +0200
|
|
|
|
|
+++ wine-1.5.4/dlls/winepulse.drv/Makefile.in 2012-05-23 12:03:21.068645000 +0300
|
|
|
|
|
diff -uNr wine-1.5.16.orig/dlls/winepulse.drv/Makefile.in wine-1.5.16/dlls/winepulse.drv/Makefile.in
|
|
|
|
|
--- wine-1.5.16.orig/dlls/winepulse.drv/Makefile.in 1970-01-01 01:00:00.000000000 +0100
|
|
|
|
|
+++ wine-1.5.16/dlls/winepulse.drv/Makefile.in 2012-10-28 11:31:38.175116035 +0100
|
|
|
|
|
@@ -0,0 +1,9 @@
|
|
|
|
|
+MODULE = winepulse.drv
|
|
|
|
|
+IMPORTS = dxguid uuid winmm user32 advapi32 ole32
|
|
|
|
@ -243,10 +304,10 @@ diff -uNr wine-1.5.4.old/dlls/winepulse.drv/Makefile.in wine-1.5.4/dlls/winepuls
|
|
|
|
|
+ mmdevdrv.c
|
|
|
|
|
+
|
|
|
|
|
+@MAKE_DLL_RULES@
|
|
|
|
|
diff -uNr wine-1.5.4.old/dlls/winepulse.drv/mmdevdrv.c wine-1.5.4/dlls/winepulse.drv/mmdevdrv.c
|
|
|
|
|
--- wine-1.5.4.old/dlls/winepulse.drv/mmdevdrv.c 1970-01-01 02:00:00.000000000 +0200
|
|
|
|
|
+++ wine-1.5.4/dlls/winepulse.drv/mmdevdrv.c 2012-05-23 12:03:21.069645000 +0300
|
|
|
|
|
@@ -0,0 +1,3101 @@
|
|
|
|
|
diff -uNr wine-1.5.16.orig/dlls/winepulse.drv/mmdevdrv.c wine-1.5.16/dlls/winepulse.drv/mmdevdrv.c
|
|
|
|
|
--- wine-1.5.16.orig/dlls/winepulse.drv/mmdevdrv.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
|
|
+++ wine-1.5.16/dlls/winepulse.drv/mmdevdrv.c 2012-10-28 11:31:38.176115962 +0100
|
|
|
|
|
@@ -0,0 +1,3098 @@
|
|
|
|
|
+/*
|
|
|
|
|
+ * Copyright 2011-2012 Maarten Lankhorst
|
|
|
|
|
+ * Copyright 2010-2011 Maarten Lankhorst for CodeWeavers
|
|
|
|
@ -350,6 +411,8 @@ diff -uNr wine-1.5.4.old/dlls/winepulse.drv/mmdevdrv.c wine-1.5.4/dlls/winepulse
|
|
|
|
|
+ }
|
|
|
|
|
+ DisableThreadLibraryCalls(dll);
|
|
|
|
|
+ } else if (reason == DLL_PROCESS_DETACH) {
|
|
|
|
|
+ if (pulse_thread)
|
|
|
|
|
+ SetThreadPriority(pulse_thread, 0);
|
|
|
|
|
+ if (pulse_ctx) {
|
|
|
|
|
+ pa_context_disconnect(pulse_ctx);
|
|
|
|
|
+ pa_context_unref(pulse_ctx);
|
|
|
|
@ -423,7 +486,6 @@ diff -uNr wine-1.5.4.old/dlls/winepulse.drv/mmdevdrv.c wine-1.5.4/dlls/winepulse
|
|
|
|
|
+ pa_channel_map map;
|
|
|
|
|
+
|
|
|
|
|
+ INT64 clock_lastpos, clock_written;
|
|
|
|
|
+ pa_usec_t clock_pulse;
|
|
|
|
|
+
|
|
|
|
|
+ AudioSession *session;
|
|
|
|
|
+ AudioSessionWrapper *session_wrapper;
|
|
|
|
@ -772,7 +834,6 @@ diff -uNr wine-1.5.4.old/dlls/winepulse.drv/mmdevdrv.c wine-1.5.4/dlls/winepulse
|
|
|
|
|
+static void pulse_wr_callback(pa_stream *s, size_t bytes, void *userdata)
|
|
|
|
|
+{
|
|
|
|
|
+ ACImpl *This = userdata;
|
|
|
|
|
+ pa_usec_t time;
|
|
|
|
|
+ UINT32 oldpad = This->pad;
|
|
|
|
|
+
|
|
|
|
|
+ if (bytes < This->bufsize_bytes)
|
|
|
|
@ -782,13 +843,8 @@ diff -uNr wine-1.5.4.old/dlls/winepulse.drv/mmdevdrv.c wine-1.5.4/dlls/winepulse
|
|
|
|
|
+
|
|
|
|
|
+ assert(oldpad >= This->pad);
|
|
|
|
|
+
|
|
|
|
|
+ if (0 && This->pad && pa_stream_get_time(This->stream, &time) >= 0)
|
|
|
|
|
+ This->clock_pulse = time;
|
|
|
|
|
+ else
|
|
|
|
|
+ This->clock_pulse = PA_USEC_INVALID;
|
|
|
|
|
+
|
|
|
|
|
+ This->clock_written += oldpad - This->pad;
|
|
|
|
|
+ TRACE("New pad: %u (-%u)\n", This->pad / pa_frame_size(&This->ss), (oldpad - This->pad) / pa_frame_size(&This->ss));
|
|
|
|
|
+ TRACE("New pad: %zu (-%zu)\n", This->pad / pa_frame_size(&This->ss), (oldpad - This->pad) / pa_frame_size(&This->ss));
|
|
|
|
|
+
|
|
|
|
|
+ if (This->event)
|
|
|
|
|
+ SetEvent(This->event);
|
|
|
|
@ -796,8 +852,6 @@ diff -uNr wine-1.5.4.old/dlls/winepulse.drv/mmdevdrv.c wine-1.5.4/dlls/winepulse
|
|
|
|
|
+
|
|
|
|
|
+static void pulse_underflow_callback(pa_stream *s, void *userdata)
|
|
|
|
|
+{
|
|
|
|
|
+ ACImpl *This = userdata;
|
|
|
|
|
+ This->clock_pulse = PA_USEC_INVALID;
|
|
|
|
|
+ WARN("Underflow\n");
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
@ -815,15 +869,7 @@ diff -uNr wine-1.5.4.old/dlls/winepulse.drv/mmdevdrv.c wine-1.5.4/dlls/winepulse
|
|
|
|
|
+
|
|
|
|
|
+static void pulse_started_callback(pa_stream *s, void *userdata)
|
|
|
|
|
+{
|
|
|
|
|
+ ACImpl *This = userdata;
|
|
|
|
|
+ pa_usec_t time;
|
|
|
|
|
+
|
|
|
|
|
+ TRACE("(Re)started playing\n");
|
|
|
|
|
+ assert(This->clock_pulse == PA_USEC_INVALID);
|
|
|
|
|
+ if (0 && pa_stream_get_time(This->stream, &time) >= 0)
|
|
|
|
|
+ This->clock_pulse = time;
|
|
|
|
|
+ if (This->event)
|
|
|
|
|
+ SetEvent(This->event);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+static void pulse_rd_loop(ACImpl *This, size_t bytes)
|
|
|
|
@ -832,7 +878,7 @@ diff -uNr wine-1.5.4.old/dlls/winepulse.drv/mmdevdrv.c wine-1.5.4/dlls/winepulse
|
|
|
|
|
+ ACPacket *p, *next;
|
|
|
|
|
+ LARGE_INTEGER stamp, freq;
|
|
|
|
|
+ BYTE *dst, *src;
|
|
|
|
|
+ UINT32 src_len, copy, rem = This->capture_period;
|
|
|
|
|
+ size_t src_len, copy, rem = This->capture_period;
|
|
|
|
|
+ if (!(p = (ACPacket*)list_head(&This->packet_free_head))) {
|
|
|
|
|
+ p = (ACPacket*)list_head(&This->packet_filled_head);
|
|
|
|
|
+ if (!p->discont) {
|
|
|
|
@ -884,7 +930,7 @@ diff -uNr wine-1.5.4.old/dlls/winepulse.drv/mmdevdrv.c wine-1.5.4/dlls/winepulse
|
|
|
|
|
+static void pulse_rd_drop(ACImpl *This, size_t bytes)
|
|
|
|
|
+{
|
|
|
|
|
+ while (bytes >= This->capture_period) {
|
|
|
|
|
+ UINT32 src_len, copy, rem = This->capture_period;
|
|
|
|
|
+ size_t src_len, copy, rem = This->capture_period;
|
|
|
|
|
+ while (rem) {
|
|
|
|
|
+ const void *src;
|
|
|
|
|
+ pa_stream_peek(This->stream, &src, &src_len);
|
|
|
|
@ -914,7 +960,7 @@ diff -uNr wine-1.5.4.old/dlls/winepulse.drv/mmdevdrv.c wine-1.5.4/dlls/winepulse
|
|
|
|
|
+{
|
|
|
|
|
+ ACImpl *This = userdata;
|
|
|
|
|
+
|
|
|
|
|
+ TRACE("Readable total: %u, fragsize: %u\n", bytes, pa_stream_get_buffer_attr(s)->fragsize);
|
|
|
|
|
+ TRACE("Readable total: %zu, fragsize: %u\n", bytes, pa_stream_get_buffer_attr(s)->fragsize);
|
|
|
|
|
+ assert(bytes >= This->peek_ofs);
|
|
|
|
|
+ bytes -= This->peek_ofs;
|
|
|
|
|
+ if (bytes < This->capture_period)
|
|
|
|
@ -1074,7 +1120,6 @@ diff -uNr wine-1.5.4.old/dlls/winepulse.drv/mmdevdrv.c wine-1.5.4/dlls/winepulse
|
|
|
|
|
+ This->IAudioStreamVolume_iface.lpVtbl = &AudioStreamVolume_Vtbl;
|
|
|
|
|
+ This->dataflow = dataflow;
|
|
|
|
|
+ This->parent = dev;
|
|
|
|
|
+ This->clock_pulse = PA_USEC_INVALID;
|
|
|
|
|
+ for (i = 0; i < PA_CHANNELS_MAX; ++i)
|
|
|
|
|
+ This->vol[i] = 1.f;
|
|
|
|
|
+ IMMDevice_AddRef(This->parent);
|
|
|
|
@ -1458,9 +1503,25 @@ diff -uNr wine-1.5.4.old/dlls/winepulse.drv/mmdevdrv.c wine-1.5.4/dlls/winepulse
|
|
|
|
|
+ goto exit;
|
|
|
|
|
+
|
|
|
|
|
+ if (mode == AUDCLNT_SHAREMODE_SHARED) {
|
|
|
|
|
+ period = pulse_def_period[This->dataflow == eCapture];
|
|
|
|
|
+ REFERENCE_TIME def = pulse_def_period[This->dataflow == eCapture];
|
|
|
|
|
+ REFERENCE_TIME min = pulse_min_period[This->dataflow == eCapture];
|
|
|
|
|
+
|
|
|
|
|
+ /* Switch to low latency mode if below 2 default periods,
|
|
|
|
|
+ * which is 20 ms by default, this will increase the amount
|
|
|
|
|
+ * of interrupts but allows very low latency. In dsound I
|
|
|
|
|
+ * managed to get a total latency of ~8ms, which is well below
|
|
|
|
|
+ * default
|
|
|
|
|
+ */
|
|
|
|
|
+ if (duration < 2 * def)
|
|
|
|
|
+ period = min;
|
|
|
|
|
+ else
|
|
|
|
|
+ period = def;
|
|
|
|
|
+ if (duration < 2 * period)
|
|
|
|
|
+ duration = 2 * period;
|
|
|
|
|
+
|
|
|
|
|
+ /* Uh oh, really low latency requested.. */
|
|
|
|
|
+ if (duration <= 2 * period)
|
|
|
|
|
+ period /= 2;
|
|
|
|
|
+ }
|
|
|
|
|
+ period_bytes = pa_frame_size(&This->ss) * MulDiv(period, This->ss.rate, 10000000);
|
|
|
|
|
+
|
|
|
|
@ -1769,7 +1830,6 @@ diff -uNr wine-1.5.4.old/dlls/winepulse.drv/mmdevdrv.c wine-1.5.4/dlls/winepulse
|
|
|
|
|
+ pthread_mutex_unlock(&pulse_lock);
|
|
|
|
|
+ return AUDCLNT_E_NOT_STOPPED;
|
|
|
|
|
+ }
|
|
|
|
|
+ This->clock_pulse = PA_USEC_INVALID;
|
|
|
|
|
+
|
|
|
|
|
+ if (pa_stream_is_corked(This->stream)) {
|
|
|
|
|
+ o = pa_stream_cork(This->stream, 0, pulse_op_cb, &success);
|
|
|
|
@ -1825,7 +1885,6 @@ diff -uNr wine-1.5.4.old/dlls/winepulse.drv/mmdevdrv.c wine-1.5.4/dlls/winepulse
|
|
|
|
|
+ }
|
|
|
|
|
+ if (SUCCEEDED(hr)) {
|
|
|
|
|
+ This->started = FALSE;
|
|
|
|
|
+ This->clock_pulse = PA_USEC_INVALID;
|
|
|
|
|
+ }
|
|
|
|
|
+ pthread_mutex_unlock(&pulse_lock);
|
|
|
|
|
+ return hr;
|
|
|
|
@ -2023,7 +2082,8 @@ diff -uNr wine-1.5.4.old/dlls/winepulse.drv/mmdevdrv.c wine-1.5.4/dlls/winepulse
|
|
|
|
|
+ UINT32 frames, BYTE **data)
|
|
|
|
|
+{
|
|
|
|
|
+ ACImpl *This = impl_from_IAudioRenderClient(iface);
|
|
|
|
|
+ UINT32 avail, pad, req, bytes = frames * pa_frame_size(&This->ss);
|
|
|
|
|
+ size_t avail, req, bytes = frames * pa_frame_size(&This->ss);
|
|
|
|
|
+ UINT32 pad;
|
|
|
|
|
+ HRESULT hr = S_OK;
|
|
|
|
|
+ int ret = -1;
|
|
|
|
|
+
|
|
|
|
@ -2048,7 +2108,7 @@ diff -uNr wine-1.5.4.old/dlls/winepulse.drv/mmdevdrv.c wine-1.5.4/dlls/winepulse
|
|
|
|
|
+ avail = This->bufsize_frames - pad;
|
|
|
|
|
+ if (avail < frames || bytes > This->bufsize_bytes) {
|
|
|
|
|
+ pthread_mutex_unlock(&pulse_lock);
|
|
|
|
|
+ WARN("Wanted to write %u, but only %u available\n", frames, avail);
|
|
|
|
|
+ WARN("Wanted to write %u, but only %zu available\n", frames, avail);
|
|
|
|
|
+ return AUDCLNT_E_BUFFER_TOO_LARGE;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
@ -2056,7 +2116,7 @@ diff -uNr wine-1.5.4.old/dlls/winepulse.drv/mmdevdrv.c wine-1.5.4/dlls/winepulse
|
|
|
|
|
+ req = bytes;
|
|
|
|
|
+ ret = pa_stream_begin_write(This->stream, &This->locked_ptr, &req);
|
|
|
|
|
+ if (ret < 0 || req < bytes) {
|
|
|
|
|
+ FIXME("%p Not using pulse locked data: %i %u/%u %u/%u\n", This, ret, req/pa_frame_size(&This->ss), frames, pad, This->bufsize_frames);
|
|
|
|
|
+ FIXME("%p Not using pulse locked data: %i %zu/%u %u/%u\n", This, ret, req/pa_frame_size(&This->ss), frames, pad, This->bufsize_frames);
|
|
|
|
|
+ if (ret >= 0)
|
|
|
|
|
+ pa_stream_cancel_write(This->stream);
|
|
|
|
|
+ *data = This->tmp_buffer;
|
|
|
|
@ -2072,6 +2132,7 @@ diff -uNr wine-1.5.4.old/dlls/winepulse.drv/mmdevdrv.c wine-1.5.4/dlls/winepulse
|
|
|
|
|
+{
|
|
|
|
|
+ ACImpl *This = impl_from_IAudioRenderClient(iface);
|
|
|
|
|
+ UINT32 written_bytes = written_frames * pa_frame_size(&This->ss);
|
|
|
|
|
+// UINT32 period;
|
|
|
|
|
+
|
|
|
|
|
+ TRACE("(%p)->(%u, %x)\n", This, written_frames, flags);
|
|
|
|
|
+
|
|
|
|
@ -2104,8 +2165,13 @@ diff -uNr wine-1.5.4.old/dlls/winepulse.drv/mmdevdrv.c wine-1.5.4/dlls/winepulse
|
|
|
|
|
+ pa_stream_write(This->stream, This->tmp_buffer, written_bytes, NULL, 0, PA_SEEK_RELATIVE);
|
|
|
|
|
+ This->pad += written_bytes;
|
|
|
|
|
+ This->locked_ptr = NULL;
|
|
|
|
|
+ TRACE("Released %u, pad %u\n", written_frames, This->pad / pa_frame_size(&This->ss));
|
|
|
|
|
+ TRACE("Released %u, pad %zu\n", written_frames, This->pad / pa_frame_size(&This->ss));
|
|
|
|
|
+ assert(This->pad <= This->bufsize_bytes);
|
|
|
|
|
+
|
|
|
|
|
+// period = pa_stream_get_buffer_attr(This->stream)->minreq;
|
|
|
|
|
+ /* Require a minimum of 3 periods filled, if possible */
|
|
|
|
|
+// if (This->event && This->pad + period <= This->bufsize_bytes && This->pad < period * 3)
|
|
|
|
|
+// SetEvent(This->event);
|
|
|
|
|
+ pthread_mutex_unlock(&pulse_lock);
|
|
|
|
|
+ return S_OK;
|
|
|
|
|
+}
|
|
|
|
@ -2312,7 +2378,6 @@ diff -uNr wine-1.5.4.old/dlls/winepulse.drv/mmdevdrv.c wine-1.5.4/dlls/winepulse
|
|
|
|
|
+ UINT64 *qpctime)
|
|
|
|
|
+{
|
|
|
|
|
+ ACImpl *This = impl_from_IAudioClock(iface);
|
|
|
|
|
+ pa_usec_t time;
|
|
|
|
|
+ HRESULT hr;
|
|
|
|
|
+
|
|
|
|
|
+ TRACE("(%p)->(%p, %p)\n", This, pos, qpctime);
|
|
|
|
@ -2328,13 +2393,6 @@ diff -uNr wine-1.5.4.old/dlls/winepulse.drv/mmdevdrv.c wine-1.5.4/dlls/winepulse
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ *pos = This->clock_written;
|
|
|
|
|
+ if (This->clock_pulse != PA_USEC_INVALID && pa_stream_get_time(This->stream, &time) >= 0) {
|
|
|
|
|
+ UINT32 delta = pa_usec_to_bytes(time - This->clock_pulse, &This->ss);
|
|
|
|
|
+ if (delta < This->pad)
|
|
|
|
|
+ *pos += delta;
|
|
|
|
|
+ else
|
|
|
|
|
+ *pos += This->pad;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /* Make time never go backwards */
|
|
|
|
|
+ if (*pos < This->clock_lastpos)
|
|
|
|
@ -3348,9 +3406,9 @@ diff -uNr wine-1.5.4.old/dlls/winepulse.drv/mmdevdrv.c wine-1.5.4/dlls/winepulse
|
|
|
|
|
+ *out = &This->IAudioSessionManager2_iface;
|
|
|
|
|
+ return S_OK;
|
|
|
|
|
+}
|
|
|
|
|
diff -uNr wine-1.5.4.old/dlls/winepulse.drv/winepulse.drv.spec wine-1.5.4/dlls/winepulse.drv/winepulse.drv.spec
|
|
|
|
|
--- wine-1.5.4.old/dlls/winepulse.drv/winepulse.drv.spec 1970-01-01 02:00:00.000000000 +0200
|
|
|
|
|
+++ wine-1.5.4/dlls/winepulse.drv/winepulse.drv.spec 2012-05-23 12:03:21.069645000 +0300
|
|
|
|
|
diff -uNr wine-1.5.16.orig/dlls/winepulse.drv/winepulse.drv.spec wine-1.5.16/dlls/winepulse.drv/winepulse.drv.spec
|
|
|
|
|
--- wine-1.5.16.orig/dlls/winepulse.drv/winepulse.drv.spec 1970-01-01 01:00:00.000000000 +0100
|
|
|
|
|
+++ wine-1.5.16/dlls/winepulse.drv/winepulse.drv.spec 2012-10-28 11:31:38.176115962 +0100
|
|
|
|
|
@@ -0,0 +1,5 @@
|
|
|
|
|
+# MMDevAPI driver functions
|
|
|
|
|
+@ stdcall -private GetPriority() AUDDRV_GetPriority
|