The Wine development release 1.7.4 is now available.

What's new in this release (see below for details):
  - Support for Cocoa-style full-screen mode in the Mac driver.
  - More preparation work for the Direct3D command stream.
  - A number of Winsock improvements.
  - Various bug fixes.

The source is available from the following locations:

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

   2195  WSALookupServiceBegin and WSALookupServiceNext Unimplemented
  16935  BCG Slider thumb doesnt display correctly
  19200  Neverwinter Nights 2 crashes
  21808  URU Complete Chronicles: Black Screen Freeze upon UruExplorer.exe launch
  22865  Split Second foggy, doesn't show most of scene
  23566  Arcanum crash after start.
  23839  Neverwinter Nights 2 can't detect video adapter properly, claiming: "Your video card has less than 128 MB of video memory"
  25037  Microsoft Tinker Doesn't Render, Gameplay not possible
  25779  world of tanks updater: never shows a gui without winetricks ie7
  26384  BabasChess crashed after examining a game for a while
  26683  pixmap error ascTimeTables 2010 version
  26710  Minitroid tech demo does not start
  26761  SIV fails to report the workgroup name
  27358  The Witcher fails to run
  27796  JDK 6 installer fails with error "File name is too long"
  31140  BCG Gantt Demo crashes when large date ranged enter.
  31557  Guild Wars 2 screenshots look bad
  32375  Submit form by code fails
  32984  Java SE Development Kit 7u13 post-install cleanup tool 'remove.exe' crashes
  33232  Amazon MP3 Downloader crashes during download of mp3 files (ntdll/server fd cache doesn't take FILE_APPEND_DATA flag implicit write access into account)
  33495  Dungeons & Dragons Neverwinter Beta launcher does not register form submissions
  33957  GOG.com installers break citing XML read issue
  34005  WS2_32.dll.WSASendMsg is unimplemented
  34066  Wine looping endlessly on first run, and when installing Steam
  34209  fullscreen apps won't switch back to resolution after command-tabbing on OS X
  34270  PhotoImpact X3 needs msvcp60.dll.??0ios_base@std@@IAE@XZ
  34421  Unity3D: 3D view fails after hitting play
  34501  __unDName doesn't support thunks with vtordispex
  34506  __unDName doesn't support thunks with vcall
  34593  MS .Net 2.0 x64 installer fails under XP mode (works under win2k3)
  34623  NCsoft's Aion (MMORPG) crashes on startup (WinLicense software protection, avoid forwarding some msvcr80 API to msvcrt)
  34651  'INFINITY' and 'NAN' undeclared

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

Changes since 1.7.3:

Akihiro Sagawa (7):
      gdi32/tests: Fix copy&paste issues related to gmBlackBoxY.
      gdi32: Fix empty glyph handling in the dib driver.
      gdi32: Return fake BBox when requesting empty glyph metrics.
      gdi32: Fix the B spacing value of empty glyph.
      po: Update Japanese translation.
      gdi32: Don't modify output glyph metrics unless the function succeeds.
      gdi32/tests: Skip linked font like SimSun-ExtB in fixed-pitch font selection.

Alexandre Julliard (32):
      makefiles: Clean files from the top-level makefile where possible.
      wineconsole: Run a command shell by default.
      libwine: Add JNI initialisation support to start Wine from an Android activity.
      configure: Use the correct strip program when installing.
      configure: Disable tools by default when cross-compiling.
      configure: Add enable options for all modules to the recognized option list.
      makefiles: Link libwine statically into the tools to avoid run-time path dependencies.
      wmc: Add support for long command-line options.
      wmc: Load translations from mo files instead of po.
      tools: Upgrade the install-sh script.
      configure: Use the standard MKDIR_P macro to create directories.
      makefiles: Define __WINESRC__ globally.
      makefiles: Generate the loader rules from configure.
      makefiles: Move l_intl.nls and wine.inf to loader so that they are installed even when tools are not built.
      gdi32: Remove freetype compatibility cruft that doesn't compile.
      winspool: Store generic.ppd in a resource instead of depending on an external file.
      configure: Simplify the generation of the install and clean rules.
      configure: Correctly install binaries even when the tools are disabled.
      configure: Use more user-friendly names for subdirectory targets.
      configure: Make some shell variables global.
      makefiles: Get rid of the recursive installation rules for dlls and programs.
      makefiles: Remove some obsolete rules.
      makefiles: Move the static library rules to the global Make.rules file.
      makefiles: Move the import library rules to the global Make.rules file.
      makefiles: Move the API documentation rules to the global Make.rules file.
      makefiles: Move the main module rules to the global Make.rules file.
      makefiles: Move the testing rules to the global Make.rules file.
      ntdll: Add defines for the file position magic constants.
      makefiles: Generate the common rules for import libraries from configure.
      makefiles: Generate the common rules for dlls from configure.
      makefiles: Generate the common rules for programs from configure.
      makefiles: Generate the common rules for tests from configure.

Alistair Leslie-Hughes (4):
      oledb32: Implement IDataSourceLocator get/put hWnd.
      mscoree: Implement CreateInterface.
      include: Add interfaces ICLRMetaHostPolicy, ICLRDebugging.
      mscoree: Partially implement ICLRMetaHost RequestRuntimeLoadedNotification.

Andrew Eikum (2):
      riched20: Continue interpreting data as UTF-8 after the first chunk boundary.
      user32: Don't try to paint during WM_SETFOCUS if the edit control is not visible.

Aric Stewart (1):
      imm32: ImmGetCandidateWindow should not return unset data.

Aurimas Fišeras (1):
      po: Update Lithuanian translation.

Austin English (1):
      dxdiagn: Add a few more stub properties.

Bruno Jesus (4):
      ws2_32/tests: Fix an ok() call comment.
      include: Move struct WSABUF and WSAMSG to ws2def.h.
      ws2_32: Implement WSASendMsg().
      po: Update Brazilian Portuguese translation.

Daniel Jelinski (1):
      include: Define ERROR_REQUEST_PAUSED.

Dmitry Timoshkov (12):
      ntdll: Unify the checks for asynchronous NtWriteFile behaviour.
      ntdll: Unify the checks for asynchronous NtReadFile behaviour.
      ntdll: Don't use asynchronous file IO in the loader.
      server: Set the unix file write mode bit also for FILE_APPEND_DATA access.
      ntdll: Make it possible to store FILE_APPEND_DATA access bit in the server fd cache.
      server: Add FILE_APPEND_DATA to the access rights that require unix file write permission.
      ntdll/tests: Add a test for file position after NtWriteFile in FILE_APPEND_DATA mode.
      ntdll: Add support for FILE_APPEND_DATA to NtWriteFile.
      ntdll/tests: Accept previously declared behaviour of overlapped IO as broken.
      ntdll: Offset -1 (FILE_WRITE_TO_END_OF_FILE) is supposed to work in NtWriteFile for disk files in overlapped mode.
      ntdll/tests: Add more tests for reading beyond EOF.
      kernel32: The return and last error values set by ReadFile on EOF depend on whether overlapped pointer was passed in.

François Gouget (11):
      ddraw/tests: Fix compilation on systems that don't support nameless unions.
      Assorted spelling fixes.
      winmm: Fix two error messages to not point users to a MIDI Mapper configuration applet we don't have.
      cmd: Mention that the % must be doubled for FOR variables in batch files.
      cmd: Standardize the references to directories in the builtin command usage messages.
      wined3d: Fix compilation on systems that don't define INFINITY or NAN.
      server: Include either sys/user.h or asm/user.h.
      user32/tests: Fix compilation on systems that don't support nameless unions.
      kernel32/tests: Fix compilation on systems that don't support nameless unions.
      mshtml/tests: Fix compilation on systems that don't support nameless unions.
      mscoree/tests: Make test_createinstance() static.

Frédéric Delanoy (53):
      winemac.drv: Use BOOL type where appropriate.
      wmc: Use BOOL type where appropriate.
      wrc: Use BOOL type where appropriate.
      rpcrt4: Use BOOL type where appropriate.
      msxml3: Use BOOL type where appropriate.
      shell32: Use BOOL type where appropriate.
      propsys: Use BOOL type where appropriate.
      wldap32: Use BOOL type where appropriate.
      winex11.drv: Use BOOL type where appropriate.
      taskkill: Use BOOL type where appropriate.
      oleaut32/tests: Use BOOL type where appropriate.
      po: Update French translation.
      gdi32/tests: Use BOOL type where appropriate.
      itss: Use BOOL type where appropriate.
      kernel32: Use BOOL type where appropriate.
      gdiplus: Use BOOL type where appropriate.
      advapi32: Use BOOL type where appropriate.
      comctl32: Use BOOL type where appropriate.
      dbghelp: Use BOOL type where appropriate.
      dinput: Use BOOL type where appropriate.
      cabinet: Use BOOL type where appropriate.
      comdlg32/tests: Use BOOL type where appropriate.
      inetcomm: Use BOOL type where appropriate.
      rsaenh: Use BOOL type where appropriate.
      mlang: Use BOOL type where appropriate.
      d3dxof: Use BOOL type where appropriate.
      iphlpapi: Use BOOL type where appropriate.
      windowscodecs: Use BOOL type where appropriate.
      windowscodecs/tests: Use BOOL type where appropriate.
      dinput: Use BOOL type where appropriate.
      msi/tests: Use BOOL type where appropriate.
      riched20: Use BOOL type where appropriate.
      riched20/tests: Use BOOL type where appropriate.
      mscoree: Use BOOL type where appropriate.
      ws2_32: Use BOOL type where appropriate.
      ws2_32/tests: Use BOOL type where appropriate.
      winemac.drv: Use BOOL type where appropriate.
      wineoss.drv: Use BOOL type where appropriate.
      winex11.drv: Use BOOL type where appropriate.
      winspool.drv: Use BOOL type where appropriate.
      services: Use BOOL type where appropriate.
      winecfg: Use BOOL type where appropriate.
      urlmon/tests: Use BOOL type where appropriate.
      setupapi: Use BOOL type where appropriate.
      xmllite: Use BOOL type where appropriate.
      ddraw/tests: Use BOOL type where appropriate.
      gdi32: Use BOOL type where appropriate.
      wininet: Use BOOL type where appropriate.
      comdlg32: Use BOOL type where appropriate.
      winegstreamer: Use BOOL type where appropriate.
      msvcrt: Use BOOL type where appropriate.
      comctl32: Use BOOL type where appropriate.
      quartz: Use BOOL type where appropriate.

Hans Leidekker (10):
      wmic: Convert integer property values to BSTR.
      ntdll: Fix the version reported for 64-bit Windows XP.
      wine.inf: Initialize 64-bit prefixes with the right Windows version.
      ws2_32: Avoid a crash with tracing on.
      ws2_32: Always clear res on error in getaddrinfo/GetAddrInfoW.
      ws2_32: Add some tests for getpeername.
      ws2_32: Return an error from accept if the address buffer is too small.
      ws2_32: Always return the source address from WSAAccept.
      iphlpapi: Set the mask for gateway entries in GetAdaptersInfo.
      iphlpapi: Add support for GAA_FLAG_INCLUDE_PREFIX in GetAdaptersAddresses.

Henri Verbeet (50):
      wined3d: Send viewport updates through the command stream.
      wined3d: Call state_init_default() from state_init() when the appropriate flag is set.
      wined3d: Send scissor rect updates through the command stream.
      d3dx9: Get rid of the SPRITE typedef.
      d3dcompiler: Get rid of the BWRITER_COMPARISON_TYPE typedef.
      wined3d: Send render target binding updates through the command stream.
      wined3d: Send depth stencil binding updates through the command stream.
      wined3d: Send vertex declaration binding updates through the command stream.
      d3dcompiler: Get rid of the BWRITERSHADER_INSTRUCTION_OPCODE_TYPE typedef.
      d3dcompiler: Get rid of the BWRITERSHADER_PARAM_REGISTER_TYPE typedef.
      d3d8: Don't mask out internal wined3d usage flags in surface_init().
      d3d9: Don't mask out internal wined3d usage flags in surface_init().
      wined3d: Send vertex buffer binding updates through the command stream.
      d3dcompiler: Get rid of the BWRITERVS_RASTOUT_OFFSETS typedef.
      d3dcompiler: Get rid of the BWRITERSHADER_PARAM_DSTMOD_TYPE typedef.
      wined3d: Send stream frequency updates through the command stream.
      wined3d: Send index buffer binding updates through the command stream.
      wined3d: Send texture binding updates through the command stream.
      d3dcompiler: Get rid of the BWRITERSAMPLER_TEXTURE_TYPE typedef.
      d3dcompiler: Get rid of the BWRITERSHADER_PARAM_SRCMOD_TYPE typedef.
      wined3d: Send vertex shader binding updates through the command stream.
      wined3d: Send geometry shader binding updates through the command stream.
      wined3d: Send pixel shader binding updates through the command stream.
      d3dcompiler: Get rid of the BWRITERDECLUSAGE typedef.
      d3drm: Get rid of the Header typedef.
      wined3d: Send render state updates through the command stream.
      wined3d: Don't update lowest_disabled_stage in wined3d_stateblock_apply().
      wined3d: Move lowest_disabled_stage to the context.
      d3drm: Get rid of the IDirect3DRMImpl typedef.
      d3drm: Get rid of the IDirect3DRMDeviceImpl typedef.
      wined3d: Send texture state updates through the command stream.
      wined3d: Send sampler state updates through the command stream.
      wined3d: Send transformation matrix updates through the command stream.
      d3drm: Get rid of the IDirect3DRMFaceImpl typedef.
      d3drm: Get rid of the IDirect3DRMLightArrayImpl typedef.
      wined3d: Send clip plane updates through the command stream.
      wined3d: Send material updates through the command stream.
      wined3d: Unify the shader state IDs.
      d3drm: Compare with the correct IID in IDirect3DRMVisualArrayImpl_QueryInterface().
      d3drm: Introduce impl_from_IDirect3DRMVisualArray().
      wined3d: Unify shader binding points.
      wined3d: Unify constant buffer binding points.
      wined3d: Unify sampler binding points.
      d3drm: Introduce impl_from_IDirect3DRMFrameArray().
      d3drm: Get rid of the IDirect3DRMVisualArrayImpl typedef.
      wined3d: Send constant buffer binding updates through the command stream.
      wined3d: Send sampler binding updates through the command stream.
      wined3d: Send stream output binding updates through the command stream.
      d3drm: Get rid of the IDirect3DRMFrameArrayImpl typedef.
      d3drm: Get rid of the IDirect3DRMFrameImpl typedef.

Jacek Caban (24):
      mshtml: Added IHTMLEventObj::x implementation.
      mshtml: Added IHTMLEventObj::y implementation.
      mshtml: Added IHTMLStyle6::outline property implementation.
      urlmon: Include values from 'Post Platform' registry key in user agent string.
      mshtml: Added support for 'document' and 'window' script for attribute values.
      wininet: Moved request file info to separated struct.
      wininet: Forward InternetLockRequestFile to handle-specific functions.
      wininet: Added InternetUnlockRequestFile implementation.
      wininet: Added support for locking HTTP request files.
      wininet: Added InternetLockRequestFile tests.
      crypt32: Use BASE_CONTEXT for both data and link contexts.
      crypt32: Allocate BASE_CONTEXT in the beginning of the memory block.
      crypt32: Get rid of no longer used contextSize argument in Context_AddRef.
      crypt32: Get rid of no longer used contextSize argument in Context_GetLinkedContext.
      crypt32: Get rid of no longer used contextSize argument in Context_GetProperties.
      crypt32: Get rid of no longer used contextSize argument in Context_Release.
      crypt32: Get rid of no longer used contextSize argument in Context_CopyProperties.
      crypt32: Don't follow linked contexts in AddRef/Release implementations.
      ieframe: Compile tests with __WINESRC__ define.
      mshtml: Compile tests with __WINESRC__ define.
      secur32: Compile tests with __WINESRC__ define.
      ieframe: Pass frame_name to connection points in FireBeforeNavigate2.
      crypt32: Moved store functions to vtbl.
      crypt32/tests: Added implicit empty store tests.

Jeff Klein (2):
      mmdevapi: Correct MMDevPropStore_GetAt.
      mmdevapi/tests: Add some tests for MMDevPropStore_GetAt.

Julian Rüger (1):
      po: Update German translation.

Ken Thomases (14):
      winemac: Let Wine always drive window minimization; Cocoa just requests it.
      winemac: Remove a too-early attempt to set the process's Dock icon.
      winemac: Reapply display modes when switching back to app after "escaping" with Command-Tab.
      winemac: Allow zero-sized windows to be selected from the Mac Window menu.
      winemac: Make clicking on the app's dock icon unminimize a window if there are only minimized windows.
      winemac: Use unsigned type for bitfields.
      winemac: Only update window minimized state when it has changed from what processed events told us it was.
      winemac: Don't accidentally clear Cocoa window style mask bits.
      winemac: Update the window min/max size info and enforce it when zooming.
      winemac: If the app doesn't specify a custom max. tracking size, don't restrict Cocoa.
      winemac: Tell Wine when Cocoa has brought a window to the front.
      winemac: Make sure the same housekeeping is done when closing a window as is done when hiding it.
      winemac: Add registry settings to make Option keys send Alt rather than accessing additional characters from the keyboard layout.
      winemac: Implement support for Cocoa-style full-screen mode.

Lauri Kenttä (1):
      po: Update Finnish translation.

Marcus Meissner (9):
      shell32: Fixed wrong sizeof() in ZeroMemory (Coverity).
      netstat: Allocate WCHARs not CHARs (Coverity).
      wined3d: Fixed sizeof() to HeapAlloc (Coverity).
      attrib: Fixed an allocation size (Coverity).
      xcopy: Allocate more space for the W buffer (Coverity).
      view: Free the data on error exit (Coverity).
      msvcrt: Restore a stack mark on error (Coverity).
      wintrust: Fixed some memory leaks (Coverity).
      msi: Fixed a memory leak in an error case (Coverity).

Michael Stefaniuc (8):
      tests: Use the explicit LoadLibraryA function.
      qedit/tests: Use the W version of FindResource().
      iphlpapi/tests: Use the W form of CreateEvent().
      msvcr90/tests: Use the W form of CreateEvent().
      windowscodecs/tests: Use the W version of GetObject().
      tests: Readying some tests for the compilation with -D__WINESRC__.
      tests: Compile the tests by default with -D__WINESRC__.
      comctl32/tests: comctl32.dll is already loaded.

Nikolay Sivov (6):
      xmllite: Reset resume state when text node is parsed.
      xmllite: Fix node type for whitespace text nodes in Content.
      po: Update Russian translation.
      xmllite: Use buffer offset instead of pointers.
      xmllite: Fix overwriting of dest buffer when pushing more data to it.
      xmllite: Correct allocated destination buffer size.

Piotr Caban (11):
      msvcr80: Don't forward some function to msvcrt.
      msvcrt: Don't forward _itoa to ntdll.
      msvcrt: Add _wtoi64_l implementation.
      msvcrt: Don't forward bsearch to ntdll.
      msvcrt: Don't forward qsort to ntdll.
      msvcrt: Don't forward wcsncmp to ntdll.
      msvcrt: Don't try to demangle template after function or variable name.
      msvcrt: Add support for vcall thunks demangling.
      msvcrt: Add support for vtordispex demangling.
      riched20: Set control content in WM_CREATE message.
      riched20: Fix loop condition while processing control content in WM_CREATE.

Qian Hong (8):
      atl80: Add a WinSxS manifest resource.
      user32/tests: Added tests for OpenInputDesktop and SwitchDesktop.
      user32/tests: Fixed typo in comments.
      user32/tests: Clean side effect after testing winstation.
      user32/tests: Added input desktop tests on different winstations.
      user32/tests: Added foreground window tests on different desktops.
      user32/tests: Trace foreground window name.
      user32/tests: Make sure to allow setting the foreground window.

Rico Schüller (2):
      d3dx9: Handle FX/TX blobs in D3DXFindShaderComment().
      d3dx9: Don't allocate the state parameter.

Sebastian Lackner (3):
      winex11: Call destroy_gl_drawable before destroying the window.
      winex11: Call sync_context for DC_GL_CHILD_WIN drawables before swapping buffers.
      wined3d: Ensure that wined3d_cs_st_require_space allocates the required space.

Stefan Dösinger (8):
      wined3d: Don't invert blits from offscreen surfaces.
      wined3d: Avoid duplicated code in wined3d_surface_blt.
      wined3d: Get rid of SFLAG_LOCKABLE.
      wined3d: Remove the D3DSWAPEFFECT_DISCARD debug clear code.
      wined3d: Remove redundant surface location changes.
      wined3d: Take sRGB_decode into account in texture_srgb_mode.
      wined3d: Remove sRGB_decode handling from surface_load_location.
      wined3d: Move sRGB_decode handling to the top of texture_bind / preload.

Thomas Faber (2):
      comctl32: Remove superfluous const from DPA/DSA function signatures.
      mmdevapi: Fix build with MSVC.

Vincent Povirk (1):
      gdiplus: Properly set the gdi+ format to match the wic encoder's format.

Łukasz Wojniłowicz (1):
      po: Update Polish translation.

--
Alexandre Julliard
julliard@winehq.org
