The Wine development release 1.5.11 is now available.

What's new in this release (see below for details):
  - Multi-channel support in the ALSA driver.
  - Removal of the big X11 lock.
  - Support for pair positioning adjustments in Uniscribe.
  - More I/O stream implementations in the C++ runtime.
  - Various bug fixes.

The source is available from the following locations:

  http://prdownloads.sourceforge.net/wine/wine-1.5.11.tar.bz2
  http://mirrors.ibiblio.org/wine/source/1.5/wine-1.5.11.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.5.11 (total 36):

   7260  Graphical corruptions in Sim City 4
  10469  Radmin viewer 3.1: Mass selection of users does not work in the text chat mode
  13436  Checkbox at finish screen is invisible unless checkbox is given focus
  13868  Starlancer crashes with force feedback enabled
  16226  Office XP keeps reinstalling at program startup
  16580  S.T.A.L.K.E.R: sky not redrawn correctly with dynamic lighting
  17570  Can't build/install DPK files in Delphi 7.
  19936  Mother - crashes on start
  20531  Steam version of Need for speed undercover crashes if you click on it.
  21496  Xfire 1.120: Cannot login - page fault on write access
  23012  Black sky in Gothic 3
  23616  Fallout 3: childbirth scene halts after every (second) line of dialogue, preventing new game
  24629  Prince of Persia: The Forgotten Sands won't start without native d3dx9_36
  26371  Back to the Future Ep.1: It's About Time Crashes
  27685  [F.E.A.R.3]Black Textures/Screen
  27861  starcraft ii.exe has encountered a serious problem and needs to close
  28489  Ghost Recon Advanced Warfighter: graphical glitches
  29844  Mouse input issue on Macosx Snowleopard/Lion in games Like Mass Effect and others
  30936  Star Wars: Knights of the Old Republic crashes after first location
  31018  OpenGL OBJ Viewer Demo crashes when opening an object (msvcp100)
  31042  Wine crash when browsing google
  31049  Team Fortress 2 - Pyromania update locks up screen
  31071  DotA 2: overbright/broken lighting effects
  31100  Outlook 2010 crashes on calender alerts
  31192  CodeWright 7.5 Will Not Even Start - Serious Error Message
  31255  msvcp100 missing _J versions of several functions
  31316  Game Controllers Panel looks weird when dpi is higher than 96 ppp.
  31326  ScriptStringOut draw glyphs with wrong pitch with some fonts
  31344  Anarchy online needs msvcp80.dll.?uncaught_exception@std@@YA_NXZ
  31352  Driftmoon needs more WMI stuff?
  31364  Truncated text (in Portuguese) in winecfg.exe
  31370  Full screen functionality broken in full screen programs
  31386  Installshield Wizard welcome screen displays inverted text
  31455  OpenGeneral: cannot start the application
  31463  GeForce GT 630M (with Bumblebee) is not properly recognized
  31484  Operation Flashpoint hangs for a short period on each keypress

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

Changes since 1.5.10:

Alex Henrie (1):
      user32: Correct dialog focus behavior.

Alexandre Julliard (18):
      msvcp90: Fix the calling convention of the basic_string helpers.
      winex11: Remove X11 locking around simple X calls.
      winex11: Remove remaining X11 locking around graphics calls.
      winex11: Remove unnecessary cleanups on process exit.
      winex11: Add a critical section to protect the OpenGL context list.
      winex11: Initialize the OpenGL format list at startup and simplify the conversion routines.
      winex11: Make pixel format objects const and get rid of the WineGLPixelFormat typedef.
      winex11: Remove the redundant pixel format index from the pixel format object.
      winex11: Store XInput2 device info in the thread data.
      winex11: Use the labels to find the mouse motion valuators for XInput2.
      winex11: Create contexts at initialization time to avoid the need for locks.
      winex11: Add a critical section to protect the keyboard mapping tables.
      winex11: Remove the remaining X11 locking calls.
      wined3d: Remove references to the (no longer used) X11 lock.
      winex11: Get rid of the X11 locking functions.
      msvcrt: Add a number of floating point functions for 64-bit.
      msvcr100: Add the 64-bit variants of the C++ exported names.
      winex11: Release the keyboard lock before sending input to the server.

Alistair Leslie-Hughes (3):
      scrrun: Implement IFileSystem3 FolderExists.
      scrrun: Add missing id value.
      scrrun: Correct FileExists for directories.

Andrew Eikum (3):
      mciavi32: Advance video frames based on frame duration, not audio sample rate.
      winealsa.drv: Don't cap the allowed number of channels.
      winealsa.drv: Remap mmdevapi channels to correct ALSA channels.

André Hentschel (6):
      winedbg: Add Coprocessor move operators to Thumb2 disassembler.
      d3drm: Add SceneBackground handling.
      kernel32/tests: Test LocaleNameToLCID with bad name.
      include: Rename IMAGE_FILE_MACHINE_ARMV7 to IMAGE_FILE_MACHINE_ARMNT.
      winebuild: Rename IMAGE_FILE_MACHINE_ARMV7 to IMAGE_FILE_MACHINE_ARMNT.
      kernel32: Fix LocaleNameToLCID on mismatch.

Aric Stewart (5):
      usp10: Cache OUTLINETEXTMETRICW in addition to TEXTMETRICW.
      usp10: Use cached values in GPOS functions.
      usp10: Correct implementation of Pair Positioning Adjustment: Format 1.
      usp10: Correct rounding of negative offsets in GPOS.
      usp10: Implement MarkToMark Attachment Positioning Subtable.

Austin English (2):
      configure: Use -gdwarf-2 / -gstrict-dwarf when available.
      kernel32: Implement IsValidLocaleName (with tests).

Bruno Jesus (1):
      wininet/tests: Add invalid index test for HttpQueryInfo.

Dan Kegel (1):
      msvcrt: memmove_s shouldn't zero its output buffer on error.

Detlef Riekenberg (6):
      kernel32/tests: Fix test failures on win7.
      mpr/tests: Handle result from the AppV virtual drive.
      mshtml/tests: Mark IE6 behavior as broken.
      d3dx9_36/tests: Fix failures on vista x64.
      wintrust/tests: Handle ERROR_ACCESS_DENIED failures.
      advpack/tests: Avoid test failures without high access rights.

Dmitry Timoshkov (18):
      windowscodecs: Handle short reads in the metadata handler.
      gdiplus: Correct GdipSaveImageToFile spec entry.
      include/gdipluspixelformats.h: Avoid explicit TRUE/FALSE in conditional expressions.
      gdiplus: Add more tests for GdipMeasureString using device with custom resolution.
      Revert commit b20a1f56b0c915b24f70b8be83fbf76ea7378123.
      gdiplus: GdipGetLogFontW should transform returned font height using font and device unit/resolution/scale.
      gdiplus: get_font_hfont helper should transform returned font height using font and device unit/resolution/scale.
      gdiplus: GdipMeasureString should apply its internal scaling factors to layout rectangle.
      gdiplus: Replace convert_unit() by a clearer units_to_pixels() helper.
      gdiplus: Add a test for font height scaling.
      gdiplus: Add a test for GdipDrawImage scaling.
      gdiplus: Forward GdipDrawImage to GdipDrawImagePointRect.
      winedbg: Make the crash dialog slightly larger and minimize/maximize-able.
      gdiplus: Destination points passed to GdipDrawImagePointsRect should be in device units.
      gdiplus: When there is no target rectangle specified DrawImage should scale image to device dpi.
      gdiplus: Properly convert source coordinates to device units in GdipDrawImagePointsRect.
      gdiplus: Dump the matrix passed to GdipSetWorldTransform.
      gdiplus: Make GdipSetPropertyItem return Ok.

Eric Pouech (3):
      msacm32: In format chosse dialog, get rid of static variables, and store information as a property of dialog.
      msacm32: Convert acmFormatChoose internals to Unicode, implement acmFormatChoose[AW] on top of it.
      msacm32: In acmFormatChoose, added support for template.

Erich Hoover (1):
      hhctrl.ocx: Centralize merging HH_WINTYPE data.

Francois Gouget (12):
      winmm: MMDRV_GetRelated() is not used anymore so remove it.
      dsound/tests: Clarify some skip() traces.
      dsound/tests: Trace the number of tested DirectSound drivers.
      taskmgr: Tweak the spelling of a label.
      winecfg: Tweak the spelling of a couple of labels.
      winefile: Tweak the spelling of a menu.
      inetcpl: Tweak the spelling of a label.
      winecfg: An English spelling tweak.
      kernel32: Fix the spelling of 'combo box' and 'top-level' in some error messages.
      wined3d: Change some internal function and structure names to the more standard 'converter' spelling.
      msvcp90: Make basic_istream_read_str() static.
      gdiplus/tests: Make pixels_to_units() static.

Gustavo Henrique Milaré (1):
      po: Fix Brazilian Portuguese translation.

Hans Leidekker (2):
      msi: Avoid an out of bounds access in msi_build_directory_name.
      msi: Try the registered install location first when resolving the target directory.

Henri Verbeet (2):
      winex11: Don't set MWM decorations either for fullscreen virtual desktops.
      winex11: Explicitly clear virtual desktop maximized state.

Jacek Caban (37):
      mshtml: Test contentWindow interfaces of frame and iframe elements.
      mshtml: Fixed DISPATCH_PROPERTYGET|DISPATCH_METHOD support in invoke_builtin_prop.
      mshtml: Default to previous script type if not given.
      vbscript: Ignore fdexNameCaseSensitive flag.
      mshtml: Added VBScript in HTML tests.
      vbscript: Added IActiveScriptParseProcedure2 stub implementation.
      wscript: Use proper helpers for iface calls.
      inetcomm: Use proper iface call helpers.
      oleaut32/tests: Use proper helpers for iface calls.
      ole32: Use proper helpers for iface calls.
      ole32/tests: Use proper helpers for iface calls.
      ole32: Added ISynchronizeHandle implementation.
      ole32: Added ISynchronizeHandle tests.
      rpcrt4: Added RpcError* stubs.
      mshtml: Store moniker in HTMLInnerWindow.
      mshtml: Use inner window's moniker in PluginHost implementation.
      mshtml: Use helper to get IUri in HTMLLocation implementation.
      mshtml: Moved HTMLLocation reference to inner window.
      vbscript: Added shell registry for VBSFile.
      rpcrt4: Use proper helper for IRpcStubBuffer call.
      rpcrt4: Added prepare_async_request helper.
      rpcrt4: Use helper for handling async call wait.
      rpcrt4: Optimize buffer allocation in rpcrt4_ncacn_http_read.
      rpcrt4: Properly handle async HTTP failures.
      rpcrt4: Added cancelling support for all HTTP requests.
      rpcrt4: Fixed memory leak.
      rpcrt4: Moved sending echo request to separated function.
      mmdevapi: Use proper helpers for iface calls.
      strmbase: Use proper helpers for iface calls.
      shlwapi: Use proper helpers for iface calls.
      comdlg32: Use proper helpers for iface calls.
      mshtml: Moved Invoke(DISPID_ENABLED) invocation to separated function.
      mshtml: Added IHTMLObjectElement::put_width implementation.
      mshtml: Added IHTMLObjectElement::get_width implementation.
      mshtml: Added IHTMLObjectElement::put_height implementation.
      mshtml: Added IHTMLObjectElement::get_height implementation.
      mshtml: Added more IHTMLObjectElement tests.

Jan Beich (2):
      ntdll: Prefer a portable function to get thread id.
      ntdll: Fetch thread id on NetBSD.

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

Józef Kucia (18):
      d3dx9/tests: Clean up device state after tests.
      d3dx9: Introduce separate functions for restoring and capturing device state.
      d3dx9: Implement rendering to cube textures in ID3DXRenderToEnvMap.
      d3dx9/tests: Add basic tests for ID3DXRenderToEnvMap.
      d3dx9/tests: Add cube texture tests for ID3DXRenderToEnvMap.
      d3dx9: Introduce helper functions to operate on constant handles.
      d3dx9: Introduce a helper function for setting float shader constants.
      d3dx9: Correctly handle constants without default values in D3DXGetShaderConstantTableEx.
      d3dx9: Implement ID3DXConstantTable::SetDefaults.
      d3dx9/tests: Add tests for constant tables with default values.
      d3dx9/tests: Add tests for ID3DXConstantTable::SetDefaults.
      d3dx9: Implement ID3DXConstantTable::SetBool.
      d3dx9: Implement ID3DXConstantTable::SetBoolArray.
      d3dx9/tests: Add tests for setting matrix shader constants.
      d3dx9: Implement ID3DXConstantTable::SetValue.
      d3dx9/tests: Add tests for ID3DXConstantTable::SetValue.
      d3dx9: Fix ID3DXConstantTable::SetVector.
      d3dx9: Fix ID3DXConstantTable::SetMatrix.

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

Lucas Zawacki (5):
      joy.cpl: Remove uneeded FIXME message.
      joy.cpl: Better arrangement of elements even with higher DPIs.
      joy.cpl: Correct misplaced elements when using high DPIs.
      dinput/tests: Tests for IDirectInputJoyConfig8_GetConfig.
      dinput: Semi-stub for IDirectInputJoyConfig8_GetConfig.

Marek Chmiel (4):
      dssenh/tests: Key length tests for the DSSENH cryptographic service provider.
      dssenh/tests: Hash tests for the DSSENH cryptographic service provider.
      dssenh/tests: Added encryption tests for the DSSENH cryptographic service provider.
      dssenh/tests: Added block cipher mode tests for the DSSENH cryptographic service provider.

Matteo Bruni (4):
      wined3d: Use GL_FRAMEBUFFER_SRGB when possible.
      wined3d: Dump postblend color.
      wined3d: Fix pixel format masks.
      wined3d: Improve post-pixelshader blending test.

Michael Stefaniuc (65):
      avifil32: Avoid TRUE:FALSE conditional expressions.
      crypt32: Avoid TRUE:FALSE conditional expressions.
      krnl386.exe16: Avoid TRUE:FALSE conditional expressions.
      server: Avoid TRUE:FALSE conditional expressions.
      ole32: Avoid TRUE:FALSE conditional expressions.
      user32: Avoid TRUE:FALSE conditional expressions.
      gdiplus: Remove unreachable break after return (Smatch).
      ole32: Remove superfluous NULL pointer check before free (Smatch).
      comctl32: Get rid of two macros.
      comctl32: Avoid TRUE:FALSE conditional expressions.
      comdlg32: Avoid TRUE:FALSE conditional expressions.
      credui: Avoid TRUE:FALSE conditional expressions,.
      gdi32: Avoid TRUE:FALSE conditional expressions.
      jscript: Avoid FALSE:TRUE conditional expressions.
      msvcp60: Avoid FALSE:TRUE conditional expressions.
      msvcrt: Aoid TRUE:FALSE conditional expressions.
      oledlg: Avoid TRUE:FALSE conditional expressions.
      winedbg: Avoid TRUE:FALSE conditional expressions.
      shlwapi: Avoid FALSE:TRUE conditional expressions.
      wordpad: Avoid TRUE:FALSE conditional expressions.
      include/wininet.h: Avoid TRUE:FALSE conditional expressions.
      ntdll: Avoid TRUE:FALSE conditional expressions.
      setupapi: Avoid TRUE:FALSE conditional expressions.
      shell32: Avoid TRUE:FALSE conditional expressions.
      dsound: Avoid a TRUE:FALSE conditional expression.
      hlink: Avoid a TRUE:FALSE conditional expression.
      iexplore: Avoid a TRUE:FALSE conditional expression.
      mmdevapi: Avoid a TRUE:FALSE conditional expression.
      wineps.drv: Drop a superfluous TRUE:FALSE conditional expression.
      explorerframe/tests: Avoid a TRUE:FALSE conditional expression.
      dbghelp: Remove a superfluous TRUE:FALSE conditional expression.
      setupx.dll16: Avoid a FALSE:TRUE conditional expression.
      msi/tests: Avoid a TRUE:FALSE conditional expression.
      riched20: Avoid a TRUE:FALSE conditional expression.
      ws2_32: Avoid a FALSE:TRUE conditional expression.
      secur32: Avoid a FALSE:TRUE conditional expression.
      wintrust: Avoid a TRUE:FALSE conditional expression.
      winspool.drv: Drop a superfluous TRUE:FALSE conditional expression.
      winhlp32: Avoid TRUE:FALSE conditional expressions.
      winefile: Avoid a TRUE:FALSE conditional expression.
      widl: Avoid FALSE:TRUE conditional expressions.
      taskmgr: Drop a superfluous TRUE:FALSE conditional expression.
      dsound: Merge the DirectSoundCapture create functions.
      dsound: IDirectSoundCapture / IUnknown use separate refcounts.
      dsound/tests: Refcount tests for IDirectSoundCapture / IUnknown.
      dsound/tests: Add DirectSoundFullDuplex COM tests.
      dsound: Cleanup the DirectSoundFullDuplex create functions.
      dsound: Cleanup error handling in IDirectSoundFullDuplex::Initialize().
      dsound: COM cleanup for the IDirectSoundFullDuplex iface.
      dsound: Pass the object instead of ifaces to helpers.
      dsound: Add an object refcount for DirectSoundFullDuplex.
      dsound: Merge IUnknown into the main DirectSoundFullDuplex object.
      dsound: Add COM aggregation to DirectSound for internal use.
      dsound: Aggregate IDirectSound8 instead of wrapping it.
      dsound: Add COM aggregation to DirectSoundCapture for internal use.
      dsound: Aggregate IDirectSoundCapture8 instead of wrapping it.
      dsound: Move the QI implementation from IDirectSoundFullDuplex to IUnknown.
      ddrawex: Use unsafe_impl_from_IDirectDrawSurface4() for application provided ifaces.
      ddrawex: Get rid of dds_get_inner().
      ddrawex: Rename impl_from_dds4 to impl_from_IDirectDrawSurface4.
      ddrawex: Forward to the wrapped surface instead of recursing forever.
      ddrawex: COM cleanup for the IDirectDrawSurface4 iface.
      advpack/tests: Use the global "current directory" variable.
      d3d9/tests: Simplify some logic operations.
      advapi32/tests: Don't shadow some local variables.

Nikolay Bogoychev (1):
      wined3d: Recognize GeForce GT 630M.

Nikolay Sivov (6):
      riched20: Use proper interface methods macros.
      dwrite: Added IDWriteFont stub.
      dwrite: Store font style provided in LOGFONT data.
      dwrite: Implement IDWriteBitmapRenderTarget creation.
      dwrite: Implement IDWriteBitmapRenderTarget_GetSize.
      quartz: Use proper method macros.

Per Johansson (1):
      wineqtdecoder: Avoid CFSTR in global initializer.

Piotr Caban (29):
      msvcp: Rename msvcp90 debug channel.
      msvcp90: Only define virtual function callers in base class.
      msvcp90: Added basic_filebuf<wchar> and basic_filebuf<short> implementation.
      msvcp90: Added basic_ostream<short> implementation.
      msvcp90: Added basic_istream<short> implementation.
      msvcp90: Added basic_iostream<short> implementation.
      msvcp90: Added basic_ofstream<wchar> implementation.
      msvcp90: Added basic_ifstream<wchar> implementation.
      msvcp90: Added basic_fstream<wchar> implementation.
      msvcp90: Export wcin, wcout, wcerr and wclog objects.
      msvcp90: Added basic_ostringstream<short> implementation.
      msvcp90: Added basic_istringstream<short> implementation.
      msvcp90: Added basic_stringstream<short> implementation.
      msvcp90: Use streamoff in std::_BADOFF definition.
      msvcp90: Added partial strstreambuf implementation.
      msvcp90: Fixed basic_streambuf::sputn functions behaviour when there's no place in buffer.
      msvcp90: Reset width value in basic_istream class on error.
      msvcp90: Added strstreambuf seekpos and seekoff implementation.
      msvcp90: Added missing -ret64 option.
      msvcp100: Copy source files from msvcp90.
      msvcp100: Fixed streamoff and streamsize definition.
      msvcp100: Fixed basic_streambuf virtual functions table.
      msvcp100: Fixed ctype class virtual functions table.
      msvcp100: Update spec file.
      msvcp100: Fixed 64-bit variables alignment.
      msvcp: Sync spec files.
      msvcp90: Manually define virtual destructors in vtables.
      msvcp60: Manually define virtual destructors in vtables.
      msvcp100: Manually define virtual destructors in vtables.

Qian Hong (3):
      riched20/tests: Added UTF8 BOM test.
      riched20/tests: Fixed typo in test_EM_STREAMIN.
      riched20: Added support for UTF8 BOM stream.

Rico Schüller (2):
      d3dx9/tests: Reduce effect parameter value test count.
      d3dx9/tests: Check all elements in the effect parameter value test.

Sergey Guralnik (2):
      comctl32/tests: Add test for MCN_SELECT/MCN_SELCHANGE notifications.
      comctl32: Correct values passed in MCN_SELECT/MCN_SELCHANGE notifications.

Vijay Kiran Kamuju (1):
      atl80: Implement AtlGetVersion.

Vincent Povirk (10):
      windowscodecs: Add tests for IWICBitmap.
      windowscodecs: Add a stub IWICBitmap implementation.
      windowscodecs: Implement BitmapImpl_SetPalette and CopyPalette.
      windowscodecs: Implement IWICBitmap::Lock.
      windowscodecs: Implement getters on IWICBitmapLock.
      windowscodecs: Implement IWICBitmap::CopyPixels.
      windowscodecs: Implement IWICBitmap::GetPixelFormat.
      windowscodecs: Implement IWICBitmap::GetSize.
      windowscodecs: Implement IWICBitmap::SetResolution and GetResolution.
      windowscodecs: Add test for IWICImagingFactory::CreateBitmapFromSource.

--
Alexandre Julliard
julliard@winehq.org
