The Wine development release 1.3.24 is now available.

What's new in this release (see below for details):
  - Various DirectInput improvements.
  - Support for line breaking in Uniscribe.
  - More UI elements in builtin Shell Explorer.
  - Some more D3DX9 functions.
  - Improved support for shell known folders.
  - Various bug fixes.

The source is available from the following locations:

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

   2748  Space Empires: Starfury fails to run
   5597  Kiwi Cattools 3.0.6 crashes on startup
   7640  Mouse too slow / lags in games
   7798  datanorm v2.0 demo fails to start
   8754  Games doesn't receive keyboard Input (BuildActionMap, SetActionMap, EnumDevicesBySemantics)
  10309  Can't start Buhl T@x Online Banking 2007 trial
  10781  Fibotrader: program crashes when starting and creating *.mdb database
  11658  BSSBWin software crashes when searching for previous installations
  12022  Quicktax 2007 cannot create new tax report
  13536  ThinkWave Educator installer launches MDAC 2.8 installer with invalid command line (MSI command line property quote parsing)
  13782  Autocad 2004 trial: Cannot deselect components to skip for install
  14832  Need for Speed Underground - Crash after aprox. 1 minut of gaming
  15465  Panzer General 3D Demo randomly hangs with err:seh:setup_exception_record nested exception on signal stack
  15695  Ableton Live: freeze, audio record and audio render don't work.
  16306  Cannot drag image from Linux Desktop to application
  16858  Jetmen REVIVAL: Unplayable because of strange bugs
  16956  Lexware: Installation of .Net 2.0 SP 1 fails
  17092  NFS Underground: The game crashes after loading drag race
  17916  Windows 64 bit exe Service unable to recognize internal process created
  17986  BrsFolder_OnCommand make new folder not implemented
  18136  Installation of MSXML6 for 64bit wine
  18225  HL2: Intro movie garbled with medium resolutions
  18321  FireFox 3.0.9 + Silverlight 2.0  = Crash
  18363  [Win 3.11/16-bit] [Bermuda Syndrome] In-game menu buttons unclickable
  18821  World of Goo - Heavy flicker
  19342  Adobe Photoshop CS2: Doesn't display license screen for installation (appinstall)
  20410  NHL 2002 won't launch
  20467  Battle Realms: Crashes on closing
  21751  Wine locks the initial executable
  21834  Inspiration 8.0b does not work
  22236  World of Goo Demo all black without D3DXGetImageInfoFromFile from native D3DX9_38.dll
  22623  Unigine Heaven 2 benchmark d3d version has funny stripes on stone and wood
  22679  Photoshop CS5 installer requires native msxml3
  23271  X2 the threat fails to install
  23829  HTML-Kit's plug-in preview never refreshes
  24067  Overlord 2 Demo shows incorrect shadows and transparent persons
  24184  Ground Control II fails to start
  24188  The Last Remnant demo: can't resize window to show menu
  24584  Serif Draw SE installer fails
  24732  Complex Text (Devanagari, Hindi, indian languages) are not rendered as expected
  24858  ProgDVB: Fails to start
  25156  Startup of Quest Atlantis yields a page fault
  25255  installation of woodoo doesn't works
  25562  Yu-gi-oh online 3 hangs when you scroll up in chat window
  25607  PhysX: Removes files but leaves empty directories behind at uninstall
  25608  PhysX: Cached local package isn't deleted at uninstall
  25609  PhysX: Entry under the Uninstall key is not removed at uninstall
  25661  Embarcadero RadPHP XE crashes on startup
  25769  Crysis demo wants d3dx9_36.dll.D3DXFloat32To16Array
  25907  Characters not echoed when typing
  26555  Crysis 2 during installation progressbar not updated
  26794  Vampire the Masquerade Bloodlines mouse became unresponsive
  26869  Darkspore: enemy characters are rendered very darkly until killed
  27116  Darkspore: Water effects display with a green outline and dark stripes
  27306  AutoCAD 2008: adlmdll.dll failed to initialize
  27361  Dawn of War Dark Crusade Demo uninstaller crashes.
  27375  mshtml crashes in Fedora 15
  27464  Spectromancer crashes on exit
  27514  Winole does not work with Wine
  27524  Runaway 3: A Twist of Fate only shows a black screen on start
  27554  World of Tanks hangs in an infinite loop when selecting text.
  27571  Call to unimplemented function KERNEL32.dll.GetNumaHighestNodeNumber
  27591  Need for speed underground 1: Empty registration window
  27610  Overlord 2 crash on start in full screen mode
  27620  RIFT 1.3 hotfix 2 hangs, weird behavior with vectored exception handlers
  27622  wine regedit.exe crashes in comctl32
  27634  Freespace 2 does not display screen
  27662  an installshield installation building with installshield 2011 run but with character problem
  27670  Pagecontrol popupmenu doesn't work
  27674  Majesty 2: fog of war broken
  27692  msvcp90/string test crashes when built with gcc 4.6.0
  27693  qedit/mediadet test fails on 32-bit gentoo

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

Changes since 1.3.23:

Alex Stanev (1):
      advapi32: Set *lpSize properly in GetUserNameA.

Alexandre Julliard (20):
      msvcp90: Make sure an exported variable is initialized.
      ntdll: Encode the function pointers in the vectored handler list.
      server: Only check read/write-specific access bits for file sharing access checks.
      kernel32/tests: Get rid of the Win9x support in the file sharing tests.
      kernel32/tests: Add tests for file sharing with file-specific access bits.
      msvcp90/tests: Dynamically generate a thunk to call thiscall functions.
      winex11: Set the reported screen bpp based on the available pixmap formats.
      cmd/tests: Rewrite replace_escaped_spaces to avoid overflows.
      gdi32: Export the gdi_physdev structure for the external drivers.
      wineps.drv: Get rid of the empty SetDeviceClipping entry point.
      wineps.drv: Pass a generic PHYSDEV to all graphics functions.
      wineps.drv: Use the HDC from the gdi_physdev structure.
      winebuild: Output cfi data for relay thunks on i386.
      tools: Move the cpmap.pl script to tools/make_unicode.
      usp10: Make the various lookup tables more compact.
      include: Remove duplicate device caps definitions.
      msvcp90/tests: Fix the calling convention of some function pointers.
      winex11: Pass a generic PHYSDEV to all graphics entry points.
      winex11: Use the HDC from the gdi_physdev structure.
      widl: Support LANG_NEUTRAL as a valid lcid in typelibs.

Alistair Leslie-Hughes (6):
      mscoree: Define interface IManagedObject.
      msxml3: Improve namespace tests to highlight get nodeName issue.
      msxml3: clang corrections.
      oleaut32: COM Cleanup ICreateTypeLib2Imp.
      oledb32: Add DBTYPE_UI2 support to DataConvert.
      oleaut32: Implement ICreateTypeInfo2 SetHelpStringContext.

Andrew Eikum (4):
      dsound: Inform the driver if we are in emulation mode or not.
      winmm/tests: Remove uninteresting tests.
      winmm: Pull wave and mixer functions into their own source file.
      winmm/tests: Don't test MCI output if no output devices are available.

Andrew Nguyen (10):
      dinput: Implement IDirectInput::RunControlPanel.
      dinput: Fix some return values of IDirectInput::QueryInterface.
      dinput: Improve the behavior of IDirectInput::Initialize.
      dinput: Improve the behavior of IDirectInput::CreateDevice.
      dinput: Add tests for IDirectInput::EnumDevices and add a parameter check.
      dinput/tests: Add tests for IDirectInput::GetDeviceStatus.
      dinput: Extract the DirectInput instance creation and initialization in DirectInputCreateEx to separate functions.
      dinput: Improve the behavior of DirectInputCreateEx.
      dinput8: Improve the behavior of DirectInput8Create.
      dinput8/tests: Replicate the IDirectInput tests for IDirectInput8.

André Hentschel (20):
      user32: Use more meaningful variable names.
      shdocvw: Add ITaskbarList2 Interface.
      tools: Preserve ordinal when updating specfiles.
      dbghelp: Only declare deltapc for i386.
      imm32: Test and fix ImmIsUIMessageA/W.
      shell32: Add stub for SetCurrentProcessExplicitAppUserModelID.
      winebuild: Remove dead code (clang).
      user32: Remove dead code (clang).
      imm32: Remove redundant check.
      wined3d: Remove dead code (clang).
      shdocvw: Add ITaskbarList[34] Interface.
      mountmgr.sys: Better fixme for unsupported ioctls.
      winefile: Remove dead initialization (clang).
      winmm: Remove dead initialization (clang).
      user32: Remove dead initializations (clang).
      shell32: Remove dead initialization (clang).
      server: Remove dead initializations (clang).
      vnbt.vxd: Remove dead initialization (clang).
      kernel32/tests: Fix warning on non-x86 platforms.
      shell32: Make sure that a structure is initialized (clang).

Aric Stewart (4):
      usp10: Restart Indic syllable processing immediately after malformed syllable.
      hhctrl.ocx: Improve parsing of incoming file specs to HtmlHelp.
      usp10: Implement ScriptBreak using the Unicode Line Breaking Algorithm.
      usp10: Shift to using the unicode data for most of the indic lexical functions.

Austin English (2):
      kernel32: Stub a few of the numa functions.
      ws2_32: Define sipx_network / sipx_node for DragonFly BSD.

Austin Lund (3):
      ntoskrnl.exe: Made KdDebuggerEnabled a boolean and set to false.
      include: Added OBJECT_TYPE_INFORMATION to winternl.h.
      ntdll/tests: Added tests for ObjectTypeInformation class in NtQueryObject.

Charles Welton (2):
      d3dx9: Implement Begin and End methods.
      d3dx9: Implemented tests for ID3DXLine's Begin and End methods.

Damjan Jovanovic (1):
      rpcrt4: Implement RpcNetworkInqProtseqs.

Dan Kegel (1):
      d3dcompiler_43: Don't crash on long TRACE().

Daniel Verkamp (2):
      msvcrt: Add _get_pgmptr and _get_wpgmptr.
      msvcrt/tests: Add test for _get_pgmptr.

Detlef Riekenberg (4):
      jscript: Support also VT_UI4 in debugstr_variant.
      jscript/tests: Fix copy & paste typos.
      winemenubuilder: Show filename on failure.
      include: Add definitions and declarations for SRW lock.

Dylan Smith (6):
      d3dx9/tests: Fix comparison that expects NAN, since NAN != NAN.
      ddraw: Partially revert a struct copy change to fix a regression.
      d3dx9: Implement D3DXFloat32To16Array.
      d3dx9/tests: Added tests for rounding of denormalized number for D3DXFloat32To16Array.
      riched20/tests: Test the text services IIDs.
      richedit: Fix incorrect GUID values for ITextHost and ITextHost2.

Francois Gouget (8):
      d3dx9_36: Fix compilation on systems that don't support nameless structs/unions.
      shell32: Update a comment.
      d3dx9_36: Add a trailing '\n' to some TRACE() calls.
      d3dx9_36/tests: Add a trailing '\n' to an ok() call.
      vbscript: Make VBScriptFactory_CreateInstance() static.
      Assorted spelling fixes.
      shell32: Remove WINAPI on static functions where not needed.
      msi: Make msi_parse_patch_summary() and msi_apply_patch_db() static.

Frédéric Delanoy (17):
      hhctrl.ocx: Remove misplaced semicolon after an if condition.
      po: Update French translation.
      crypt32: Remove dead code (Clang).
      secur32: Remove dead code (Clang).
      dplayx: Remove dead code (Clang).
      dbghelp: Remove dead code (Clang).
      krnl386.exe16: Remove dead initialization (Clang).
      msxml3: Remove dead assignment (Clang).
      winex11.drv: Remove dead assignment (Clang).
      ws2_32: Remove dead assignment (Clang).
      winhttp: Remove dead assignment (Clang).
      gdi.exe16: Remove dead assignment (Clang).
      riched20: Remove dead assignment (Clang).
      d3dx9_36: Remove dead assignment (Clang).
      mpr: Remove dead assignment (Clang).
      msi: Remove dead assignment (Clang).
      shell32: Remove dead assignment (Clang).

Gerald Pfeifer (2):
      strmbase: Mark TransformFilter_QualityControlImpl_Notify static.
      urlmon: Silence a compiler warning (GCC 4.6).

Hans Leidekker (20):
      msi: Perform a full uninstall if no feature resolves to INSTALLSTATE_LOCAL.
      msi: Use an enum to represent folder states.
      msi: Handle escaped double quotes in command line parsing.
      msi/tests: Remove a test.
      msi/tests: Clean up the local package in test_register_product.
      msi: Remove directories after removing all files.
      msi: Delay creating local installer and patch packages until the product is registered.
      msi: Get rid of the remaining tabs.
      msi: Use the return value of MSI_IterateRecords (clang).
      msi: Avoid using an uninitialized value (clang).
      msi: Remove some dead assignments (clang).
      msi: Add a stub implementation of MsiDeterminePatchSequence.
      msi: Check the transform language against the package language instead of the system language.
      msi: Avoid dereferencing a NULL pointer (clang).
      msi: Get rid of the msistring typedef.
      msi: Check the return value of MSI_IterateRecords (clang).
      include: Add httprequestid.h and httprequest.idl.
      winhttp: Add a stub implementation of IWinHttpRequest.
      winhttp: Add a class factory implementation.
      winhttp: Register interfaces and add a typelib resource.

Henri Verbeet (40):
      wined3d: Make the depth_stencil parameter to context_validate_onscreen_formats() const.
      wined3d: Make the target parameter to generate_rt_mask_from_surface() const.
      wined3d: Make the generate_rt_mask_no_fbo() parameters const.
      wined3d: Make the rts and ds parameters to context_validate_rt_config() const.
      wined3d: Properly destroy contexts not owned by the implcit swapchain.
      wined3d: Get rid of the glsl_dst_param_t typedef.
      wined3d: Get rid of the glsl_src_param_t typedef.
      wined3d: Get rid of the glsl_sample_function_t typedef.
      wined3d: Make the context parameter to context_create_fbo_entry() const.
      wined3d: Make the context parameter to context_attach_depth_stencil_fbo() const.
      wined3d: Make the context parameter to context_check_fbo_status() const.
      wined3d: Make the device and surface parameters to context_enum_surface_fbo_entries() const.
      wined3d: Make the device parameter to context_resource_released() const.
      wined3d: Make the device parameter to context_resource_unloaded() const.
      wined3d: Make the surface parameter to context_surface_update() const.
      wined3d: Get rid of some macros.
      wined3d: Move some enums to directx.c.
      wined3d: Get rid of some IWineD3D* references.
      wined3d: Get rid of the tex_op_args typedef.
      wined3d: Get rid of the GL_SupportedExt typedef.
      wined3d: Make D3DRS_ZBIAS work.
      wined3d: Introduce a separate function for loading the SFLAG_INSYSMEM surface location.
      wined3d: Introduce a separate function for loading the SFLAG_INDRAWABLE surface location.
      wined3d: Introduce a separate function for loading the SFLAG_INTEXTURE and SFLAG_INSRGBTEX surface locations.
      wined3d: Print an ERR for unknown / invalid surface locations in surface_load_location().
      wined3d: Make context_create() work if the window is already destroyed.
      wined3d: Rename "flag" to "location" in surface_load_location().
      wined3d: Explicitly pass device and state to gen_ffp_frag_op().
      wined3d: Remove the unused currentPatch field from struct wined3d_device.
      wined3d: Pass a state pointer instead of a device pointer to device_get_draw_rect().
      wined3d: Make the device parameter to device_preload_textures() const.
      wined3d: Make the context parameter to the get_drawable_size() callback const.
      wined3d: Make the current_renderbuffer field in struct wined3d_surface const.
      wined3d: Make the surface parameter to surface_get_texture_name() const.
      wined3d: Rename "flag" to "location" in surface_modify_location().
      wined3d: Make the rt parameter to surface_set_compatible_renderbuffer() const.
      wined3d: Make the surface parameter to surface_translate_drawable_coords() const.
      wined3d: Make the surface parameter to surface_upload_data() const.
      wined3d: Make the src_surface parameter to draw_textured_quad() const.
      wined3d: Make the surface parameter to d3dfmt_get_conv() const.

Huw Davies (3):
      gdi32: Simplify colour table generation.
      gdi32: Fix the 8 bpp generated colour table.
      gdi32: Construct the EGA palette from the default palette.

Jacek Caban (24):
      mshtml: Make sure we always create nsWineURI with valid IUri.
      mshtml: Get rid of wine_url in nsWineURI object.
      mshtml: Added IUri-based nsIURI::SetPort implementation.
      urlmon: Use CoInternetParseIUri instead of IUri::GetPath in file protocol handler implementation.
      include: Added wpcapi.idl.
      widl: Insert standard windows.h and ole2.h includes to generated headers.
      d3dx9math.h: Removed duplicated D3DXMatrixOrthoLH declaration.
      d3d10.idl: Added CD3D10_TEXTURE2D_DESC and CD3D10_BUFFER_DESC declarations.
      d3d10_1.idl: Added D3D10_1_SDK_VERSION declaration.
      d3d10.idl: Added missing D3D10_CREATE_DEVICE_FLAG values.
      mediaobj.idl: Remove includes that are autogenerated by widl.
      dxgi.idl: Added DXGI_SWAP_CHAIN_FLAG enum declaration and DXGI_MWA_* flags.
      d3d10.idl: Added missing D3D10_RESOURCE_MISC_FLAG values.
      include: Added objectarray.idl.
      shobjidl.idl: Added ITaskbarList[34] and ICustomDestinationList declarations.
      propkey.h: Added more PROPERTYKEY declarations.
      propvarutil.h: Added InitPropVariantFromBoolean and InitPropVariantFromString implementations.
      audiopolicy.idl: Fixed SetGroupingParam declaration.
      shobjidl.idl: Added some missing coclasses.
      propvarutil.h: Fixed inline syntax.
      propkeydef.h: Fixed DEFINE_PROPERTYKEY define.
      widl: Generate class forward declaration for coclasses.
      widl: Use proper calling convention attributes.
      mshtml: Mark some functions as cdecl.

Jay Yang (4):
      explorer: Add navigation buttons to explorer.
      explorer: Add a path combobox to explorer.
      explorer: Add dropdown entries to explorer's combobox.
      explorer: Fix incorrect cast.

John Edmonds (1):
      ddraw: Warning message about an invalid structure size will now print the structure's size.

Lauri Kenttä (1):
      netapi32: Fix h_addr_list handling.

Louis Lenders (1):
      httpapi: Add stub for HttpCreateHttpHandle.

Lucas Fialho Zawacki (9):
      dinput8/tests: Test EnumDevicesBySemantics mouse and keyboard enumeration with flags.
      dinput: EnumDevicesBySemantics enumerating keyboard and mouse with priority flags.
      dinput8/tests: Testing BuildActionMap and SetActionMap with keyboard input.
      dinput: SetActionMap setting the device buffer.
      dinput8/tests: BuildActionMap and input tests for mouse.
      dinput: Keyboard and mouse implementation of BuildActionMap.
      dinput: SetActionMap constructing a dataformat for keyboard and mouse.
      dinput: SetActionMap and queue_event setting mapped data.
      include: Corrected the value of the DIEDFL_ATTACHEDONLY flag.

Maarten Lankhorst (1):
      winegstreamer: Fix setcaps call.

Marcus Meissner (19):
      oleaut32: Unshadow cmp to make code work (Coverity).
      shell32: Remove superflous NULL check (Coverity).
      strmbase: Move NULL check up a bit (Coverity).
      quartz: Removed useless NULL check (Coverity).
      ole32: Access the array entry, not the array (Coverity).
      gameux: Revert NULL ptr check and deref (Coverity).
      dmstyle: Reverse NULL check and deref (Coverity).
      ddrawex: Remove superflous NULL checks, add error skips (Coverity).
      d3d9: Remove superflous NULL checks (Coverity).
      krnl386.exe16: pSeg might be NULL (Coverity).
      msi: Removed useless NULL check (Coverity).
      msi: Remove superflous NULL check (Coverity).
      urlmon: Fixed array size check (Coverity).
      dxdiag: Removed unused endptr assignment (Coverity).
      comctl32: Fixed strncpy (Coverity).
      server: Do not promote lparam to signed int (Coverity).
      wrc: Fixed some small leaks in PO code (Coverity).
      explorer: Remove useless array NULL check (Coverity).
      widl: Decrease is_object_interface after usage.

Mariusz Pluciński (11):
      shell32/tests: Modify tests of redirection to check more advanced features.
      shell32: Add support of parent folder to RegisterFolder.
      shell32: Add support of parent folder to GetPath.
      shell32: Add support of known folders redirection to Redirect.
      shell32: Add support of known folders redirection to GetPath.
      shell32: IKnownFolder::SetPath modified to use redirection instead of overwriting original path.
      shell32: Check for known folder existance.
      include: Add FOF_NO_UI flag.
      shell32: Add support of KF_REDIRECT_COPY_CONTENTS flag to redirection.
      shell32: Add support of KF_REDIRECT_DEL_SOURCE_CONTENTS flag to redirection.
      shell32/tests: Remove duplicated test of known folder.

Matteo Bruni (2):
      d3d9/tests: Fix alpha component in the unbound sampler tests.
      wined3d: Make dummy textures black.

Michael Stefaniuc (32):
      shell32: Don't pass an unitialized size to RegGetValue().
      quartz: COM cleanup for the IFilterGraph2 iface.
      quartz: Pass the object instead of the iface to an internal helper.
      quartz: COM cleanup for the IMediaControl iface.
      quartz: COM cleanup for the IMediaSeeking iface.
      quartz: COM cleanup for the IBasicAudio iface.
      quartz: COM cleanup for the IBasicVideo2 iface.
      quartz: COM cleanup for the IVideoWindow iface.
      quartz: COM cleanup for the IMediaEventEx iface.
      quartz: COM cleanup for the IMediaFilter iface.
      quartz: COM cleanup for the IMediaEventSink iface.
      quartz: COM cleanup for the IGraphConfig iface.
      quartz: COM cleanup for the IMediaPosition iface.
      d3d8: Avoid an unsafe IDirect3DSurface8 to object cast.
      d3d8: Use unsafe_impl_from_IDirect3DSurface8 for app provided ifaces.
      d3d8: COM cleanup for the IDirect3DSurface8 iface.
      d3d8: Use unsafe_impl_from_IDirect3DIndexBuffer8 for an app provided iface.
      d3d8: COM cleanup for the IDirect3DIndexBuffer8 iface.
      d3d9: Use unsafe_impl_from_IDirect3DIndexBuffer9 for an app provided iface.
      d3d9: COM cleanup for the IDirect3DIndexBuffer9 iface.
      d3d9: Use unsafe_impl_from_IDirect3DPixelShader9 for an app provided iface.
      d3d9: COM cleanup for the IDirect3DPixelShader9 iface.
      d3d9: Use unsafe_impl_from_IDirect3DVertexShader9 for an app provided iface.
      d3d9: COM cleanup for the IDirect3DVertexShader9 iface.
      d3d9: Use unsafe_impl_from_IDirect3DVertexBuffer9 for app provided ifaces.
      d3d9: COM cleanup for the IDirect3DVertexBuffer9 iface.
      d3d9: Use unsafe_impl_from_IDirect3DSurface9 for app provided ifaces.
      d3d9: COM cleanup for the IDirect3DSurface9 iface.
      d3d8: Use unsafe_impl_from_IDirect3DVertexBuffer8 for app provided ifaces.
      d3d8: COM cleanup for the IDirect3DVertexBuffer8 iface.
      ddraw: COM cleanup for the IDirect3DExecuteBuffer iface.
      ddraw: Use unsafe_impl_from_IDirect3DExecuteBuffer for an app provided iface.

Michał Ziętek (3):
      wscript: Implemented Host_get_Name.
      wscript: Implemented Host_get_Version.
      wscript: Implemented Host_get_BuildVersion.

Misha Koshelev (2):
      include: Add declarations related to D3DXFLOAT16.
      d3dx9_36: Implement and add tests for D3DXFloat16To32Array.

Nikolay Sivov (7):
      comctl32/tab: Make WM_RBUTTONUP reach default window procedure.
      comctl32/treeview: Remove redundant initializer (Clang).
      comctl32/monthcal: Remove unused variable (Clang).
      comctl32/tests: Test more return values in tests (Clang).
      user32/tests: Test that class data is set with wrong size value too.
      po: Update Russian translation.
      comctl32/tests: Simplify a workaround for old module versions, add basic PSM_ADDPAGE test.

Piotr Caban (12):
      user32: Don't redeclare button state macros.
      include: Added vsstyle.h.
      include: Added vssym32.h.
      comctl32: Use vssym32.h instead of tmschema.h.
      comctl32: Improved setting button state.
      comctl32: Make themed button hot when mouse is over it.
      comctl32: Prevent double theme closing when WM_DESTROY is called many times.
      comctl32: Make iterator_remove_common_items working on one range iterators.
      comctl32: Fixed tab elements recognition.
      shell32: Update currently selected folder in SHBrowseForFolder dialog.
      shell32: Implement "make new folder" functionality in SHBrowseForFolder.
      shell32: Implement folder renaming in SHBrowseForFolder.

Piotr Pawlow (1):
      wined3d: Delete cursor texture on device reset.

Rico Schüller (9):
      d3dx9: Fix light range spelling.
      d3dx9: Implement ID3DXEffect::Begin().
      d3dx9: Implement ID3DXEffect::BeginPass().
      d3dx9: Implement ID3DXEffect::GetCurrentTechnique().
      d3dx9: Implement ID3DXEffect::SetTechnique().
      d3dx9: Implement ID3DXEffect::EndPass().
      d3dx9: Fix ID3DXEffect::SetStateManager().
      d3dx9: Handle ST_FXLC in d3dx9_parse_resource().
      d3dx9: Handle ST_PARAMETER in d3dx9_parse resource().

Ričardas Barkauskas (6):
      ddraw: Use ddraw_surface_release_iface to destroy leftover surfaces.
      ddraw: Fix SetRenderTarget behaviour on failure.
      ddraw: Separate IDirectDrawSurface4 reference count.
      ddraw: Separate IDirectDrawSurface and IDirectDrawSurface7 reference counts.
      ddraw: Move IDirect3DTexture and IDirect3DTexture2 to IDirectDrawSurface reference counts.
      ddraw: Separate IDirectDrawGammaControl reference count.

Stefan Dösinger (8):
      wined3d: Don't set FBO attachment filtering to GL_NEAREST.
      wined3d: Separate stream sources and vertex declaration.
      wined3d: Update the vertex shader when the clipplanes are changed.
      wined3d: Rename the rt mask generation functions.
      wined3d: Move FBO application into a state handler.
      wined3d: Track framebuffer changes.
      wined3d: Pass a struct wined3d_fb_state to device_clear_render_targets.
      wined3d: Pass a struct wined3d_fb_state * to context_apply_clear_state.

Vincent Povirk (15):
      gdiplus: Add test for GdipMeasureDriverString.
      gdiplus: Fix the order of arguments to expectf in test_string_functions.
      gdiplus: Test MeasureDriverString with a character that has an underhang.
      gdiplus: Implement GdipMeasureDriverString.
      gdiplus: Use DrawDriverString to draw the text in DrawString.
      user32: Notify the user driver of hotkey changes.
      server: Implement QS_HOTKEY.
      user32: Test that QS_HOTKEY is properly set and cleared.
      winex11.drv: Process keyboard events when QS_HOTKEY is specified.
      gdiplus: Stub GdipPlayMetafileRecord.
      gdiplus: Implement GetDC for metafiles.
      gdiplus: Add test for recording emf-only metafiles.
      gdiplus: Add tests for GdipPlayMetafileRecord.
      gdiplus: Add test showing scaling does not affect returned HDC objects.
      gdiplus: Implement GdipPlayMetafileRecord for EMF records.

--
Alexandre Julliard
julliard@winehq.org
