The Wine development release 1.7.22 is now available.

What's new in this release (see below for details):
  - Support for Unicode bracketing pairs.
  - Improved Internet cookie support.
  - OS X CoreAudio driver uses AUHAL instead of AudioQueue.
  - Initial support for geographical information.
  - Various bug fixes.

The source is available from the following locations:

  http://prdownloads.sourceforge.net/wine/wine-1.7.22.tar.bz2
  http://mirrors.ibiblio.org/wine/source/1.7/wine-1.7.22.tar.bz2

Binary packages for various distributions will be available from:

  http://www.winehq.org/download

You will find documentation on http://www.winehq.org/documentation

You can also get the current source directly from the git
repository. Check http://www.winehq.org/git for details.

Wine is available thanks to the work of many people. See the file
AUTHORS in the distribution for the complete list.

----------------------------------------------------------------

Bugs fixed in 1.7.22 (total 68):

   4122  Picasa 2.x/3.x: "Open File" from photo menu does nothing
   7404  ShowWindow(SW_MINIMIZE) should not generate a WM_PAINT message
   8284  Wild Earth: Photo Safari Demo: Freezes at a loading screen following main menu start game selection choices
  10182  Hapedit doesn't launch web browser
  10264  Multiple games wrapped with Tages Protection 5.x DRM scheme fail to start (Tages driver needs 'IoAllocateMdl' implementation)
  10480  Safari refuses to load secure URLs
  13075  Planetside crashes Character selection screen
  15353  Safari 3.1.2: crash when clicking on tab
  15520  DVD version of Riven fails to start.
  16648  Defense Grid, the Awakening: Fails to load, X3DAudio1_4.dll, d3dx9_38.dll
  19303  Sketchup 7 shows toolbars and menus, but work area is blank
  19838  Treeview 'access violation' in ImgBurn v2.5.0.0's Disc Layout Editor window
  21804  FPS Creator trial crashes on startup
  22698  mshtml: iexplore crash after click "Install" at www.browserchoice.eu
  22829  Sysinternals RAMMap crashes (shell32.CommandLineToArgvW needs to include terminating NULL element in returned array of pointers starting with WinVer >= Windows Vista)
  23210  REDCINE v20.0.0 silently exits during startup
  24286  Google SketchUp 8 crashes when using Phototextures feature
  24904  No$Zoomer.exe 2.3.x crashes when run.
  25110  PDF Password Cracker 3.2 Enterprise immediately page faults
  25916  MediaGet v1.12.x crashes when starting downloading file
  26166  Google Sketchup 8.0.4811 is not functional
  26635  SketchUp 8 cannot use the components tool
  27249  Edcast 3.1.21 fails on startup
  27259  progeCAD 10.x installer causes spurious 'winemenubuilder' hangs
  27487  Rift crashes on exit in winebrowser
  27878  Picasa 3.8 in Fedora 15 just displays a black window
  27880  Google Sketchup: moving tool windows: mouse button state not correct?
  28465  shlwapi/path.c test crashes if CFLAGS="-fstack-protector-all" is used
  28469  Lahore Trading Work Station crashes on startup
  28490  IE 3.02 installer crashes with builtin shdocvw - unimplemented function shdocvw.dll.InstallReg_RunDLL
  29159  Multiple apps and games fail due to 'HTTP_HttpOpenRequestW' being unable to escape some characters
  29191  Google Sketchup 8 - no scrollbar on template selection screen
  29408  Call to Power 1.2 crashes on startup
  30258  NIPO Odin Developer crashes on unimplemented function rpcrt4.dll.RpcSsDontSerializeContext
  30416  Live Baduk fails to start
  30829  Fallout 3: Game of the Year Edition (Steam) crashes on startup
  30865  Flash Player 11 "downloader" fails
  31048  Dolphin XPS Viewer crashes on load
  31224  Toribash 3.x/4.x crashes with hardware acceleration disabled in nouveau
  31269  Multiple .NET apps and games crash with System.OverflowException (incorrect scaling for DECIMAL values in VarDecAdd)(Dungeons, Space Engineers)
  31559  Planetside 2 (Beta), extremely low FPS
  31577  Avast! antivirus protection driver crashes on unimplemented function ntoskrnl.exe.ExCreateCallback
  31844  CitiesXL (all versions) needs native D3DXCreateSphere (purist)
  31966  Babylon 9 installer crashes
  32207  Planetside 2 (Beta) Crash when opening ingame Menus
  32415  Distance 6.x randomly crashes on startup
  32711  Multiple applications crash on unimplemented function ADVAPI32.dll.RegSetKeyValueA/W (Vista+ API)(BSAopt, Microsoft OneDrive)
  32912  Wine Crash following champion select
  33125  Tomb Raider (2013) freezes (bug in game engine, semaphore object handle value must be zero on all error paths)
  33529  Planetside 2 0.608.21.21306 crashed ingame
  34015  crash problem planetside 2
  34069  "wine winemenubuilder" chokes on safari shortcut.
  34456  Rift installer crashes
  35395  Google SketchUp 8.2 draw pane freezes after save
  35703  Lingea Lexicon 5 crashes on start up
  36021  In the KDE Plasma desktop the mousepointer disappears in wine windows
  36435  Adobe Flash Builder 4.6 uses potentially erroneous shell32.dll PathYetAnotherMakeUniqueName stub
  36483  Multiple applications crash on unimplemented function ADVAPI32.dll.RegDeleteKeyValueA/W (Vista+ API)(Age of Mythology: Extended Edition)
  36641  valgrind shows several invalid reads in wininet/tests/http.c
  36651  shlwapi/tests/path.c: stack smashing detected (valgrind/gcc-4.9.0)
  36810  valgrind shows a definite leak in winspool.drv/tests/info.c
  36811  Avast! Free Antivirus 9.0.2013 'AvastSvc.exe' crashes on unimplemented function KERNEL32.dll.GetFirmwareEnvironmentVariableA
  36817  valgrind shows a mismatched free in msvcrt/tests/file.c
  36829  Can not recieve kindle delivery
  36832  winetricks ie7 / riched20/tests/editor.c crash
  36840  Tron 2.0 Demo crashes with "Out of memory" error
  36858  Wine 1.7.16 does not work correctly with Pacestar LanFlow
  36867  Localization bug in gdi32 font.c test

----------------------------------------------------------------

Changes since 1.7.21:

Akihiro Sagawa (1):
      winmm: Fallback to SND_FILENAME if the alias isn't found in the profile.

Alexandre Julliard (2):
      configure: Always build wine.inf even if we don't install it.
      tools: Don't include wine/unicode.h if not necessary.

Andrew Eikum (3):
      mmdevapi: Standardize period sizes.
      mmdevapi: Don't stop sending event signals after IAudioClient::Stop.
      winecoreaudio.drv: Use AUHAL API instead of AudioQueue.

Aric Stewart (2):
      tools: Generate the Unicode Bidi Bracketing table.
      usp10: Implement N0: bracketing pairs.

Austin English (5):
      kernel32: Add stubs for GetFirmwareEnvironmentVariableA/W.
      loader: Add WBEM installation directory key.
      rpcrt4: Add a stub for RpcSsDontSerializeContext.
      kernel32: Initialize return value in CreateSemaphoreExW.
      advapi32: Fix a memory leak in test_process_security.

Bruno Jesus (7):
      dssenh/tests: Add tests for the default encryption chaining mode.
      rsaenh/tests: Add tests for the default encryption chaining mode.
      rsaenh/tests: Add more AES encrypt/decrypt tests.
      ws2_32: Only declare IPX support if the required definitions are found.
      ws2_32: Improve WSAStartup/WSACleanup tracing.
      dnsapi: Do not fail if NETDB_INTERNAL is not present.
      winspool: Fix a leak in DocumentPropertiesA (valgrind).

Erich Hoover (1):
      advapi32: Implement RegSetKeySecurity on top of NtSetSecurityObject.

François Gouget (1):
      shlwapi/tests: Make test_PathIsRelative[AW]() static.

Frédéric Delanoy (3):
      msvcrt: Avoid potential integer overflow when computing median position in bsearch.
      Assorted spelling/grammar fixes.
      ntdll: Avoid potential integer overflow when computing median position in bsearch.

Gediminas Jakutis (2):
      d3dx9: Add adjacency generation for D3DXCreateSphere().
      d3dx9: Implement D3DXCreateTorus() + tests.

Grazvydas Ignotas (1):
      kernel32: Don't return uninitialized values on failures.

Henri Verbeet (10):
      d3d9: Improve d3d9_device_CheckDeviceState() a little.
      d3d8: Improve d3d8_device_TestCooperativeLevel().
      d3d8: Check the device status in present calls.
      ddraw: Improve ddraw7_TestCooperativeLevel().
      ddraw: Implement ddraw7_RestoreAllSurfaces().
      ddraw: Check for a lost surface in ddraw_surface7_Flip().
      wined3d: Print a winediag message if we failed to create a DXTn texture because of lack of driver support.
      ddraw/tests: Get rid of struct vertex.
      ddraw/tests: Get rid of struct tvertex.
      ddraw/tests: Get rid of struct nvertex.

Huw D. M. Davies (4):
      comctl32: Don't use the RECT from the custom draw structure when referring to the button alone.
      comctl32: The RECT in the custom draw structure should be the entire item's size. This includes any separated dropdown arrow.
      comctl32: Propagate the return value of WM_ERASEBKGND.
      tools: Only allow the absolute difference in bracket pairs to be less than 128, since we need the sign.

Jacek Caban (13):
      iphlpapi: Protect res_init call with critical section.
      urlmon: Don't decode percent-encoded characters in file URLs with implicit scheme.
      urlmon.idl: Added missing Uri_CREATE_* flags.
      wininet: Forward InternetGetCookieA to InternetGetCookieExA, not the other way around.
      wininet: Forward InternetGetCookieW to InternetGetCookieExW, not the other way around.
      wininet.h: Added missing INTERNET_COOKIE_* flags.
      wininet: Forward InternetSetCookieExA to InternetSetCookieExW instead of InternetSetCookieA.
      wininet.h: Added InternetCookieState declaration.
      wininet: Fixed InternetSetCookieExW return type and forward InternetSetCookieW to InternetSetCookieExW instead of the other way around.
      wininet: Added support for INTERNET_COOKIE_HTTPONLY flag to InternetSetCookieEx.
      wininet: Added support for INTERNET_COOKIE_HTTPONLY flag to InternetGetCookieEx.
      wininet/tests: Added INTERNET_COOKIE_HTTPONLY tests.
      wininet: Don't allow overriding httponly cookies with non-httponly ones.

Jactry Zeng (3):
      riched20: Don't create too many IRichEditOle interface for a RichEdit.
      riched20: Initialize ed->reOle in ME_MakeEditor().
      riched20: Return nonzero value instead of zero when EM_SETREADONLY succeeds.

Joris van der Wel (4):
      server: Any of the 4 SE_*_DEFAULTED controls should not be stored on objects, their usage is transient.
      advapi32/tests: Changed an invalid comment.
      advapi32/tests: Refactor the retrieval of a security descriptor into a separate function so that it can be used in other tests.
      server: Setting a security descriptor should not replace an existing owner or group with a default, if only a DACL is being set.

Ken Thomases (2):
      dbghelp: If the caller didn't provide a module load address use the segment start address.
      dbghelp: Ignore the __PAGEZERO segment.

Marcus Meissner (2):
      windowscodecs: Fixed incorrect memset (Coverity).
      packager: Fixed incorrect size (Coverity).

Nikolay Sivov (5):
      shell32: Implement PathYetAnotherMakeUniqueName().
      advapi32: Implement RegDeleteKeyValue().
      kernel32: Added support for C3_HIGHSURROGATE/C3_LOWSURROGATE in GetStringTypeW().
      advapi32: Implement RegSetKeyValue().
      kernel32: Partially implement GetGeoInfo().

Piotr Caban (4):
      msvcrt: Fix buffer allocation in setvbuf.
      ole32: Don't do any message processing when we're already done with dragdrop operation.
      msvcrt: Always set fd to -1 in _sopen_s on failure.
      urlmon: Recognize <body> tag in FindMimeFromData function.

Qian Hong (3):
      mshtml: Fixed typo.
      gdi32/tests: Improve font name localization tests by not requiring a strict language match.
      gdiplus: Set outer pointer to NULL when image loading functions fail.

Sebastian Lackner (4):
      wininet: Fix invalid memory access in HTTP_QUERY_RAW_HEADERS (Valgrind).
      oleaut32/tests: Add additional tests for VarDecAdd.
      oleaut32: Decrease accuracy if scaling is not possible in VarDecAdd.
      shell32: Return NULL-terminated list of arguments in CommandLineToArgvW.

Shuai Meng (2):
      vbscript: Implemented VarType.
      vbscript: Implemented Sgn.

Stefan Dösinger (8):
      wined3d: Set palettes on the swapchain.
      wined3d: Do not write a FIXME about WINED3DUSAGE_WRITEONLY.
      ddraw: Refuse SetPalette and GetPalette on lost surfaces.
      d3d9: Ignore SetPriority and GetPriority calls on surfaces.
      wined3d: Ignore set_priority calls on non-managed resources.
      d3d9/tests: Add a test for SetPriority and GetPriority.
      d3d8/tests: Add a test for SetPriority and GetPriority.
      d3d9/tests: Fix some ok() call style issues.

Vincent Povirk (7):
      ole32: Simplify the FileMonikerImpl_BindToStorage code.
      winebrowser: Manually percent-encode file: paths for unix filenames.
      winebrowser: Add traces for file uri conversion steps.
      winebrowser: Don't use IUriBuilder with unix file: uri's.
      urlmon: Add tests for implicit file uri's with percent encodings.
      gdiplus: Account for transforms when calculating hdc bounds.
      winex11: Leave fullscreen state alone when minimizing.

Zhenbo Li (1):
      shlwapi/tests: Add tests for PathIsRelativeA/W.

--
Alexandre Julliard
julliard@winehq.org
