The Wine development release 1.3.7 is now available.

What's new in this release (see below for details):
  - Improved system tray support.
  - Better support for installers with assemblies.
  - Many of the msvcrt "secure" functions implemented.
  - A lot of fixes to the GStreamer support.
  - Many MSXML improvements.
  - Translation updates.
  - Various bug fixes.

The source is available from the following locations:

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

   5760  "Save As", "Open" dialog windows show blank field when dealing with .mus, .mid files
   6011  jstrip crashes
   6319  Ballance hangs on rendering a specific effect
   6606  FIFA 2002 crashes in the startup (ddraw error)
   6912  nVidia melody display junk to screen, list of fixmes
   7969  Legacy crashes when creating or opening a database
   8796  Need for Speed Porsche 2000 / Unleashed crashes with unhandled page fault
  10836  Skijump fails to start:Could not find the selected Direct3D adapter.
  13233  FSX Demo fails to start.
  13539  Equalizer in foolbar2000 does not work
  13921  Installation of Quest Toad 9.6.1 fails with file access error message
  14786  mkv2vob halts with the message "error getting mkv info"
  15486  Impulse: Cannot connect to server
  15625  Fujiprint/Rossmann fails to save its books as a file
  17416  urlmon/url sometimes fails (race condition)
  17518  winmm/mci tests fail with +heap enabled
  18856  using selectSingleNode method : "xmlXPathEval: evaluation failed"
  20129  FaleWEB crashes on startup
  20421  Return to Mysterious Island doesn't start
  20580  QQ 2009 International beta1 installer crashes because sxs.CreateAssemblyCache unimplemented?
  20801  2gis city module cannot install
  20964  Not re-registering icons in tray
  21163  NFS4: Fails to start if Hardware Acceleration is enabled
  21388  "shed skin" compiler output crashes
  21593  Grand Prix World v1.01: fails to run: "Initialization failed"
  21651  Acunetix Web Vulnerability Scanner 6.5 crashes when run
  21665  Heavy Metal Pro pagefaults when opening load screen
  21758  another CommandLineToArgvW bug with empty lpCmdLine
  21821  Impulse crash on login screen.
  22122  CDBurnerXP 4.1+: corrupted background on the mode selection screen
  22304  MSI file overwrite property
  22555  Metro 2033: needs d3dx9_36.dll.D3DXCreateCubeTexture
  22957  MapSource 6.16.1 doesn't draw the main map
  22963  Tooltip for the system tray icon appears for the wrong application
  23101  Simutrans 102.2.2: unimplemented function msvcr80.dll._findfirst64i32
  24139  OpenGL 2.0 Shading Language Terrain Texturing Demo crashes on unimplemented function msvcr100.dll._fseeki64
  24243  urlmon's HttpProtocol_open_request fails in small test app
  24344  VC++ Express 2010 installer crashes with unimplemented function wer.dll.WerReportCreate
  24442  [Microsoft Web Platform Installer 2.0] Interface requires GDIplus to display correctly
  24458  Final Fantasy XIV Benchmark: Crashes after clicking start.
  24587  CDBurnerXP: can't access data disc mode
  24689  CDSpeed crashes while saving a screenshot in PNG format
  24736  Fifa11: config utility needs GdipMeasureString
  24777  Warlords III: Darklords Rising demo installer fails to start
  24779  Warlords III: Darklords Rising demo: mouse clicks don't register in the main menu
  24782  GTA: San Andreas crashes when playing intro videos
  24802  MSOffice 2003: "Not installed for this user" regression
  24897  Age of Empires III trial complains "parsing error in Fonts2.xml" without native msxml4
  24903  NoX game crashes when trying inputting anything in any textbox
  24909  KeepFocused doesn't work
  24910  Age of Empires 3 Trial installer puts native msxml4 in c:\SXS on wine
  24933  Morrowind freezes on startup
  24939  Crysis Warhead requires msvcr80.dll
  24970  AcdSee Pro 3(3.0.475) and Office 2003 'Custom' install crashes
  24978  Assertion error in winegstreamer
  24984  Nestle Nesquick FIRERESCUE application won't start
  25026  Crysis Warhead requires d3dx9_36.dll
  25081  Automation broken in AutoCAD
  25090  Winedbg: input characters are not displayed
  25111  Firefox 4 Beta 7: Starts but doesn't render the program (menu/toolbars/browserarea)

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

Changes since 1.3.6:

Adam Martinson (11):
      configure: Add a check/define for xmlSchemaSetValidStructuredErrors().
      msxml3: Add a function to validate a tree against a schema cache.
      msxml3: Add error code defines.
      configure: Add a check for xmlDocProperties.
      msxml3: Implement domdoc schema validation.
      msxml3: Use libxml2 macros for XSLPattern method return values.
      msxml3: Add XSLPattern nodeType() method.
      msxml3: Implement XSLPattern collection methods.
      msxml3: Move the whitespace preservation bool into the domdoc_properties struct.
      msxml3: Fix node_get_text() whitespace handling.
      msxml3/tests: Tests for node_get_dataType() with XDR schemas.

Alexander Morozov (3):
      crypt32/tests: Add tests for enveloped messages.
      crypt32/tests: Add tests for decoding enveloped messages.
      crypt32/tests: Add tests for CMSG_RECIPIENT_COUNT_PARAM and CMSG_RECIPIENT_INFO_PARAM.

Alexandre Goujon (1):
      cmd: Add a space at the end of the first echo'ed batch line.

Alexandre Julliard (39):
      libwine: Update Unicode tables to the Unicode 6.0 standard.
      ntdll: Don't try to join with the main thread.
      kernel32: Remove unnecessary use of wownt32.h.
      gdi32: Remove unnecessary uses of wownt32.h.
      wineps: Remove unnecessary use of wownt32.h.
      winex11: Manage the system tray stand-alone window in x11drv for non-desktop mode.
      explorer: Make the systray window look more like a real taskbar in desktop mode.
      winex11: Improve management of the lifetime of embedded windows.
      winex11: Re-dock icons when the system tray owner has changed.
      kernel32: Fix a trace to print the correct error code.
      ntdll: Report memory areas in DOS memory to be free even when not reserved.
      ntdll: Explicitly check for failure to map page 0.
      winex11: Add support for receiving mouse events on non-toplevel windows.
      winex11: Don't try to unmap systray windows, it confuses some systray docks.
      winex11: Sync the window attributes when switching a window to embedded.
      winex11: Add support for receiving ConfigureNotify events on non-toplevel windows.
      winex11: Handle GravityNotify events for non-toplevel windows.
      winex11: Add support for having a drawable associated to non-toplevel windows.
      winex11: Create Win32 windows corresponding to all the ancestors of embedded windows.
      msvcrt: Add some missing CDECLs.
      rpcrt4: Implement waiting in RpcMgmtWaitServerListen.
      include: Move IXMLDOMDocument3 definition to msxml2.idl.
      include: Move coclass definitions to msxml2.idl.
      include: Define a few more msxml interfaces and classes.
      include: Make msxml6.idl a copy of msxml2.idl instead of importing it.
      msxml6: Add a version resource.
      msxml6: Add a typelib resource.
      Revert "ntdll: Fix possible deadlock in vectored exception handling."
      ntdll: Don't call vectored exception handlers under the critical section.
      krnl386.exe: Use the correct pointer for RemoveVectoredExceptionHandler.
      shell32: Store the raw AUTHORS file in resources instead of trying to convert to a C array.
      krnl386.exe: Propagate DOS startup errors up to winevdm.
      avifil32: Fix the multiple inheritance implementation of edit streams.
      oleaut32: Get rid of the ICOM_THIS_MULTI macro.
      ole32: Get rid of the ICOM_THIS_MULTI macro.
      rpcrt4: Get rid of the ICOM_THIS_MULTI macro.
      atl: Move atliface.idl to the global includes.
      atl: Fix the name of the Registrar class id.
      atl: Fix the Registrar class factory implementation.

Andrew Bogott (2):
      shdocvw: Implement UniformResourceLocatorW_InvokeCommand and UniformResourceLocatorA_InvokeCommand for the default verb.
      shdocvw: Move OpenURL() from shdocvw_main.c into intshcut.c, and implement it.

Andrew Eikum (5):
      hlink: Implement HlinkClone.
      hlink: Site data should only be set if the hlink has an HlinkSite.
      oleaut32: Search inherited interfaces again in ITypeComp::Bind.
      shell32: Don't fail if the path doesn't exist in Unix in IShellFolder::ParseDisplayName.
      shell32: Don't search Path or PIDL for an icon in IShellLink::GetIconLocation.

Andrew Nguyen (2):
      winex11.drv: Ensure that the WGL context is removed from the context list in wglDeleteContext.
      winex11.drv: Set last error to ERROR_BUSY when attempting to delete a cross-thread context in wglDeleteContext.

André Hentschel (20):
      include: Better distinguish ARM's endianess.
      include: Add MIPS endianess.
      include: Better detect MIPS architecture.
      include: Merge the ia64 ifdefs into one.
      services: Mention the unkown type in the error message.
      ntdll: Add Support for loading ARM PEs.
      include: Add BS_PUSHBOX.
      include: Add new button control styles.
      wordpad: Replace obsolete styles.
      kernel32: Remove dead code and old comment.
      include: Define PROCESSOR_OPTIL (MSIL).
      ntdll: Detect more processor features.
      user32: Don't paint new button styles instead of crashing.
      winebuild: Add subsystem wince.
      msi: Downgrade an error.
      mmdevapi/tests: Fix test on some 2k8 and mark those errors broken.
      mmdevapi: Add return value which happens on wow64 and pure 64-bit.
      ntdll/tests: Fix crash in japanese and chinese test.
      krnl386: Mention DOSBox.
      d3d9: Improve CheckDeviceState stub to run Firefox 4 Beta 7.

Aric Stewart (3):
      ups10: Corrected rtl implementation for ScriptStringXtoCP and ScriptStringXtoCP.
      strmbase: More properly standardized pin implementations for NewSegment.
      winegstreamer: 4 buffers is insufficient for some mpeg streams.

Austin English (1):
      winspool.drv: Skip tests when no printer is installed.

Austin Lund (9):
      comctl32/tests: Added extra debugging information to toolbar size tests.
      comctl32/tests: Change toolbar size test data to load dynamically.
      comctl32/tests: Fix toolbar size tests that depend on system font height.
      comctl32/tests: Fixed toolbar tests for varing width of button strings.
      comctl32/tests: Fix band info tests that depend on system font heights.
      comctl32/tests: Change expect_band_content test to ensure line numbers are reported correctly on test failure.
      comctl32/tests: Changed rebar layout tests to load data dynamically.
      comctl32/tests: Fixed rebar layout tests which depend on system font height.
      comctl32/tests: Fixed rebar layout tests that depend on system font widths.

Bernhard Übelacker (1):
      comctl32: Test for window messages of a property sheet with custom dialog proc.

David Adam (3):
      ddraw: Add tests for the foreground window set by SetCooperativeLevel.
      ddraw: Add tests for SetCooperativeLevel with a NULL window.
      ddraw: Exclusive mode is the corner case for SetCooperative, not the normal mode.

David Hedberg (5):
      shell32: Don't crash on NULL cmdgroup in DefView OleCommandTarget.
      shell32: Fix trace formatting in SHGetNameFromIDList.
      shell32: Remove reliance on the ability to bind to files in UnixFolder CompareIDs.
      shell32: Remove reliance on the ability to bind to files in UnixFolder GetDisplayNameOf.
      shell32: Don't allow binding to files in any ShellFolder implementation.

Detlef Riekenberg (14):
      wer: Add stubs for WerReportCreate + WerReportCloseHandle.
      wer/tests: Add initial tests for WerReportCreate + WerReportCloseHandle.
      wer: Add a stub for WerReportSetParameter.
      crypt32/tests: CertAddCertificateLinkToStore is not present on W98.
      crypt32/test: When using dynamic binding for functions, do it in all locations.
      wer: Implement WerReportCreate and WerReportCloseHandle.
      wer: Implement Wer*ExcludedApplication.
      wer/tests: Add more tests for Wer*ExcludedApplication.
      include: Add WerReportSetParameter + WerReportSubmit.
      wer: Add a stub for WerReportSubmit.
      wintrust/tests: Run the test again on W98.
      ntdll: Add stubs for Rtl[G/S]etCurrentTransaction.
      wtsapi32: Add a stub for WTSLogoffSession.
      kernel32: Add a stub for SetProcessDEPPolicy.

Dmitry Timoshkov (2):
      Revert "gdi32: Make AddFontToList skip adding a face into global lists if the font is not supposed to be enumerated, and return a pointer to first loaded face.".
      gdi32: Remove broken check for WinXP.

Eric Pouech (28):
      msvcrt: Added macro to ease implementation of so called secure (_s postfix) APIs.
      msvcrt: Moved _get_osplatform to the new macros for parameters validation.
      msvcrt: Use the new parameter checking macros for f(w)open_s functions.
      msvcrt: Use the parameter checking macros for strncpy_s.
      msvcrt: Use parameter validation macros for mcstowcs_s_l.
      msvcrt: Use parameter checking macros for strtok_s.
      msvcrt: Use parameter checking macros for string to number functions.
      msvcrt: Use parameter checking macros for wcsto{number} functions.
      msvcrt: Use parameter checking macros in wcstombs_s_l.
      msvcrt: Use parameter checking macros in vsn(w)printf_s_l.
      msvcrt: Implemented _itow_s.
      msvcrt: Implemented _wputenv_s.
      msvcrt: Implemented _(w)dupenv_s.
      msvcrt: Implemented (w)searchenv_s.
      msvcrt: Implemented _putwch.
      msvcrt: Implemented _cputws.
      msvcrt: Implemented _(w)access_s.
      msvcrt: Implemented (_)wcserror.
      msvcrt: Implemented (_)wcserror_s.
      msvcrt: Implemented wcstok_s.
      kernel32: Use fd availability for testing whether a console handle refers to a bare console.
      server: Removed the no longer used bare parameter out of get_console_mode request.
      msvcrt: Implemented the _(w)getenv_s functions.
      msvcrt: For internal msvcrt use, added ability to grow automatically the size of the buffer in printf core engine.
      msvcrt: Implemented _vc(w)printf.
      msvcrt: Correctly manage va_list:s in vf(w)printf ny using auto-grow buffer in prinf engine.
      msvcrt: Use macro for parameters validation itoa_s (and update the tests as well).
      kernel32: Fixed regression with echoing input characters.

Erich Hoover (2):
      include: Add IP_PKTINFO response structure.
      include: Add macros for retrieving control message headers.

Eryk Wieliczko (8):
      msvcrt: Add stub functions _lock_file and _unlock_file.
      msvcrt: Implement _fseeki64.
      msvcrt: Implement _findfirst64i32 and _findnext64i32.
      comdlg32: GetSaveFileName: Don't append .* extension.
      comdlg32/tests: Add GetSaveFileName .* extension test.
      msvcrt: Implement _ftelli64.
      msvcrt: Implement _get_tzname.
      msvcrt: Fixed (_w)fopen_s with test.

Francois Gouget (9):
      ddraw/tests: Fix compilation on systems that don't support nameless unions.
      ddraw/tests: Remove a space before a '\n'.
      wininet/tests: Add a trailing '\n' to ok() calls.
      msxml3: Add a trailing '\n' to a FIXME() calls.
      msxml3/tests: Add a trailing '\n' to ok() calls.
      msxml3/tests: Small spelling fix in a nonexistent resource.
      xcopy: Remove a space before a '\n' in the Korean translation.
      ws2_32: Add a trailing '\n' to a FIXME() call.
      Assorted spelling fixes.

Gerald Pfeifer (5):
      urlmon: Fix typo in trace in validate_path.
      comctl32: Remove TOOLTIPS_WindowFromPoint, putting its functionality into its sole calling site.
      comctl32: Fix test description in test_hittest.
      urlmon: Avoid accessing an uninitialized variable in a TRACE in validate_path.
      comctl32: Remove the last, unused parameter fromTOOLTIPS_NewToolRectT.

Gustavo Henrique Milaré (2):
      inetcpl.cpl: Added Portuguese (Brazilian) translation.
      shdocvw: Added Portuguese (Brazilian) translation.

Hans Leidekker (18):
      msi: Don't crash if there is no feature parent.
      msi: Components don't require a key path.
      msi: Downgrade some warnings.
      msi: Revert 3cd55cc916ad8d74710f435845d8f970161f77fe.
      include: Add winsxs.idl.
      sxs: Correct the spec entry for CreateAssemblyCache.
      sxs: Add a stub implementation of IAssemblyCache.
      msi: Features don't require a directory.
      sxs: Add support for installing side-by-side assemblies.
      msi: MsiGet/SetFeatureState must get and set the requested feature action, not the action taken.
      msi: Remove redundant function msi_find_file.
      msi: Put quotes around the filename in MsiApplyPatch.
      msi: Calculate file install states after evaluating component conditions, not before.
      msi: Add support for installing side-by-side assemblies.
      programs: Add a stub implementation of regsvcs.exe.
      msi: Honor msidbComponentAttributesNeverOverwrite.
      msi: Don't rebuild the target path for files from global assembly components.
      msi: Don't use a temporary directory for local assemblies.

Henri Verbeet (40):
      wined3d: Change surface_translate_frontbuffer_coords() to handle all drawable coordinates.
      d3dcompiler_43/tests: Make probe info const.
      d3dcompiler_43/tests: Make some variables unsigned.
      d3dcompiler_43/tests: Calculate the probe count.
      ddraw: Fix some TRACEs.
      wined3d: Set an A window proc on non-unicode windows.
      wined3d: Do not use "lockedRect" unless the surface is locked in flush_to_framebuffer_drawpixels().
      wined3d: Translate drawable coordinates in flush_to_framebuffer_drawpixels().
      ddraw/tests: Check for multiple expected messages in test_wndproc().
      d3d8/tests: Check for multiple expected messages in test_wndproc().
      d3d9/tests: Check for multiple expected messages in test_wndproc().
      d3d9: Add some missing locking to IDirect3DDevice9Impl_EndStateBlock().
      krnl386.exe: Return the default value if the section wasn't found in GetPrivateProfileString16().
      wined3d: Add support for the INTZ format.
      d3d8/tests: Add a test for INTZ.
      d3d9/tests: Add a test for INTZ.
      wined3d: Use SetWindowPos() to make the focus window active.
      wined3d: Move the fullscreen window setup / restore code to the device.
      wined3d: Do not activate the window when restoring the styles.
      ddraw: Setup the device window in SetCooperativeLevel().
      wined3d: Don't use floating point textures without ARB_texture_float.
      wined3d: Test for "AMD" in the renderer string as well to detect AMD cards.
      d3d9/tests: Specify width and height when changing the display orientation.
      wined3d: Recognize Evergreen in select_card_ati_mesa().
      wined3d: Use lookup tables in select_card_ati_mesa().
      wined3d: Use lookup tables in select_card_nvidia_binary().
      wined3d: Use a lookup table in select_card_ati_binary().
      ddraw: Window proc replacement depends on DDSCL_EXCLUSIVE, not DDSCL_FULLSCREEN.
      ddraw: Make switching to/from fullscreen work more than once.
      wined3d: Register a window only once.
      wined3d: Don't unregister a window unless the window proc is what we expect it to be.
      wined3d: Take the location into account in context_apply_fbo_state_blit().
      wined3d: Handle rendertargetlock_mode in surface_load_location().
      wined3d: Simply use surface_modify_location() in IWineD3DSurfaceImpl_Map() with WINED3DLOCK_DISCARD.
      wined3d: Remove some useless code.
      wined3d: Avoid marking samplers dirty in IWineD3DSurfaceImpl_Unmap().
      wined3d: Check for depth/stencil surfaces in general in IWineD3DSurfaceImpl_Unmap().
      wined3d: Simplify a condition in IWineD3DSurfaceImpl_LoadTexture().
      wined3d: Rename the IWineD3DSurfaceImpl "Flags" field to "flags".
      wined3d: Rename the wined3d_format "Flags" field to "flags".

Huw Davies (6):
      ole32/tests: Add tests to exercise the datacache's IDataObject::GetData.
      ole32: Add a stub advise sink object to the data cache.
      ole32: Rename cache entry parameters from 'This' - it leads to too much confusion with the data cache itself, which is the real COM object.
      ole32: Re-order some functions.
      ole32: Remove some useless comments.
      ole32: Implement OnRun and OnStop.

Igor Paliychuk (1):
      README: Added Ukrainian version.

Jacek Caban (20):
      shdocvw: Added missing IID_IOleWindow handing to IOleInPlaceFrame::QueryInterface implementation.
      urlmon: Compute expected Uri_HAS_* flags from property arrays.
      mshtml: Properly handle QueryService(SID_SOleUndoManager) call.
      d3dhal.h: Removed no longer defined D3DDP2OP_* enums.
      jscript: Added Date.setYear stub implementation.
      msxml3: Don't use xmlnode's IXMLDOMNode iface in get_nodeTypeString implementations.
      mshtml: Don't free string that will be cleared by SafeArrayDestroy.
      mshtml: Added IOmNavigator::get_plugins implementation.
      mshtml: Added IDispatchEx support to HTMLStyleSheetsCollection object.
      mshtml: Use macro for tid declaration.
      mshtml: Added IHTMLWindow2::execScript implementation.
      mshtml: Added execScript tests.
      urlmon: Added IInternetProtocolEx support to BindProtocol.
      mshtml: Added HTMLWindow's IServiceProvider implementation.
      mshtml: Added IHTMLObjectElement::get_vspace implementation.
      mshtml.idl: Added IHTMLStyleElement and DispHTMLStyleElement declarations.
      mshtml: Added IHTMLStyleElement stub implementation.
      mshtml: Use IUriBuilder for IURI::SetQuery implementation.
      shdocvw: Added DocHost::Exec(OLECMDID_UPDATECOMMANDS) implementation.
      shdocvw: Fixed race in tests.

Jaime Rave (1):
      wined3d: Added Intel GM45 video card detection.

Jörg Höhle (7):
      winmm: mciSendString always returns a response string (albeit empty).
      winmm: MCI_SYSINFO doesn't change the output buffer in case of error.
      winmm: MCI_INFO doesn't change the output buffer in case of error.
      mciwave: Fix some MCI_STATUS return code.
      winmm/tests: Fix test failure in multi-byte locale.
      winmm: Use MCI_HWND and MCI_HDC in resource files.
      mciseq: The native MCI sequencer cannot record.

Louis Lenders (2):
      d3dx9_36: Quiet a noisy fixme.
      xapofx1_1: Add stub dll.

Maarten Lankhorst (59):
      quartz: Fix EC_COMPLETE handling on dsound renderer.
      quartz: Add IAMFilterMiscFlags to directsound renderer.
      quartz: Fix EC_COMPLETE handling on video renderer.
      quartz: Add IAMFilterMiscFlags to video renderer.
      quartz: Fix EC_COMPLETE handling on null renderer.
      quartz: Add IAMFilterMiscFlags to null renderer.
      quartz: Add IAMFilterMiscFlags to file source.
      strmbase: Allow NULL for time format in ConvertTimeFormat.
      quartz: Change HeapRealloc call to CoTaskMemRealloc.
      quartz: Simplify all_renderers_seek.
      quartz: Fix run/pause/stop in filtergraph.
      quartz: Fix return value of GetMediaTime.
      quartz: Forward media time in AVI Decoder.
      quartz: Forward media time in ACM Wrapper.
      quartz: Fix time on avi parser.
      quartz: Fix time on MPEG splitter.
      winegstreamer: Forward media time on transform filter.
      winegstreamer: Fix concept of time in demuxer.
      quartz: Use media time instead of stream time in directsound renderer.
      quartz: Use media time instead of stream time in null renderer.
      quartz: Remove position from filtergraph.
      quartz: Actually use the start time in SendRun.
      strmbase: Add support for IQualityControl.
      strmbase: Forward IQualityControl on output pin to base filter.
      quartz: Forward IQualityControl on pullpin to base filter.
      quartz: Add IQualityControl to video renderer.
      strmbase: Add support for IQualityControl to transform filter.
      winegstreamer: Send EOS on exiting thread.
      quartz: Fix PullPin_EnumMediaTypes.
      winegstreamer: Fix GSTInPin_EnumMediaTypes.
      winegstreamer: Clarify FIXME.
      strmbase: Silence harmless fixme.
      quartz: Use media time instead of stream time in video renderer.
      quartz: On flushing, always signal blocked event handle.
      quartz: Fix video renderer EndOfStream.
      quartz: Add quality control to avi decoder.
      quartz: Reset stream time when paused after seeking.
      winegstreamer: Fix buffer leak in error path.
      winegstreamer: Fix NewSegment in transform filter.
      winegstreamer: Add QOS to transformer filters.
      winegstreamer: Move seeking from filter to pins.
      winegstreamer: Add support for qos to demuxer.
      strmbase: Add support for rendering algorithms to quality control.
      quartz: Use quality control in video renderer.
      quartz: Rework direct sound renderer rework to be more time aware.
      winegstreamer: Fix GetState.
      winegstreamer: Add better support for unsupported audio/video.
      winegstreamer: Fix playing .flv and realmedia files.
      winegstreamer: Fix regression from d62b4dcb664.
      winegstreamer: Set correct state when ending processing.
      quartz: Fix stub for GetVideoPaletteEntries.
      quartz: Reset state change after flushing.
      winegstreamer: Move up gst_segment_init to prevent a theoretical race condition.
      quartz: Start DirectSound renderer as soon as possible.
      quartz: Make window behavior of video renderer act more like windows.
      quartz: Handle state changes in direct sound renderer correctly.
      winegstreamer: Bump buffers to 2 in transform filter.
      winegstreamer: Fix deadlock when changing state.
      winegstreamer: Fix support for seeking in demux.

Marcus Meissner (1):
      ntdll: Check and fix PE header protections.

Martin Wilck (1):
      xcopy: Assume directory if destination ends with a backslash.

Matteo Bruni (6):
      d3dx9: Implement D3DXFilterTexture for cube textures.
      d3dx9: Implement D3DXCheckCubeTextureRequirements.
      d3dx9: Implement D3DXCreateCubeTexture.
      d3dx9: Skip D3DXCheckCubeTextureRequirement test if not supported.
      d3dx9: Implement D3DXCheckVolumeTextureRequirements.
      d3dx9: Implement D3DXCreateVolumeTexture.

Michael Stefaniuc (7):
      strmbase: Remove duplicate 'const' in strmbase.h.
      wined3d: Move the checkGLcall() right after the corresponding GL call.
      wined3d: Fix some checkGLcall() messages.
      serialui: Don't cast zero.
      include: Avoid a multi-character character constant.
      kernel32/tests: '\' needs to be escaped in a C string (sparse).
      urlmon/tests: Escape '\' in C strings (sparse).

Nikolay Sivov (17):
      msxml3: Implement a trivial case of ::put_nodeTypedValue() for elements.
      msxml3: Get rid of ::cloneNode() forward.
      msxml3: Get rid of ::get_prefix() forward.
      msxml3: Get rid of ::get_baseName() forward.
      msxml3: Hint parser to use UTF-8 if it's specfied as BOM.
      comctl32/treeview: Make item data layout partially compatible with native one.
      msxml3: Encode special characters while setting attribute content.
      msxml3: For tested cases use TRACE instead of FIXME.
      msxml3: Don't force put_nodeValue return value.
      msxml3: Stub IXMLDOMDocumentType support.
      msxml3: Fix duplicated declarations after document ::get_xml().
      msxml3: Use defined error code for no error case.
      msxml3: Trace DOM document reference counts.
      msxml3: Dump set node value.
      cryptui: Stub CryptUIDlgViewSignerInfoA.
      msxml3: Fix a ::get_xml() for libxml2 without xmlSaveToBuffer.
      msxml3: Don't include assert.h where it's not used.

Paul Vriens (30):
      jscript: Add the Serbian (Latin and Cyrillic) translation.
      cryptdlg: Add the Serbian (Latin and Cyrillic) translation.
      devenum: Add the Serbian (Latin and Cyrillic) translation.
      gphoto2.ds: Add the Serbian (Latin and Cyrillic) translation.
      shdoclc: Add the Serbian (Latin and Cyrillic) translation.
      wininet: Add the Serbian (Latin and Cyrillic) translation.
      oledlg: Add the Serbian (Latin and Cyrillic) translation.
      localspl: Add the Serbian (Latin and Cyrillic) translation.
      gdi32/tests: Fix crash and failures on Win95.
      xcopy: Add the Serbian (Latin and Cyrillic) translation.
      iccvid: Add the Serbian (Latin and Cyrillic) translation.
      localui: Add the Serbian (Latin and Cyrillic) translation.
      setupapi: Add the Serbian (Latin and Cyrillic) translation.
      winedbg: Update Serbian (Latin) translations.
      winedbg: Add the Serbian (Cyrillic) translation.
      mapi32: Add the Serbian (Latin and Cyrillic) translation.
      mpr: Add the Serbian (Latin and Cyrillic) translation.
      msacm32: Add the Serbian (Latin and Cyrillic) translation.
      msrle32: Add the Serbian (Latin and Cyrillic) translation.
      sane.ds: Add the Serbian (Latin and Cyrillic) translation.
      serialui: Add the Serbian (Latin and Cyrillic) translation.
      msvfw32: Add the Serbian (Latin and Cyrillic) translation.
      msvidc32: Add the Serbian (Latin and Cyrillic) translation.
      oleaut32: Add the Serbian (Latin and Cyrillic) translation.
      shlwapi: Add the Serbian (Latin and Cyrillic) translation.
      msi: Update Serbian (Latin and Cyrillic) translations.
      shell32: Update Serbian (Latin and Cyrillic) translations.
      user32: Update Serbian (Latin and Cyrillic) translations.
      appwiz.cpl: Update Serbian (Latin and Cyrillic) translations.
      comctl32: Update Serbian (Latin and Cyrillic) translations.

Piotr Caban (3):
      mshtml: Impoved implementation of nsURI_GetAsciiHost.
      shlwapi: Improved UrlCombineW implementation.
      shell32: Improved IShellFolder_GetUIObjectOf implementation.

Pluciński Mariusz (3):
      gameux: Loading of game statistics implemented.
      gameux: Add implementation of IGameStatistics::GetCategoryTitle.
      gameux: Add implementation of IGameStatistics::GetStatistic.

Rico Schüller (5):
      d3dcompiler: Add D3DReflect() stub.
      include: Add ID3D11ShaderReflection interface.
      include: Add ID3D10ShaderReflection1 interface.
      dxguid: Add shader and dx11 includes to dx10guid.c.
      d3dcompiler: Add stub ID3D11ShaderReflection interface.

Stefan Dösinger (3):
      wined3d: Don't pass the texture stages to basetexture_apply_state_changes.
      wined3d: Don't change GL_TEXTURE* when using the arb fragment pipeline.
      wined3d: Don't reapply lighting when vertex shaders are used.

Thomas Mullaly (16):
      urlmon: Added stub for CoInternetCombineIUri.
      urlmon/tests: Added basic tests for CoInternetCombineIUri.
      urlmon/tests: Added actual CoInternetCombineIUri tests.
      urlmon: Implemented base case for CoInternetCombineIUri.
      urlmon: Fixed memory free of an uninitialized variable.
      urlmon: Improved IUri support for file URIs.
      urlmon/tests: Added more CoInternetCombineIUri tests.
      urlmon: Implemented case when the relative URI doesn't have a path component in CoInternetCombineIUri.
      urlmon: Some IUri's don't display the default port in the authority.
      urlmon: Implemented case when relative path begins with '/' in CoInternetCombineIUri.
      urlmon: Implemented case when relative URI has a path that doesn't start with '/'.
      urlmon/tests: Fixed some IUri tests that used hard coded values to use Uri_HOST.
      urlmon: CoInternetCombineIUri uses pluggable protocols.
      urlmon: Make IUri implementation call functions through IUri_ macros instead of calling directly.
      urlmon: Improve IUri support of res URIs.
      urlmon: Simplified path canonicalization functions.

Vijay Kiran Kamuju (8):
      d3drm: Fix signature of LoadTextureFromResource macro of IDirect3DRM2 interface.
      include: Fix signature of CreateWrap macros in d3drm.
      include: Add IDirect3DRMWinDevice interface.
      include: Add missing defines for d3drmdef.h.
      include: Add missing definitions for LPDIRECT3DRM2 and LPDIRECT3DRM3.
      include: Fix macro signatures in d3drmobj.h.
      tools: Add trailing semicolon to MimeType in wine.desktop.
      include: Add missing interfaces in d3drmobj.h.

Vincent Povirk (29):
      gdiplus: Fix point conversion in GdipCreateLineBrushI.
      gdiplus: Add a test for GdipCreateMatrix3.
      gdiplus: Don't rely on an HDC in GdipGetFontHeight.
      gdiplus: Don't rely on an HDC in GdipMeasureCharacterRanges.
      gdiplus: Don't rely on an HDC in GdipMeasureString.
      gdiplus: Add tests for GdipGetLineTransform.
      ole32: Cache all extended big block depot locations.
      d3dx9_36: Don't check the image format in D3DXLoadSurfaceFromFileInMemory.
      d3dx9_36: Fix an error path in D3DXLoadSurfaceFromFileInMemory.
      mscoree: Report that all .NET versions are installed if Mono is missing.
      mscoree: Use the new search methods for GetCORVersion/GetCORSystemDirectory.
      mscoree: Use the .NET 4 interfaces to implement CorBindToRuntimeEx.
      mscoree: Use the .NET 4 interfaces to implement CorBindToRuntimeHost.
      mscoree: Support searching for .NET runtimes by exe file.
      gdiplus: Allow more drawing operations to succeed without an HDC.
      include: Add definition for ICLRRuntimeHost.
      mscoree: Add stub implementation of ICLRRuntimeHost.
      mscoree: Load mono when creating a runtime host interface.
      mscoree: Use the new architecture to implement _CorExeMain.
      mscoree: Add a proper implementation of DllCanUnloadNow.
      mscoree: Search for mono installs with the 2.0 abi.
      mscoree: Implement config file parsing.
      include: Rename cor.h to cor.idl.
      include: Add definitions for IMetaDataDispenserEx.
      mscoree: Add stub implementation of IMetaDataDispenserEx.
      mscoree: Search the Global Assembly Cache for required assemblies.
      mscoree: Implement ClrCreateManagedInstance.
      mscoree: Add a trace to _CorExeMain.
      gdiplus: Correctly store the given stride in created bitmaps.

Vitaliy Margolen (1):
      ntdll: Mask invalid flags for RtlQueueWorkItem.

Vladimir Panteleev (2):
      winex11: Add X11DRV_PALETTE_GetColor function to resolve any COLORREF to an RGB.
      winex11: Correctly handle non-RGB COLORREFs in BRUSH_SelectSolidBrush.

Yaron Shahrabani (5):
      hhctrl.ocx: Added Hebrew translation.
      gphoto2: Added Hebrew translation.
      msrle32: Added Hebrew translation.
      winemine: Added Hebrew translation.
      progman: Added Hebrew translation.

--
Alexandre Julliard
julliard@winehq.org
