The Wine development release 1.1.20 is now available.

What's new in this release (see below for details):
  - Show a dialog on application crashes.
  - Much improved OLE copy/paste support.
  - Various listview improvements.
  - More Direct3D code cleanups.
  - Various bug fixes.

The source is available from the following locations:

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

   2221  Hyper Chem v7.5 doesn't open/save files
   4464  d3dx9_*.dll are unimplemented
   9084  Panzer General III SE pinkish text instead of transparent
   9102  Panzer General III Scorched Earth in-game crash (memcpy)
   9637  Switchball only shows a blank screen
  10253  Fraps does not record videos or take a screenshot
  11716  star wars battlefront crashes with sound enabled
  12040  Stronghold 2 1.4: crash when starting the application
  12057  Power! Estimator renders numerical cell text incorrectly
  12393  adobe illustrator 10 crashed on startup
  12560  Perfect World: Corrupt Bitmap Images
  13563  Nestopia: crashes with enabled shaders
  13820  Yahoo! Messenger 9.0 beta hangs on login
  13825  Morrowind pagefaults when trying to run fullscreen with missing videos
  14456  Diablo II hangs when it loses focus
  14812  dsound bug causes games to crash
  14970  everquest crashes in winmm
  15081  Perfect World - Grey Characters
  15088  Lotus Approach page faults on open dialog
  15172  File Names with spaces seen as seperate files
  15303  dragonshard crashes or presents a corurpted screen
  15494  ddraw_test throws an exception when run
  15557  GTA Trylogy can't install
  15566  GTA 3 doesn't find DVD
  15575  Word Pro table nubmers get reformatted
  15603  Screen periodically erased in Starfleet Command II
  15622  Everquest crashes
  15630  Program LaTeXPiX crashes at startup
  15764  Homeworld 2 Patch (homeworld2_update_en_10_11.exe) to v1.1: crash during setup
  15881  Pharaoh - can't play on fullscreen
  16613  A Vampyre Story Demo installer doesn't work
  16989  Cobra 11 Nitro: Cars drawn as artifacts
  17198  World Editor: Tree Component of Unit Editor doesn't (re)draw correctly
  17397  Ventrilo 3.0.4 won't initialize GSM 6.10 codec stream
  17478  Fix dpa warning from comctl32/listview.c
  17498  winemaker fails on 64-bit systems
  17528  3D Mark 2001 SE Dragothic: Textures not rendered on running humans
  17774  Fable crashes on starting a new or existing game
  17910  Black & White: Crashes in texture code at start
  17984  Invalid handle for RegOpenKeyExA in win64 bit application
  17987  Autocad toolbars mis-sized
  17991  QueryPathOfRegTypeLib fails to locate typelib when (major.minor) = (0xffff.0xffff)
  18007  Subtitle Workshop "Save as.." selection menu not appearing
  18030  Images not show (or flickering) in old app
  18076  SmartDraw.exe: unimplemented function gdiplus.dll.GdipBitmapSetResolution
  18090  Watchtower Library no longer starts
  18111  Powerhorse crashes
  18114  rpcrt4.NdrDllCanUnloadNow: COM proxy/stub factory reference count eval incorrect (crashes Visual Studio 2005 on exit)
  18125  Drawing problem in Wine
  18150  Foobar2000 properties dialog is blank
  18155  Approach crashes on File, Export

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

Changes since 1.1.19:

Alexandre Julliard (18):
      c2man: Fix the array reference syntax and the return value regexps.
      user32/tests: Fix a couple of test failures on Windows.
      user32/tests: Fix a few sysparams tests on various Windows versions.
      configure: Remove checks for headers that are no longer used.
      jscript: Avoid size_t in printf width specifier.
      ws2_32/tests: Avoid sizeof in traces.
      kernel32: Make sure the string is properly terminated in QueryFullProcessImageNameW.
      dbghelp: Add a few more 64-bit symbol functions.
      imagehlp: Forward some more 64-bit functions to dbghelp.
      winex11.drv: Don't give focus to a minimized window upon take focus.
      include: Add defines for 32-bit dbghelp functions on 64-bit.
      comctl32: Repaint comboex control upon WM_SETREDRAW, like other common controls do.
      advapi32/tests: Fix a couple of test failures on Vista.
      user32/tests: Fix a couple of dimension checks on W2k3 and Vista.
      include: Fix the SYSTEM_CACHE_INFORMATION structure for Win64.
      include: Fix the DDE structures for 64-bit.
      user32: Fix the DDE service formatting for 64-bit.
      user32/tests: Don't try to unpack or free invalid handles.

Andrew Nguyen (1):
      gdiplus: Stub GdipBitmapSetResolution.

André Hentschel (9):
      start: Correct German translation.
      winemaker: Add -m32 flag to support winegcc-changes.
      winemaker: Fix whitespace handling for libs.
      winemaker: Fix wrong place for case-check.
      winemaker: Parse include dirs from vcproj file.
      winemaker: Remove unused function.
      winemaker: Print version in Makefile header.
      winemaker: Print all copyrights in banner.
      winemaker: Canonicalize directory name if used as target name.

Aric Stewart (23):
      msctf/test: Test enabling and disabling Language Profiles.
      msctf/tests: Add framework for a TextService for testing.
      msctf: Correct order of arguments to OnSetFocus sink call.
      msctf: Release focused DocumentMgr on Deactivate and make sure to do a OnSetFocus Sink.
      msctf: ITfDocumentMgr::GetBase returns the top if there is only one context pushed.
      msctf: Correct index for being unable to pop last context. We need to leave one behind.
      msctf: Add locking flags.
      msctf: Helper functions for generating DWORD cookies.
      msctf/tests: Setup test framework for ITfThreadMgrEventSink.
      msctf/tests: Test activation and deactivation of a text service.
      msctf/tests: Test DocumentMgr creation and Focus.
      msctf/tests: Test ITfContext Push, Pop, GetTop and GetBase.
      msctf/tests: Add ITextStoreACP interface for testing.
      msctf: Make use of generated cookies in sinks to allow 64 bit compatibility.
      msctf: Add ITfKeystrokeMgr framework to ThreadMgr.
      msctf: Define ITfKeyEventSink.
      msctf: Define the TF_MOD_* Constants.
      msctf/tests: Framework for testing ITfKeystrokeMgr.
      msctf/tests: Test ITfKeystrokeMgr::UnpreserveKey and ITfKeystrokeMgr::PreserveKey.
      msctf/tests: Test ITfKeystrokeMgr::IsPreservedKey.
      msctf/tests: Test framework for ITfKeyEventSink.
      ole32: CoGetTreatAsClass should return S_FALSE if it cannot even find the key for the requested CLSID.
      msctf/tests: Use ITfInputProcessorProfiles::GetCurrentLanguage to get gLangid.

Austin English (2):
      wineps.drv: Fix a memory leak.
      ole32: Rename a macro to prevent a conflict on NetBSD.

Brad Martin (1):
      wined3d: Fix prototype for EnumAdapterModes.

Christian Costa (19):
      quartz: Data may be incomplete at the end of file so do not assert if we have less data than expected.
      amstream: Turn Initialize FIXME into a TRACE.
      amstream: Initialize the stream in OpenFile if not done before.
      amstream/tests: Beginning of tests.
      amstream/tests: Fix crosstest build.
      mciqtz32: Use opened state to avoid device to be closed several times.
      mciqtz32: Fix some traces.
      mciqtz32: Hook MCI_STOP.
      mciqtz32: Show messages in hex as they are defines in headers.
      amstream/tests: Improve render file test. Move OpenFile specific test into a separate test function.
      winedump: When generating preamble, use 4 spaces instead of tabs. Remove extra break.
      xmllite: Add stubbed dll for xmllite.
      ddraw: Handle refcount of lights when interacting with viewport.
      ddraw/tests: Add tests for refcount handling of light with viewport.
      d3dxof: Accept longer string size.
      mciqtz32: Remove all remaining tabs.
      mciqtz32: Move MCIQTZ_mciGetOpenDev at the top and always use it.
      mciqtz32: Make sure the device is valid before starting the play.
      mciqtz32: Stop the device only after param and device checks are done.

Colin Finck (1):
      mshtml: Fix the size passed to MultiByteToWideChar.

Damjan Jovanovic (1):
      winemenubuilder: Build freedesktop MIME type list for later use.

Dan Kegel (1):
      ntdll: Add missing valgrind hook in RtlAllocateHeap.

David Adam (4):
      ddraw: Remove useless comments.
      d3d8: Add tests for IDirect3D8Device_Reset.
      d3d9: Add tests for IDirect3D9Device_Reset.
      wined3d: SetDepthStencilSurface is always called when AutoDepthStencil is enabled.

Detlef Riekenberg (5):
      oleaut32: VarCat must use localized names for VT_BOOL.
      oleaut32/tests: Replace lstrcpyW and lstrcatW with memcpy to fix failures on win95.
      msi/tests: Replace lstrcatW with memcpy to fix failures on win95.
      winetest: Add support for --version, --help and /?.
      winetest: Add option -x to extract all test.

Dmitry Kislyuk (1):
      kernel32: Added GetPrivateProfileSection and GetPrivateProfileString tests for empty section scenario.

Dmitry Timoshkov (2):
      oleaut32: Add some additional tests for QueryPathOfRegTypeLib, make them pass under Wine.
      winedbg: Fix a typo in the comment.

Dylan Smith (1):
      richedit: Null terminate streamed out rich text.

Florian Köberle (2):
      comctl32/tests: Test expanding of a invisible sub tree.
      comctl32: Fix expanding of invisible sub trees.

Francois Gouget (9):
      wineesd.drv: Add a trailing '\n' to a WARN() trace.
      dinput: Add a trailing '\n' to ERR() messages.
      Assorted spelling fixes.
      winapi: parse_c_declarations() is not used. Remove it.
      winapi: Fix the parse_c_declaration() prototype and remove unused variables.
      winapi: trampoline is not used so remove it.
      winapi: Remove some dead code.
      winapi: Fix the C-parser combined getter/setter prototypes.
      wined3d: Avoid using an implicit value to set fogcoord to 0.0.

Frans Kool (8):
      mshtml: Corrected Dutch translations.
      wordpad: Fixed Dutch translations.
      setupapi: Fixed Dutch translations.
      reg: Fixed Dutch translations.
      regedit: Fixed Dutch translations.
      shell32: Fixed Dutch translations.
      kernel32: Added Dutch translations.
      crypt32: Corrected Dutch translations.

Ge van Geldorp (2):
      secur32: Implement more GetUserNameEx() formats.
      secur32/tests: Fix GetUserNameEx() tests.

Giuseppe Bilotta (1):
      comctl32/toolbar: Fix trace info for TOOLBAR_InternalInsertButtonsT.

Hans Leidekker (13):
      msi: Support setting summary information by importing a _SummaryInformation table.
      user32: By default, return all zeroes in the first half of the keyboard layout name.
      winex11.drv: Set HKCU\Keyboard Layout\Preload key.
      advapi32: Fix buffer size query for CreateWellKnownSid.
      msvcrt: Implement ___lc_codepage_func, ___lc_collate_cp_func and ___lc_handle_func.
      programs: Add stub termsv.exe.
      msi: Fix a double free.
      msi: Fix another double free.
      server: Add requests to set and retrieve default dacl.
      ntdll: Implement NtQuery/SetInformationToken(TokenDefaultDacl).
      kernel32: Improve GetVolumePathName stub.
      wininet: Fix parsing of cookies with attributes.
      wininet: Replace any existing cookie header.

Henri Verbeet (35):
      wined3d: Pass a struct wined3d_shader_dst_param to shader_arb_get_write_mask().
      wined3d: Get rid of the "token" field from struct wined3d_shader_dst_param.
      wined3d: Don't die if a vertex shader has samplers.
      wined3d: Group instruction context information together in struct wined3d_shader_context.
      wined3d: Introduce struct wined3d_shader_src_param.
      wined3d: Store the register type in struct wined3d_shader_src_param.
      wined3d: Store the register index in struct wined3d_shader_src_param.
      wined3d: Store the source modifiers in struct wined3d_shader_src_param.
      wined3d: Create a relative addressing token for 1.x shaders in the frontend.
      wined3d: Store the source relative addressing token as a struct wined3d_shader_src_param.
      wined3d: Store the destination relative addressing token as a struct wined3d_shader_src_param.
      wined3d: Pass a struct wined3d_shader_src_param to shader_glsl_get_register_name() for the relative addressing token.
      wined3d: Pass a struct wined3d_shader_src_param to shader_glsl_add_src_param().
      wined3d: Simplify replicating the .x swizzle in shader_hw_mov().
      wined3d: Pass a struct wined3d_shader_src_param to shader_arb_add_src_param().
      wined3d: Pass a struct wined3d_shader_src_param to pshader_gen_input_modifier_line().
      wined3d: Explicitly pass the source modifier to shader_glsl_gen_modifier().
      wined3d: Store the source swizzle in struct wined3d_shader_src_param.
      wined3d: Add a separate function for converting swizzles to strings.
      wined3d: Pass a struct wined3d_shader_src_param to shader_glsl_get_swizzle().
      wined3d: Pass a struct wined3d_shader_src_param to shader_arb_get_swizzle().
      wined3d: Get rid of the token field from struct wined3d_shader_src_param.
      wined3d: Get rid of the WINED3DVS_* swizzle constants.
      wined3d: Handle the swizzle shift in the frontend rather than the backend.
      wined3d: Handle the source modifier shift in the frontend rather than the backend.
      wined3d: Handle the destination modifier shift in the frontend rather than the backend.
      wined3d: Move some frontend specfic code to baseshader.c.
      wined3d: Move frontend specfic constants to baseshader.c.
      wined3d: Downgrade an ERR to a WARN.
      wined3d: Get rid of the shared_handle parameter.
      wined3d: Handle the opcode specific control shift in the frontend rather than the backend.
      wined3d: Use a more reasonable limit for the number of mipmap levels.
      wined3d: The first shader token should be the version token.
      wined3d: Add a function to read an opcode from SM1-3 bytecode.
      wined3d: Use shader_sm1_read_opcode() in shader_get_registers_used().

Huw Davies (50):
      ole32: Store a cached version of the local data object's enumeration.
      ole32: Change helper function to return the matching entry.
      ole32: Rewrite the clipboard window's wndproc to use the cached enum data.
      ole32: Add support for rendering stream data to the clipboard.
      ole32: Make all formats available to the clipboard.
      ole32: Add support for rendering storage data to the clipboard.
      ole32: Use helper function to duplicate global memory.
      ole32: Unicodify window creation. Don't register the class as global.
      ole32: Add a helper function to return the ole clipboard structure.
      ole32: Add a helper function to set and release the source IDataObject.
      ole32: Add a function to return (and possibly create) the clipboard's window.
      ole32: Don't pass a window if we're reading from the clipboard.
      ole32: Rename a variable.
      ole32: Store the marshalled IDataObject in a window property of the clipboard window.
      ole32: If there's a current data object on the ole clipboard GetData should use it.
      ole32/tests: Tests that show the consumer data object isn't a singleton.
      ole32: The consumer data object is not a singleton, but reflects the state of the clipboard when it was acquired.
      ole32: Now that the consumer side of the clipboard separated from the main clipboard object, simplify the initialization code.
      ole32: After a call to GetData the consumer should hold a ref on the source data object.
      ole32/tests: Add a few more reference count tests.
      ole32: Add support for getting global handle objects from a flushed clipboard.
      ole32: Add support for getting stream based objects from a flushed clipboard.
      ole32: Add support for getting storage based objects from a flushed clipboard.
      ole32: OleFlushClipboard should render all formats to the clipboard.
      ole32: Try global and stream types if the requested types don't match the source.
      ole32/tests: Tests for a flushed clipboard.
      wineps.drv: Fix compile error.
      winex11.drv: Fix ordering of synthesized text formats.
      winex11.drv: Fix typo so that emf -> mfpict synthesis works.
      ole32: Make get_priv_data return target device ptrs (rather than offsets) and add a couple of helper functions to simplify this process.
      ole32: Check that the target devices match.
      ole32: Don't set cf_dataobject if we're clearing the clipboard.
      ole32: Add support for enumerating non-ole clipboard formats.
      user32/tests: Fix tests on win9x.
      ole32/tests: OleGetClipboard doesn't return the same object under win9x, winme and nt4.
      ole32/tests: win9x, winme and nt4 ignore the target device.
      ole32/tests: win9x and winme don't have CF_UNICODETEXT.
      ole32/tests: win64 sets the lsb of the final DWORD in the ole private data header.
      ole32/tests: win9x and winme don't enumerate duplicated cfFormats.
      ole32/tests: Add some tests to exercise the enumerator.
      ole32: Improve the TRACEs by printing the fmtetc contents.
      ole32/tests: Rename variable to avoid a conflict on some systems.
      ole32/tests: For win9x and winme the size of the data on the clipboard may be larger than expected.
      ole32: Add a stub for OleCreateFromDataEx.
      ole32: Register a few more clipboard formats and make them have global scope.
      ole32: Rewrite OleQueryCreateFromData so it compares clipboard format ids rather than strings and be sure to free the enumerator.
      ole32: Expose the marshalled data on the clipboard rather than as a window prop so that other processes can actually read it.
      ole32: Fix a couple of comments.
      winex11.drv: Print clipboard formats in hex.
      ole32/tests: Improve the traces in the test.

Igor Tarasov (3):
      comctl32: Fix regression caused by 2d751ee56afced908d0788b936fa4aac1b29f1a1.
      comctl32: Fix typo in TOOLBAR_SetButtonSize code.
      comctl32: TOOLBAR_SetImageList should recalculate toolbar only if it is necessary.

Jacek Caban (1):
      mshtml: Added IPersistHistory stub implementation.

Jeff Latimer (3):
      ws2_32: WSAAddressToStringA should return length of ANSI address string and should include the trailing null.
      ws2_32: WSAAddressToStringW should return length of unicode address string should and include the trailing null.
      include: Bring in6_addr into line with the MS definition.

Jesse Allen (2):
      dsound: Allow a special cbSize case in CreateSoundBuffer.
      dsound: Fix test for some windows versions.

Juan Lang (1):
      crypt32: Fix a test failure on Windows 98.

Kai Blin (2):
      secur32: Work around ntlm_auth in Samba 3.0.28a being broken for cached credentials.
      sxs: Implement a stub CreateAssemblyCache to make Publish or Perish install.

Ken Sharp (1):
      winedbg: Correct slight typo in winedbg dialog.

Ken Thomases (5):
      winecoreaudio: Eliminate some unnecessary code.
      winecoreaudio: Avoid potential deadlock in wodOpen.
      winecoreaudio: Avoid a race between closing and opening the waveOut device.
      winecoreaudio: For waveOut, don't use STOPPED state; it's redundant.
      winecoreaudio: Avoid a race between closing and opening the waveIn device.

Konstantin Kondratyuk (1):
      fonts: Add Kazakhstan's symbols into tahoma.

Marcus Meissner (1):
      amstream/tests: Handle directdraw not being created (Coverity 920).

Michael Stefaniuc (11):
      opengl32: Remove superfluous pointer casts.
      mshtml/tests: Replace long with LONG.
      riched20/tests: Use better types than long.
      ws2_32: Use better types for some variables.
      msi: Remove superfluous cast of a MSIHANDLE in a TRACE().
      msi/tests: Replace long with LONG.
      comdlg32: Fix the Slovak translation.
      wordpad: "Fix" the Turkish translation.
      rpcrt4: Replace some usage of the long type.
      winedbg: Remove some superfluous pointer casts.
      user32/tests: Don't use the long type.

Mikołaj Zalewski (1):
      winedbg: Add a crash dialog for --auto mode.

Nicolas Le Cam (7):
      msi/tests: Test MsiRecordGetString on null and empty strings.
      msi: Fix buffer length value returned by MSI_RecordGetStringW on null and empty strings.
      wininet/tests: Fix HttpSendRequestW test on IE5.
      msi: Enfore use of GetFileAttributes return value.
      msi/tests: Add empty dir test for the DrLocator part of the AppSearch action.
      msi: Fix ACTION_AppSearchDr on empty path.
      msi/tests: Fix package test when run on a different drive than C:\.

Nikolay Sivov (19):
      comctl32/listview: Fix selection handling in LVM_SORTITEMS (with some tests).
      comctl32/listview: Fix a regression caused by 59148d0bb549ff8690f15f14571a715e3fdd43a5.
      comctl32/listview: Fix some comment typos.
      comctl32/listview: Implemented LVM_SORTITEMSEX.
      comctl32/listview: Add a ListView_GetTextBkColor macro.
      comctl32/listview: Slightly enlarge rectangle when drawing checkbox.
      comctl32/listview: Switching to/from LVS_OWNERDATA isn't allowed after creation.
      comctl32/listview: Fix a regression caused by 9c1a0e468f5cfbe9d863852ed5a42390f2cbfeb4.
      comctl32/listview: Some tests for LVS_SINGLESEL switchover.
      fonts: Fix a typo in copyright text.
      comctl32/listview: LVM_SETITEM is unsupported on LVS_OWNERDATA.
      comctl32/listview: Add a TRACE(..) to LISTVIEW_CreateHeader.
      comctl32/listview: Header should be created when LVS_EX_HEADERDRAGDROP set.
      comctl32/listview: Additional tests for LVM_GETSUBITEMRECT.
      comctl32/listview: Partial fix for LVM_GETSUBITEMRECT for item == -1.
      comctl32/tests: Remove tests failing on most platforms.
      comctl32/tests: Existing items aren't resorted after LVS_SORTASCENDING added.
      comctl32/tests: Tests for LVM_GETCOLUMNORDERARRAY: it actually uses HDM_GETORDERARRAY.
      comctl32/listview: Fix LVM_GETCOLUMNORDERARRAY passing message to header.

Paul TBBle Hampson (1):
      dinput: Add missing newline to trace message.

Paul Vriens (15):
      usp10/tests: Skip some tests on WinME.
      shell32/tests: Fix some test failures on Vista.
      gdi32/tests: Skip several tests on Win9x.
      rpcrt4: Fix NdrDllCanUnloadNow.
      shell32/tests: Fix some test failures on NT4.
      gdi32/tests: Fix a test failure on NT4.
      shell32/tests: Fix a test failure on Win95 and NT4.
      include: Add missing GdipGetLogFontA definition.
      gdiplus: Return the correct result in GdipCreateFontFromLogfontA.
      gdiplus: Convert lfFaceName from W to A, not the other way around.
      gdiplus/tests: Fix test failures on Win98 by using A-functions.
      shell32/tests: Fix some test failures on Win9x and NT4.
      shell32/tests: Fix a test failure on Win98.
      setupapi/tests: Fix a test failure on Win98.
      gdiplus/tests: Fix a test failure on Win98.

Peter Schauer (1):
      comctl32/listview: Fix warning from DPA_GetPtr.

Reece Dunn (2):
      winecfg: Fix the size of the application static text in Spanish.
      winecfg: Fix the size of the application static text in Japanese.

Rein Klazes (5):
      msvcrt: Correct implementation of _ecvt() with tests.
      user32: When repainting a static control with SS_BITMAP style, do not erase the background if there is no valid bitmap to paint.
      msvcrt: Do not set the windows version to 0.5.
      msvcrt/tests: Add some tests for strtok().
      comdlg32: Fix a crash in LookIn combo box WM_COMMAND message handler.

Roderick Colenbrander (3):
      wined3d: Update Nvidia driver version information.
      wined3d: Report the driver description as reported by the Windows drivers when a device string is entered in our device table.
      opengl: Add WGL_EXT_pixel_format_packed_float support.

Stefan Dösinger (5):
      wined3d: Add a more formal framework for driver quirks.
      wined3d: Move the generic mac glsl uniform fixup to the quirk table.
      wined3d: Move the remaining quirks into the quirk table.
      wined3d: Reserve additional GLSL constants on some drivers.
      wined3d: Merge match_apple and implementation_is_apple.

Tobias Jakobi (2):
      wined3d: Add newline to fixme.
      wined3d: Rename some NP2 fixup variables and update comments.

Vincent Povirk (2):
      mciavi32: Remove unnecessary string buffers in MCIAVI_mciSet.
      shell32: Implement SHGetNewLinkInfo[AW].

Vitaliy Margolen (5):
      dinput: Make EnumDevices and GetObjectInfo consistent about GUIDs.
      dinput: Remove redundant stuff.
      dinput: Make props array a part of the generic joystick struct.
      dinput: Convert evdev joystick to new base class.
      dinput: Use more friendly name for the joystick than its device path.

Łukasz Wojniłowicz (2):
      kernel32: Added Polish translations.
      cmd: Updated Polish translations.

--
Alexandre Julliard
julliard@winehq.org
