[wine] 1.5.16-1

Andreas Bierfert awjb at fedoraproject.org
Sun Oct 28 17:54:22 UTC 2012


commit 398eb10909c0274fdc371355ccaa1f4818a9cd13
Author: Andreas Bierfert <andreas.bierfert at lowlatency.de>
Date:   Sun Oct 28 18:54:15 2012 +0100

    1.5.16-1
    
    - version upgrade (rhbz#870611)
    - wine mono 0.8
    - update pulse patch
    - fix midi in winepulse (rhbz#863129)
    - fix dependencies for openssl (rhbz#868576)

 .gitignore                                         |    4 +-
 sources                                            |    4 +-
 wine-pulse-1.5.4.patch => wine-pulse-1.5.16.patch  |  212 +++++++++++++-------
 ...winmm-Load-winealsa-if-winepulse-is-found.patch |   29 +++
 wine.spec                                          |   43 ++++-
 5 files changed, 207 insertions(+), 85 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 6ea484e..c1dfe30 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,4 @@
 /wine-1.4.tar.bz2
 /wine-1.4.tar.bz2.sign
-/wine-1.5.15.tar.bz2
-/wine-1.5.15.tar.bz2.sign
+/wine-1.5.16.tar.bz2
+/wine-1.5.16.tar.bz2.sign
diff --git a/sources b/sources
index 6cd3baa..81f7320 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-41728374d14d0f13552250c70c0d40d2  wine-1.5.15.tar.bz2
-6d8a5749f3f7d45340fc9e43e906c238  wine-1.5.15.tar.bz2.sign
+cece715b6ff812e2cd76b7462f3fb582  wine-1.5.16.tar.bz2
+a087f0703a1778e82a73dfaa729a7aad  wine-1.5.16.tar.bz2.sign
diff --git a/wine-pulse-1.5.4.patch b/wine-pulse-1.5.16.patch
similarity index 94%
rename from wine-pulse-1.5.4.patch
rename to wine-pulse-1.5.16.patch
index 54e7f0d..40c7da7 100644
--- a/wine-pulse-1.5.4.patch
+++ b/wine-pulse-1.5.16.patch
@@ -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 at 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 at 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
 +
 + at 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
@@ -331,7 +392,7 @@ diff -uNr wine-1.5.4.old/dlls/winepulse.drv/mmdevdrv.c wine-1.5.4/dlls/winepulse
 +    'W','i','n','e','\\','P','u','l','s','e',0};
 +const WCHAR pulse_streamW[] = { 'S','t','r','e','a','m','V','o','l',0 };
 +
-+static GUID pulse_render_guid = 
++static GUID pulse_render_guid =
 +{ 0xfd47d9cc, 0x4218, 0x4135, { 0x9c, 0xe2, 0x0c, 0x19, 0x5c, 0x87, 0x40, 0x5b } };
 +static GUID pulse_capture_guid =
 +{ 0x25da76d0, 0x033c, 0x4235, { 0x90, 0x02, 0x19, 0xf4, 0x88, 0x94, 0xac, 0x6f } };
@@ -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
diff --git a/wine-pulse-winmm-Load-winealsa-if-winepulse-is-found.patch b/wine-pulse-winmm-Load-winealsa-if-winepulse-is-found.patch
new file mode 100644
index 0000000..aba3925
--- /dev/null
+++ b/wine-pulse-winmm-Load-winealsa-if-winepulse-is-found.patch
@@ -0,0 +1,29 @@
+From 8045bdbc879ec70776427f744f30476cc2b469a4 Mon Sep 17 00:00:00 2001
+From: Maarten Lankhorst <maarten.lankhorst at canonical.com>
+Date: Fri, 26 Oct 2012 19:04:00 +0200
+Subject: [PATCH] winmm: Load winealsa if winepulse is found
+
+Fixes midi on winepulse
+---
+ dlls/winmm/lolvldrv.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/dlls/winmm/lolvldrv.c b/dlls/winmm/lolvldrv.c
+index f387323..3b1be27 100644
+--- a/dlls/winmm/lolvldrv.c
++++ b/dlls/winmm/lolvldrv.c
+@@ -543,7 +543,10 @@ static void MMDRV_Init(void)
+     drvA = HeapAlloc(GetProcessHeap(), 0, size);
+     WideCharToMultiByte(CP_ACP, 0, pv.u.pwszVal, -1, drvA, size, NULL, NULL);
+ 
+-    MMDRV_Install(drvA, drvA, FALSE);
++    if (!strcasecmp(drvA, "winepulse.drv"))
++        MMDRV_Install("winealsa.drv", "winealsa.drv", 0);
++    else
++        MMDRV_Install(drvA, drvA, FALSE);
+ 
+     HeapFree(GetProcessHeap(), 0, drvA);
+     PropVariantClear(&pv);
+-- 
+1.7.11.7
+
diff --git a/wine.spec b/wine.spec
index 9bf3e12..8920a50 100644
--- a/wine.spec
+++ b/wine.spec
@@ -1,9 +1,9 @@
 %global no64bit   0
 %global winegecko 1.8
-%global winemono  0.0.4
+%global winemono  0.0.8
 
 Name:           wine
-Version:        1.5.15
+Version:        1.5.16
 Release:        1%{?dist}
 Summary:        A compatibility layer for windows applications
 
@@ -54,9 +54,12 @@ Source502:      wine-README-tahoma
 
 Patch511:       wine-cjk.patch
 
-# winepulse backend
+## winepulse backend
 # http://repo.or.cz/w/wine/multimedia.git
-Patch1001:      wine-pulse-1.5.4.patch
+# last change Fri, 26 Oct 2012 17:16:03 +0000
+Patch1001:      wine-pulse-1.5.16.patch
+# use winealsa for midi in the pa backend
+Patch1002:      wine-pulse-winmm-Load-winealsa-if-winepulse-is-found.patch
 
 Buildroot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
@@ -210,6 +213,13 @@ Requires:       nss-mdns(x86-32)
 Requires:       gnutls(x86-32)
 Requires:       libXrender(x86-32)
 Requires:       libXcursor(x86-32)
+
+%if 0%{?fedora} >= 18
+Requires:       openssl-libs(x86-32)
+%else
+Requires:       openssl(x86-32)
+%endif
+
 %endif
 
 %ifarch x86_64
@@ -218,6 +228,13 @@ Requires:       nss-mdns(x86-64)
 Requires:       gnutls(x86-64)
 Requires:       libXrender(x86-64)
 Requires:       libXcursor(x86-64)
+
+%if 0%{?fedora} >= 18
+Requires:       openssl-libs(x86-64)
+%else
+Requires:       openssl(x86-64)
+%endif
+
 %endif
 
 %ifarch %{arm}
@@ -226,6 +243,13 @@ Requires:       nss-mdns
 Requires:       gnutls
 Requires:       libXrender
 Requires:       libXcursor
+
+%if 0%{?fedora} >= 18
+Requires:       openssl-libs
+%else
+Requires:       openssl
+%endif
+
 %endif
 
 # old removed packages
@@ -474,6 +498,8 @@ with the Wine Windows(TM) emulation libraries.
 Summary: Pulseaudio support for wine
 Group: System Environment/Libraries
 Requires: wine-core = %{version}-%{release}
+# midi output
+Requires: wine-alsa = %{version}-%{release}
 
 %description pulseaudio
 This package adds a pulseaudio driver for wine. Please do not report bugs in
@@ -505,6 +531,7 @@ This package adds an openal driver for wine.
 %patch511 -p1 -b.cjk
 
 %patch1001 -p1 -b.winepulse
+%patch1002 -p1 -b.winepulse-midi
 
 autoreconf
 
@@ -1497,6 +1524,14 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
 %endif
 
 %changelog
+* Sun Oct 28 2012 Andreas Bierfert <andreas.bierfert[AT]lowlatency.de>
+- 1.5.16-1
+- version upgrade (rhbz#870611)
+- wine mono 0.8
+- update pulse patch
+- fix midi in winepulse (rhbz#863129)
+- fix dependencies for openssl (rhbz#868576)
+
 * Mon Oct 15 2012 Andreas Bierfert <andreas.bierfert[AT]lowlatency.de>
 - 1.5.15-1
 - version upgrade


More information about the scm-commits mailing list