The Wine development release 1.7.3 is now available.

What's new in this release (see below for details):
  - New version of the Gecko engine based on Firefox 24.
  - Preparation work for the Direct3D command stream.
  - Window management fixes in the Mac driver.
  - Support for IPHLPAPI functions on Android.
  - Various bug fixes.

The source is available from the following locations:

  http://prdownloads.sourceforge.net/wine/wine-1.7.3.tar.bz2
  http://mirrors.ibiblio.org/wine/source/1.7/wine-1.7.3.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.3 (total 48):

   4473  WSAStartup not needed before socket() call
  13901  Some buttons are hidden by a strange coloured band
  23272  FFFTP: shows only the first line of the Japanese legend.
  24016  League of Legends news missing in main window
  24175  Resident Evil 5 benchmark: crashes in fullscreen
  24431  League of Legends standalone client crashes on clicking 'Play'
  24761  ProteoWizard 2.x 'msconvert' tool fails/hangs sometimes during processing of mass spec data files in RAW format
  25519  gmax crashes in ole32.RegisterDragDrop when you click on Materials Navigator icon on toolbar
  26252  Falcon 4.0 Allied Force and FreeFalcon 5.0 do not detect hardware rendering devices
  26297  Suddenly no sound, loose of sound in games
  26332  Adobe AIR : Pandora One : Can't move window
  26823  Wildlife Park 3 Demo crashes on start
  27036  League of Legends store crashes with an assertion
  28423  ImmGetDescriptionW() from imm32 crashes with certain parameters
  29315  World of Warcraft (WoW) Launcher.exe  does not run
  30205  Unity Editor is unable to move project files
  30289  builtin iexplore can not load gmail, complaining requires ActiveX controls to be enabled
  30485  MeGUI 2112 crashes after first update / restart (application XML settings can't be fully deserialized due to oleaut32 VarDecRound being a semi-stub)
  30585  League of Legends crashes after Champion Select
  30789  World of Warcraft : Unhandled exception: page fault on execute access to 0x84654ac8 in 32-bit code (0x84654ac8).
  30815  Can't create winsock on Proteus ISIS for remote controll through mplabX
  31186  Star Wars: The Old Republic: Launcher display incorrectly, can't launch game
  31235  League of Legends minimap corrupted
  31545  Mouse cursor behaves as if it is drunk
  31659  Cutscenes (videos) in Jade Empire are black and white (grayscale)
  32164  RebelBetting + dotnet35sp1 crashes
  32168  RebelBetting will not talk to proxy
  32567  Crysis Wreckage (Wars mod?) doesn't start without MS-vcrun2005
  34252  Silverlight accelerated graphics cause a D3D critical section lockup
  34399  .NET 3.x/4.x WPF based installers/apps require windowscodecs.dll ComponentFactory_CreateBitmapFromHBITMAP implementation
  34416  The Testament of Sherlock Holmes dark player model, textures disappearing and appear
  34417  Everquest character models invisible
  34418  regression: Finale NotePad 2012 installer splash screen appears as black box
  34455  NCsoft's Aion (MMORPG) fails to load "CrySystem.dll" (WinLicense software protection, avoid forwarding some msvcrt API to ntdll)
  34463  thai2english loads ok but crashes on startup
  34470  NCsoft's Aion (MMORPG) fails to load "CrySystem.dll" (WinLicense software protection, avoid forwarding some msvcp80 API to msvcp90)
  34496  winhttp POST fails
  34514  an odd regression on an old video card
  34521  make: *** [dlls/msxml3] Error 2
  34542  Kega Fusion 3.64 - Slow directx performance
  34550  RTX server crashes at start
  34552  RTX Server needs unimplemented msvcp60.dll.??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@G@Z
  34564  RTX Server fail to import user template database with builtin msvcp60
  34567  qq 2012 installer crashes at 100%
  34570  Game crash because of improperly cloning MMIOINFO struct in MMIO_Open
  34571  EasiSlides v4 crashes when clicking a folder listbox item (GdipFillPath failure)
  34580  strtoul behaves incorrectly with negative numbers.
  34583  LINE (Powered by Naver) 3.2.0.76: Cannot work after Installation

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

Changes since 1.7.2:

Akihiro Sagawa (6):
      gdi32/tests: Add more empty glyph tests.
      winex11.drv: Fix empty glyph handling.
      opengl32: Fix empty glyph handling.
      gdiplus: Fix empty glyph handling.
      gdi32: Fix empty glyph handling.
      gdi32: Return GDI_ERROR when requested empty glyph bitmaps.

Alexandre Julliard (12):
      server: Trigger a repaint on layered windows the first time the attributes are set.
      msxml3: Don't use libxslt without libxml.
      libwine: Use the argv[0] directory as bin directory only if all other methods fail.
      libwine: Don't add a user id to the server directory if not supported.
      libwine: Put the server directory inside the wineprefix on Android.
      include: Remove CONST from non-pointer parameters.
      makefiles: Generate dependencies for symlinks that are needed at build time.
      configure: Build the makefile data into a temporary file instead of a shell variable.
      makefiles: Add support for specifying a prefix for installed library file names.
      configure: Set the library prefix to "lib" on Android.
      configure: Store all libraries in libdir on Android.
      libwine: Look for all libraries in the dll search path on Android.

Alistair Leslie-Hughes (2):
      dbs.idl: Add type DB_NUMERIC.
      oledb32: Correct DataLinks interface for win64.

Andrew Eikum (2):
      oleaut32: Implement VarDecRound.
      oleaut32: Implement ICreateTypeInfo::SetFuncDocString.

André Hentschel (6):
      kernel32/tests: Add initial CreateFile2 tests based on the CreateFileW tests.
      msvcrt/tests: Load the correct function on ARM.
      include: Don't redefine _GNU_SOURCE.
      wininet/tests: Don't test function directly when reporting GetLastError().
      ws2_32/tests: Don't test function directly when reporting WSAGetLastError().
      winebuild: Update IMAGE_FILE_MACHINE_ARM64.

Aric Stewart (2):
      imm32: Fix ImmGetDescription behavior with a null HKL.
      imm32: ImmGetDescriptionA return does not include NULL byte.

Bruno Jesus (15):
      ws2_32: Advertise protocol entries as default.
      ws2_32: Avoid magic numbers.
      ws2_32: Make WS_EnterSingleProtocol return a boolean.
      ws2_32: Fix WSASocket return code for invalid combination of socket type and protocol.
      ws2_32: Fix the error returned for denied SOCK_RAW attempts.
      ws2_32: Use the struct information when the parameters are zero in WSASocket.
      ws2_32: Auto detect the socket type and family based on the protocol.
      ws2_32: Filter invalid socket parameters and return the appropriate error.
      ws2_32: Do not allow socket creation if WSAStartup was not called.
      ws2_32: Make getsockopt(SO_TYPE) convert the returned socket type.
      ws2_32/tests: Mark WinNT result as broken.
      ws2_32: ConnectEx should not work on unbound socket.
      server: Fix a comment.
      ws2_32: Add missing else to getsockopt(SO_ACCEPTCONN).
      ws2_32: Fix some parameters checking in AcceptEx.

Dmitry Timoshkov (22):
      shlwapi/tests: Add a read/write test for IStream on files.
      shlwapi: Write file access also assumes read access.
      windowscodecs: Implement CreateBitmapFromHBITMAP.
      shlwapi/tests: Fix stream test failures under some win2000 versions.
      ntdll/tests: Add 0-length read tests for a disk file.
      kernel32/tests: Add 0-length read tests for a mailslot.
      kernel32/tests: Add 0-length read tests for a pipe.
      kernel32: Remove a 0-length read optimization from ReadFile.
      ntdll/tests: Extend the FILE_APPEND_DATA test.
      kernel32/tests: Add FILE_APPEND_DATA case to the file access tests.
      shlwapi/tests: Skip some of IStream invalid parameter tests under Windows 2000 + IE5.
      ntdll: Perform the offset checks also for a serial device.
      gdiplus/tests: Add a test for GdipTransformMatrixPoints with number of points == 0.
      gdiplus/tests: Print actual rectangle extents if the tests fail.
      gdiplus/tests: Don't bother to delete a NULL hrgn.
      gdiplus/tests: Add a test for GdipTransformRegion with an empty region path.
      gdiplus: GdipTransformRegion should not fail for an empty path.
      ntdll/tests: Use official path for temporary files instead of current directory.
      ntdll: Perform the offset checks in NtWriteFile also for a serial device.
      kernel32/tests: Add DuplicateHandle test to the file access tests.
      ntdll: Make asynchronous WaitCommEvent report correct number of bytes returned.
      ntdll: Make set_line_control() for a serial device print slightly more informative messages.

François Gouget (2):
      winapi: Small tweaks to fix perl warnings.
      wined3d: Make device_invalidate_shader_constants() static.

Frédéric Delanoy (9):
      winecfg: Use BOOL type where appropriate.
      wrc: Use BOOL type where appropriate.
      gphoto2.ds: Use BOOL type where appropriate.
      advapi32: Use BOOL type where appropriate.
      windowscodecs: Use BOOL type where appropriate.
      kernel32: Use BOOL type where appropriate.
      winevdm: Use BOOL type where appropriate.
      msvcrt: Use BOOL type where appropriate.
      user32: Use BOOL type where appropriate.

Hans Leidekker (7):
      wsnmp32: Add stub implementations for a couple of functions.
      rsaenh: Add support for retrieving the security descriptor on key containers.
      wininet: Don't assume that end of chunk means end of stream.
      winhttp/tests: Remove explicit zero-intialization of static data.
      winhttp: Don't assume that end of chunk means end of stream.
      rsaenh: Add support for setting the security descriptor on key containers.
      advapi32/tests: Mark a test result as broken.

Henri Verbeet (49):
      wined3d: Pass a resource to wined3d_resource_allocate_sysmem().
      wined3d: Pass a resource to wined3d_resource_free_sysmem().
      ddraw: Take surface usage into account when checking format capabilities in CreateSurface().
      dxgi: Avoid LPCSTR.
      dxgi: Avoid LPVOID.
      ddraw: Fix render target refcount handling.
      ddraw: Don't set render target / depth stencil usage on sysmem surfaces.
      ddraw: Verify that the surface is a render target in d3d_device_create().
      d3d10core: Avoid LPSTR.
      d3d10core: Avoid LPVOID.
      ddraw: Verify that surfaces with an indexed format have a palette attached in d3d_device_create().
      ddraw: Verify that the surface is in video memory in d3d_device_create().
      ddraw: Verify that surfaces with an indexed format have a palette attached in d3d_device_set_render_target().
      d3d10: Avoid LPCSTR.
      d3d10: Avoid LPVOID.
      ddraw: Verify that the surface is a render target in d3d_device_set_render_target().
      ddraw: Verify that the surface is in video memory in SetRenderTarget().
      ddraw: Verify that the surface is not a depth buffer in SetRenderTarget().
      wined3d: Avoid LPCSTR.
      wined3d: Avoid LPVOID.
      ddraw/tests: Add a test for render target surface capabilities.
      wined3d: Only print a warning about render target usage in wined3d_device_set_render_target().
      wined3d: Set the default scissor rect from the swapchain desc in state_init_default().
      d3dx9: Avoid CONST.
      d3d9: Avoid CONST.
      wined3d: Introduce a separate function for updating the viewport and scissor rects.
      wined3d: Copy some missing fields to the new swapchain desc in wined3d_device_reset().
      d3drm: Avoid VOID.
      ddraw: Avoid VOID.
      wined3d: Add fallback depth format info for when ARB_depth_texture is not available.
      wined3d: Get rid of the broken render target check for surface_blt_special().
      wined3d: Get rid of clearing the texture bindings in state_init_default().
      d3dx9: Get rid of the ID3DXLineImpl typedef.
      d3dx9: Get rid of the ID3DXMeshImpl typedef.
      wined3d: Allow WINED3DFMT_R8G8B8A8_UNORM render targets.
      d3d10core: Translate d3d10 bind flags / usage to wined3d usage for textures.
      wined3d: Introduce a function to initialize swapchain specific device state.
      d3dx9: Get rid of the ID3DXSkinInfoImpl typedef.
      d3dx9: Get rid of the ID3DXSpriteImpl typedef.
      wined3d: Initialize the default state in device_init().
      wined3d: Initialize the fb state pointer in state_init().
      wined3d: Explicitly pass gl_info to state_init_default().
      d3dx9: Get rid of the ID3DXFileImpl typedef.
      d3dx9: Get rid of the ID3DXFileEnumObjectImpl typedef.
      wined3d: Send present operations through a command stream.
      wined3d: Send clear operations through the command stream.
      wined3d: Send draw operation through the command stream.
      d3dx9: Get rid of the ID3DXFileDataImpl typedef.
      d3dx9: Get rid of the SPRITEVERTEX typedef.

Huw D. M. Davies (11):
      iphlpapi: Use proper multibyte to unicode conversion.
      iphlpapi: Add a configure check for struct __res_state.
      iphlpapi: Add a version of get_dns_servers for Android.
      iphlpapi: Add helpers to convert the host's sockaddr structures to SOCKADDR_STORAGE.
      iphlpapi: Combine the various interface enumeration functions into one function.
      iphlpapi: Add interface enumeration for Android.
      iphlpapi: Use socklen_t where appropriate.
      dbghelp: Add a couple of structures that are missing from the Android ndk.
      server: Android has struct user in asm/user.h.
      server: Android declares syscall() in sys/syscall.h .
      dbghelp: Skip the dllprefix when matching PE with ELF modules.

Jacek Caban (19):
      dxgi.idl: Added DXGI_PRESENT_* defines.
      d3dcommon.idl: Added WKPDID_D3DDebugObjectName declaration.
      d3d11sdklayers.idl: Added new file.
      mshtml: Moved Exec(DOCHOST_DOCCANNAVIGATE) call to separated function.
      ieframe: Added IWebBrowserPriv2IE8 stub implementation.
      mshtml: Keep moniker reference after start_binding call.
      mshtml: Don't pass navigation to Gecko for MIME types that it doesn't support.
      mshtml: Pass external connection to WebBrowser host, if possible.
      mshtml: Added external MIME handling tests.
      appwiz.cpl: Allow cancelling download of addons.
      appwiz.cpl: Use asynchronous binding instead of separated thread to download addons.
      dinput.h: Added missing DI_WRITEPROTECT define.
      mshtml: Wine Gecko 2.24 release.
      mshtml: Call set_current_mon in channelbsc_load_stream.
      mshtml: Added separated structure to store request data.
      mshtml: Use proper BINF flags for form submit.
      mshtml: Add trailing null byte to post data.
      mshtml: Try to not use nsIDOMHTMLFormElement::Submit for IHTMLFormElelement::submit implementation.
      mshtml: Added IHTMLFormElement::sumit tests.

Jactry Zeng (1):
      riched20/tests: Add UTF8 BOM tests for EM_SETTEXTEX.

Joško Nikolić (2):
      po: Update Croatian translation.
      po: Update Croatian translation.

Ken Thomases (10):
      winemac: At the start of a resize operation, get window min/max size info and pass it to Cocoa.
      winemac: Move memory management of liveResizeDisplayTimer into property setter.
      winemac: Send WM_ENTER/EXITSIZEMOVE messages at start/end of a resizing operation.
      winemac: Use NSMouseInRect() instead of NSPointInRect() to compensate for Cocoa's off-by-one coordinate system.
      winex11: Don't trace a garbage value or read past end of caller's array in X11DRV_wglChoosePixelFormatARB().
      winemac: When programmatically focusing a window, don't generate WINDOW_LOST_FOCUS event for previously focused window.
      winemac: Fix hiding windows that are minimized using -close instead of -orderOut:.
      winemac: Re-sync the window region whenever factors affecting its conversion to Cocoa coordinates change.
      winemac: Implement support for global hot keys.
      winemac: Activate an app if it sets focus on a window shortly after a hot key is pressed.

Lu Jiashu (1):
      winmm: Clone the whole adwInfo array in MMIO_Open.

Michael Müller (3):
      d3d9: Partial implementation of IDirect3DSwapChain9Ex.
      d3d9/tests: Test if IDirect3DSwapChain9Ex is available with IDirect3D9(Ex).
      quartz: Pass correct interface to IBaseFilter::JoinFilterGraph in function FilterGraph2_AddFilter.

Michael Stefaniuc (18):
      advapi32: Avoid using CONST.
      gdi32: Avoid using CONST.
      quartz: Avoid using CONST.
      rsaenh: Avoid using CONST.
      gdiplus: Avoid using CONST.
      setupapi: Avoid using CONST.
      user32: Avoid using CONST.
      winemac.drv: Avoid using CONST.
      winex11.drv: Avoid using CONST.
      shell32: Avoid using CONST.
      windowscodecs: Avoid using CONST.
      dlls: Replace the remaining CONSTs.
      include: Avoid using CONST in d3d8.h.
      include: Avoid using CONST in d3dx9math.inl.
      dplayx/tests: Fix typo in ok() message.
      include: Avoid using CONST in the d3dx9 headers.
      include: Replace the remaining CONSTs.
      include: Forbid the use of CONST in Wine.

Nikolay Sivov (3):
      oleaut32: Support typelib redirection in QueryPathOfRegTypeLib().
      oleaut32: LoadRegTypeLib() should check actual typelib version.
      ntdll/tests: Add proper skips in tests.

Piotr Caban (28):
      msvcrt: Fix Inf and NaN handling in printf function.
      msvcrt: Don't forward memcmp to ntdll.
      msvcrt: Don't forward memmove to ntdll.
      msvcrt: Don't forward strcmp to ntdll.
      msvcrt: Don't forward strlen to ntdll.
      msvcrt: Don't forward strncat to ntdll.
      msvcrt: Don't forward strrchr to ntdll.
      msvcrt: Don't forward strstr to ntdll.
      msvcrt: Don't forward wcschr to ntdll.
      msvcrt: Don't forward wcslen to ntdll.
      msvcrt: Don't forward wcsstr to ntdll.
      msvcrt: Fix loop condition when printing Inf or NaN.
      msvcrt: Don't use CDECL calling convention in MSVCRT_wcsrtombs_l (internal function).
      msvcrt: Add _snwprintf_s_l implementation.
      msvcp60: Don't call _Eos on allocation error or 0-length string in basic_string::reserve.
      msvcp80: Don't forward to msvcp90.
      msvcp: Make it possible to shrink allocated memory in basic_string::reserve.
      msvcp: Fix default constructor closures arguments.
      msvcp: Add ostream::operator<<(unsigned short) implementation.
      msvcp80: Make it possible to shrink allocated memory in basic_string::reserve.
      msvcp80: Fix default constructor closures arguments.
      msvcp80: Add ostream::operator<<(unsigned short) implementation.
      msvcp60: Fix char_traits<wchar_t>::assign implementation.
      msvcrt: Improve error handling in wcsrtombs function.
      msvcrt: Fix internal LONG_MAX and ULONG_MAX definitions.
      msvcrt: Call MSVCRT_strtoi64_l in strtol implementation.
      msvcrt: Call MSVCRT_strtoi64_l in strtoul implementation.
      msvcr90: Don't forward exception constructors to msvcrt.

Qian Hong (1):
      imm32: Validate input context in multiple IMC functions.

Rico Schüller (3):
      d3dx9: Clamp register count for D3DXPC_MATRIX_COLUMNS.
      d3dx9/tests: Add matrix column register count clamp test.
      d3dx9: Use struct d3dx_object for objects.

Roderick Colenbrander (1):
      winex11: Support GLX_MESA_swap_control for WGL_EXT_swap_control.

Sebastian Lackner (2):
      d3d9/tests: Implemented tests for IDirect3DSwapChain9Ex_GetDisplayModeEx.
      winex11: Added missing release_win_data() to create_foreign_window().

Stefan Dösinger (22):
      wined3d: Pass the context to the internal texture_preload function.
      wined3d: Pass the context to surface_internal_preload.
      wined3d: Move tex_unit_map and friends into the context.
      wined3d: Move device_preload_textures into context.c.
      wined3d: Store the instance count in the context structure.
      d3dx9_36/tests: Create*TextureFromFileInMemory doesn't fail.
      wined3d: Mapping a mapped volume is an error.
      wined3d: Implement locking of block-based volume textures.
      wined3d: Check box dimensions in volume_map.
      d3d9/tests: Add tests for block-based volume formats.
      d3d9/tests: Test invalid volume lock boxes.
      d3d9/tests: Read the caps from the device.
      wined3d: Don't use volume->resource.allocatedMemory.
      wined3d: Pass a correct access flag to glMapBufferARB.
      d3d8/tests: Add tests for block-based volume formats.
      d3d8/tests: Test invalid volume lock boxes.
      wined3d: Pass the destination pitch to format conversion functions.
      wined3d: Add support for converted volumes.
      wined3d: Make format conversion functions work on volumes.
      d3d9/tests: Add a volume V16U16 test.
      d3d8/tests: Add a volume V16U16 test.
      wined3d: Use GL_APPLE_client_storage for volumes if available.

Thomas Faber (1):
      comctl32: Fix build with MSVC.

Vincent Povirk (3):
      gdiplus: Skip drawing lines of text with only empty glyphs.
      gdiplus: Don't expand the drawing area to include empty glyphs.
      gdiplus: Always provide image data in the format requested by image encoders.

--
Alexandre Julliard
julliard@winehq.org
