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

What's new in this release:
  - Many Direct3D fixes and performance improvements.
  - Several new features in the builtin cmd.exe.
  - Improvements to HTML help support.
  - 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.32.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-0.9.32.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.31:

Alessandro Pignotti (1):
      dplay: Directplay should initialize session Guid, with conformance tests.

Alex Arazi (1):
      comctl32: More status bar tests.

Alexander Farber (2):
      cmd: Fixed 3 buffer overflows when fetching environment variables.
      cmd: Support /-Y and COPYCMD environment variable in the "copy" builtin.

Alexander Nicolaysen Sørnes (8):
      wordpad: Make toolbar more like native.
      wordpad: Don't create maximized window.
      wordpad: Add paste support.
      wordpad: Make edit menu more like native.
      wordpad: Add open file dialogue.
      wordpad: Set default font to 'Times New Roman', like native does.
      wordpad: Small cosmetic fixes.
      wordpad: Add text alignment buttons.

Alexandre Julliard (11):
      widl: 'control' is an attribute not a keyword.
      server: Added support for the PM_QS_* flags in PeekMessage.
      cmd: Remove execute permission on source files.
      gdi32: Make DC creation fail if we cannot allocate the visible region.
      advapi32: Avoid slashes and backslashes in user names.
      widl: Add missing '\n' on error message.
      advapi32: Reimplement QueryServiceConfigA on top of QueryServiceConfigW.
      advapi32: Create the service manager registry key if needed.
      cmd: Fix silly local variables indentation that breaks diff -p.
      wine/test: Print the official name of the test in summary.
      makedep: Fixed string comparison against the source tree path

Anatoly Lyutin (2):
      wineconsole: Added range of value for an up-down control.
      wineconsole: Use MAKELPARM instead of MAKELONG.

Andrew Talbot (13):
      mciseq: Constify a variable.
      msadp32.acm: Constify some variables.
      msi: Constify some variables.
      msg711.acm: Constify some variables.
      netapi32: Constify a variable.
      msvfw32: Constify a variable.
      odbc32: Constify some variables.
      serialui: Constify a variable.
      version: Constify a variable.
      version: Constify a variable.
      wineps.drv: Constify some variables.
      wininet: Constify some variables.
      winspool.drv: Eliminate some W-to-A cross calls.

Aric Stewart (11):
      imm32: Implement stubs for ImmGetImeMenuItemsA and ImmGetImeMenuItemsW.
      comctl32: Implement LVM_SETUNICODEFORMAT.
      shell32: IShellLink::GetIDList fix.
      imm32: Implement GSC_RESULTCLAUSE.
      imm32: Corrections to the message ordering for IME input.
      imm32: Properly send WM_IME_NOTIFY using SendMessage.
      gdi32: Allow for loading of multibyte font name replacements.
      gdi32: Select correct replacement from ttc file.
      kernel32: Allow for non base-10 int values in ini file.
      winex11.drv: Make sure keyboard state is up to date before processing GetAsyncKeyState.
      gdi32: Don't fail replacement on no localized family name.

Bang Jun-Young (2):
      README: Fully revise Korean translation.
      notepad: Fully revise Korean translation.

Chris Robinson (10):
      quartz: Stop and free the dsound buffer when needed.
      quartz: Don't use uninitialized memory in ACMWrapper.
      quartz: Check for the proper ID when querying for the IBasicAudio interface.
      quartz: Make sure the splitter has output plugins before trying to render them.
      quartz: Return proper error codes from GraphBuilder_RenderFile.
      quartz: Better handle error conditions when connections fail.
      quartz: Add IMediaPosition interface and stubs.
      quartz: Initialize a pointer to NULL for the case of no enumerated filters.
      quartz: Don't release filters when they connect.
      quartz: Implement IUnknown methods for IMediaPosition.

Christian Costa (1):
      winealsa: Recognize alsa application ports as generic midi ports.

Clinton Stimpson (1):
      user32: Add another test for GetUpdateRect().

Detlef Riekenberg (12):
      regedit: Enable WM_RBUTTONDOWN to set the splitbar.
      localspl: Implement GetTransmissionRetryTimeout for XcvDataPort.
      localspl/tests: Add tests for XcvDataPort_GetTransmissionRetryTimeout.
      localspl: Implement ConfigureLPTPortCommandOK for XcvDataPort.
      localspl/tests: Add tests for XcvDataPort_ConfigureLPTPortCommandOK.
      localspl: Implement GetDefaultCommConfig for XcvDataPort.
      localspl: Implement SetDefaultCommConfig for XcvDataPort.
      kernel32: Display correct parameters in comm traces.
      serialui: Fix return type for drvGetDefaultCommConfig.
      serialui/tests: Add initial tests.
      serialui: Use RS232 as default ProviderSubType.
      kernel32: Remove duplicate code (use serialui instead).

Dmitry Timoshkov (13):
      gdi32: Move get_glyph_indices near its caller test_font_charset.
      msvcrt: Pack the structures on a 8-byte boundary like in PSDK.
      user32: Add a test for DefDlgProc(WM_SETFOCUS), make the test pass under Wine.
      user32: Add traces to the cursor APIs.
      user32: Add a CreateIcon test, make it pass under Wine.
      winex11.drv: Clients should pass only KeyPress events to XmbLookupString.
      gdi32: Avoid a not necessary CreateDC call.
      dlls: Add wing32 dll.
      comdlg32: Synchronize ChooseColor dialog templates with the English one.
      imm32: Simplify ImmInternalSendIMENotify.
      user32: Simplify height calculation.
      winetest: Set correct WINETEST_PLATFORM when running under Wine.
      user32: Fix a test failure when running under Windows 2003.

Eric Pouech (30):
      dbghelp: MiniDumpWriteDump called from exception handler.
      dbghelp: Added helper to define the module's name.
      dbghelp: Added an ANSI copy of the module name (useful for next patches).
      dbghelp: Rewrote the loaded modules enumeration so that Unicode version is the core.
      dbghelp: Make the module info functions ready for the Unicode move.
      dbghelp: Prepare module loading functions to be switched to Unicode module storage.
      dbghelp: .gnu_link support: rewrote helper functions for better later unicodification.
      dbghelp: Now storing module information in Unicode form.
      dbghelp: Implemented FindExecutableImage[W].
      dbghelp: Move PE module loading to Unicode.
      dbghelp: Moved ELF module loading interfaces to Unicode.
      dbghelp: Added module_get_type_by_name in Unicode form and keep the ANSI form for compatibility.
      dbghelp: Implemented SymMatchFileNameW.
      dbghelp: Implemented EnumDirTreeW.
      dbghelp: Implemented SearchTreeForFileW.
      dbghelp: Implemented SymFindFileInPathW.
      dbghelp: Get rid of temporary module_get_type_by_nameA.
      dbghelp: Moved the internals for registered callback to Unicode.
      dbghelp: A few fixes related to Unicode translation.
      winedbg: Some enhancements by using Unicode flavors.
      dbghelp: Now storing module internal info for minidumps in Unicode.
      dbghelp: Make elf_enum_modules a Unicode function.
      dbghelp: Move elf_fetch_file_info to Unicode.
      dbghelp: Now moving the ELF loading code to Unicode.
      dbghelp: Added helper to map a Unicode file.
      dbghelp: Now load the .gnu_debuglink file using Unicode search paths.
      dbghelp: Merge the A/W of elf_map_file into a single one.
      dbghelp: Rewrote the ELF section mapper for better data encapsulation.
      dbghelp: Allow to add an alternate file_map for an ELF file (where to look for its debug information).
      dbghelp: Handle the .gnu_debuglink files with the newly added alternate mechanism.

Fabian Bieler (1):
      user32: Do not call NULL message callback.

Felix Nawothnig (2):
      comctl32: Add listview WM_PAINT message sequence tests.
      comctl32: Update header window in listview WM_PAINT handler.

Francois Gouget (21):
      advapi32: Update win32.api to fix the winapi_check warnings.
      ole32: Better match the PSDK types and fix the winapi_check warnings.
      winapi_check: Update win32.api to fix the winapi_check warnings.
      winapi_check: Fix handling of the 'longlong' arguments.
      winapi: Remove useless 'if (0)' statements.
      winapi: Update and simplify file_skip() to match the current sources.
      winapi_check: Clarify a pair of error messages.
      winapi_check: We no longer have dlls in nested sub-directories.
      winapi_check: gdi32.dll and gdi.exe have some extra sources in subdirectories.
      wininet: Move a bunch of misplaced API documentation.
      wininet/tests: Dynamically load some functions so the test runs on Windows 98.
      wininet/tests: Tell the user which ftp server we're using for the tests so he can try to connect to it manually in case of trouble.
      Assorted spelling fixes.
      wininet/tests: Fix some tests so they succeed on Windows 98.
      wine.inf: Update the timezone information.
      Use the SW_XXX constants when calling ShowWindow().
      wine.inf: Fix the 'Pacific Standard Time' display name to match the CLDR.
      winex11.drv: Catch and report screen resolution change errors.
      user32/tests: Fix the ChangeDisplaySettingsEx() test so it succeeds on NT4.
      ddraw/tests: There is no unnamed union in D3DLIGHT7.
      ddraw/tests: Fix compilation on systems that don't support nameless unions.

H. Verbeet (6):
      d3d9: Free the vertex declaration elements.
      wined3d: Fix matching WINED3DDECLUSAGE_POSITION against WINED3DDECLUSAGE_POSITIONT.
      wined3d: Boolean constants use up only a single uniform each.
      wined3d: Add some hash table code.
      wined3d: Store GLSL programs in a hash table rather than a linked list.
      wined3d: Store multiple constant indices per list entry.

Hans Leidekker (12):
      kernel32: Add a stub implementation for FindFirstVolumeMountPoint{A, W}.
      setupapi: Add stub implementations for SetupDiGetINFClass and SetupSetSourceList.
      usp10: Implement ScriptGetLogicalWidths.
      snmpapi: Add a missing memcpy.
      netapi32: Add a stub implementation for NetShareDel. Improve the stub for NetUserGetLocalGroups.
      msxml3: Stub out some more getters and setters of IXMLDOMDocument.
      wininet: Don't discard the extra info part of a URL in InternetOpenUrl.
      userenv: Implement ExpandEnvironmentStringsForUser{A,W}.
      setupapi: Implement SetupCopyOEMInf{A,W}.
      setupapi: Always return an empty list from SetupDiGetClassDevs.
      ws2_32: Handle NULL argument in inet_addr.
      gdi32: Implement GetFontUnicodeRanges.

Huw Davies (6):
      oleaut32: Fix a TypeAttr leak.
      msxml3: Convert the domdoc object to use the IXMLDOMDocument2 interface.
      msxml3: Register schema cache classes.
      msxml3: Add a schema cache object.
      msxml3: Implement {get,putref}_schemas.
      wineps.drv: Many MacOSX generated ppd files don't include a *ColorDevice line. Treat these as if they were colour.

Jacek Caban (42):
      shdocvw: Fix module ref counting.
      itss: Fix opening streams with back slashes.
      itss: Fix handling URLs with back slashes and escaped URLs.
      itss: Added test of paths with back slashes and escaped URLs.
      itss: Added IInternetProtocolInfo interface stub implementation.
      itss: Added ParseUrl implementation.
      itss: Added CombineUrl implementation.
      urlmon: Check if protocol object implements IInternetProtocolInfo interface.
      hhctrl.ocx: Merge chm.h and webbrowser.h to hhctrl.h.
      hhctrl.ocx: Declare strdupAtoW in hhctrl.h and use it instead of duplicated *ANSIToUnicode.
      hhctrl.ocx: Move DllMain to hhctrl.c.
      hhctrl.ocx: Use wrappers of memory allocation functions.
      hhctrl.ocx: Rewrite reading strings from #STRINGS section.
      hhctrl.ocx: Use hhctrl.ocx's HINSTANCE.
      hhctrl.ocx: Move HH_OpenCHM implementation to HH_Open.
      hhctrl.ocx: Handle memory allocation in OpenCHM and CloseCHM.
      hhctrl.ocx: Added beginning #SYSTEM parsing code.
      hhctrl.ocx: Move hhctrl_hinstance to hhctrl.h.
      hhctrl.ocx: Store whole HH_WINTYPEW struct in HHInfo, not its pointer.
      hhctrl.ocx: Merge WBInfo to HHInfo.
      hhctrl.ocx: Fixed releasing web browser object.
      hhctrl.ocx: Move more code from doWinMain.
      hhctrl.ocx: Move doWinMain to hhctrl.c.
      hhctrl.ocx: Remove redundant casts.
      hhctrl.ocx: Added DllGetClassObject stub implementation.
      hhctrl.ocx: Clean up Help_WndProc.
      hhctrl.ocx: Release HHInfo on WM_CLOSE message.
      hhctrl.ocx: Don't use doWinMain in HtmlHelpW.
      hhctrl.ocx: Call PostQuitMessage only in hh.exe process.
      hhctrl.ocx: Use HtmlHelpA in doWinMain.
      hhctrl.ocx: Added HH_HELP_CONTEXT implementation.
      hhctrl.ocx: Resize tab control in Child's WM_SIZE handler.
      hhctrl.ocx: Added code for handling tabs.
      hhctrl.ocx: Added content tab window.
      hhctrl.ocx: Added hhc parser.
      hhctrl.ocx: Fill content tree.
      hhctrl.ocx: Added handling of topic selection.
      shdocvw: Remove no longer used resources.
      hhctrl.ocx: Store full chm paths to solve problems with relative paths.
      urlmon: Fix FindMimeFromData tests on IE7.
      mshtml: Always read data in OnDataAvailable.
      mshtml: Added more tests.

James Hawkins (6):
      msi: Cleanup the dialog event subscriptions when destroying the dialog.
      msi: Free the custom action data after the thread function executes.
      msi: Check for a NULL text entry, as it can be blank in the VolumeCostList control.
      msi: Add tests for using markers in SELECT clauses.
      msi: Overwrite an existing read-only file when copying the install file.
      comctl32: Add message ids to allow multi-window test sequences.

Jan Zerebecki (6):
      cmd: Remove redundant const.
      winex11.drv: Set the refresh rate for NoRes to 60 instead of 0.
      wined3d: Make CreateFakeGLContext thread safe.
      wined3d: replace #ifdef with if() for DEBUG_SINGLE_MODE.
      comctl32: Add DebugInfo to critical section.
      winex11.drv: Change virtual desktop refresh rate from 0 to 60.

Jason Edmeades (24):
      cmd.exe: Add "if defined ..." support.
      cmd.exe: Support exit [/b] returncode.
      cmd.exe: Add support for %*.
      cmd.exe: Support :EOF in goto labels.
      cmd.exe: Add ~ modifiers for %0-9.
      cmd.exe: Support PATH= as a valid command.
      cmd.exe: Support return code if fail to launch program.
      cmd.exe: Add support for %ERRORLEVEL% in both batch and cmd line.
      cmd.exe: Add support for env vars DATE, TIME, CD.
      cmd.exe: Add pushd and popd.
      cmd.exe: Add support for call :label and goto :label.
      cmd.exe: Unify parsing and expansion.
      cmd.exe: Add %random% special name support.
      cmd.exe: Add special SET modifiers.
      cmd.exe: Allow special named env vars to be modified.
      cmd.exe: Locate programs more correctly.
      cmd.exe: Add rd /s support.
      cmd.exe: Make 'set t' show all vars starting with 't'.
      cmd.exe: Add prompt for rd /s.
      cmd.exe: Prompt during del *.* and del *.
      cmd.exe: Support del /p.
      cmd.exe: Support del /f.
      cmd.exe: Support del /a[:].
      cmd.exe: Fix parameter parsing returns.

Jeff Latimer (4):
      ntdll: Framework for NtCreateMailslotFile tests.
      ntdll: Check for passing a NULL handle to NtCreateMailslotFile and add a test.
      ntdll: Set default timeout in NtCreateMailslotFile if parameter is NULL.
      ntdll: Test object attributes in NtCreateMailslotFile.

Kanit Therdsteerasukdi (1):
      comctl32: datetime: Initial tests for date and time picker.

Ken Thomases (4):
      winex11.drv: Pass correct coords into X11DRV_InternalFloodFill.
      winspool.drv: Use exec() and _exit() instead of system() and exit().
      gdi32: Use exec() and _exit() instead of system() and exit().
      wininet: Use "ping -c 1" instead of "ping -w 1" for InternetCheckConnection.

Kovács András (1):
      winuser.h: Declare some raw input related structures.

Lei Zhang (6):
      comctl32: Move up-down msg seq test functions into msg.c.
      regedit: Correctly parse key name containing ']'.
      regedit: Updated English resources to remove shortcut conflicts.
      regedit: Removed dead code from regproc.c.
      regedit: Allow entering - for a key in a .reg file to delete that key.
      regedit: Correctly parse key name containing ']' when deleting/exporting.

Maarten Lankhorst (4):
      dsound: Add some comments from earlier patch that makes code a little better understandable.
      dsound: Use an inline for ring buffer pointer difference calculation.
      winealsa: Fix typo.
      winealsa: Remove usage of uninitialised variable.

Marcus Meissner (10):
      winex11.drv: Small fixes.
      winedump: Added a missing free().
      comctl32: Fixed new header test.
      dbghelp: Return when not finding the name.
      shell32/tests: Fixed potential overflow.
      shlwapi: Fix size passed to MultiByteToWideChar.
      configure: Generate stand alone AC_CONFIG_FILES() lines.
      uxtheme: Fixed wrong index in draw.c.
      mlang/tests: Protect from 1 byte static buffer overflow.
      netapi32: Fixed array overflow (spotted by Coverity).

Mikołaj Zalewski (10):
      comctl32: rebar: Rewrite the layout code.
      comctl32: rebar: Test and fix the WM_SIZE handler and REBAR_ForceResize.
      comctl32: rebar: Store the coordinates of infoPtr->calcSize swapped for CCS_VERT.
      comctl32: rebar: Store the oldSize as a local variable.
      comctl32: listview: Set the style in WM_CREATE.
      comctl32: rebar: Test the RBN_HEIGHTCHANGE notify and do some fixes.
      comctl32: rebar: WM_SETFONT should send a RBN_HEIGHTCHANGE if necessary.
      comctl32: rebar: Remove the not needed BANDS_NEED_LAYOUT flag.
      comctl32: rebar tests: Support different window border width.
      comctl32: header tests: Support different window border width.

Misha Koshelev (8):
      oleview: Respect size of array ITypeInfo_GetNames returns.
      oleview: Account for unnamed right hand side parameter of propput.
      oleview: Report default values.
      oleview: Properly support enumerations.
      oleview: Add forgotten newlines to forward declarations.
      oleview: Make optional flag "optional" not "opt.".
      oleview: Add safearray type.
      oleview: Mimick native treeview display of enumerations.

Paul Vriens (7):
      wininet/ftp.c: Fix some returned error codes.
      wininet/ftp.c: Fix some returned error codes.
      wininet/ftp.c: Fix some typos.
      wininet/tests: Add a few more tests.
      wininet/tests: Add another test.
      wininet/ftp: Let CreateFile deal with last error.
      advapi32/tests: Make use of skip.

Peter Oberndorfer (2):
      ntdll/tests: Add a debugger around the exceptions.
      ntdll: Extend debugger tests.

Pierre d'Herbemont (1):
      winex11.drv: Check the valid rects after the set_window_pos wineserver call.

Rob Shearman (25):
      include: Add macro for ListView_GetOrigin to commctrl.h.
      comctl32: Don't free user32 objects with a gdi32 function in imagelist test.
      ole32: Make an error message more useful by printing the returned error code.
      kernel32: Don't run the CreateRemoteThread tests if the child process isn't mapped at the same address as the parent process.
      oleaut32: Fix IFont::AddRefHFont and IFont::ReleaseRefHFont.
      oleaut32: Re-arrange the position of functions and vtables in olefont.c to avoid forward-declarations.
      rpcrt4: Add documentation for the I_Rpc* RPC message functions.
      rpcrt4: Fix a memory leak in I_RpcSendReceive caused by I_RpcReceive overwriting pMsg->Buffer.
      server: Check object's security when creating handles.
      server: Add get_token_impersonation_level server call for retrieving the impersonation level from a token.
      dbghelp: ImageName is usually blank, so print LoadedImageName in elf_load_debug_info_map.
      wininet: Fix the case of partial SSL reads from the peek buffer.
      kernel32: Fix an off-by-one error in GetComputerNameExA/W.
      netapi32: Add a stub for NetUserChangePassword.
      kernel32: Fix crash in dns_gethostbyname.
      ole32: Add tests for default handler creation and handler marshaling.
      ole32: Use IsEqualIID instead of memcmp in HGLOBALLockBytesImpl_QueryInterface.
      libwine: Eliminate duplicate function implementations in string.c
      ole32: The stream returned by StgStreamImpl_Clone should have one reference, so call AddRef before returning.
      widl: Print EXPR_NUM expresssions as unsigned to avoid printing an extra negative sign when lval is large.
      user32: Send WM_GETTEXT to get the window caption when drawing the nonclient caption bar.
      rpcrt4: Set TCP_NODELAY on the socket for the ncacn_ip_tcp transport to reduce latency.
      secur32: SealMessage and UnsealMessage are aliases of EncryptMessage and DecryptMessage respectively.
      schannel: Add new schannel dll that mostly forwards to secur32.
      rpcrt4: Use IPPROTO_TCP for SOL_TCP if SOL_TCP isn't defined.

Roderick Colenbrander (1):
      opengl32: Add new extensions.

Rok Mandeljc (1):
      include/d3d9types.h: Remove Size from D3DVOLUME_DESC.

Samuel Lidén Borell (1):
      comctl32: Use mask value in COMBOEX_GetItemA too.

Stefan Dösinger (44):
      wined3d: Remove an outdated TODO comment.
      wined3d: Visual test framework.
      wined3d: Lighting is calculated for vertices without normals.
      ddraw: SetClipper refcounting fix.
      ddraw: Fix a leak in a test.
      ddraw: Creating surfaces with old interfaces doesn't addref.
      ddraw: Test and fix IDirectDrawSurfaceX::GetDDInterface.
      wined3d: Pretend to support event queries.
      wined3d: Only scream about unsupported vertex blending when it is used.
      wined3d: Activate a different context if the active render target is destroyed.
      kernel32: Add a CheckRemoteDebuggerPresent stub.
      wined3d: Check volume texture creation errors.
      wined3d/d3d8: Move todo about sw vp usage to d3d8.
      wined3d: Remove stream flags from GetStreamSource.
      wined3d: Fix d3d8/9 style palettes.
      wined3d: Remove IWineD3DDevice::EnumDisplayModes.
      wined3d: Misc comment updates.
      wined3d: No bounds checking is done on sampler / texture numbers.
      wined3d: Move the scissor rectangle to the state table.
      wined3d: Use VBOs for index buffers.
      wined3d: With FVFs only one stream is used.
      wined3d: Do not print the fixed / unfixed vertices warning with shaders.
      wined3d: Light parameter fixes.
      wined3d: Floating point shader constant setting.
      wined3d: IWineD3DDevice::Clear fixes.
      wined3d: Clean up sampler usage in UpdateSurface.
      wined3d: Index buffer fixes.
      wined3d: Use CopyRect / EqualRect.
      wined3d: Remove dead code from drawprim.c.
      wined3d: Do not use glMapBuffer in ProcessVertices.
      wined3d: Make sure volumes have memory allocated.
      wined3d: Index buffer creation adjustments.
      winex11.drv: Ignore depth mismatch when using a virtual desktop.
      wined3d: More Clear fixes.
      wined3d: Support for using auxilliary buffers for offscreen rendering.
      wined3d: Use GL_STATIC_DRAW_ARB instead of GL_STATIC_DRAW.
      wined3d: Leave the fog state handler after disabling fog.
      wined3d: Move clip planes to the state table.
      wined3d: Clip planes with vertex shaders.
      wined3d: Prepare only fixed function samplers for blit.
      wined3d: Use the source surface's texture for writing the backup.
      wined3d: Add GL_NV_fence defines and functions.
      wined3d: Support event queries using GL_NV_fence.
      wined3d: Support GL_APPLE_fence for event queries.

Thomas Weidenmueller (1):
      comctl32: Implement LM_GETIDEALSIZE for the syslink control.

Tomas Carnecky (1):
      winex11.drv: Spring cleanup in X11DRV_setup_opengl_visual, and added one new visual config (with aux buffers).

Vitaliy Margolen (4):
      wineshelllink: Fix menu entries with double spaces in their names.
      imagehlp: Forward already implemented functions to dbghelp.
      wined3d: Use application provided fog range when fog is enabled.
      ntdll: More error checking. Properly handle NULL ACLs.

Vitaly Lipatov (1):
      winspool: Constify some parameters in some functions.

--
Alexandre Julliard
julliard@winehq.org
