The Wine development release 1.5.10 is now available.

What's new in this release (see below for details):
  - New version of the Gecko engine based on Firefox 14.
  - Support for OpenGL in the DIB engine using libOSMesa.
  - Off-screen rendering is now the default in Direct3D.
  - Some more WMI infrastructure.
  - Various bug fixes.

The source is available from the following locations:

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

  10016  age of wonders 2: the application does not get any mouse input
  10028  rappelz updater is slow because of dlls/mshtml/htmlnode.c:get_node(...)
  11793  Hulk demo crashes in DSOUND
  12240  Scar fails to launch
  14476  Display window placed in wrong location
  15485  EVE Online hangs on focus restore after applying Empryan Age 1.1.1 patch
  16151  Dragon 10 crashes with 'err:region:CombineRgn Invalid rgn=(nil)'
  16200  Miranda IM can't connect on MSN and Gmail protocol
  16274  Mortyr 2093-1944: Shots leave black squares
  16408  Half Life 2 NPC characters appear stretched
  18303  Adobe Acrobat Pro 7: Crashes when selecting the "edit" menu while having a file open.
  19222  menus jump and scramble input for MS SQL Server Management Studio Express
  20689  BloodRayne crashes after intro video
  21538  SSL implementation is incomplete (affects yahoo and SSL'ed ICQ Miranda connections)
  21907  Firefox 3.6 on FreeBSD - Rough, text and mangled graphics
  22493  Baldur's Gate 2: poor rendering with ddr=opengl
  22802  City of Heroes crashes on startup with Intel graphics
  23034  Tools->Plugins menu in Stud_PE cannot be clicked
  24002  Areena 5 crashes with runtime error when entering battle
  24380  Final Fantasy XIV beta: crashes if launching in full screen mode
  25234  Half Life 2: wrong colors
  25711  Temple Of Elemental Evil end slideshow display black, except for fractions of a second
  26285  Mass Effect 2 Demo ignores keyboard input until mouse clicked
  27024  3DMark06: dies on msvcp71.dll.?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AVconst_iterator@12@XZ (purist)
  27040  Intellicad Viewer needs msvcp71.dll.??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PBDHH@Z
  27617  DLL function import error: MSVCP60.dll/??_7out_of_range@std@@6B@ in Quest Atlantis
  27649  Silverlight 4 fails to show animations
  27698  EA Origin wants  msvcp100.dll.?_Orphan_all@_Container_base0@std@@QAEXXZ (purist)
  27748  Chenzo Cove requires unimplemented function d3dx9_36.dll.D3DXCreateRenderToEnvMap (purist)
  28260  dsound/ds3d.ok crashes under WINEDEBUG=warn+heap
  28283  text overlap in pdf-xchange
  28345  dragon age:origins fails to load save game (??0?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z)
  28641  Baldur's Gate II - Throne of Bhaal crashes
  29155  Builtin IE with ICBC bank input control crash while closing
  29225  WinMerge needs msvcp71.dll.?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AViterator@12@XZ (purist)
  29357  ImgBurn's disc layout editor toolbar gets corrupted after switching to side by side view and back
  29549  QQMusic crash at unimplemented msvcr80.dll.tmpfile_s
  30669  Civilization 3 game display fully corruption
  30701  Can't install Sony Sound Forge pro 10 , Installer crashed .
  31064  built in IE will not login to U-Haul dealer network
  31089  Civilization V demo has black screen, complains "Could not load width data" without native msvcp90 (purist)
  31091  Kindle hangs (crashes) on second run with builtin msvcp90
  31093  League of Legends / Pando downloader crashes with builtin msvcp90
  31179  crash in Jack5 since upgrade to wine 1.5.8-0ubuntu1~pulse18
  31180  DC Universe Online: installer fails with "generic error"
  31211  Tanner S-Edit rubberbanding leaves screen garbage
  31239  GTAIV lacks some lights
  31276  Total Commander 8.0 64-bit installer crashes during cabinet extraction (wrong FCI/FDI structure packing for Win64)
  31288  Visual Studio 2005 Trial "Server Explorer" needs IWbemClassObject::BeginMethodEnumeration when inspecting Management Classes
  31305  AxisPro: Hangs when drawing stock chart
  31317  Age of Empires 2: top of the screen turns white when creating a new player
  31320  Steam fails to start, needs dwrite.dll.DWriteCreateFactory
  31323  Microsoft SQL Server Management Studio Express 2005: cannot control server service (needs Win32_Service WMI class and improved parser for wbem_services_GetObject)

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

Changes since 1.5.9:

Alex Henrie (1):
      wininet: Support ICU_ENCODE_PERCENT, ICU_ENCODE_SPACES_ONLY, and ICU_NO_META.

Alexandre Goujon (1):
      kernel32: Reimplement GetLogicalDrives using Nt{Open, Query}DirectoryObject.

Alexandre Julliard (40):
      user32/tests: Try to fix a test that frequently fails on Windows.
      opengl32: Generate a header file containing function tables for all OpenGL functions.
      opengl32: Generate a function table with null OpenGL entry points and store it in the TEB.
      winex11: Fill a function table with the standard OpenGL functions and store it in the TEB.
      opengl32: Call standard OpenGL functions through the TEB function table.
      opengl32: Call OpenGL extension functions through the TEB function table.
      opengl32: Redirect standard OpenGL functions through the TEB function table.
      opengl32: Call all OpenGL functions through the current context table and don't link against libGL.
      winex11: Use the function table pointer to call dynamically loaded OpenGL functions.
      opengl32: Remove redundant fields in the functions hashes.
      gdi32: PatBlt needs to bypass the brush for ROPs that don't make use of it.
      wined3d: Load glPointParameter functions as extensions rather than standard OpenGL functions.
      gdi32: Remove left-over debug trace.
      opengl32: Declare input pointers as const in function prototypes.
      opengl32: Move the wgl functions to the main OpenGL function table.
      opengl32: Add supported wgl extension functions to the OpenGL function table.
      opengl32: Add a mechanism for managing different types of OpenGL handles.
      opengl32: Use proper handles for PBuffers instead of raw pointers.
      winex11: Remove unused fields in the PBuffer object.
      winex11: Get rid of the glGetIntegerv wrapper.
      wined3d: Fetch GL functions from the WGL driver table, including glFinish and glFlush.
      fusion: Simplify the parsing of clr tables.
      include: Fix alignment of cabinet structures on 64-bit.
      gdi32: Work around a gcc array out of bounds warning.
      opengl32: Load GLU functions from glu32.dll instead of the Unix library.
      winex11: Add a helper function to correctly check extension strings.
      opengl32: Allocate a separate context structure to store generic information.
      opengl32: Store the context current DCs on the opengl32 side.
      opengl32: Store the modified extension string in the context.
      wined3d: Retrieve OpenGL extension functions directly through the TEB table.
      msvcrt: Make sure that errno is always set when calling the invalid parameter handler.
      msvcr90/tests: Fix tests for errno values.
      gdi32: Support OpenGL in bitmaps through libOSMesa.
      msxml3: Fix an uninitialized variable.
      winex11: Get rid of the OpenGL bitmap support.
      gdi32: Add a helper function to initialize Bresenham parameters for line drawing.
      gdi32: Limit line drawing coordinates to reasonable values to avoid overflows.
      gdi32: Clip solid pen regions to the DIB rectangle to avoid overflows.
      gdi32: Move DescribePixelFormat and SetPixelFormat to the WGL driver.
      gdi32: Compute the line parameters using the cropped coordinates to avoid overflows.

André Hentschel (2):
      msvcrt: Add tmpfile_s implementation.
      winspool.drv: Update allowed driver version.

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

Caron Jensen (1):
      wined3d: Recognize AMD Tahiti cards.

Dan Kegel (1):
      msvcp100: Add _Container_base0::_Swap_all, _Container_base0::_Orphan_all.

Detlef Riekenberg (10):
      include: Add appcompatapi.h.
      apphelp: Implement ApphelpCheckShellObject.
      apphelp/tests: Add tests for ApphelpCheckShellObject.
      wer: Return S_OK from WerReportSetParameter.
      wer: Add a stub for WerReportAddFile.
      msi/tests: Use always static binding for GetTokenInformation.
      wer: Return S_OK from the WerRepostSubmit stub.
      include: Add TOKEN_MANDATORY_LEVEL definitions.
      ntdll: Support TokenIntegrityLevel.
      advapi32/tests: Simple tests for TokenIntegrityLevel.

Dmitry Timoshkov (47):
      gdiplus: Add a test for font and graphics using different base units.
      gdiplus: Factor out units_to_pixels() helper.
      gdiplus: GdipGetFontHeight should convert height from font to device units.
      gdiplus: GdipMeasureString operates internally in pixels but in/out rectangles are in device units.
      include: Add PixelFormat32bppCMYK definition.
      include: Add some useful helpers to check various pixel format properties.
      include: Move PaletteFlags definition to gdipluspixelformats.h.
      gdiplus: Set actual resolution of an image being encoded.
      windowscodecs: Add support for generating WICBitmapPaletteTypeFixedHalftone27 palette.
      windowscodecs: Add support for generating WICBitmapPaletteTypeFixedHalftone125 palette.
      windowscodecs: Add support for generating WICBitmapPaletteTypeFixedHalftone216 palette.
      windowscodecs: Add support for generating WICBitmapPaletteTypeFixedHalftone252 palette.
      windowscodecs: Add support for adding trasparent color to generated palettes.
      windowscodecs: Add a test for invalid predefined palette type.
      windowscodecs: Implement MetadataHandler_Load.
      windowscodecs: Do not assume that vtable is the first element of the object.
      windowscodecs: Do not assume that vtable is the first element of the object.
      windowscodecs: Do not assume that vtable is the first element of the object, avoid not necessary casts.
      windowscodecs: Make classinfo structure const.
      windowscodecs: Do not assume that vtable is the first element of the object, avoid not necessary casts.
      windowscodecs: Do not assume that vtable is the first element of the object.
      windowscodecs: Do not assume that vtable is the first element of the object, avoid not necessary casts.
      windowscodecs: Do not assume that vtable is the first element of the object, avoid not necessary casts.
      windowscodecs: Do not assume that vtable is the first element of the object, avoid not necessary casts.
      windowscodecs: Do not assume that vtable is the first element of the object, avoid not necessary casts.
      windowscodecs: Do not assume that vtable is the first element of the object.
      windowscodecs: Do not assume that vtable is the first element of the object, avoid not necessary casts.
      windowscodecs: Do not assume that vtable is the first element of the object.
      windowscodecs: Do not assume that vtable is the first element of the object.
      windowscodecs: Do not assume that vtable is the first element of the object, avoid not necessary casts.
      windowscodecs: Do not assume that vtable is the first element of the object, avoid not necessary casts.
      windowscodecs: Do not assume that vtable is the first element of the object, avoid not necessary casts.
      gdiplus: Retrieve image palette from WIC.
      gdiplus: Add 8bppIndexed to the list of supported formats.
      gdiplus: Use predefined palette if an image doesn't provide one.
      gdiplus: Add 8bppGray to the list of supported formats.
      gdiplus: Make get_palette() usable for generating predefined palettes.
      gdiplus: Handle image loading failures under some XP versions.
      gdiplus: Add missing 'break'.
      gdiplus: Store device resolution in the graphics object.
      gdiplus: Add some GdipTransformPoints tests for a device with different x/y resolutions.
      windowscodecs: Fix warnings detected by compiling with inline wrappers.
      windowscodecs: Implement IWICPalette_InitializeFromPalette.
      include/winnt.h: MSC compiler doesn't support __asm keyword in x86_64 mode.
      include/winbase.h: MSC compiler implements interlocked* APIs as intrinsics in x86_64 mode.
      windowscodecs: Fix memory leak in error case.
      gdiplus: Improve precision of calculated pixel to units transformation.

Francois Gouget (9):
      winex11.drv: Don't include wgl_driver.h if OpenGL is not supported.
      d3dcompiler_43: Add a trailing '\n' to a couple of Wine traces.
      d3dcompiler_43: Make some functions static.
      d3d10: Make get_property_info() static.
      kernel32/tests: Use NULL instead of casting 0.
      msvcp90: Make num_put__Iput() static.
      d3dcompiler_43: Make debug_dump_ir_expr() static.
      kernel32/tests: Make initonce_callback() static.
      wbemprox: Make some signature table functions static.

Frédéric Delanoy (1):
      po: Update French translation.

Gustavo Henrique Milaré (2):
      po: Update Brazilian Portuguese translation.
      po: Update Brazilian Portuguese translation.

Hans Leidekker (18):
      wbemprox: Implement IWbemClassObject::Put.
      wbemprox: Add helpers for retrieving class instances.
      wbemprox: Fix corner cases in IEnumWbemClassObject::Skip.
      wbemprox: Reset the number of rows only when the table was filled dynamically.
      wbemprox: Implement IWbemClassObject::GetMethod.
      msi: Use the right interface to call 32-bit and 64-bit custom action scripts.
      msi: Use inline wrappers for calling COM methods.
      wbemprox: Add a partial Win32_Service class implementation.
      wbemprox: Parse the object path passed to IWbemServices::GetObject.
      winhttp: Use platform-specific versions of IActiveScriptParse methods.
      wbemprox: Add support for boolean properties.
      wbemprox: Implement Win32_Service.AcceptPause and Win32_Service.AcceptStop.
      wbemprox: Store the class name in the class object.
      wbemprox: Add support for enumerating class methods.
      wbemprox: Add support for enumerating class properties.
      sxs: Use inline wrappers for calling COM methods.
      fusion: Use inline wrappers for calling COM methods.
      msi: Implement the RemoveExistingProducts standard action.

Heiko Hund (1):
      winhttp: Make strings in WINHTTP_PROXY_INFO non-const.

Henri Verbeet (29):
      include: Add some more SP_PROT_* flags.
      secur32: Recognize some more TLS versions.
      d3d10: Add support for parsing blend factors to parse_fx10_object().
      d3d10: Add support for parsing sample masks to parse_fx10_object().
      d3d10: Add support for parsing stencil reference values to parse_fx10_object().
      ddraw: Implement ddraw7_GetScanLine() on top of wined3d_get_adapter_raster_status().
      ddraw: Implement ddraw7_GetVerticalBlankStatus() on top of wined3d_get_adapter_raster_status().
      wined3d: Fix the draw buffer limit calculation.
      wined3d: Disable the X11 / GL lock.
      wined3d: Enable "AlwaysOffscreen" by default.
      wined3d: Get rid of some unused PCI IDs.
      wined3d: Convert some uppercase hex constants to lowercase.
      d3d10/tests: Add a test for default state values.
      d3d10: Add support for parsing rasterizer states.
      d3d10: Implement d3d10_effect_rasterizer_variable_GetBackingStore().
      wined3d: Get rid of APPLE_flush_render, it doesn't exist.
      wined3d: Fix some EXT_gpu_shader4 function names.
      d3d10: Add support for parsing depth/stencil states.
      d3d10: Implement d3d10_effect_depth_stencil_variable_GetBackingStore().
      wined3d: Handle core fixups like any other kind of extension fixup.
      wined3d: Use struct opengl_funcs for storing GL extension pointers.
      ddraw: Implement ddraw7_GetMonitorFrequency() on top of wined3d_get_adapter_display_mode().
      d3d10: Add support for parsing blend states.
      d3d10: Implement d3d10_effect_blend_variable_GetBackingStore().
      d3d10: Add support for parsing sampler states.
      d3d10: Implement d3d10_effect_sampler_variable_GetBackingStore().
      wined3d: Get rid of the GL extension function pointer typedefs.
      wined3d: Pass a gl_info structure to fragment_pipeline.enable_extension().
      wined3d: Call core GL functions through gl_info.gl_ops as well.

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

Jacek Caban (68):
      vbscript: Fixed locale-related test failures.
      vbscript: Use current locale in to_string.
      mshtml: Wine Gecko 1.7 release.
      ole32: Forward BSTR functions to oleaut32.
      mshtml: Make node object cycle collector aware.
      mshtml: Make node object's dynamic IDispatchEx-based properties cycle collectable.
      mshtml: Make nsIDOMHTMLDocument reference cycle collectable.
      mshtml: Store MSHTML node reference in Gecko node object and get rid of all node list in document object.
      ole32: Use proper allocators for storing source in ErrorInfoImpl.
      ole32: Use proper allocators for storing description in ErrorInfoImpl.
      ole32: Use proper allocators for storing help file in ErrorInfoImpl.
      mshtml: Moved creating nsIFile to separated function.
      mshtml: Store scheme in nsWineURI instead of nsChannel.
      mshtml: Added nsIFileURL stub implementation.
      mshtml: Added nsIFileURL::GetFile implementation.
      vbscript: Added parser support for select case statement.
      vbscript: Added compiler support for select case statement.
      vbscript: Added interp_case implementation.
      vbscript: Added select case statement tests.
      mshtml.idl: Added IXMLHttpRequest declaration.
      mshtml.idl: Added more *XMLHttpRequest* declarations.
      mshtml.idl: Added IDOMEvent and IDOMEventTarget declarations.
      widl: Add IDL installation directory to include path.
      mshtml: Fixed tests on Vista.
      mshtml: Unescape script from javascript: URLs before executing them.
      mshtml: Share IHTMLFrameBase tests between iframe and frame element tests.
      mshtml: Added IHTMLFrameBase::frameBorder implementation.
      jscript: Don't expose properties belonging to Object prototype from Object instance.
      jscript: Don't expose properties that belong to function prototype from function instance.
      jscript: Properly handle builtin properties in Object.prototype.hasOwnProperty implementation.
      jscript: Added more tests.
      jscript: Use prototype for builtin Array properties.
      jscript: Use prototype for builtin Boolean properties.
      jscript: Use prototype for builtin Date properties.
      jscript: Use prototype for builtin Number properties.
      jscript: Use prototype for builtin RegExp properties.
      jscript: Use prototype for builtin String properties.
      mshtml: Use proper document node for createElement called on document fragment.
      mshtml: Added IHTMLDOMAttribute::get_specified implementation.
      mshtml: Clean up InvokeEx implementation by using get_dispid_type.
      mshtml: Moved more logic to HTMLStyle_Create.
      mshtml: Added IHTMLElement2::get_runtimeStyle hackish implementation.
      mshtml: Added runtimeStyle tests.
      activdbg.idl: Undef GetCurrentThread macro to avoid collision with interface function declaration.
      widl: Added an extension that uses inline functions instead of macros for C interface calls.
      mshtml: Use inline wrappers and fixed found warnings.
      mshtml: Properly handle NULL VT_DISPATCH refChild in IHTMLDOMNode::insertBefore.
      mshtml: Moved IStream::Read calls to separated function.
      mshtml: Moved conversion to unicode of buffers from binding to navigate.c.
      mshtml: Added support for BOM in bind_mon_to_wstr.
      mshtml: Grow the buffer faster in BufferBSC_read_data.
      ieframe: Use proper helpers for iface calls.
      urlmon: Use proper helpers for iface calls.
      oleaut32: Use proper helpers for iface calls.
      urlmon: SecManagerImpl_QueryInterface clean up.
      ieframe/tests: Use proper helpers for iface calls.
      urlmon/tests: Use proper helpers for iface calls.
      mshtml/tests: Use proper helpers for iface calls.
      jscript/tests: Use proper helpers for iface calls.
      mshtml: Store inner window directly in HTMLDocumentNode.
      mshtml: Use inner window directly from document node in htmlevent.c.
      mshtml: Use inner window directly in HTMLImageElementFactory implementation.
      mshtml: Use inner window directly in HTMLOptionElementFactory implementation.
      mshtml: Use inner window directly in run_insert_script.
      mshtml: Use inner window directly in handle_load.
      guiddef.h: Use static const IID instance for __uuidof.
      vbscript/tests: Use proper helpers for iface calls.
      mshtml.idl: Added IHTMLDOMConstructorCollection declaration.

Józef Kucia (1):
      d3dx9: Allow D3DX_DEFAULT to be passed as srclevel to D3DXFilterTexture.

Marcus Meissner (1):
      mshtml: Remove superflous check (Coverity).

Matteo Bruni (10):
      d3dcompiler: Check for invalid matrix majority modifiers.
      d3dcompiler: Don't allow const variables without initializers.
      d3dcompiler: Don't allow semantics on local variables.
      d3dcompiler: Parse multiplicative expressions.
      d3dcompiler: Parse relational operators, stub out more rules.
      d3dcompiler: Parse some postfix operators.
      d3dcompiler: Parse unary and prefix operators.
      d3dcompiler: "void" is not a plain scalar data type.
      d3dcompiler: Stub assignment parsing.
      d3dcompiler: Parse assignments.

Michael Stefaniuc (24):
      dsound/tests: Add IDirectSound refcount and COM aggregation tests.
      dsound: Merge the two IUnknown/IDirectSound implementations for DirectSound.
      dsound: Rename the DirectSound object refcount to "numIfaces".
      dsound: Cleanup IDirectSoundImpl_Create() and move it.
      dsound: Merge IUnknown into the main DirectSound object.
      dsound: Merge the DirectSound create functions.
      dsound: Drop a redundant 'IDirectSound8' from the method names.
      dsound: Merge IDirectSound8 into the main DirectSound object.
      dsound: Handle IDirectSound by the IDirectSound8 implementation.
      dsound: Get rid of the DSOUND_QueryInterface() helper.
      winedump: Simplify the "pointer to start of array" idiom.
      dnsapi: Remove a superfluous TRUE-FALSE conditional expression.
      cabinet: Simplify the "pointer to start of array" idiom.
      mlang/tests: Simplify the "pointer to start of array" idiom.
      cabinet: Avoid TRUE-FALSE conditional expressions.
      wined3d: Avoid TRUE-FALSE conditional expressions.
      winaspi.dll16: Simplify the "pointer to start of array" idiom.
      setupapi: Simplify the "pointer to start of array" idiom.
      winedbg: Simplify the "pointer to start of array" idiom.
      comdlg32: Use a helper to detect the need for win16 looks.
      winmm: Avoid TRUE FALSE conditional expressions.
      mapi32: Remove superfluous TRUE:FALSE conditional expressions.
      winex11.drv: Avoid TRUE:FALSE conditional expressions.
      kernel32: Avoid TRUE:FALSE conditional expressions.

Nikolay Sivov (28):
      ole32: Fix QueryInterface for file-based ILockBytes.
      ole32: Remove unsupported interface REFIID from storage stream QueryInterface.
      ole32: Give names to 1Ole stream header fields.
      msxml3: Accept selection namespaces string with trailing spaces.
      ole32: Use a single implementation for 1Ole stream initialization.
      kernel32: Partial CompareStringEx implementation.
      advapi32/tests: Add some more well known SIDs to tests.
      kernel32: Added GetSystemDefaultLocaleName().
      kernel32: Forward GetLocaleInfoEx() to GetLocaleInfoW().
      kernel32: Added InitOnceInitialize() implementation.
      kernel32: Single thread test for InitOnceExecuteOnce().
      msxml3: Accept ISequentialStream as reader input.
      kernel32: Some tests for blocking initialization with InitOnceBeginInitialize().
      dwrite: Added initial stub.
      kernel32: Some test for handling locales specified by language only.
      kernel32: Fix base for value returned with LOCALE_RETURN_NUMBER.
      kernel32: Some tests for LOCALE_SNAME and neutral locales.
      widl: Emit default argument values for cpp methods.
      msxml3: Enable inline wrappers and fix warnings.
      shell32: Use proper macros when calling COM methods.
      kernel32: Added WerRegisterMemoryBlock stub.
      msxml3: Enable inline wrappers for tests.
      widl: Protect from duplicated method names in C-style vtable struct.
      widl: Don't output method macro if name duplicates another method name.
      include: Added dwrite.idl file.
      dwrite: Stub for IDWriteFactory.
      dwrite: Added IDWriteGdiInterop stub.
      dwrite: Added basic test for IDWriteFont created from LOGFONTW.

Nozomi Kodama (3):
      d3dx9_36: Implementation of D3DXSHRotateZ.
      d3dx9_36: Add some traces.
      d3dx9_36: Add more traces.

Piotr Caban (9):
      msvcp90: Fixed EOF detection in basic_filebuf_char_uflow function.
      msvcp90: Fixed EOF detection in basic_streambuf_char__Xsgetn_s function.
      msvcp90: Added num_put<short> implementation.
      msvcp90: Fixed num_get<short>::vftable.
      msvcp: Sync spec files.
      msvcp71: Added functions for creating basic_string iterators.
      msvcp71: Added iterator based basic_string::replace implementation.
      msvcp71: Added basic_string::append(iterator, iterator) implementation.
      msvcp71: Added _String_base::_Xlen and _Xran implementation.

Sergey Guralnik (1):
      user32: Rearrange ComboBox repositioning code.

Thomas Faber (1):
      comdlg32: Do not modify dialog resource directly.

Vincent Povirk (1):
      msi: Stub Migrate10CachedPackagesW.

Wei-Lun Chao (9):
      po: Update Chinese (Taiwan) translation.
      po: Update Chinese (Taiwan) translation.
      po: Update Chinese (Taiwan) translation.
      po: Update Chinese (Taiwan) translation.
      po: Update Chinese (Taiwan) translation.
      po: Update Chinese (Taiwan) translation.
      po: Update Chinese (Taiwan) translation.
      po: Update Chinese (Taiwan) translation.
      po: Update Chinese (Taiwan) translation.

--
Alexandre Julliard
julliard@winehq.org
