The Wine development release 1.1.12 is now available.

What's new in this release (see below for details):
  - Some simple 64-bit apps should now run.
  - Support for subpixel font rendering.
  - 64-bit code generation in the IDL compiler.
  - New version of the Gecko engine.
  - Various bug fixes.

The source is available from the following locations:

  http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.1.12.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-1.1.12.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
repository. Check http://www.winehq.org/site/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.1.12:

   3276  warhammer 40 k failed to initialize video card - Initialisation of Graphics driver fails in W40K: Dawn of War.
   3577  Wine suffers a big slow down after renaming an item
   5048  mswsock:TransmitFile not implemented
   6275  Adobe Audition 2.0 installation program fails to start, needs IXMLDOMDocument2
   7294  Aura aborts silently on startup
   7814  EVE Online mini maps in agent missions/browser are corrupted
   7815  Photomatix 2.4 crashes when copying/pasting license information
   8383  Black & White 2 quirks and crash
   8442  configure finds sysctl.h but it does not compile on OpenBSD 4.1
   8946  EA's FIFA Games only show a black screen
   9511  Wine uses wrong icon on desktop for installed application
   9927  qq installer crashes near end
  10489  Winemaker fails to process directories with '+' in them.
  10594  EVE Online has several rendering/stability problems
  11001  Flanker 2.0 Demo: stack overflow after mission loads
  11142  Roland XV-Editor program crashes when setting midi ports
  11182  Unimplemented function winmm.midiDisconnect
  11565  Cypress PSoC Designer installer hang/crash
  11755  MediaMonkey 3.0.2 Error initializing Media Player
  12179  MSN Messenger 7.0 crashes while starting
  12208  TsRemux v0.20 crashes when launching (needs gdiplus.GetFontHeightGivenDPI)
  12226  DrawTextA/W + DT_CALCRECT + Empty String returns 0
  12261  Sonic Heroes Demo's shadows are messed up
  12299  Commandos 3 crashes when selecting soldier
  12339  Yahoo! Messenger 8.1 crashes in new user registration wizard
  12344  eISLP -HTML rendering produces strange characters
  12355  Utopia Angel tool crashes in statup and is unstable
  12387  Civilization 4 fails to install
  12477  NBC Direct installer requires installation of Windows Installer 3.1 redist
  12604  SimGolf v1.03 exits when starting a new game
  12638  Photodex ProShowGold crashes on service startup
  12753  CIRCAD 5.3b: does not start
  13069  EdWord needs oleacc.dll.AccessibleObjectFromPoint
  13219  ProntoEdit NG 2.1.8 Emulator;  Freezes on launch and beeps continuously
  13226  Fury: Unable to patch, because of buggy Window/Buttons/...
  13392  Game Maker games have screen corruptions that renders them unplayable
  13452  Typing anything in ePSXe freezes the application
  13580  ARX Fatalis crashes
  13726  handycafe.com installer unpacker hangs
  13818  Yahoo! Messenger 9.0 beta installer crashes in ntdll when changing window focus
  13894  Kyodai Mahjongg 2006 crashes, when started in 3D mode
  13906  Guild Wars crashes on startup, before rendering scene
  13911  Unhandled page fault on prefix creation on osx 10.5
  13943  Active Worlds: crashes on startup
  13977  CallWave: Crash on install
  13998  other programs cant use alsa
  14021  CallWave does not work
  14042  Midnight Club II does not run with sound enabled
  14044  Google SketchUp fails to run
  14050  Forces Of Corruption : Empty launcher, can't load game
  14063  Unimplemented function gdiplus.dll.GdipGetPropertyCount and gdiplus.dll.GdipGetPropertyIdList
  14088  Gvox Encore: no sound
  14112  PhotoAcute: Does not open browser links
  14257  UltimateBet: Installs, but does nothing when run
  14289  winhelp: crash with ME_InsertTableCellFromCursor: Assertion `run->member.run.pCell->next' failed.
  14508  Music doesn't work in Hears of Iron 2: Armageddon
  14777  T-Online Browser installer fails with unhandled exception on first try
  15163  Installation of MP3Gain hangs
  15652  Adobe Photoshop CS4 installer fails
  15768  lego star wars II crashes with 2 joysticks plugged in
  16165  Warhammer Online refuses to patch with builtin winhttp.dll
  16293  Activeworlds client 4.2 crashes in IDirectXFileEnumObjectImpl_Create
  16344  cmd.exe builtin time prints wrong message : current date instead of current time
  16421  EVE Online fails to start with hardware vertex shaders
  16544  winmm: mixerOpen(): when CALLBACK_WINDOW flag given, NULL Callback is also valid
  16547  Pampered Chef Plus installer doesn't recognize windows version
  16554  FeedDemon startup dialog is incomplete
  16558  Google Sketchup 7 "Tools / Interact" cursor wrapped
  16561  warning: implicit declaration of function '_mkdir'
  16587  Warhammer:  Battle March - Copy protection (?) prevents loading
  16591  Sword of the Stars crashes after intro movies, before main menu
  16603  DllRegisterServer not implemented in itircl.dll
  16605  riched20 regression: FullTiltPoker client crashes when leaving game window
  16610  libport compilation fails because widl isn't there
  16611  Regression: WoW crashes on startup in git
  16646  Digital download, World of Goo 1.2 crashes wine
  16659  configure doesn't pick up libpng on OpenBSD unless -lz is given
  16665  build broken in dlls/winhttp/cookie.c on OpenBSD 4.4

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

Changes since 1.1.11:

Aleksey Bragin (1):
      ntdll: Fix memory corruption in RtlSetBits.

Alexandre Julliard (73):
      configure: Better check for the broken mkdir on Windows.
      libport: Add a stub replacement for symlink().
      wininet: Store file time as a SYSTEMTIME instead of a Unix struct tm.
      shell32: Use Win32 functions instead of Unix ones to retrieve the current time.
      winedevice: Make sure that all dependencies of the driver are relocated too.
      libport: Replacement for poll().
      secur32: Check for lack of fork() support.
      ws2_32: Added implementation for inet_ntop.
      rpcrt4: Disable TCP/IP connection support if we don't have socketpair.
      shell32: Use RtlRandom instead of the non-portable rand_r.
      include: Add the needed dllimport attribute to the RtlUnwind declaration.
      gdi32: Fix the build without Freetype LCD support.
      libport: Avoid including winsock2.h.
      user32: Fix SPI_SETMOUSESPEED handling, the parameter is not a pointer.
      server: Store data for hardware messages in the message extra data.
      server: Make lparam_t always 64-bit.
      server: Store the async handle inside the async_data_t structure.
      server: Use the same field for process and thread handle in the queue_apc request.
      server: Get rid of the unused count parameter in fd_queue_async().
      widl: Move determination of the exact type of structures and array to the code generation phase.
      widl: Store the size of a pointer in a variable instead of hardcoding the value of the host compiler.
      widl: Add --win32/--win64 options to select the type of code generated.
      widl: Add support for generating 32-bit and/or 64-bit code for proxies/clients/servers.
      configure: When cross-compiling, propagate the target specification to winebuild.
      configure: Improve check for libresolv.
      winetest: Link against the Wine import libraries for the dist version too.
      kernel32: Move AllocMappedBuffer/FreeMappedBuffer to thunk.c.
      include: Move the DEFINE_REGS_ENTRYPOINT macros to the dlls that use it.
      winebuild: Generate the __wine_call_from_32_regs function along with the 16-bit kernel routines.
      winebuild: Fix delay load code to preserve stack alignment and save the correct registers.
      winebuild: Generate relay debugging thunks for x86_64.
      ntdll: Make the relay debug code more generic to allow supporting 64-bit platforms.
      ntdll: Add support for relay debugging on x86_64.
      libport: Check for ENOTSUP being defined before using it.
      ntdll: Make sure we don't return from a stub exception.
      server: Add a module_handle_t type to represent client-side module handles.
      server: Make module handles always 64-bit.
      server: Store module names as client_ptr_t instead of void pointers.
      server: Store debugging output strings as client_ptr_t instead of void pointers.
      server: Make the select cookie a client_ptr_t instead of a void pointer.
      server: Make the class opaque data a client_ptr_t instead of a void pointer.
      server: Make the device opaque data a client_ptr_t instead of a void pointer.
      server: Make hook procedures client_ptr_t instead of void pointers.
      server: Make timer callback function and argument client_ptr_t instead of void pointers.
      opengl32: Define an enum for extensions to make diffs smaller when adding new extensions.
      server: Make the message callback function a client_ptr_t instead of a void pointer.
      server: Make the address argument for read/write_process_memory a client_ptr_t.
      server: Make the mapping base address a client_ptr_t instead of a void pointer.
      server: Make the address parameters in inter-process virtual memory calls client_ptr_t.
      server: Make padding explicit in the wake_up_reply structure.
      server: Make a couple of fields smaller in the apc_call_t/apc_result_t structures.
      server: Make the arguments for CreateRemoteThread client_ptr_t instead of void pointers.
      server: Explicitly specify when an ioctl call needs to be blocking.
      server: Specify the user APC to call only once the system APC has executed.
      server: Make the various async I/O parameters client_ptr_t instead of void pointers.
      server: Send the version with the initial fd so that it can be checked before sending the first request.
      server: Move ldt_copy to the init_process_done request and make it a client_ptr_t.
      server: Make thread entry points client_ptr_t instead of void pointers.
      server: Make TEB and PEB client_ptr_t instead of void pointers.
      server: Make atom_t an unsigned int to avoid padding issues.
      server: Reorganize some requests to avoid padding, and make remaining padding explicit.
      cmd: Don't include time.h before winsock.h to avoid conflicts.
      user32: Convert wvsprintfA/W to use an MS ABI vararg list for x86_64.
      shlwapi: Convert wvnsprintfA/W to use an MS ABI vararg list for x86_64.
      shlwapi: Convert SHPackDispParams to use an MS ABI vararg list for x86_64.
      wldap32: Convert ber_printf to use an MS ABI vararg list for x86_64.
      kernel32: Convert FormatMessageA/W to use an MS ABI vararg list for x86_64.
      ntdll: Use INT_MAX for the semaphore count since LONG_MAX won't work on 64-bit.
      include: Don't pack shellapi.h on 64-bit.
      include: Fix a couple of winsock structures for 64-bit.
      kernel32/tests: Use the correct value for invalid heap sizes on 64-bit.
      winecoreaudio: Fix a redefinition warning.
      Update copyright info for 2009.

Alistair Leslie-Hughes (1):
      msxml3: Use xmlNodeGetContent to get text data.

Allan Tong (1):
      wined3d: Add mapping for MOV instructions in shader_hw_map2gl.

Anders Jonsson (2):
      mciseq: Fix typo.
      mciavi32: Fix typo.

Andrew Fenn (4):
      xinput: Added prototypes to header file.
      xinput: Added stub for XInputEnable.
      xinput1_3: Added stub XInputSetState.
      xinput1_3: Added tests for XInputSetState.

Andrew Nguyen (6):
      winmm/tests: Fix a mismatched failure message.
      winmm/tests: Refactor the mixerOpen and mixerClose tests and add a few additional test cases.
      winmm: mixerOpen should return success with NULL dwCallback and CALLBACK_WINDOW flag.
      cfgmgr32: Forward and stub CM_Connect_MachineA.
      setupapi: Stub the SetupDiDestroyClassImageList function.
      cfgmgr32: Forward and stub CM_Create_DevNodeA/W.

Andrew Riedi (3):
      itircl: Fix documentation typo.
      winex11.drv: Calculate the cursor bitmap offsets in a way consistent with user32.
      winex11: Factor out the 'alpha_zero' test and use it for legacy cursor support.

Andrew Talbot (20):
      dmime: Remove unused Wine debug channel.
      dmstyle: Remove unused Wine debug channel.
      sxs: Remove unused Wine debug channel.
      winealsa.drv: Do nothing if HAVE_ALSA is not defined.
      winecoreaudio.drv: Do nothing if HAVE_AUDIOUNIT_AUDIOUNIT_H is not defined.
      riched20: Remove unused Wine debug channel.
      mshtml: Remove superfluous semicolons.
      msvfw32: Remove superfluous semicolon.
      winex11.drv: Superfluous semicolons fix.
      ddraw: Remove a superfluous semicolon.
      wineoss: Remove a superfluous semicolon.
      wined3d: Remove superfluous semicolons.
      ole32: Superfluous semicolons fix.
      ntdll: Remove a superfluous semicolon.
      msvcrt: Remove a superfluous semicolon.
      advapi32: Remove unused function.
      comdlg32: Unreachable code fix.
      cabinet: Declare a function static.
      comctl32: Declare some variables static.
      comdlg32: Declare a function static.

Andrey Turkin (1):
      advapi32: Implement CredReadDomainCredentials stub and tests.

Austin English (5):
      itircl: Add stub functions.
      configure: Fix sysctl.h check for OpenBSD.
      configure: Fix libpng detection on OpenBSD.
      winhttp: Fix a missing include for OpenBSD.
      kernel32/tests: Fix compile on powerpc.

ByeongSik Jeon (1):
      gdi32, winex11: Add support for subpixel font rendering.

Byeongsik Jeon (4):
      gdi32: Don't truncate the added pixels with FT_LCD_FILTER_DEFAULT.
      gdi32: Restore the trimmed bitmap image by FT_Render_Glyph().
      user32: Implementation the SPI_{GET|SET}FONTSMOOTHING* actions.
      winex11.drv: Add the basic antialias type decision code.

Chris Robinson (1):
      d3d9: Use the correct size for D3DFVF_XYZW.

Christian Costa (29):
      wineoss.drv: Initialize correctly the header before adding it to the queue.
      winecoreaudio.drv: Initialize correctly the header before adding it to the queue.
      dmusic: Improve IDirectMusicPortImpl_DownloadInstrument stub.
      dmusic: Add support for IID_IDirectMusicDownloadedInstrument8 query in IDirectMusicDownloadedInstrumentImpl_QueryInterface.
      dmusic: Fix IDirectMusicPortImpl_QueryInterface.
      dmusic: Improve IDirectMusicPortDownloadImpl_GetBuffer stub.
      dmusic: Implement IDirectMusic8Impl_CreateMusicBuffer.
      d3dxof: Simplify error handling in IDirectXFileEnumObjectImpl_GetNextDataObject.
      d3dxof: Allocate subobjects at object creation time.
      d3dxof: Release properly all allocated resources.
      d3dxof: Make FileEnumObject keep references to top level objects. Add corresponding test.
      d3dxof: Release allocated xobjects.
      d3dxof: Small cleanup.
      ddraw: Display fixme only once in IDirect3DVertexBufferImpl_Optimize.
      d3dxof: Initialize object member names correctly.
      d3dxof: Template names are case insensitive.
      ntoskrnl.exe: Add stub for KeInitializeEvent.
      ntoskrnl.exe: Fix some FIXMEs.
      ntoskrnl.exe: Add stub for PsSetCreateThreadNotifyRoutine.
      quartz: Fix some traces and fixmes.
      winedos: Document CMOS image bytes.
      winedos: Compute CMOS image checksum automatically.
      winedos: Increase extended memory from 7MB to 15MB.
      quartz: Remove unused IMemInputPin vtables.
      cmd.exe: Use WCMD_CURRENTTIME resource to show the time.
      d3dxof: Move X files parsing into a separate file.
      ddraw: Display fixme only once in IDirectDrawImpl_WaitForVerticalBlank.
      winmm: Check param in joyConfigChanged.
      mciavi: Implement MCI_DGV_PUT_WINDOW in MCIAVI_mciPut.

Damjan Jovanovic (1):
      winemenubuilder: Improve icon generation.

Dan Kegel (2):
      tools: Remove bashisms from wineinstall.
      winmm: Don't crash on PlaySound(... SND_ALIAS_ID).

Detlef Riekenberg (3):
      shdocvw/tests: Fix a test on IE 5.x.
      shdocvw: Implement ParseURLFromOutsideSource.
      shdocvw/tests: Add tests for ParseURLFromOutsideSource.

Dylan Smith (1):
      richedit: Prevented a dereference of a freed pointer.

Francois Gouget (13):
      kernel32: Fix a comment in LocalInit16().
      shell32/tests: Add a trailing '\n' to ok() calls.
      wnaspi32: Add a trailing '\n' to a Wine trace.
      advapi32/tests: Add a trailing '\n' to ok() calls.
      winecoreaudio.drv: Remove an unused debug channel (midi).
      winedbg: Remove an unused debug channel (winedbg).
      browseui/tests: Make some functions static.
      configure: Fix the linux/ipx.h check.
      Assorted spelling fixes.
      cmd: Reorder some functions to avoid forward declarations.
      cmd: Reorder some functions to avoid forward declarations.
      winemine: Remove AboutDlgProc() as it is unused.
      winemine: Reorder some functions to avoid forward declarations.

Frans Kool (1):
      crypt32: Updated Dutch translations.

Ge van Geldorp (1):
      kernel32/tests: Use shared Windows directory on TS to find regedit.exe.

Gerald Pfeifer (6):
      comctl32: Shed off some unused parameters.
      comctl32: Simplify DATETIME_Char.
      comctl32: Simplify COMBOEX_Command.
      comctl32: Simplify NATIVEFONT_Create.
      wpp: Add missing #include <ctype.h>.
      comctl32: Simplify fifteen functions by removing unused parameters.

Hans Leidekker (11):
      pidgen: Fix typo.
      include/mscat.h: Add a few declarations.
      wintrust: Record full catalog filename in catalog info structure, not just the basename.
      wintrust: Implement CryptCATAdminEnumCatalogFromHash.
      wintrust: Implement CryptCATOpen and CryptCATClose.
      wintrust: Test find handles against INVALID_HANDLE_VALUE.
      wintrust: Implement CryptCATEnumerateMember.
      wintrust: Implement CryptCATAdminResolveCatalogPath and CryptCATCatalogInfoFromContext.
      wintrust: Add stub implementations of CryptCATEnumerateAttr, CryptCATEnumerateCatAttr, CryptCATGetAttrInfo, CryptCATGetCatAttrInfo and CryptCATGetMemberInfo.
      wintrust: Add some tests.
      wintrust: Fix message handle type.

Henri Verbeet (28):
      d3d9: Don't crash in GetFVF() if a NULL vertex declaration is set.
      secur32: Try an EMPTY buffer if we can't find one of type TOKEN.
      secur32: Dump the buffer descs in schan_InitializeSecurityContextW().
      secur32: Add stubs for schannel QueryContextAttributesA() and QueryContextAttributesW().
      secur32: Handle SECPKG_ATTR_STREAM_SIZES in schan_QueryContextAttributesW().
      secur32: Implement schannel EncryptMessage().
      secur32: Implement schannel DecryptMessage().
      d3d9: Release the vertex declaration once we're done with it.
      d3d: Make sure the device is properly released when exiting the tests.
      wined3d: The initial value for D3DRS_POINTSIZE_MAX depends on the pointsize limit.
      d3d9: Use a HAL device for the stateblock tests.
      wined3d: D3DRS_POINTSIZE_MIN is initially 0.0f for d3d8.
      d3d8: Port the d3d9 stateblock tests to d3d8.
      wined3d: Get rid of the glname field in struct SHADER_OPCODE.
      d3d9: Use separate codepaths for failure and NULL return values in GetVertexShader() / GetPixelShader().
      d3d: Correct some debug levels.
      wined3d: Handle D3DFVF_XYZW in ConvertFvfToDeclaration().
      configure: Check for gnutls_mac_get_key_size() instead of gnutls_transport_set_errno().
      wined3d: Make use_vs() and use_ps() work on a stateblock instead of a device.
      wined3d: Remove an unused field from the device.
      wined3d: Convert some BOOLs to bitfields in struct WineD3DContext.
      wined3d: Convert some BOOLs to bitfields in struct IWineD3DDeviceImpl.
      wined3d: Convert some BOOLs to bitfields in struct SAVEDSTATES.
      wined3d: Use slightly nicer loops in device_map_fixed_function_samplers().
      wined3d: Fix a few format specifiers in IWineD3DStateBlockImpl_Capture().
      wined3d: Fix the value of HIGHEST_TRANSFORMSTATE.
      wined3d: Convert streamSource and streamFreq to bitmaps in struct SAVEDSTATES.
      wined3d: Convert clipplane to a bitmap in struct SAVEDSTATES.

Hervé Chanal (2):
      shell32: A nicer icon for "folder".
      shell32: A nicer icon for "open folder".

Huw Davies (1):
      comdlg32: Use [G|S]etPropW instead of [G|S]etPropA.

Hwang YunSong(황윤성) (1):
      winecfg: Updated Korean resource.

Jacek Caban (11):
      mshtml: Pass window to GetCommandState and DoCommand.
      mshtml: Release owner in nsChannel destructor.
      mshtml: Move preferences settings to separated function.
      cabinet: Make sure that parent directories exist when creating a new directory.
      mshtml: Wine Gecko 0.9.0 release.
      mshtml: Remove no longer needed set_profile.
      mshtml: Remove no longer used node_insert_listener.
      mshtml: Move handle_insert_comment to mutation.c.
      mshtml: Set XPCOM_DEBUG_BREAK to 'warn' before loading Gecko.
      mshtml: Added gecko debug channel to control Gecko logging.
      mshtml.idl: Added HTMLStyle coclass declaration.

James Hawkins (1):
      advapi32: Request the owner and group token size instead of hardcoding the value.

Jeff Zaroyko (4):
      iphlpapi/tests: Fix a failing test.
      dsound: Fix a typo in convert_32_to_24.
      dsound: Check for invalid parameter when unlocking primary buffers.
      dsound: Check for invalid parameter when locking primary and secondary buffers.

Jesse Allen (1):
      winecfg: Make virtual desktop shortcut key unique.

Joris Huizer (1):
      mshtml: Increment pointer as intended.

Juan Lang (39):
      cryptui: Add stubs for CryptUIDlgSelectStoreA/W.
      cryptui: Add declarations for undocumented types used by CryptUIDlgSelectStoreA/W.
      cryptui: Implement CryptUIDlgSelectStoreA on top of CryptUIDlgSelectStoreW.
      cryptui: Add a (empty) select store dialog.
      include: Add declaration of CryptFindLocalizedName.
      cryptui: Add system stores to the select store dialog.
      cryptui: Add additional stores to select store dialog.
      cryptui: Make sure a store is selected when the user click OK in the select store dialog.
      cryptui: Return selected store from CryptUIDlgSelectStoreW.
      cryptui: Test mismatches between allowed and given types in CryptUIWizImport.
      cryptui: Test importing from a store.
      crypt32: Support add disposition CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES.
      cryptui: Use helper function for importing certificates.
      cryptui: Inherit existing properties when importing a cert.
      cryptui: Check for type mismatches in CryptUIWizImport.
      cryptui: Implement importing CRLs with CryptUIWizImport.
      cryptui: Implement importing stores in CryptUIWizImport.
      cryptui: Implement importing CTLs in CryptUIWizImport.
      cryptui: Use CryptQueryObject to import files in CryptUIWizImport.
      cryptui: Add a non-operational wizard for CryptUIWizImport.
      cryptui: Implement browsing for input file in CryptUIWizImport.
      cryptui: Show UI rather than failing if no import source is specified.
      cryptui: Make sure input file is not empty.
      cryptui: Separate opening a file from importing it.
      cryptui: Validate input file in CryptUIWizImport.
      cryptui: Store input file as a store in the file page of CryptUIWizImport.
      cryptui: Skip the file page in CryptUIWizImport when the import source isn't a file.
      cryptui: Implement specifying the destination store in CryptUIWizImport.
      cryptui: Ensure that a destination store is selected in CryptUIWizImport.
      cryptui: Show file name and type of destination store in final page of CryptUIWizImport.
      cryptui: Show the content type on the final page of CryptUIWizImport.
      cryptui: Perform import when finishing the CryptUIWizImport wizard.
      cryptui: Call CryptUIWizImport from CryptUIDlgViewCertificateW.
      crypt32: Don't crash when querying the length of the hash of a CRL or a CTL.
      wintrust: Fix encoding OIDs with only two components.
      cryptui: Use an appropriate title font for the welcome and finish wizard pages.
      cryptui: Hide the column header on the finish page of CryptUIWizImport.
      cryptui: Add watermark image to welcome and finish pages of CryptUIWizImport.
      cryptui: Add a header bitmap to CryptUIWizImport's interior pages.

Maarten Lankhorst (10):
      winex11.drv/wined3d: Fix tsx11 calling convention.
      gdi32/winex11.drv: Change all gdi/opengl operations to use CDECL calling convention.
      user32/winex11.drv: Change all user32 operations to use CDECL.
      kernel32: Change all functions to use CDECL.
      msi: Add missing CDECL to cabinet functions.
      includes: Fix EDITSTREAM definition for win64.
      riched20: Fix cast for dwCookie.
      ntdll: Print the expected and found assembly versions if no compatible version is found.
      ntdll: Make the loader process relocations correctly for x86_64.
      dsound: Correct amount of buffers used for playing.

Michael Karcher (4):
      include: Add missing local attributes to shobjidl.idl.
      include: Fix out string type from LPCSTR to LPSTR in shobjidl.idl.
      include: Add a missing [unique] to shobjidl.idl.
      widl: Recurse search for need of delegation.

Michael Stefaniuc (6):
      msvcrt/tests: Use the C standard for multiline strings.
      opengl32: make_opengl: Do not add explicit casts of function pointers to void pointers.
      dplayx/tests: Do not explicitly cast LPVOID function arguments.
      dplayx/tests: Fix typo.
      cabinet: Don't cast the return value of PF[CD]I_ALLOC; those are void pointers.
      dnsapi/tests: Remove superfluous casts.

Mike Ruprecht (1):
      wininet/tests: Add test for FtpFindFirstFile.

Nick Burns (3):
      wined3d: Fix a couple of typos in wined3d_gl.h
      wined3d: Fix glReadPixels call from read_from_framebuffer.
      ddraw: Fix surface version setting.

Nikolay Sivov (4):
      ole32: Fix return value for IDataObject_GetData.
      gdiplus: Stub for GdipResetPenTransform.
      gdiplus: Stub for GdipScalePenTransform.
      gdiplus: Stub for GdipRotateLineTransform.

Paul TBBle Hampson (4):
      winhttp: Fix resolution-failure TRACE in netconn_resolve to use input WCHAR* rather than already-freed CHAR*.
      winhttp/tests: Add tests for WinHttpCrackUrl port number handling.
      winhttp: Correctly parse specified ports in WinHttpCrackUrl.
      winhttp: Don't try and call a null callback.

Paul Vriens (3):
      shell32/tests: Cope with Vista's behavior.
      winmm/tests: Fix a test failure on NT4 and W2K.
      shell32/tests: Fix a few test failures on Vista and W2K8.

Reece Dunn (1):
      dsound: Correct the dsound fraglen calculations.

Ricardo Filipe (4):
      setupapi: Add stubs for CM_Locate_DevNodeA/W.
      cfgmgr32: Forward CM_Locate_DevNodeA/W to setupapi.
      oleacc: Fix LresultFromObject return type.
      oleacc: Add stub for AccessibleObjectFromPoint.

Rico Schüller (4):
      wined3d: Fix compilation for Windows build.
      d3d9/tests: Don't create a Null-shader in d3d9, it will crash.
      ddraw/tests: Fis some ok() lines in alpha_test().
      ddraw/tests: Fix alpha_test and offscreen_test on geforce 8800 on XP.

Rob Shearman (18):
      mshtml: Check for the container's doc being NULL in nsTooltipListener_OnShowTooltip and nsTooltipListener_OnHideTooltip.
      widl: Structures and arrays with pointers should be complex when generating code for 64-bit platforms.
      include: Include winuser.h from generated oleidl.h header.
      widl: Follow aliases in check_remoting_fields so that the fields for the type are correctly enumerated.
      widl: Hide the details of where arguments, fields, values and cases are stored in the type_t structure for functions, structures, enums and unions.
      widl: Store the type-specific information in a union in the type_t structure.
      widl: Don't create a temporary variable in the t_ident rule.
      widl: Create a separate type_t object for each structure declaration or defintion.
      widl: Write the typelib based on the statement list generated in the typelib_t object instead of using hooks in the parser code.
      widl: Write the generated file containing IID, DIID, CLSID and LIBID data based on the parsed list of statements instead of using hooks in the parser code.
      widl: Write the local stubs file based on the parsed list of statements, rather than using hooks in the parser code.
      widl: Generate header files from the parse tree instead of using hooks in the parser.
      widl: Don't add NULL pointer checks in generated code for user types.
      widl: Remove duplicate pointer handling code in get_struct_type.
      winecoreaudio: Remove some unnecessary text conversions by using snprintfW instead of snprintf.
      comctl32: Add names for now documented toolbar messages.
      configure.ac: Fix test for libresolv on Mac OS 10.4.x.
      widl: Use is_string_type instead of is_attr(..., ATTR_STRING) for detecting strings.

Roderick Colenbrander (1):
      d3d9: Relax color matching in bumpmap test.

Vincent Pelletier (3):
      user32: Fix SPI_GETMOUSESPEED and SPI_SETMOUSESPEED.
      d3d9: Set IDirect3DDevice9Impl_GetVertexShader return value to NULL on error.
      wined3d: Detect intel 945 GM.

Vitaliy Margolen (9):
      winmm: Stub joyConfigChanged.
      dinput: Make find_joydevs re-entrant.
      dinput: snprintf zero-terminates string no need to do it explicitly.
      dinput: Warn if failed to open device.
      dinput: Replace perror with more appropriate ERR and WARN.
      dinput: Fix usage of HeapReAlloc.
      dinput: Fix remaining formatting of the find_joydevs().
      dxdiagn: Fix DxDiag_DirectXFiles container to have child sub containers.
      dxdiagn: Add dxdiagn.dll to DxDiag_DirectXFiles container. Create fake dll for it as well.

Wolfgang Walter (1):
      ntdll: Fix set_XOff and set_XOn.

--
Alexandre Julliard
julliard@winehq.org
