This is release 0.9.35 of Wine, a free implementation of Windows on Unix.

What's new in this release:
  - Broken aRts sound driver now removed for good.
  - Many fixes to the Quartz DLL sound support.
  - File I/O performance improvements.
  - The usual assortment of Direct3D fixes.
  - Lots of bug fixes.

Because of lags created by using mirrors, this message may reach you
before the release is available at the public sites. The sources will
be available from the following locations:

  http://ibiblio.org/pub/linux/system/emulators/wine/wine-0.9.35.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-0.9.35.tar.bz2

Binary packages for various distributions will be available from:

  http://www.winehq.org/site/download

You will find documentation on

  http://www.winehq.org/site/documentation

You can also get the current source directly from the git or CVS
repositories. Check respectively http://www.winehq.org/site/git or
http://www.winehq.org/site/cvs for details.

If you fix something, please submit a patch; instructions on how to do
this can be found at http://www.winehq.org/site/sending_patches

Wine is available thanks to the work of many people. See the file
AUTHORS in the distribution for the complete list.

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

Changes since 0.9.34:

Alessandro Pignotti (1):
      dplayx: Implement proper interface locking for DP_EnumSession.

Alexandre Julliard (39):
      make_makefiles: Add the .INIT/.BEGIN rules for the main makefile.
      server: Add a generic wait queue to the file descriptor object.
      server: Avoid redundant polling in fd_queue_async_timeout.
      server: Take advantage of the fd generic wait queue to remove a lot of serial code.
      server: Use the fd generic wait queue for directory change I/O operations.
      server: Make async I/O queues into real objects.
      server: Check file access in register_async before calling the object method.
      kernel32: Added some last error tests for mailslots.
      server: Add a separate function to set the timeout of an async I/O operation.
      server: Make timeout status for async I/O specifiable. Fix mailslots timeout handling.
      server: Hold a pointer to the queue from the async operations.
      make_requests: More aggressive grepping for status values.
      server: Add support for associating a file descriptor to a message queue.
      winex11.drv: Store the display file descriptor directly in the server message queue.
      server: Fix the handling of the signaled status for file descriptors.
      server: Use the standard file descriptor signal mechanism for directory changes.
      ntdll: Avoid setting status in IO_STATUS_BLOCK until the I/O operation is done.
      ntdll: Avoid relying on the IO_STATUS_BLOCK for storing the current transfer count.
      ws2_32: Don't access the IO_STATUS_BLOCK until the I/O operation is finished.
      ntdll: Make test for heap boundaries more strict in HEAP_FindSubHeap.
      kernel32: Add a bit of slack to the mailslot timeout test.
      ntdll: Reimplement NtReadFile.
      ntdll: Reimplement NtWriteFile.
      ntdll: Rely on the server to queue the final APC for asynchronous read/write.
      ntdll: Use send(2) instead of write(2) for zero-byte writes to sockets.
      ntdll: Add some test cases for asynchronous I/O.
      setupapi: Avoid using sizeof in traces.
      server: Add support for restarting an async I/O when the client side couldn't finish it right away.
      ntdll: Simplify the async read/write code now that most of the work is done in the server.
      ntdll: Determine the async read avail_mode flag from the client side.
      server: Explicitly shutdown closed pipes to prevent access from file descriptors cached in the client.
      kernel32: Add SYNCHRONIZE access to mailslot handles.
      server: Store the opening options in the file descriptor instead of in the individual objects.
      server: Rename the get_file_info function to get_fd_type and get rid of the flags.
      ntdll: Store the file access and options in the fd cache, and get rid of the dynamic flags.
      shell32: Have _ILCreateFromFindDataW also create a FileStructW type of pidl.
      server: Create a separate fd object for each mailslot writer. Make them first-class file handles.
      server: Don't bother with default entry points for objects that don't even return an fd.
      winex11.drv: Hack to disable XInitThreads when an XIM is used.

Andrew Talbot (35):
      comctl32: Constify some variables.
      comctl32: Constify some variables.
      comctl32: Constify some variables.
      comctl32: Constify some variables.
      comctl32: Constify some variables.
      comctl32: Constify some variables.
      comctl32: Constify some variables.
      comctl32: Constify some variables.
      comctl32: Constify some variables.
      comctl32: Constify some variables.
      comctl32: Constify some variables.
      advapi32: Constify some variables.
      atl: Constify some variables.
      advpack: Constify some variables.
      comcat: Constify some variables.
      avifil32: Constify some variables.
      comdlg32: Constify some variables.
      comdlg32: Constify some variables.
      comdlg32: Constify some variables.
      comdlg32: Constify some variables.
      comdlg32: Constify some variables.
      comdlg32: Constify some variables.
      comdlg32: Remove inappropriate const qualifier.
      include: Remove superfluous semicolons.
      d3d8: Void functions should not return a value.
      d3d9: Void functions should not return a value.
      kernel32: Remove superfluous semicolons.
      mapi32: Void functions should not return a value.
      crypt32: Constify some variables.
      mshtml: Void functions should not return a value.
      msvcrt: Remove superfluous semicolons.
      ntdll: Void functions should not return a value.
      ntdll: Remove superfluous semicolons.
      ole32: Void functions should not return a value.
      oleaut32: Remove superfluous semicolons.

András Kovács (2):
      ntdll: Add Vista version option.
      winecfg: Add Windows Vista version option.

Aric Stewart (8):
      comctl32: Unset active page while setting a new active page for a propsheet.
      comctl32: Propsheet exception fix.
      ole32: Storage optimization.
      msi: Register fonts with full target paths as applications can and will install fonts to places other than the windows/fonts directory.
      shell32: Avoid unneeded A->W conversions in _ILSimpleGetTextW.
      shell32: Update the debug functions to handle Unicode value pidl.
      shell32: Use _ILSimpleGetTextW instead of using _ILGetTextPointer
      msi: Do not crash in MsiGetUserInfo if org, user or serial are not present, instead return USERINFOSTATE_ABSENT.

Byeong-Sik Jeon (2):
      regedit: Support REG_MULTI_SZ creation and editing.
      regedit: Update Korean resource.

Chris Robinson (23):
      quartz: Don't fill the dsound buffer with small amounts.
      quartz: Remove errant parser output pins on input connection failure.
      quartz: Set the sample time based on the number of bytes read before sending it downstream.
      quartz: Use a safe APC to kill the PullPin thread when the PullPin is being released.
      quartz: Use a second-long DSound buffer for playback.
      quartz: Hold a reference on the PullPin's filter while the processing thread is alive.
      quartz: Connect input when the pins connect, not when querying.
      quartz: Add a QueryConnect method for transform filters.
      quartz: Break loop on error in ACMWrapper.
      quartz: Implement Get/SetSyncSource for the FilterGraph's IMediaFilter interface.
      quartz: Don't call ReleaseSemaphore on NULL semaphore handles.
      quartz: Tell filters to stop sending data when the chain is broken.
      quartz: Avoid releasing NULL objects.
      quartz: Send a notification when the filter graph clock changes.
      quartz: Use more precise positioning information for the DSound filter's reference clock.
      quartz: Add partial implementation of IReferenceClock for DSoundRenderer.
      quartz: Add a cleanup callback for parser filters to call on release.
      quartz: Make sure cached media samples are released for parser filters.
      quartz: Fix ALIGN macros.
      quartz: Fix error with operator precedence.
      quartz: Pass the media sample to the individual transform filter callbacks.
      winedbg: Align module addresses to 8 characters.
      quartz: Implement IAMFilterData interface for IFilterMapper.

Dan Hipschman (1):
      rpcrt4: Add tests for RpcServerListen and friends.

Dan Kegel (2):
      imagehlp: BindImageEx stub should report success.
      winex11.drv: GetAsyncKeyState must check mouse buttons, too.

Detlef Riekenberg (4):
      localui: Add localui.dll with stubs.
      localui/tests: Add initial test.
      localspl/tests: Remove duplicate tests.
      localui: Add version resource.

Dmitry Timoshkov (8):
      kernel32: Add GetCPInfo test.
      gdi32: Make GetKerningPairsA not fail for fonts with SYMBOL charset.
      winspool: Add a test for DeviceCapabilities, fix some bugs found.
      shlwapi: Fix a forward to user32.PrivateExtractIconExW.
      user32: Windows uses ptMaxTrackSize to set an initial window size not ptMaxSize.
      winebuild: Check if a given forward does exist in one of the imported dlls, fix a couple of problems detected.
      gdi32: Fix a couple of problems with negative lfWidth test.
      ntdll: Fix a compiler warning.

Eric Pouech (3):
      winedbg: When reloading real PE modules from a minidump, also look in the search path (as we do for ELF modules).
      winedbg, winedump: Extended some info printed from system info directory in minidump about the CPU.
      taskmgr: Let the debug channels work again.

Fabian Bieler (7):
      wined3d: Fix GLSL cmp instruction for INF and NAN arguments.
      wined3d: Fix GLSL cnd instruction for INF and NAN arguments.
      wined3d: Add support for float texture formats back in.
      wined3d: Fix UpdateSurface for sourceRect != sourceWidth.
      wined3d: Fix GLSL cnd instruction.
      wined3d: Add GL_EXT_framebuffer_blit to extension handler.
      wined3d: Mark vertex shader 3.0 as foggy shaders if they write out the fog coord.

Felix Nawothnig (13):
      gdi32: Properly handle negative font widths.
      wined3d: Make CreateCubeTexture fail when not supported.
      wined3d: Downgrade some ERRs to FIXMEs.
      wined3d: Only issue state_patchsegments FIXME once.
      comctl32: Fix item rect calculation.
      comctl32: Use appropriate font for header drag image.
      taskmgr: Use default font for proc listview.
      comctl32: Allow destruction of toolbar in BN_CLICKED handler.
      comctl32: Allow enabling TVS_CHECKBOXES on the fly.
      d3d8: Add missing relay trace.
      wined3d: Allow np2 textures to be loaded for SFLAG_INDRAWABLE.
      wined3d: Preload target in ActivateContext() for ORM_BACKBUFFER/ORM_PBUFFER.
      wined3d: Issue an error when the render target is read back without SFLAG_INDRAWABLE being set.

Francois Gouget (8):
      ole32/tests: Spelling fix.
      ole32/tests: Spelling fix.
      Assorted spelling and English fixes.
      shell32/tests: Fix some expected FindExecutable() error codes.
      shell32/tests: End the lines with CR+LF otherwise the profile APIs are unable to read them back on Win >= 2000.
      shell32/tests: On Windows 98 FindExecutable() does not '\0' terminate the returned command which caused many tests to fail.
      shell32/tests: On NT4 FindExecutable() returns an extra backspace character in some tests.
      oleaut32/tests: Fix compilation on systems that don't support nameless structs or unions.

H. Verbeet (16):
      wined3d: Handle FBO attachments slightly more efficiently.
      wined3d: Fixup FBO depth attachments when the depth attachment is larger than the render target.
      wined3d: Add a function to dump WINED3DTEXTUREFILTERTYPE values.
      wined3d: Make bind_fbo a bit more generic.
      wined3d: Separate attaching a surface to an FBO from set_render_target_fbo.
      wined3d: Use the framebuffer blit extension to implement StretchRect.
      wined3d: Add some StretchRectFilterCaps.
      wined3d: Don't report render target formats we don't support as supported.
      wined3d: Display the stream offset in GetStreamSource/SetStreamSource traces.
      wined3d: Set the stream offset to 0 in DrawPrimitiveUP/DrawIndexedPrimitiveUP.
      wined3d: Add some traces to stretch_rect_fbo.
      wined3d: Remove some redundant IWineD3DSurface_PreLoad calls from stretch_rect_fbo.
      wined3d: Disable the scissor test in stretch_rect_fbo.
      wined3d: Disable the scissor test for depth blits.
      wined3d: Dirtify the sampler used by IWineD3DSurface_PreLoad in IWineD3DSurfaceImpl_BltOverride.
      wined3d: Fix some swizzles on scalars.

Hans Leidekker (8):
      wintrust: Improve a number of stubs.
      setupapi: Implement SetupGetFileCompressionInfoEx{A, W}.
      setupapi: Add tests for SetupGetFileCompressionInfoEx.
      setupapi: Implement SetupDecompressOrCopyFile{A, W}.
      setupapi: Add tests for SetupDecompressOrCopyFile.
      setupapi: Remove debug traces from allocation routines.
      setupapi: Implement SetupGetFileCompressionInfo on top of SetupGetFileCompressionInfoEx.
      kernel32: Allow any amount of whitespace between the words ANSI and SCSI in /proc/scsi/scsi.

Huw Davies (3):
      wineps.drv: Add a heuristic to cope with resolution strings of the form "nnnmmmdpi" (ie without the 'x' separator).
      winspool.drv: Implement level 1 support for EnumPrinters.
      imagehlp: Add support for the indices array passed to ImageEnumerateCertificates.

Ivan Gyurdiev (2):
      d3d9: Break out two helper functions from test_fvf_to_decl.
      d3d9: Add a test for the converted vertex decl.

Jacek Caban (5):
      mshtml: Change TRACE to FIXME in stubs.
      mshtml: Added IHTMLBodyElement::get_background implementation.
      mshtml: Correctly handle utf-16 encoded pages.
      mshtml: Added IPersistFile::Save implementation.
      mshtml: Added IDM_COMPOSESETTINGS and IDM_HTMLEDITMODE stub implementation.

James Hawkins (1):
      msi: Reset the is_extracted flag when every cabinet is loaded.

Jason Edmeades (20):
      xcopy: Add support for /EXCLUDELIST:file1+file2 etc.
      xcopy: Add support for /D and /D:m-d-y.
      xcopy: Rearrange code to closely match windows ordering.
      xcopy: Move all messages into an English resource file.
      xcopy: Update comments with unsupported operations and current status.
      xcopy: Add help.
      xcopy: Make displayed names mirror windows.
      xcopy: /E implies recursive (fixes ActiveState Perl installer).
      xcopy: Hack/workaround for filenames starting with a '.'.
      oleaut32: Convert to VT_DECIMAL fails with overflow (with test).
      cmd.exe: Only search for supplied command as-is if it includes an extension.
      cmd.exe: Attempt to launch pgm even if fails to locate it.
      cmd.exe: Fix dir filename /s and resolve many output differences.
      cmd.exe: Make dir support multiple parameters.
      cmd.exe: Make dir a* b* or dir a* b* /s mirror windows.
      cmd.exe: Partially fix 'dir *.' (ie files with no extension).
      cmd.exe: Add support for move with simple wildcards.
      cmd.exe: Add move support for wildcards and directories.
      cmd.exe: Add prompting and COPYCMD plus /Y support to move.
      cmd.exe: Fix regression when launching a fully qualified program.

Kai Blin (1):
      ntdll: Don't use settimeofday() to attempt to set the timezone.

Laurent Vromman (3):
      gdi32: Add two basic tests to check what WidenPath does.
      gdi32: Correction of WidenPath behaviour when pen width is 1.
      gdi32: Correct WidenPath behaviour when working on an open path.

Lei Zhang (5):
      advapi32: Spelling fixes.
      comctl32: Fix first day of the week in monthcal.
      comctl32: More monthcal hit tests.
      user32: WM_ACTIVATEAPP on minimize message test.
      comctl32: monthcal: GetMonthRange Tests.

Louis Lenders (1):
      user32: Add RealChildWindowFromPoint.

Maarten Lankhorst (2):
      winearts.drv: Kill off winearts.
      winecfg: Close audio driver when not needed any more.

Marcus Meissner (2):
      ntdll: Remove superflous NULL checks.
      configure: Include <sys/types.h> before including <linux/joystick.h>.

Michael Ploujnikov (1):
      wined3d: Remove DDBLT_WAIT fixme.

Michael Stefaniuc (3):
      msvcrt: Move the code to demangle a name with its template argument list out of get_class() and into a separate function.
      msvcrt: Demangle a C++ mangled string that is only a name with it's template argument list.
      ws2_32/tests: Remove redundant NULL check before HeapFree().

Paul Vriens (11):
      advapi32/tests: Reopen the main handle if needed.
      advapi32/tests: Some cleanup.
      ole32/stg_bigblockfile: Check page before use (Coverity).
      odbccp32: Don't print *pcbPathOut as it can be NULL (Coverity).
      ntdll/tests: Use GetModuleHandle and skip.
      user32/tests: Don't run unicode tests if not supported.
      advapi32/tests: Make sure NT4 and W2K tests don't fail.
      setupapi/tests: Run tests on win98 again.
      advapi32/tests: Use skip when OpenSCManagerA is not implemented.
      advapi32/tests: Fix RegQueryValueExA test for win9x and ME.
      advpack/tests: Don't hardcode the windows directory.

Peter Beutner (2):
      dinput: Add missing definition to public header.
      ntdll: Remove one exception test.

Rob Shearman (21):
      urlmon: Fix a reference count leak that would keep the module alive when it shouldn't.
      advpack: Call OleInitialize before registering OCXs, like native does.
      advpack: Stop processing if there was an error registering an OCX.
      ntdll: Pass the correct value to NtClose in the tests.
      msi: Don't wait on closed handles in ACTION_FinishCustomActions.
      atl: AddRef the object being returned in AtlInternalQueryInterface,  not "this".
      ole32: Convert the OpenDll list to a standard Wine list.
      ole32: Move the in-process module loading to COMPOBJ_DllList_Add.
      ole32: Move the handling of loading a dll and getting an in-process object from it to an apartment-specific function.
      ole32: Add a test that shows CoFreeUnusedLibraries only frees unused libraries from the current apartment.
      ole32: Cache the address for the library's DllGetClassObject and DllCanUnloadNow in the OpenDll list entry.
      ole32: Keep a list of the loaded dlls for each apartment.
      ole32: In 16-bit OLE, LPOLESTR uses multibyte, not Unicode characters so make LoadTypeLib16 take an LPSTR instead of LPOLESTR.
      ole32: Add tests for drag and drop functions.
      ole32: Check for COM not being initialised and an invalid window handle being input to RegisterDragDrop.
      ole32: Check the input hwnd is valid in RevokeDragDrop.
      ole32: Don't release the registered drop targets in OleUninitialize.
      ole32: Move declaration for FileMonikerImpl_DecomposePath from compobj_private.h to moniker.h.
      ole32: Fix a hack which depended on the IID of the interface being marshaled
      shell32: Return Unicode strings from all of the IShellFolder::GetDisplayNameOf functions in not running in Win9x mode.
      msi: Provide UI action data for uncompressed files, not just compressed ones.

Rolf Kalbermatter (4):
      notepad: Implement handling of page setup dialog parameters.
      notepad: Fix a possible rounding error when storing the font point size to the registry.
      notepad: Fix text label.
      notepad: Improve printing considerably.

Stefan Dösinger (10):
      wined3d: Add GL_APPLE_client_storage to our extension list.
      wined3d: Use GL_APPLE_client_storage if available.
      wined3d: Add D3DDEVCAPS3_* to the wined3d caps header.
      wined3d: Add Filtering to IWineD3DSurface::Blt and handle it.
      wined3d: Set WINED3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD caps3 cap.
      wined3d: Index buffer data is unsigned.
      wined3d: Dirtify the shader and declaration states if the bound interface is destroyed.
      d3d9: AddRef the device in IDirect3DVertexDeclaration9::AddRef.
      d3d9: Fix the circular converted vertex declaration reference.
      d3d9: Fix vertex decl test.

Stefan Leichter (1):
      advapi32: Add some tests for RegDeleteTreeA.

Steven Edwards (1):
      winecfg: Add a button for audio test.

Vit Hrachovy (1):
      winecfg: Fix outdated Czech localization.

Vitaliy Margolen (2):
      dinput: Set the event regardless of the queue state.
      ntdll: Take size of the arena from the current pointer before advancing.

--
Alexandre Julliard
julliard@winehq.org
