The Wine development release 1.3.4 is now available.

What's new in this release (see below for details):
  - Support for right-to-left mirrored windows.
  - Winelib now supports the ARM platform.
  - New taskkill.exe built-in application.
  - Inetcpl control panel fleshed out.
  - AcceptEx is implemented now.
  - Improved security checks for SSL connections.
  - Translation updates.
  - Various bug fixes.

The source is available from the following locations:

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

   1158  Hebrew menus are displayed on the left
  10503  Sid Meier's Alpha Centauri: Wine segfaults when clicking on a city.
  11754  Access violation running application from NAVIGON
  12672  Unimplemented function mshtml.dll.PrintHTML causes crash when printing in Teach 2000
  13027  Add a description field to winetest
  13181  Version syntax and output are inconsistent between wine and wineserver
  13605  unimplemented function d3dx9_36.dll.D3DXCreateTextureFromFileInMemoryEx
  13844  pywin32 cannot be installed
  14076  UT3 Wine C++ Runtime Library
  16636  Black & White 2 Graphics Glitches and Crash
  16870  wine: Call from 0x7b845610 to unimplemented function ntoskrnl.exe.KeInitializeDpc, aborting
  17176  msvcrt _set_error and _get_error missing from exports
  17780  Symbian epoc emulator: unimplemented function hal.dll.ExTryToAcquireFastMutex
  17950  Okular configuration disappears after choosing other configuration tab
  18109  Race Driver: GRID Demo  - not rendered correctly when multisampling enabled
  18278  EVEMon: Missing Toolbar In Skillplanner Window
  18427  Forte Agent 3.3 MDI window is not maximized at startup.
  18491  Mail.ru agent output message fixme actctx
  20000  Multiple games crash
  20117  Call to unimplemented function d3dx9_36.dll.D3DXCreateLine
  20183  Black & White 2: texture corruption on higher resolutions
  21049  output_import_thunk Problems on ARM
  21096  utorrent drops error 12157 when using a https tracker
  21295  Painkiller and Painkiller Black Edition cannot accept CD Key submission preventing installation
  21973  Fallout 3: err:d3d:resource_init Out of memory!
  22064  The Settlers 7 Demo fails to start
  22375  Logitech GamePanel Fails to install
  22497  Garant setup file f1setup.exe crashes
  22536  Office 2010 installation crashed
  22918  Ship Simulator 2008 demo crashes on startup (needs D3DXCreateSphere, D3DXCreateCylinder, and D3DXCreateTeapot)
  22994  Far Cry installer quits
  23248  MMO client 7million crashes on startup
  23317  SEC_E_INTERNAL_ERROR (0x80090304) returned by InitializeSecurityContextW
  23506  unimplemented function USERENV.dll.GetDefaultUserProfileDirectoryW (affects Malwarebytes' Anti-Malware)
  23936  pressing enter in passpack's search box has no effect
  24193  ptrace protection in Ubuntu 10.10 breaks debuggers (affects winedbg, wow, ...)
  24225  provide "taskkill" command line tool to aid installers (Impulse installer and more)
  24249  Firestarter Demo crashes with page fault on read access on start
  24342  MediaCoder 0.7.5.* video conversions don't work
  24343  MediaCoder 0.7.3.* Device Edition (Phone) video conversions don't work
  24370  kernel32: provide GetSystemDEPPolicy stub (Microsoft EMET v2)
  24394  cmd.exe locks up when running an external command/application
  24424  Far manager stopped to run
  24435  time not set by SendInput() if 0
  24438  Pro Evolution Soccer 2011 demo fails to install
  24462  Radeon HD3200 no longer detected
  24469  ExplorerXP-black background on treeview area
  24483  cmd hangs if run in background
  24496  Format Factory crashes after displaying the installer splash screen
  24527  The Rise of Atlantis fails to start
  24536  environ is NULL under Wine but not on real Windows

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

Changes since 1.3.3:

Adam Martinson (5):
      msxml3/tests: Prevent a double-free in test_get_ownerDocument().
      msxml3: Implement SelectionNamespaces property.
      msxml3: Move domdoc properties into their own struct.
      msxml3: Expose the XML parser SAX callback interface.
      msxml3: Implement preserveWhiteSpace property.

Alasdair Sinclair (1):
      shell32/test: Prevent crash on cleanup if tests fail.

Alexander Morozov (1):
      crypt32/tests: Add a test for CryptEncryptMessage.

Alexandre Julliard (75):
      server: Fix a couple of leaks in the new console code.
      configure: Regenerate with autoconf 2.67.
      makefiles: Add a standard header for all makefiles to replace the common variable initializations.
      makefiles: Rename the SRCDIR, TOPSRCDIR and TOPOBJDIR variables to follow autoconf conventions.
      ws2_32: Fail when select is called with an invalid fd.
      configure: Make sure the rules files are rebuilt when doing make depend.
      shell32: Map the x86 version of the folder to the appropriate path depending on Wow64 mode.
      wine.inf: Create the x86 program files key in Wow64 mode too.
      wined3d: Reduce the size of a huge function that takes ages to compile.
      wineps: Add a comment about the trap for code checking tools.
      krnl386.exe: Get rid of the useless config.sys parser.
      winmm/tests: Fix some tests that fail on Windows with no input device.
      user32: Add support for RTL window layouts in MapWindowPoints.
      user32: Add support for RTL window layouts in WIN_GetRectangles.
      user32: Add support for right-to-left menus.
      server: Mirror the rectangles for RTL windows in set_window_pos.
      user32: Always store the window rectangles unmirrored after SetWindowPos.
      user32: Add support for RTL window layouts in GetUpdateRgn and GetUpdateRect.
      winedbg: Make BreakOnFirstChance default to FALSE to avoid user confusion.
      user32: Fix initial computation of client area in WM_NCCALCSIZE for RTL windows.
      user32: Use screen coordinates for hittest checking to handle RTL windows correctly.
      user32: Fix the window positions when moving a child window for a RTL window.
      user32: Set the default process layout based on the file description in the version resource.
      version: Don't bother importing lz32, all the functions are in kernel32.
      comctl32: Return the correct hittest for the size grip in mirrored windows.
      configure: Automatically append the makedep dependency to all makefile rules.
      configure: Make the ac_dir variable contain the full directory name for all types of make rules.
      configure: Support specifying a .rules.in file as dependency.
      kernel32: Implemented EnumSystemLocalesEx.
      kernel32/nls: Define the neutral and reading layout locale values.
      gdi32: Implement MirrorRgn.
      winex11: Mirror the window region for RTL windows.
      user32: Free the window region once it has been set.
      server: Mirror the window region for RTL windows in get/set_window_region and redraw_window.
      server: Pass the rectangle in client coordinates for update_window_zorder.
      gdi32: Copy a DIB section as a DIB section in BITMAP_CopyBitmap.
      kernel32/tests: Use a real console handle in the VerifyConsoleIoHandle test.
      winmm/tests: Skip tests if MIDI cannot be opened.
      winmm: Use proper structure where possible to fix command string parsing on 64-bit.
      winmm: Add support for the MCI_INTEGER64 type.
      wrc: Add support for target options, and define _WIN64 for 64-bit builds.
      makefiles: Pass target options to wrc.
      makefiles: Use the -m16 option with 16-bit resources for consistency.
      winmm: Make MCI_STATUS return type a 64-bit integer on 64-bit platforms.
      ntdll/tests: Fix a test failure on 64-bit platforms.
      dsound/tests: Mark some Vmware sound driver failures as broken.
      server: Make the fd passing code slightly more portable.
      ntdll: Add support for retrieving the server pid from the socket credentials.
      ntdll: Add a workaround for Ubuntu's stupid ptrace breakage.
      msi/tests: Avoid corrupting the pending file renames key on failure.
      msi/tests: Fix a test failure on 64-bit.
      winex11: Force setting the cursor again on the first mouse event in case the initial setting failed.
      advapi32/tests: Make function pointers static and remove redundant typedefs.
      comctl32/tests: Make some variables static.
      crypt32/tests: Make some variables static.
      d3d9/tests: Make some variables static.
      kernel32/tests: Make some variables static.
      msi/tests: Make some variables static.
      netapi32/tests: Make some variables static.
      ntdll/tests: Make some variables static.
      ole32/tests: Make some variables static.
      setupapi/tests: Make some variables static.
      shlwapi/tests: Make some variables static.
      user32/tests: Make some variables static.
      taskmgr: Make some variables static.
      winecfg: Make some variables static.
      clock: Make some variables static.
      taskkill: Make some variables static.
      cabinet/tests: Make some variables static.
      d3dxof/tests: Make some variables static.
      riched20/tests: Make some variables static.
      tests: Make some variables static.
      Make some variable declarations extern.
      wineboot: Always create the various RunOnce keys.
      shell32/tests: Fix some test failures on Vista.

Anders Jonsson (6):
      taskkill: Add Swedish translation.
      shell32: Update Swedish translation.
      oleacc: Add Swedish translation.
      winecfg: Update Swedish translation.
      ipconfig: Update Swedish translation.
      inetcpl.cpl: Update Swedish translation.

Andrew Eikum (2):
      ole32: Create a FORMATETC if one is not given in OleCreate.
      msi/tests: Fix copy-paste errors in tests.

Andrew Nguyen (16):
      taskkill: Add stub implementation.
      taskkill: Implement basic command-line parsing.
      taskkill: Implement graceful termination by process identifier.
      taskkill: Implement graceful termination by process name.
      taskkill: Implement forcible termination by process identifier.
      taskkill: Implement forcible termination by process name.
      iphlpapi: Remove useless loop and initialize gateway linked list next member to NULL.
      ipconfig: Move socket address string generation to a helper function.
      ipconfig: Implement gateway address output.
      msvcrt: Convert the Unix asctime string from CP_UNIXCP to CP_ACP.
      msvcrt: Implement strerror_s.
      msvcrt: Implement _get_errno.
      msvcrt: Implement _get_doserrno.
      msvcrt: Implement _set_errno.
      msvcrt: Implement _set_doserrno.
      msvcrt: Initialize environ on DLL load.

André Hentschel (14):
      libs/wine: Fix ARM support.
      winebuild: Fix ARM support.
      kernel32: Add ARM support.
      ntdll: Add ARM support.
      dbghelp: Add ARM support.
      winedbg: Add ARM support.
      winetest: Add ARM support.
      server: Add ARM support.
      winemaker: Don't use -march options.
      winedump: Add more subsystem descriptions.
      shell32: Update German translation.
      build-env: Don't use 'exchange instruction set' instructions on ARM to fix build on ARMv6 e.g. Nokia N810.
      taskkill: Add German translation.
      ipconfig: Update German translation.

Aric Stewart (3):
      quartz: Allow for proper setting of the video window to WS_CHILD.
      quartz: Improve video window sizing on first sample.
      mciqtz32: Do not allow MCIQTZ_mciUpdate to interrupt a playing video.

Aurimas Fišeras (5):
      shell32: Update Lithuanian translation.
      taskmgr: Update Lithuanian translation.
      taskkill: Add Lithuanian translation.
      ipconfig: Update Lithuanian translation.
      inetcpl.cpl: Update Lithuanian translation.

Austin English (13):
      quartz: Fix compiler warnings on Clang.
      riched32: Fix a compiler warning on clang.
      user.exe16: Fix a compiler warning on clang.
      winejoystick.drv: Fix a compiler warning on clang.
      wintab32: Fix compiler warnings on Clang.
      comctl32: Fix compiler warnings on Clang.
      winedump: Match the new Makefile format.
      userenv: Add a stub for GetDefaultUserProfileDirectoryA/W.
      ntoskrnl.exe: Add stub for KeInitializeDpc.
      ntoskrnl.exe: Add stub for READ_REGISTER_BUFFER_UCHAR.
      kernel32: Add a stub for GetSystemDEPPolicy.
      wineserver: Return the version information in the same format as wine --version.
      ddraw/tests: Fix a few compiler warnings on clang.

Austin Lund (3):
      comctl32/tests: LVM_GETRECTITEM should return TRUE.
      comctl32/tests: Default listview width appears to be 1 inch.
      comctl32/listview: Fix test failures for subitem returned with negative coordinates.

Cheer Xiao (7):
      oleview: Update simplified Chinese translation.
      regedit: Update simplified Chinese translation.
      uninstaller: Update simplified Chinese translation.
      view: Update simplified Chinese translation.
      wineboot: Update simplified Chinese translation.
      winemine: Update simplified Chinese translation.
      wordpad: Update simplified Chinese translation.

Damjan Jovanovic (4):
      winex11.drv: Translate the drop point to the virtual screen.
      winemenubuilder: Isolate the platform-specific icon generation code.
      winemenubuilder: Generate ICNS icons on MacOS.
      windowscodecs: Support ICO files with embedded PNGs.

Davide Pizzetti (1):
      wineboot: Italian translation update.

Detlef Riekenberg (7):
      inetcpl: Implement LaunchSiteCertDialog on top of cryptui.CryptUIDlgCertMgr.
      inetcpl: Add content property sheet.
      inetcpl: German translation for the content property sheet.
      inetcpl: Remove a space from a button label.
      inetcpl: Add general propsheet and allow to set the homepage.
      inetcpl: Update German translation.
      inetcpl: Implement LaunchInternetControlPanel.

Dmitry Timoshkov (4):
      user32: Do not test window state on the HCBT_SETFOCUS event, it's undefined.
      user32: UpdateLayeredWindow() should fail on non-layered or already initialized window.
      user32: Uncomment the GetWindowPlacement() test, fill the test data with real values.
      user32: Make sure that SendInput always initializes the time field.

Eric Pouech (2):
      server: Fix console creation logic.
      kernel32: Only reset the console mode when it has been previously changed.

Erich Hoover (2):
      user32: Prepare for multi-frame storing of icons and cursors.
      user32: Add support for multiple frames in cursor format.

Francois Gouget (7):
      winetest: Add the '-n' option so one can specify a list of tests to exclude.
      winetest: Add the '-i' option so one can specify a test environment description.
      taskkill: The taskkill debug channel is unused so remove it.
      ktmw32: The ktm debug channel is unused so remove it.
      mscoree: Make find_mono_dll() static.
      gameux/tests: Make test_install_uninstall_game() and _isFileExists() static.
      ws2_32: Make WS2_AcceptEx() and WS2_GetAcceptExSockaddrs() static.

Frédéric Delanoy (4):
      shell32: Update French translation.
      taskkill: Add French translation.
      ipconfig: Update French translation.
      inetcpl.cpl: Update French translation.

Gerald Pfeifer (8):
      winedbg: Fix the check for GCC version number around db_printf format checking.
      setupx.dll16: Fix error handling in VCP_VirtnodeCreate.
      setupx.dll16: Simplify VcpClose16 a bit.
      user32: Fix error handling in BITMAP_Load.
      configure: Improve formatting of error when X development files are not found.
      comctl32: Remove unused parameter lpcs from TOOLTIPS_Create.
      widl: Avoid duplicate assignments in resolve_expression.
      setupx.dll16: Remove some unused code from VCP_CheckPaths.

Hans Leidekker (25):
      msi: Handle fdintNEXT_CABINET and fdintPARTIAL_FILE for cabinet streams.
      advapi32: Fix handling of zero account and domain size parameters in LookupAccountSid.
      include: Add IKnownFolder and IKnownFolderManager interfaces.
      shell32: Add stub implementations of IKnownFolder and IKnownFolderManager.
      msi: Remove unused field from MSICOMPONENT structure.
      msi/test: Add tests for MsiGetFeatureState.
      msi: A progid without a class is not an error.
      msi: Avoid accessing memory before the left hand string in compare_substring.
      msi: Use binary search to find the insert index for a row.
      msi: Set some missing system folder properties.
      propsys: Add a stub implementation of PSGetPropertyDescription.
      msi: Use more descriptive variable names for installer properties.
      winecfg: Update Windows 7 version to Service Pack 1.
      explorerframe: Bump version.
      wuapi: Return success from automatic_updates_Resume.
      comctl32: Add a stub implementation of TaskDialogIndirect.
      include: Define IEnumWbemClassObject and IWbemServices.
      msi: Always check the return value of msi_string2idW.
      msi: Treat empty string as NULL in MsiGetSummaryInformationW.
      msvcrt: Implement wcsnlen.
      programs: Add a stub implementation of mofcomp.exe.
      advapi32: Add a stub implementation of EventRegister.
      include: Add a prototype for EnumSystemLocalesEx.
      msi: Remove an unnecessary warning.
      msi: Set more 64-bit properties.

Henri Verbeet (40):
      wined3d: Move the vertex shader to wined3d_state.
      wined3d: Move vertex shader constants to wined3d_state.
      wined3d: Move the pixel shader to wined3d_state.
      wined3d: Move pixel shader constants to wined3d_state.
      d3d9/tests: Cleanup maxmip_test() a bit.
      wined3d: Move stream state to wined3d_state.
      wined3d: Move index buffer state to wined3d_state.
      wined3d: Move base vertex state to wined3d_state.
      wined3d: Move the primitive type to wined3d_state.
      wined3d: Move light state to wined3d_state.
      wined3d: Move clip plane state to wined3d_state.
      wined3d: Move clip status to wined3d_state.
      wined3d: Pass a wined3d_state structure to is_invalid_op().
      wined3d: Pass a wined3d_state structure to set_tex_op_nvrc().
      wininet: Check URLCache_LocalFileNameToPathW() return values in CreateUrlCacheEntryW().
      wininet: Cut of the query string before searching for the filename in CreateUrlCacheEntryW().
      wined3d: Pass a wined3d_state structure to set_tex_op().
      wined3d: Directly pass the texture to texture_activate_dimensions().
      wined3d: Pass a wined3d_state structure to ffp_clip_emul().
      wined3d: Consistently use the same stateblock in state_colormat().
      wined3d: Pass a wined3d_state structure to record_lights().
      wined3d: Pass a wined3d_state structure to apply_lights().
      wined3d: Capture stateblock state from a wined3d_state structure.
      wined3d: Set initial stateblock state directly on a wined3d_state structure.
      wined3d: Remove IWineD3DStateBlock::InitStartupStateBlock() from the public wined3d interface.
      wined3d: Simply refuse to create shaders if they're disabled.
      wined3d: Pass a wined3d_state structure to use_vs().
      wined3d: Pass a wined3d_state structure to use_ps().
      wined3d: Pass a wined3d_state structure to find_vs_compile_args().
      wined3d: Pass a wined3d_state structure to find_ps_compile_args().
      wined3d: Pass a wined3d_state structure to find_arb_vs_compile_args().
      wined3d: Pass a wined3d_state structure to find_arb_ps_compile_args().
      wined3d: Pass a wined3d_state structure to device_preload_texture().
      wined3d: Pass a wined3d_gl_info structure to send_attribute().
      wined3d: Remove the useless device parameter to drawStridedFast().
      wined3d: Pass gl_info and state parameters directly to drawStridedSlowVs().
      wined3d: Pass gl_info and state parameters directly to drawStridedInstanced().
      wined3d: Pass a wined3d_state structure to remove_vbos().
      wined3d: Pass a wined3d_state structure to nvts_activate_dimensions().
      wined3d: Also pass the destination state directly to wined3d_state_record_lights().

Huw Davies (2):
      ole32/tests: Mark the draw_continue callbacks as optional. Win9x can skip calls under low-load conditions.
      ole32: Call the draw_continue function.

Hwang YunSong (4):
      shell32: Update Korean resource.
      taskkill: New Korean resource.
      inetcpl.cpl: Update Korean resource.
      ipconfig: Update Korean resource.

Igor Paliychuk (3):
      inetcpl: Added Ukrainian translation.
      shell32: Ukrainian translation update.
      taskkill: Added Ukrainian translation.

Jacek Caban (21):
      mshtml: Fixed hash part stripping in GetQuery.
      urlmon: Skip tests on very old IEs as soon as possible.
      include: Fixed D3DMULTISAMPLE_FORCE_DWORD value and added MAKEFOURCC definition guard.
      include: Added D3DVECTOR_DEFINED guard.
      urlmon: Make protocol_start IUri-based.
      urlmon: Added about:blank IUri test.
      jscript: Better checks for too old jscript.dll versions.
      mshtml: Added PrintHTML stub.
      mshtml: Renamed uri to nsuri.
      mshtml: Added nsIURI::GetHost implementation based on IUri API.
      mshtml: Added nsIURI::GetPort implementation.
      mshtml: Added nsIURI::GetHostPort implementation.
      mshtml: Added nsIURI::GetUserPass implementation.
      mshtml: Use IUri for nsIURI::GetScheme implementation.
      mshtml: Get rid of use_wine_url.
      mshtml: Use IUri for nsIURL::GetQuery implementation.
      mshtml: Added nsIURI::GetPath implementation.
      urlmon: Skip tests on IEs older than 6 by checking for CompareSecurityIds.
      jscript: Don't use to_object for nullDisp in Object function.
      urlmon: Replace also bind_info in set_binding_sink.
      urlmon.idl: Added more error codes.

James McKenzie (1):
      wineps.drv: Correct a typo.

Juan Lang (45):
      iphlpapi: Trace enumerated addresses.
      iphlpapi: Set flags for adapters returned by GetAdaptersAddresses.
      iphlpapi: Set ConnectionType in GetAdaptersAddresses.
      include: Add ifdef.h.
      include: Move IF_OPER_STATUS to ifdef.h.
      include: Define NDIS_INTERFACE_INFORMATION.
      include: Add Vista+ fields to IP_ADAPTER_ADDRESSES.
      iphlpapi: Set gateway addresses in GetAdaptersAddresses.
      include: Add GAA_FLAG_* definitions.
      include: Add SCOPE_LEVEL definition.
      iphlpapi: Trace parameters to GetAdaptersAddresses.
      include: Define more IF_TYPEs.
      iphlpapi: Set adapter description in GetAdaptersAddresses.
      wintrust/tests: Test CryptSIPCreateIndirectData.
      crypt32: Add parameter checking to CryptSIPCreateIndirectData.
      ws2_32: Unpack ioctl codes in WSAIoctl trace.
      ws2_32/tests: Test SIO_ROUTING_INTERFACE_QUERY.
      iphlpapi: Fix inverted logic in mask comparison.
      ws2_32: Implement WSAIoctl for SIO_ROUTING_INTERFACE_QUERY.
      wininet: Don't make use of OpenSSL's security checks, as crypt32 also verifies certificate chain.
      wininet: Store WININET_NETCONNECTION * in SSL context.
      wininet: Store security flags in WININET_NETCONNECTION.
      wininet: Don't retrieve a certificate that isn't used.
      wininet: Don't call SSL_connect until initialization is complete.
      wininet: Honor security flags when verifying certificates.
      wininet: Remove unneeded error message.
      wininet: More completely implement querying INTERNET_OPTION_SECURITY_FLAGS.
      crypt32/tests: Test more SECURITY_FLAG_IGNORE flags for the SSL policy.
      crypt32: Honor more SECURITY_FLAG_IGNORE flags when verifying the SSL policy.
      crypt32: Check usage when verifying the SSL policy.
      crypt32: Check revocation failures when verifying the SSL policy.
      winhttp: Remove unused function pointer.
      winhttp: Don't make use of OpenSSL's security checks, as crypt32 also verifies certificate chain.
      winhttp: Honor more SECURITY_FLAG_IGNORE flags.
      winhttp: Verify SSL policy of chains whose errors were ignored.
      winhttp: More completely implement querying WINHTTP_OPTION_SECURITY_FLAGS.
      winhttp: Return signature algorithm name in WINHTTP_CERTIFICATE_INFO.
      winhttp: Support querying the cipher strength of an SSL connection.
      winhttp: Set cipher strength bits when querying WINHTTP_OPTION_SECURITY_FLAGS.
      wininet: Let CertVerifyCertificateChainPolicy handle certain security flags.
      wininet: Add some secure connection tests.
      wininet: Returned certificate strings are always ASCII.
      wininet: Support querying the cipher strength of an SSL connection.
      wininet: Set cipher strength bits when querying INTERNET_OPTION_SECURITY_FLAGS.
      wininet: Secure flag is set in the request, not in the session.

Lauri Kenttä (9):
      wined3d: Use the same card selection for both Intel Mesa and binary drivers.
      wined3d: Add check for Intel GM965/GL960 with Mesa driver.
      shell32: Update Finnish translation.
      user32: Update Finnish translation.
      shlwapi: Update Finnish translation.
      wininet: Update Finnish translation.
      msi: Update Finnish translation.
      comdlg32: Update Finnish translation.
      shell32: Update Finnish translation.

Louis Lenders (2):
      user32: UpdateWindow doesn't accept a NULL hwnd.
      tapi32: Quiet a few noisy fixme's.

Luca Bennati (40):
      shell32: Update Italian translation.
      kernel32: Remove dead assignments.
      crypt32: Update Italian translation.
      avifil32: Update Italian translation.
      cryptdlg: Update Italian translation.
      cryptui: Update Italian translation.
      hhctrl.ocx: Update Italian translation.
      msvfw32: Update Italian translation.
      oledlg: Update Italian translation.
      shdoclc: Update Italian translation.
      shdocvw: Update Italian translation.
      wineps.drv: Update Italian translation.
      wininet: Update Italian translation.
      wineconsole: Update Italian translation.
      winecfg: Update Italian translation.
      comdlg32: Update Italian translation.
      iccvid: Update Italian translation.
      shell32: Update Italian translation.
      shlwapi: Update Italian translation.
      taskkill: Add Italian translation.
      cmdlgtst: Update Italian translation.
      notepad: Update Italian translation.
      regeedit: Update Italian translation.
      winecfg: Fix Italian translation.
      reg: Update Italian translation.
      wordpad: Update Italian translation.
      winemine: Update Italian translation.
      xcopy: Fix Italian translation.
      start: Fix Italian translation.
      winefile: Update Italian translation.
      winmm: Update Italian translation.
      ipconfig: Update Italian translation.
      inetcpl.cpl: Update Italian translation.
      msrle32: Update Italian translation.
      oleaut32: Update Italian translation.
      browseui: Convert Italian translation to UTF-8.
      serialui: Update Italian translation.
      mpr: Update Italian translation.
      comctl32: Update Italian translation.
      msacm32: Update Italian translation.

Mariusz Pluciński (14):
      gameux/tests: Add test of creating IGameStatistics instance.
      gameux/tests: Add test of storing and reading game statistics.
      gameux: Add partial implementation of IGameStatisticsMgr::GetGameStatistics.
      gameux: Add stub of IGameStatistics interface implementation.
      gameux: IGameStatistics::GetMaxCategoryLength implementation.
      gameux: IGameStatistics::GetMaxNameLength implementation.
      gameux: IGameStatistics::GetMaxValueLength implementation.
      gameux: IGameStatistics::GetMaxCategories implementation.
      gameux: IGameStatistics::GetMaxStatsPerCategory implementation.
      gameux: Add implementation of IGameStatistics::SetCategoryTitle.
      gameux: Add implementation of IGameStatistics::SetStatistic.
      gameux: IGameStatistics::Save initial implementation.
      gameux: Add implementation of IGameStatisticsMgr::RemoveGameStatistics.
      gameux: Finished implementation of saving game statistics.

Matej Špindler (1):
      taskkill: Add Slovenian translation.

Michael Mc Donnell (1):
      shell32/tests: SHBrowseForFolder should return new folder pidl.

Michael Stefaniuc (4):
      crypt32: Remove redundant NULL check before CryptMemFree (Smatch).
      user32: Simplify the error handling in BITMAP_Load().
      ddraw: Add missing unlock on an error path (Smatch).
      ole32: Allocate a small temp variable on the stack instead of the heap.

Mike Kaplinskiy (2):
      ws2_32: Implement AcceptEx and GetAcceptExSockaddrs.
      ws2_32: Implement SO_UPDATE_ACCEPT_CONTEXT.

Misha Koshelev (10):
      d3dx9_36: Implement D3DXCreateMesh and initial ID3DXMesh methods.
      d3dx9_36: D3DXDeclaratorFromFVF returns D3DERR_INVALIDCALL when an invalid declarator is passed.
      d3dx9_36: Implement D3DXCreateMeshFVF.
      d3dx9_36: Add stub for D3DXCreateTeapot.
      d3dx9_36: Implement ID3DXMesh_Lock/UnlockVertexBuffer and ID3DXMesh_Lock/UnlockIndexBuffer.
      d3dx9_36: Implement D3DXCreateSphere.
      d3dx9_36: Add D3DXCreateTeapot to d3dx9shape.h.
      d3dx9_36: Add stub for D3DXCreateCylinder.
      d3dx9_36/tests: Add tests for D3DXCreateCylinder.
      d3dx9_36: Implement D3DXCreateCylinder.

Nikolay Sivov (6):
      msxml3/tests: Fix locale dependent string comparison.
      comctl32/treeview: Erase background when painting over supplied hdc.
      comctl32/listview: Use proper A/W call to measure item text string.
      comctl32/tab: Add a test for TCM_SETITEMEXTRA.
      msxml3/httprequest: Store passed data for IXMLHttpRequest::open().
      msxml3/httprequest: Implement IXMLHttpRequest::setRequestHeader().

Paul Vriens (6):
      user32: Fix a typo.
      urlmon/tests: Fix test failures on Win9x/WinMe by using more A-functions.
      atl/tests: Fix a test failure on Win95.
      msi/tests: Prevent a popup on Windows NT.
      dbghelp: Fix use of GetProcessHeap.
      ddraw: Pass the correct size to memset (Coccinelle).

Peter Oberndorfer (6):
      wineconsole: Allow to select popup menu entries with the right mouse button.
      ntdll/tests: Remove unused NtWaitForSingleObject import.
      kernel32: Add test for WaitForSingleObject with lower 2 bits of handles set.
      kernel32: Fix WaitForMultipleObjectsEx for handles with lower 2 bits set.
      kernel32: VerifyConsoleIoHandle does not set last error value.
      kernel32: Fix last error value of GetStdHandle/SetStdHandle when called with wrong std handle.

Piotr Caban (5):
      msvcrt: Added 'll' modifier to printf functions.
      oleaut32: Rename stubs.c file.
      oleaut32: Execute OleCreatePropertyFrameIndirect in OleCreatePropertyFrame.
      oleaut32: Added OleCreatePropertyFrameIndirect implementation.
      oleaut32: Set dialog size in dialog box units in OleCreatePropertyFrame.

Rico Schüller (1):
      dxgi: Fix IWineD3DSwapChain_GetParent() call.

Roderick Colenbrander (1):
      wined3d: Add Radeon HD3200 to gpu table.

Saulius Krasuckas (1):
      winmm/tests: Initialize whole MIDIHDR struct before using it.

Stefan Leichter (2):
      hal: Added stub for ExAcquireFastMutex.
      setupapi: Added more tests for SetupDiGetINFClassA.

Sven Baars (3):
      taskkill: Add the Dutch translation.
      shell32: Update the Dutch translation.
      mciwave: Fix some typos.

Thomas Mullaly (12):
      urlmon/tests: Added more tests for IUriBuilder's CreateUri functions.
      urlmon: IUriBuilder_CreateUri* functions return base IUri if there were no changes.
      urlmon: Implemented validation of scheme component of a IUriBuilder.
      urlmon: File URIs can't have a userinfo component when creating an IUri using IUriBuilder.
      urlmon: Restructured how the userinfo component is parsed and canonicalized.
      urlmon: Implemented validation for the userinfo component when create an IUri with IUriBuilder.
      urlmon: Implemented validation of the host name component of a IUriBuilder.
      urlmon: Fixed TRACE's which sometimes output garbage.
      urlmon: Implemented support for determining what port value to use in IUriBuilder.
      urlmon: Can't set the host of a IUriBuilder to NULL.
      urlmon: Finished validation for the remaining components of a IUriBuilder.
      urlmon: Improve IUri support for mk: URIs.

Tijl Coosemans (1):
      configure: Detect resolver functionality on FreeBSD.

Vincent Pelletier (1):
      msvcp90: Direct basic_string::operator=(char const *) to existing implementation.

Vincent Povirk (9):
      windowscodecs: Make it possible for the BMP decoder to read packed DIBs.
      windowscodecs: Use the BMP decoder to decode ICO frames.
      mscoree: Search for Mono in some predefined paths before using the registry.
      ktmw32: Add stub dll.
      gdiplus: Don't try to free invalid or already-freed images.
      gdiplus: Return 0 from GdiplusShutdown.
      gdiplus: Implement GdipTransformRegion.
      gdiplus: Implement GdipGetRegionScansCount.
      gdiplus: Don't create a DIB section for non-alpha or reference bitmaps.

Vitaly Perov (4):
      winspool.drv: Support pDevMode field in {Get/Set}Job.
      comdlg32: Add basic implementation of PrintDlgExA.
      shdocvw: Silence QueryInterface FIXME.
      shdocvw: Silence more invalid QueryInterface FIXMEs.

Zach Smith (1):
      dinput: OSX joystick driver separate device for each top level HID collection.

Łukasz Wojniłowicz (7):
      oleacc: Update the Polish translation.
      appwiz.cpl: Update the Polish translation.
      inetcpl: Add the Polish translation.
      wineps: Update the Polish translation.
      shell32: Update the Polish translation.
      oledlg: Update the Polish translation.
      ipconfig: Add the Polish translation.

--
Alexandre Julliard
julliard@winehq.org
