The Wine development release 1.5.1 is now available.

What's new in this release (see below for details):
  - Built-in JavaScript now preferred over Gecko in most cases.
  - Support for scalable font resources.
  - Fixes for audio and video playback.
  - Support for script decoding in JScript.
  - Various bug fixes.

The source is available from the following locations:

  http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.5.1.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-1.5.1.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.1:

   3498  Civilization 3: needs CreateScalableFontResource implemented
   4656  Text in title of tabe is not displayed
   6072  Demo of Runaway: A Road Adventure crashes
   6548  "Nancy Drew: The Creature of Kapu Cave" won't start
   7382  Star wars empire at war fails to initialize sound
  10262  wxWidgets TextCtrl in Python
  12434  La-Mulana Jukebox crashes
  13254  CPUZ 1.45 crashes when trying to select a different tab via keyboard
  13618  Melty Blood Act Cadenza Ver. B Incorrect Rendering
  14497  Airport Inc: Text does not render
  14614  Devil May Cry 4 displays a black screen
  15620  starting games totaly kills the sound on the system
  17529  LOTRF BFME2 demo crashes after splash screen on some systems
  17592  La-Mulana: crash on startup due to problem with dmusic
  18235  Word Pro tables run past margins
  18553  Opera native skin widgets are black/invisible
  18563  dreamweaver 8 hangs when encountering &bull;
  19224  launching a "New Query" pane produces an "OutOfMemory" error in MS SQL SMSE
  20053  Team-Fortress 2 and other source games suffer from black menu and missing UI textures in dx9 mode
  20185  noisy shadows in CRRCSim
  20301  Word Pro looses keyboard
  20420  VB6 Font size problem with custom usercontrols
  20587  Ragnarok Online takes 99-100% CPU under wine.
  20805  FL Studio and MIDI Controller
  21463  Star Trek: Starfleet Command III fails to start
  21958  Anarchy Online crash after login on PCBSD
  22456  Wrong caching with INI functions
  22498  Stuttering sound when playing HoMM3
  22780  Trackmania United Forever crashes with complex shaders enabled
  22901  Copy/Paste doesnt work for some programms
  23944  Verizon Media Manager needs native Windows VB scripting dlls to install
  24108  error in Visual Basic Editor
  24240  Edge of Chaos high quality textures are broken
  24263  "bricksntiles" crashes
  24775  Samsung Kies installer stops early
  24833  Verizon Media Manager doesn't detect Windows Media Framework 11 that it installs
  25868  Angry Birds: sound is choppy or doesn't play at all
  26217  Lylian: Mouse clicks don't register
  26299  Solidworks 2010: Fails to install
  26358  Office 2003 installer crashes immediately
  26522  Descent 3: game unbearably slow with D3D
  26540  Irfanview 4.28 paint extension changes to the image are lost upon closing the paint window
  27633  Missing StrToInt64Ex in SHLWAPI.DLL
  27636  Brigade E5 NEW jagged union do not run
  28558  Skype 5.3 crash in wined3d
  29031  Game borderlands does not start
  29146  Wine should warn user when generating invalid shaders
  29602  Sound stops after first sound/audio output in Age of Empires 2.
  29859  Renegade X fails to install with Mono 2.10 (works with .NET Framework 4.0 prerequisite)
  29951  Some links don't work in iexplore - needs Navigate_anchor Navigating to target L"_top"
  30042  IHTMLtablecell is unimplemented?
  30072  Microsoft .NET Framework 4.5 Developer Preview installer needs some wevtapi.dll stubs (EvtOpenChannelConfig, ...)
  30189  Strong Bad's Cool Game launcher: buttons not working
  30190  Unimplemented function gdiplus.dll.GdipResetPageTransform
  30192  Cossacks: European Wars - game encyclopedia won't open
  30195  Glitches in GTAVC menu apparent window size
  30230  The MSIMODIFY_MERGE function in TABLE_modify is missing
  30288  builtin iexplore crashes at loading https://mybank.icbc.com.cn/icbc/perbank/index.jsp

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

Changes since 1.5.0:

Akihiro Sagawa (6):
      msvcrt: Add test for _mbbtombc.
      msvcrt: Improve _mbbtombc to handle Japanese characters.
      msvcrt/tests: Rewrite test_mbcjisjms to test in various codepages.
      msvcrt/tests: Add more tests for _mbcjistojms.
      msvcrt: Fix _mbcjistojms off by one error.
      msvcrt: Fix _mbsnbcmp and _mbsnbicmp implementation.

Alessandro Pignotti (1):
      atl: Send OLE_CLOSE command to control on detach.

Alexandre Julliard (1):
      ntdll: Also call the unwind handler for the target frame.

Alistair Leslie-Hughes (4):
      mscoree: Allow capital for version number.
      scrrun: Add DllCanUnloadNow, DllGetClassObject stubs.
      scrrun: Register Scripting interfaces.
      gdiplus: Add GdipResetPageTransform stub.

Andoni Morales Alastruey (1):
      msi: Implement MSIMODIFY_MERGE function in TABLE_modify.

Andrew Eikum (9):
      dmusic: Return more accurate error codes in IDirectMusicSegment::Load.
      dmloader: Don't claim partial success when loading fails.
      dmloader: Add simple playing test.
      winmm: Support DRVM_MAPPER_PREFERRED_GET in waveXxxMessage.
      winmm: Report waveIn devices' component type as Microphone.
      mmdevapi: TRACE all COM method calls.
      mciqtz32: Stop the graph when the file is no longer playing.
      dmusic: Support creating default ports with GUID_NULL.
      dmusic: Reimplement instrument loading.

André Hentschel (18):
      msvcrt: Fix a typo.
      msi: Allow ARM installations.
      winefile: Remove unused macros.
      winefile: Resize controls for translations.
      winefile: Fully convert to unicode.
      view: Show the filename in the window title.
      winemaker: Handle library search pragmas.
      wevtapi: Add stub for EvtOpenChannelConfig.
      wevtapi: Add stubs for EvtGetChannelConfigProperty, EvtSetChannelConfigProperty and EvtSubscribe.
      kernel32: Handle LOCALE_NAME_USER_DEFAULT with tests.
      vcomp100: Add new stub dll.
      make_specfiles: Add vcomp group.
      winedbg: Fix a typo.
      winebuild: Create stubs for ARM.
      include: Add new ARM defines to winnt.h.
      include: Add peARM to fusion.idl.
      view: Also show the filename in the window title when loading it from command line.
      po: Update German translation.

Aric Stewart (14):
      usp10: Properly handle invalid arguments to ScriptBreak.
      strmbase: COM cleanup for BaseFilter.
      strmbase: COM cleanup for BasePin, BaseInputPin, and BaseOutputPin.
      strmbase: COM cleanup for cleanup SourceSeeking.
      usp10: Add fallback font for Myanmar.
      wineqtdecoder: COM cleanup.
      strmbase: COM cleanup for TransformFilter.
      wineqtdecoder: Implement base IQualityControl in QTOutPin.
      strmbase: Add beginnings of BaseWindow.
      strmbase: Implement BaseControlWindow.
      strmbase: Implement BaseControlVideo.
      strmbase: Basic BaseRenderer implementation.
      wineqtdecoder: Read the header of unknown incoming streams to try to identify common formats.
      quartz: Update null renderer to use the BaseRenderer from strmbase.

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

Bruno Jesus (3):
      ws2_32: Handle NULL proto in WSAAsyncGetServByName.
      kernel32/tests: Show that ini cache must not be used if file no longer exists.
      kernel32: Avoid ini cache if file does not exist anymore.

Cheer Xiao (1):
      po: Update simplified Chinese translation.

Christian Costa (28):
      amstream: Add support for AMMSF_ADDDEFAULTRENDERER for audio stream.
      amstream/tests: Make test.avi filename an unicode string and test the file presence once for all.
      amstream/tests: Add media streams tests.
      amstream: Check purpose id in AddMediaStream.
      amstream: Video streams do not support default renderer.
      amstream: No media stream is created when the defaut renderer is used.
      amstream: Implement IAMMultiMediaStreamImpl_AddMediaStream + add tests.
      amstream/tests: Add some tests to retreive media streams to media stream filter.
      attrib: Display unknown options.
      attrib: Skip processing of . and .. entries.
      attrib: Display filenames with absolute path as in native.
      attrib: Add 2 missing spaces between attribute flags and filename.
      attrib: Do not hardcode number of characters in flags array.
      attrib: Dislay attribute flags in the right order.
      cmd/tests: If we rewind to the beginning of the line, don't increment line number.
      include: Add missing error codes.
      amstream: Implement AddMediaStream and GetMediaStream in media stream filter.
      amstream: Add stream to the media stream filter in IAMMultiMediaStreamImpl_AddMediaStream.
      amstream/tests: Verify if the dsound renderer is created when we create an audio stream with the default renderer.
      amstream/tests: Add tests for querying interfaces and creating samples on video and audio media streams.
      devenum: Add tests for devenum.
      dmime: Check return code of CoCreateInstance in Init method.
      strmbase: Display dll in which we are searching a class to instanciate.
      qcap: Enable registration of all non yet implemented filters.
      d3drm: Move mesh loading code into a separate function so it can be shared.
      d3drm: Partial implementation of IDirec3DRM:Load method + tests.
      dmusic: Add some tests for enumerating and creating ports.
      dmusic: Don't use method implementation directly. Pass through vtable with related macro instead.

Detlef Riekenberg (8):
      comdlg32/tests: Remove outdated/unused code.
      comdlg32: Validate more parameters in PrintDlgEx.
      comdlg32/tests: Test more parameters for PrintDlgEx.
      comdlg32: Use a helper to get the printer info.
      comdlg32: Use a helper to get the printer driver info.
      comdlg32: Use a helper to update the devmode handle.
      comdlg32: Return a device context when requested.
      comdlg32/tests: Add HDC tests for PrintDlgEx.

Dmitry Timoshkov (5):
      dinput: Use standard way for dumping POINT.
      psapi: Add missing return value checks.
      user32: IsDialogMessage should allow control ids other than IDOK when processing WM_KEYDOWN.
      advapi32: Add tests for kernel objects accessed with 0 and ACCESS_SYSTEM_SECURITY.
      advapi32: Add event security access tests.

Francois Gouget (3):
      d3drm/tests: Fix compilation on systems that don't support nameless unions.
      winapi: Add support for the arm architecture.
      cryptui: Use a single space after a full stop to follow the Windows GUI guidelines.

Frédéric Delanoy (3):
      attrib: Fix typo.
      po: Update French translation.
      cmd: Use BOOL instead of int for boolean variables.

Hans Leidekker (12):
      msi: Get the UI level from the global variable instead of the property.
      msi: Mask off modifiers before setting the UILevel property.
      sxs: Parse the display name in CreateAssemblyNameObject.
      sxs/tests: Add tests for CreateAssemblyNameObject.
      msi: Also set the Intel property on 64-bit processors.
      msi: Clear the cert pointer in MsiGetFileSignatureInformation.
      msi/tests: Reduce code duplication in the feature/component state tests.
      sxs: Implement IAssemblyCache::QueryAssemblyInfo.
      sxs: Add tests for IAssemblyCache::QueryAssemblyInfo.
      fusion/tests: Add another test for IAssemblyCache::QueryAssemblyInfo.
      msi: Detect installed side-by-side assemblies.
      advapi32: Return a fake security descriptor from CreatePrivateObjectSecurity.

Henri Verbeet (25):
      d3d8: Don't return a pointer to the implementation in IDirect3DSurface8Impl_QueryInterface().
      d3d8: Don't return a pointer to the implementation in IDirect3D8Impl_QueryInterface().
      d3d8: Don't return a pointer to the implementation in IDirect3DDevice8Impl_QueryInterface().
      d3d8: Don't return a pointer to the implementation in IDirect3DCubeTexture8Impl_QueryInterface().
      ddraw: Make ddraw_surface_wined3d_parent_ops static.
      ddraw/tests: Add a helper function to create a viewport.
      wined3d: Drop an Apple hack.
      wined3d: Load the backbuffer in the correct location before presenting in swapchain_gl_present().
      wined3d: Only update the drawable on surface unmap for the frontbuffer.
      wined3d: Drop the ORM_BACKBUFFER special case in surface_unmap().
      winex11: Use GLX_DONT_CARE instead of ~0 in ConvertAttribWGLtoGLX().
      d3d9: Store an implementation pointer to the d3d9 structure in IDirect3DDevice9Impl.
      d3d9: Don't return a pointer to the implementation in IDirect3DVolumeTexture9Impl_QueryInterface().
      d3d9: Don't return a pointer to the implementation in IDirect3DVolume9Impl_QueryInterface().
      wined3d: Recognise AMD HD 6770M and HD 6750M with closed drivers.
      wined3d: Drop the "vbo" check in wined3d_device_process_vertices().
      wined3d: Drop a questionable FIXME in device_stream_info_from_declaration().
      wined3d: Fix the VBO check in device_stream_info_from_declaration().
      d3d9: Don't return a pointer to the implementation in IDirect3DVertexDeclaration9Impl_QueryInterface().
      d3d9: Don't return a pointer to the implementation in IDirect3DTexture9Impl_QueryInterface().
      ddraw: Get rid of a couple of redundant else-statements.
      ddraw: Replace a ERR in ddraw_surface7_QueryInterface() with a WARN.
      ddraw: Querying IUnknown for a surface should return the IDirectDrawSurface interface.
      d3d9: Don't return a pointer to the implementation in IDirect3DSwapChain9Impl_QueryInterface().
      d3d9: Don't return a pointer to the implementation in IDirect3DSurface9Impl_QueryInterface().

Huw Davies (16):
      gdi32: Add a helper to retrieve the family names and simplify the logic.
      gdi32: Add a helper to retrieve the family pointer.
      gdi32: Add a helper to create a family.
      gdi32: Add a helper to retrieve the font version.
      gdi32: Add a helper to retrieve the ntm flags.
      gdi32: Add a helper to retrieve a bitmap font's internal leading.
      gdi32: Add a helper to retrieve the fontsignature.
      gdi32: Add a helper to free a face object and fix a potential memory leak.
      gdi32: Remove the loop over bitmap sizes. FreeType lists different sizes as separate faces.
      gdi32: Separate face creation from face insertion.
      gdi32: Add a helper to create a new FreeType face.
      gdi32: Implement CreateScalableFontResource.
      gdi32: Add support for loading scalable font resources.
      winspool: Add a helper to duplicate a devmode.
      winspool: Add a helper to free a printer entry.
      winspool: Keep track of any supplied devmode.

Hwang YunSong (1):
      po: Update Korean translation.

Jacek Caban (39):
      jscript: Store source code in bytecode_t.
      jscript: Added beginning support for JScriptEncode object.
      jscript: Added JScriptEncode object tests.
      jscript: Added decoding support.
      jscript: Added decoding tests.
      vbscript: Lookup visible items before global members in lookup_identifier.
      vbscript: Init destination before passing it to VariantCopy in add_dynamic_var.
      vbscript: Evaluate object expression before value expression in member assignment.
      vbscript: Added parameterized assign identifier statement support.
      vbscript: Added parameterized assign member statement tests.
      vbscript: Added parameterized member assignment statement implementation.
      mshtml.idl: Added IHTMLObjectElement2 declaration.
      jscript: Return double instead of VARIANT from to_number.
      jscript: Return double instead of VARIANT from date_utc.
      jscript: Return double instead of VARIANT from stack_pop_number.
      jscript: Store value as double in NumberInstance object.
      mshtml: Added IHTMLObjectElement2 stub implementation.
      mshtml: Forward common getters from IHTMLObjectElement to IHTMLObjectElement2.
      mshtml: Use jscript.dll for JavaScript for all zones except untrusted.
      mshtml.idl: Added DispHTMLTableCell declaration.
      mshtml.idl: Added IHTMLTableCell declaration.
      mshtml: Added IHTMLTableCell interface stub implementation.
      mshtml: Improved VARIANT debug traces in htmlstyle.c.
      mshtml: Improved VARIANT debug traces in htmlwindow.c.
      mshtml: Improved VARIANT debug traces in htmltable.c.
      mshtml: Improved VARIANT debug traces in htmldoc.c.
      mshtml: Improved VARIANT debug traces in htmlelem.c.
      mshtml: Improved VARIANT debug traces in htmlbody.c.
      mshtml: Improved VARIANT debug traces in htmldoc*.c.
      mshtml: Improved more VARIANT debug traces.
      jscript: Properly handle NULL bstr in str_to_number.
      vbscript: Added Mid function implementation.
      vbscript: Use to_int in InStr implementation.
      mshtml: Added support for anchors with target '_top'.
      mshtml: Added IHTMLDocument2::get_domain implementation.
      mshtml: Use proper helpers to implement IHTMLSyle::fontSize property.
      mshtml: Use proper helpers in IHTMLStyle::color implementation.
      mshtml: Use proper helpers in IHTMLStyle::backgroundColor implementation.
      mshtml: Use better helper in IHTMLStyle::get_width implementation.

Józef Kucia (7):
      dinput8/tests: Use CLSCTX_INPROC_SERVER instead of a magic number.
      d3dx9/tests: Test the DDS support in the D3DXGetImageInfo functions.
      d3dx9: Forward D3DXCreateCubeTextureFromFileInMemory to D3DXCreateCubeTextureFromFileInMemoryEx.
      d3dx9: Add stubs for D3DXCreateVolumeTextureFromFileInMemory functions.
      d3dx9/tests: Add tests for D3DXCreateCubeTextureFromFileInMemory.
      d3dx9/tests: Add tests for D3DXCreateVolumeTextureFromFileInMemory.
      wpp: Fix a few memory leaks in the wpp_parse() function.

Kusanagi Kouichi (1):
      gdi32: Use helper functions when loading font from cache.

Lauri Kenttä (3):
      mscoree: Print the correct values in a TRACE.
      po: Update Finnish translation.
      po: Update Swedish translation.

Lucas Zawacki (1):
      dinput: Correct wrong loop delimiter in diactionformat_priority.

Matteo Bruni (3):
      wined3d: Update the correct draw buffers mask.
      wined3d: Support WINED3D_TTFF_COUNT3 texture projection in the ARB backend.
      include: Fix some winsock definitions.

Michael Mc Donnell (1):
      d3dx9: Do not weld self.

Michael Stefaniuc (26):
      hlink: Use the standard COM aggregation struct field names.
      d3d10core: Standardize COM aggregation for d3d10_device.
      activeds: Print the debug string and not the pointer to it.
      d3dx9_36: Print the debug string and not the pointer to it.
      dplayx: Print the debug string and not the pointer to it.
      gameux: Print the debug string and not the pointer to it.
      ieframe: Print the debug string and not the pointer to it.
      msxml3: Print the debug string and not the pointer to it.
      mshtml: Print the debug string and not the pointer to it.
      comdlg32: Print the debug string and not the pointer to it.
      dxdiagn: Print the debug string and not the pointer to it.
      quartz: Print the debug string and not the pointer to it.
      shell32: Print the debug string and not the pointer to it.
      urlmon: Print the debug string and not the pointer to it.
      dbghelp: Print the debug string and not the pointer to it.
      netapi32: Print the debug string and not the pointer to it.
      shlwapi: Print the debug string and not the pointer to it.
      dpnet: Print the debug string and not the pointer to it.
      qedit: Print the debug string and not the pointer to it.
      setupapi: Print the debug string and not the pointer to it.
      strmbase: Print the debug string and not the pointer to it.
      pstorec: Print the debug string and not the pointer to it.
      riched20: Avoid a forward declaration of a vtbl.
      riched20: Support COM aggregation in CreateTextServices().
      riched20/tests: Get the CreateTextServices() pointer only once.
      riched20/tests: Add COM aggregation tests for CreateTextServices().

Morten Rønne (1):
      wineconsole: Fixed a wrong word in message.

Nikolay Sivov (3):
      msxml3: Support processing instructions in writer.
      msxml3: Support ignorable whitespaces output in writer.
      comctl32: Use single notification message for setting all item state with LVM_SETITEMSTATE (LVS_OWNERDATA case only).

Piotr Caban (17):
      shell32: Prepare QueryAssociations helper functions to work on non LPWSTR data.
      shell32: Handle ASSOCDATA_EDITFLAGS in IQueryAssociations:GetData function.
      msvcp90: Don't define separate structures for num_get<char> and num_get<wchar>.
      msvcp90: Use DEFINE_RTTI_DATA to define iosb RTTI base descriptor.
      msvcp90: Use DEFINE_RTTI_DATA to define locale_facet RTTI base descriptor.
      msvcp90: Use DEFINE_RTTI_DATA to initialize exception RTTI data.
      msvcp90: Added numpunct<wchar> implementation.
      msvcp90: Added basic_streambuf<char> implementation.
      msvcp90: Added basic_streambuf<wchar> implementation.
      msvcp90: Added ios_base class implementation.
      msvcp90: Added this parameter to cdecl functions defined inside class.
      msvcp: Sync spec files.
      msvcp90: Added support for exception reraising in ios_base::clear.
      msvcp90: Added partial basic_ios<char> implementation.
      msvcp90: Added partial basic_ios<wchar> implementation.
      msvcp90: Added partial basic_ios<short> implementation.
      msvcp: Sync spec files.

Robert van Herk (1):
      msvcrt: Fix file mode T (temporary file).

Thomas Faber (2):
      xmllite/tests: Fix build with MSVC.
      dbghelp: Fix uninitialized variable usage.

Vincent Povirk (7):
      mscoree: Search for an arch-specific mono dll first.
      gdiplus: Detect hotkey prefixes when drawing strings.
      gdiplus: Draw hotkey underlines in GdipDrawString.
      gdiplus: Store copies of remap tables in ImageAttributes objects.
      gdiplus: Measure strings at device size, then rescale to world size.
      rpcrt4: Do nothing when DllMain is called because the process is exiting.
      gdiplus: Support bitmap creation from 16-bit ddb's.

--
Alexandre Julliard
julliard@winehq.org
