diff -Nru wine-staging-1.7.35~ubuntu12.04.1/ANNOUNCE wine-staging-1.7.36~ubuntu12.04.1/ANNOUNCE --- wine-staging-1.7.35~ubuntu12.04.1/ANNOUNCE 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/ANNOUNCE 2015-02-08 20:31:28.000000000 +0000 @@ -1,15 +1,16 @@ -The Wine development release 1.7.35 is now available. +The Wine development release 1.7.36 is now available. What's new in this release (see below for details): - - Beginnings of support for OpenGL core contexts. - - Initial support for glyph placement in DirectWrite. - - Some more WBEM objects. + - Some preliminary 64-bit support for Mac OS X. + - Support for configuring speakers in Winecfg. + - Improved support for Mac OS X Trash folder. + - Support for typographic features in DirectWrite. - Various bug fixes. The source is available from the following locations: - http://prdownloads.sourceforge.net/wine/wine-1.7.35.tar.bz2 - http://mirrors.ibiblio.org/wine/source/1.7/wine-1.7.35.tar.bz2 + http://prdownloads.sourceforge.net/wine/wine-1.7.36.tar.bz2 + http://mirrors.ibiblio.org/wine/source/1.7/wine-1.7.36.tar.bz2 Binary packages for various distributions will be available from: @@ -25,285 +26,202 @@ ---------------------------------------------------------------- -Bugs fixed in 1.7.35 (total 56): +Bugs fixed in 1.7.36 (total 44): - 4374 Multiplayer crashes Heroes 4 - 4409 Screen corruption in Evernote 1.1 - 5776 3DMark 2001: Nature Test (#4) renders incorrectly around 40th second - 13014 ProntoEdit NG 2.1.8 doesn't show Gallery (missing ODBC provider/notice about missing provider) - 14522 Spellforce has bad quality ground textures - 16526 Angels Online doesn't update (FtpFindFirstFile needs to support subdirectory and wildcard search) - 19723 NordicBet Poker-client fails to install - 19724 elevated demo has a terrible performance - 20490 Tower crashes when rendering 3d-objects - 21767 Multiple applications storing AxHostWindow instance pointer in GWLP_USERDATA crash on startup (Wine uses GWLP_USERDATA to store IOCS)(JLC's Internet TV, Anime Studio Pro 10.x) - 23208 MS Money 2000: shows wrong/huge total amounts in accounts section of main page - 24861 Evil Genius (GOG version): Crashes randomly on autosave - 24967 Oxygen AVCHD player crashes when failling opening a .mov & .mts source - 26202 SoulSeek crashes - 26272 Unity3D 3.x/4.x - Can't create a project - 27814 Die by the Sword: menus don't drawn unless mouse is moving - 28951 Nitro PDF Reader crashes in Preferences->Commenting menu - 30017 iWin Games Manager can't display html pages (without native ie) - 30520 Zona crash when play video files with mplayer - 31181 Unity3D first run internet registration fails - 31438 [EA Origin]Unable to download game since the new version - 32125 RebelBetting exits silently with wine-mono - 32166 RebelBetting (.NET app): "Serious error" when selecting a listing - 32205 YoukuDesktop error in initializing - 33494 It's not possible to use tempfile module in python - 33776 Multiple 64-bit applications and UPlay games fail in 64-bit WINEPREFIX with WinVer set to 'Windows Vista/7' (incorrect WoW64 info buffer size usage in IsWow64Process, NtQueryInformationProcess) - 33976 Spin Tires needs native quartz for launching - 34217 MS XPSEP GUI installer fails with .NET Framework 3.0 installed prior (custom action 'EPUpdateInstallAction' dubbed 'Hotfix for Windows XP KB971276-v3' fails) - 35244 Blood Bowl: Legendary Edition crashes in full-screen mode when shaders enabled - 35270 Slingplayer 1.5 installer fails in a WOW64 prefix - 35391 xcopy doesn't support /v (Samsung Magician Software 4.2) - 35527 RebelBetting: maximised window is not fully drawn - 35894 TSM Casin crashes on start in jscript - 36009 secur32/schannel test fails with WINEDEBUG=warn+heap - 36368 MicrosoftFixit50588 tool raises a vbscript parsing error (single-line 'If...Then' with trailing 'End If') - 36767 iexplore http://whatsmyuseragent.com crashes in jscript - 36964 Unity3D crashes on startup license activation window (has workaround) - 37017 KEY_WOW64_32KEY doesn't work properly after opening HKLM\Software key. - 37023 winhttp: HEAD-requests are not handled correctly (Marvel Heroes 2015 launcher) - 37113 Cannot move (drag n drop) objects in Illustrator CS6 using the selection tool (V) - 37185 DirectPlayCreate fails to create instance in the game "Swing" - 37537 Tages v5.x DRM driver needs 'irp.Tail.Overlay.OriginalFileObject' initialized with stub file object - 37748 Stranded II shows text/icons in wrong colors - 37807 Anno 2070: digit group separators are displayed incorrectly - 37810 Accordance 11 crashes on startup. - 37866 Multiple .NET applications fail due to wbemdisp:services_InstancesOf stub (PaintRibbon 1.x) - 37874 Copy-pastie in implementation of VarFormatNumber - 37882 user32.GetKeyboardLayoutNameW can't handle NULL out parameter, causing crash in custom application - 37891 Firefox 35.0 installer crashes ('INetFwAuthorizedApplication::IpVersion' property accessors are stubs) - 37898 QQ6.7 crashes due to unimpl msvcr100._vscprintf_p - 37907 The Incredible Adventures of Van Helsing (64-bit, Steam) crashes on startup (loading of frames from .ani cursors causes heap corruption) - 37912 Shadowgrounds - rendering issues - 37924 VBA71 : unimplemented function msi.dll.MsiProvideComponentA - 37931 Dead Space 2 (Steam) crashes on start - 37933 Texture Packer Application crashes on launch - 37943 Falco 6 Contabilità crashes + 11117 Youtube Downloader crashes on unimplemented shdocvw.DoFileDownload + 14448 Spectaculator: menu icons do not show properly when not fullscreen + 16373 Adobe Reader 8.1 can't open "Beyond Adobe Reader" + 17271 Office 2003/2007 help does not work + 18357 MyHeritage Family tree builder crashes in the begining of the installtion (NSIS installer) + 21327 Weird behaviour with Alt+Tab and wine fullscreen applications + 24331 NI Circuit Design Suite 10.1.1 fails to install + 24384 Program Error - My Heritage Family Tree Builder + 27558 EA Origin: application starts in Polish instead of English + 28142 GODS-Lands of Infinity: NPCs have multiple shadows + 29289 Sharepod crash + 29655 Adobe Reader 9.5.0 fails to open document restricted by remote server (Adobe LifeCycle Rights Management security) + 30016 iWin Games Manager installer crashes on unimplemented function oleaut32.dll.OleSavePictureFile + 30261 Imperial Glory - Creating multi-player game causes crash + 30344 Windows 8 consumer preview setup crashes due to unimplemented function msi.dll.MsiEnumClientsExW + 30432 UpdateResource doesn't update Resource Table virtual address + 30823 mono program incorrectly writing Chinese characters to console with Wine mono + 32229 Windows Live Essentials 2012 web installer crashes (CreateHardLinkTransactedW and DeleteFileTransactedW missing) + 32297 dwChannelMask, nAvgBytesPerSec and nBlockAlign handled incorrectly by mmdevapi drivers in IsFormatSupported. + 32524 mmdevdrv assertion failure on FarCry3 loading screen + 32943 GOG.com Uru Complete Chronicles crashes after intro videos + 34603 Trainsimulator 2014 crash at start/fails to start + 34806 Brothers in Arms Road to Hill 30 demo: Clicking sounds in audio + 35755 UltraISO 'ISODrive.sys' crashes on unimplemented function ntoskrnl.exe.ExfInterlockedRemoveHeadList + 35893 sdb2xml (.NET 2.0 app) crashes on unimplemented function apphelp.dll.SdbOpenDatabase + 36466 Add WScript.Echo support for VBScripts and JScripts + 36684 fRo game ( Ragnarok ) : loop bug while installing + 36882 Certain Touhou Games (10, 14, 14.3) run at 20 FPS rather than 60 + 37012 Evernote 5.5.x crashes when accessing the Market tab + 37250 PDFXChange Editor 5.5 build 309.0 crashes on unimplemented function cryptui.dll.CryptUIDlgSelectCertificateFromStore when trying to sign a document + 37272 CheatEngine 6.4 fails after remote process 'breakin', reporting 'Debugger Crash:Access violation (Last location:41)' + 37691 Problems with internal windows in IDA (Qt) + 37749 Parts of .ogg files played in Touhou Danmakufu ph3 (Wine 1.7.33) are skipped + 37872 Multiple applications need support for IHTMLWindow2::open '_self' window name (CompeGPS) + 37880 Watchtower Library 2010 crashes on startup + 37895 PostgreSQL 9.3 VBScript based post-install steps fail due to parser errors (optional parameter between other parameters, pair of empty commas) + 37940 Invalid file buffering behavior causes data corruption + 37941 msvcr100.dll lacks two functions: iswpunc_l and iswspace_l needed for Dragon Naturally Speaking + 37951 ASUS PC Link needs KERNEL32.dll.GetSystemFirmwareTable + 37953 stack overwrite in msvcrt functions + 37970 prntvpt.dll.PTQuerySchemaVersionSupport not implemented (Photoshop CS6 crashes) + 37987 Medieval 2: Total War crashes with built-in msvcp71 + 38017 sdb2xml (.NET 2.0 app) crashes on unimplemented function apphelp.dll.SdbGetFirstChild + 38018 Windows Live Essentials 2012 web installer crashes on unimplemented function ktmw32.dll.RollbackTransaction ---------------------------------------------------------------- -Changes since 1.7.34: +Changes since 1.7.35: Akihiro Sagawa (3): - advapi32: Fix HKLM\Software handling when opening with KEY_WOW64_32KEY. - msi: Open 32-bit component registry keys with KEY_WOW64_32KEY flag. - msi: Remove 32-bit component registry keys with KEY_WOW64_32KEY flag. - -Alistair Leslie-Hughes (1): - dplay: Add missing defines. + winmm/tests: Add MPEGVideo driver tests using a wave audio file. + mciqtz32: "status mode" returns resource strings. + po: Update Japanese translation. Andrew Eikum (1): - wined3d: Fix spec file entry for wined3d_texture_create. + winmm: Allow HMIXEROBJ handles in place of device IDs in mixerGetDevCaps. + +Aurimas Fišeras (1): + po: Update Lithuanian translation. -André Hentschel (3): - kernel32/tests: Don't test function directly when reporting GetLastError(). - user32/tests: Don't test function directly when reporting GetLastError(). - odbc32: Add winediag message when no drivers could be found. - -Aric Stewart (1): - gdi32: Do not install fonts with a family name that is too long. - -Austin English (1): - iphlpapi: Add FreeMibTable implementation. - -Axel Davy (2): - d3d8/tests: Fix volume_dxt5_test getPixelColor check. - d3d8/tests: Fix test_3dc_formats getPixelColor check. - -Bruno Jesus (9): - ws2_32: Ensure recv functions set last error to zero when they succeed. - ws2_32: Prefer SetLastError over WSASetLastError. - rsaenh: Don't reset the salt length after setting a salt for Base and Strong providers. - ws2_32: Trace getpeername() result. - iphlpapi: Set 0.0.0.0 as the IP and mask of disconnected interfaces. - oleaut32: Fix copy & paste issue in VarFormatNumber. - dplayx: Cache GUID values so they persist after enumeration. - user32: Allocate memory based on HICON instead of DWORD to fix 64 bit problems. - ws2_32: getaddrinfo must SetLastError on success or failure. - -Changhui Liu (1): - gdiplus: Fix get_graphics_bounds when window origin point changed. - -Charles Davis (5): - winebuild: Make emitting mod_*_func sections on Mac OS respect the pointer size. - kernel32: Recognize 64-bit Mach-O modules, too. - kernel32: Don't use %gs on 64-bit Mac OS. - server: Use mach_vm_* functions instead of the old vm_* functions. - msvcrt: Support 64-bit platforms that don't have finitef or isnanf. - -Erich Hoover (1): - winex11.drv: Update the check for broken nVidia RandR to test for the number of resolutions instead of the number of modes. - -François Gouget (3): - dsound: Make DSOUND_FindSpeakerConfig() static. - dsound: Reorder the interfaces to remove the need for forward declarations. - dsound: Make some DirectSoundDevice_*() functions static. - -Gerald Pfeifer (1): - makefiles: Support building with non-default LD. - -Hans Leidekker (12): - wbemdisp: Implement ISWbemServices::InstancesOf. - wbemdisp: Implement ISWbemObjectSet::get__NewEnum. - wbemdisp: Implement ISwbemObject::GetIDsOfNames. - wbemdisp: Implement ISWbemObject::Invoke. - wbemdisp: Reimplement ISWbemObjectSet::get__NewEnum on top of IEnumWbemClassObject::Clone. - kernel32: Retrieve the system affinity mask from ntdll. - ntdll: Fix calculation of process and thread affinity masks on systems with a large number of processors. - winhttp/tests: Keep the connection alive in a couple of tests. - winhttp: Don't try to read data after a HEAD request. - wbemprox: Implement Win32_ComputerSystemProduct.IdentifyingNumber. - wbemprox: Implement Win32_BaseBoard.Product. - msi: Add a partial implementation of MsiProvideComponent. - -Hao Peng (3): - wbemprox: Implement Win32_Processor.ProcessorType. - wbemprox: Implement Win32_DiskDrive.PNPDeviceID. - wbemprox: Implement Win32_BaseBoard.Version. - -Henri Verbeet (10): - wined3d: Introduce struct wined3d_sampler_desc. - wined3d: Store a struct wined3d_sampler_desc in struct gl_texture. - wined3d: Replace wined3d_texture_apply_state_changes() with wined3d_texture_apply_sampler_desc(). - wined3d: Create GL sampler objects for wined3d sampler objects. - wined3d: Merge shader_glsl_load_vsamplers() and shader_glsl_load_psamplers(). - wined3d: Implement WINED3DSIH_SAMPLE in the GLSL shader backend. - wined3d: Handle the SM4 SV_POSITION pixel shader input semantic in the GLSL shader backend. - d3d10core/tests: Add a basic texturing test. - wined3d: Use the same flags for wined3d_texture_set_color_key() and the "color_key_flags" field it sets. - wined3d: Properly cleanup samplers on wined3d_device_reset() / wined3d_device_uninit_3d(). - -Huw D. M. Davies (2): - user32/tests: Add tests for setting and getting the background brush. - user32: Actually use the menu's background brush. - -Jacek Caban (8): - activscp.idl: Added SCRIPT_E_* error codes. - jscript: Don't allow function execution if script engine is not in started state. - jscript: Added more SCRIPTSTATE_STARTED tests. - mshtml: Removed TRACEs from dispex_query_interface. - secur32/tests: Don't call InitializeSecurityContext on an uninitialized buffer. - mshtml: Improved IOleCommandTarget::QueryStatus implementation. - mshtml: Added OLECMDID_OPTICAL_ZOOM tests and stub. - mshtml: Added Exec(OLECMDID_OPTICAL_ZOOM) implementation. - -Ken Thomases (1): - winemac: Fix conversion of empty RECT to an empty CGRect. - -Marcus Meissner (2): - combase: Reorder checks (Coverity). - mshtml: Check for failed allocs (Coverity). - -Mark Harmstone (4): - winealsa: Do not destroy remapping info on IsFormatSupported. - dsound: Degrade speaker config if too many channels. - dsound: Pretend we have hardware buffers. - xaudio2_7: Add stub DLL. - -Matteo Bruni (14): - wined3d: Use the core version of the gl*Buffer* functions. - wined3d: Use the core glColorMaski function. - opengl32: Update to GL 4.5. - opengl32: Store the OpenGL context version in the handle value. - dxgi: Fix a comment typo. - wined3d: Use the core gl*CompressedTex* functions. - wined3d: Use the core version of glDrawBuffers. - wined3d: Use the core version of glDrawElementsInstanced. - wined3d: Always use the core version of the glPointParameteri function. - wined3d: Add separate stencil state setup via GL 2.0+ core functions. - wined3d: Don't normalize R8G8B8A8_UINT attributes. - wined3d: Properly initialize the last two components of R16G16_SINT attributes. - wined3d: Use the core version of GL vertex attribute functions where possible. - wined3d: Use the core version of the shader object functions. - -Michael Müller (1): - shlwapi: Correctly treat '.' when enumerating files in PathIsDirectoryEmptyW. - -Michael Stefaniuc (40): - strmbase: Remove an unused variable (PVS-Studio). - winmm: Remove an unused variable (PVS-Studio). - wintab32: Remove an always TRUE conditional expression (PVS-Studio). - wrc: Remove some more always-true conditions. - comctl32: Remove an unused variable assigment (PVS-Studio). - comdlg32: Remove unused variable assigments (PVS-Studio). - d3drm: Remove an unused assignment (PVS-Studio). - d3dx9_36/tests: Actually test retrieve_device_state calls (PVS-Studio). - devenum: Use the return value of __wine_register_resources (PVS-Studio). - dmband/tests: Remove an unused assigment (PVS-Studio). - dmcompos/tests: Remove an unused assigment (PVS-Studio). - dmime/tests: Remove unused assigments (PVS-Studio). - dmloader/tests: Test the return of CoCreateInstance (PVS-Studio). - dmscript/tests: Remove an unused assigment (PVS-Studio). - dmstyle/tests: Remove unused assigments (PVS-Studio). - dmusic/tests: Remove an unused assigment (PVS-Studio). - dswave/tests: Remove an unused assigment (PVS-Studio). - gdiplus/tests: Actually test a GdipCreateFromHDC call (PVS-Studio). - mstask/tests: Remove an unused assignment (PVS-Studio). - mciwave: Remove an unused assigment (PVS-Studio). - ole32/tests: Actually test some return codes (PVS-Studio). - ole32/tests: Remove unused assignments (PVS-Studio). - ole32: Return the buffer pointer when WdtpInterfacePointer_UserMarshal fails. - msxml3/tests: Remove an unused assignment (PVS-Studio). - msxml3/tests: Actually test the return values (PVS-Studio). - ntdll/tests: Remove unused assigments (PVS-Studio). - oleaut32/tests: Uncomment and fix a test (PVS-Studio). - oleaut32: Just stop instead of erroring out on 8 or 9 in octal numbers. - oleaut32: Remove an unused assignment (PVS-Studio). - qedit: Remove an unused and wrong assignment (PVS-Studio). - quartz: Remove some unused assignments (PVS-Studio). - scrrun/tests: Actually test the return values (PVS-Studio). - schedsvc/tests: Actually test a return value (PVS-Studio). - strmbase: Remove an unused assignment (PVS-Studio). - strmbase: Handle the failure of CoCreateInstance (PVS-Studio). - user32/tests: Remove an unused assignment (PVS-Studio). - usp10: Remove an unused assignment (PVS-Studio). - winex11.drv: Remove an unused assignment (PVS-Studio). - wininet: Remove an unused assignment (PVS-Studio). - wintrust/tests: Remove an unused assignment (PVS-Studio). - -Nikolay Sivov (14): - user32: Handle NULL argument in GetKeyboardLayoutNameW(). - winhttp: Fix typeinfo refcount in GetTypeInfo(). - winhttp: Release typeinfos and typelib on dll unload. - hnetcfg: Return NET_FW_IP_VERSION_ANY as ipVersion property value. - hnetcfg: Fix refcount of returned ITypeInfo pointer. - scrrun: Fix refcount on GetTypeInfo(). - vbscript: Support 'End If' for single line If statements. - dwrite: Initial support of cluster metrics computation. - dwrite: Implement GetClusterMetrics(). - dwrite/tests: Additional test for Draw(). - hnetcfg: Release typeinfos and typelib on dll unload. - msxml3: Remove child node in one place in node_insert_before(). - dwrite/tests: Basic test for GetTypographicFeatures(). - dwrite: Initial implementation of GetGlyphPlacements(). - -Piotr Caban (3): - ole32: Only change DoDragDrop return value on IDropTarget::Drop failure. - msvcrt: Add _vscprintf_p implementation. - msvcrt: Drop read buffer in _flsbuf. - -Qian Hong (10): - atl100/tests: Added more tests for class AtlAxWin100 and AtlAxWinLic100. - atl100/tests: Added tests for AtlAxAttachControl. - atl: Don't conflict GWLP_USERDATA with user applications. - ntdll: Fixed buffer size checking for ProcessWow64Information on 64bit in NtQueryInformationProcess. - kernel32: Make SetUnhandledExceptionFilter hotpatchable. - ntdll: Make RtlAddVectoredExceptionHandler hotpatchable. - ole32: Make CoUninitialize and OleUninitialize hotpatchable. - kernel32: Fixed buffer size on 64bit in IsWow64Process. - atl: Improved content type handling of AtlAxCreateControlEx. - atl100/tests: Added tests for AtlAxCreateControlEx. +Austin English (18): + include: Add minimal ntdef.h. + kernel32: Add GetSystemFirmwareTable stub. + include/ddk: Add KWAIT_BLOCK struct to ntddk.h. + kernel32: Sync spec file with windowss 7. + prntvpt: Add a stub for PTQuerySchemaVersionSupport. + msi: Add stubs for MsiEnumClientsExA/W. + evr: Add stub dll. + include: Add hidusage.h. + kernel32: Add CreateHardLinkTransactedA/W stubs. + oleaut32: Add a stub for OleSavePictureFile. + ntoskrnl.exe: Add a stub for ExInterlockedRemoveHeadList. + shdocvw: Add DoFileDownload stub. + apphelp: Add a stub for SdbOpenDatabase. + cryptui: Add CryptUIDlgSelectCertificateFromStore stub. + ktmw32: Add a stub for RollbackTransaction. + apphelp: Add a stub for SdbGetFirstChild. + apphelp: Add a stub for SdbCloseDatabase. + ntoskrnl.exe: Add ExfInterlockedRemoveHeadList stub. + +Charles Davis (4): + configure: Check that we can link to QuickTime.framework before using it. + winemac.drv: Always initialize a closure-captured object pointer. + ntdll: Support 64-bit Mac OS. + dbghelp: Support 64-bit dyld_all_image_infos structures, too. + +Daniel Scharrer (1): + kernel32: Add stub implementation for EnumResourceLanguagesEx. + +Henri Verbeet (11): + d2d1: Implement d2d_bitmap_brush_GetTransform(). + d2d1: Implement d2d_linear_gradient_brush_GetTransform(). + d2d1: Implement d2d_solid_color_brush_GetTransform(). + d2d1: Implement d2d_bitmap_brush_SetTransform(). + d2d1: Implement d2d_linear_gradient_brush_SetTransform(). + d2d1: Implement d2d_solid_color_brush_SetTransform(). + d2d1: Implement d2d_bitmap_GetPixelSize(). + d2d1: Implement d2d_bitmap_GetDpi(). + d2d1: Implement d2d_bitmap_GetSize(). + d2d1: Implement bitmap brush support for d2d_d3d_render_target_FillRectangle(). + d2d1: Implement d2d_d3d_render_target_DrawBitmap(). + +Jacek Caban (14): + mshtml: Added URI_ flags declaration and improved debug traces. + mshtml: Added support for _self target in IHTMLWindow2::open. + vbscript: Allow omitting optional function parameters in call expressions. + wscript: Added IHost::Echo implementation. + mshtml: Use our submit implementation for all windows, but only for POST method. + mshtml: Added IHTMLDocument2::ondblclick property implementation. + jscript: Added support for VT_UI4 variants. + jscript: Don't use builtin property for exposing Boolean constructor. + jscript: Don't use builtin property for a few more constructors. + jscript: Don't use builtin property for *Error constructors. + jscript: Use separated functions for implementing builtin call, get and set operation. + jscript: Pass 'this' as jsdisp_t to getters. + jscript: Pass 'this' as jsdisp_t to setters. + jscript: Fixed handling VT_VARIANT|VY_BYREF types. + +Josh DuBois (2): + buildimage: Fix typo in conditional. + buildimage: Allow use of rsvg-convert as alternative to rsvg. + +Julian Rüger (1): + po: Update German translation. + +Ken Thomases (6): + winemac: When Cocoa brings a window forward, tell Wine even if it's disabled or no-activate. + winemac: Track which window was brought forward by Cocoa separately from the window receiving the click event. + winemac: Tell Wine that Cocoa brought a window forward even if a window is being dragged. + opengl32: Fix get_current_context_type() to not shift the type bits down. + winemac: Prevent interpolation of the window surface image when it's blitted to the actual window. + winemac: Raise full-screen windows in front of the status items in the Mac menu bar. + +Lauri Kenttä (1): + po: Update Finnish translation. + +Mark Harmstone (6): + mmdevapi: Allow PKEY_AudioEndpoint_PhysicalSpeakers to be overridden. + dsound: Fix 3D positioning bug with head-relative buffers. + mmdevapi: Do nothing on property store Commit. + winecfg: Add speaker config controls to audio tab. + winecfg: Fix bug causing 5.1 speakers to appear as stereo. + include: Add standard effect GUIDs to dsound.h. + +Matteo Bruni (2): + opengl32: Don't use deprecated functions for extension checking purposes on core profile contexts. + wined3d: Use the core version of the asynchronous queries functions. + +Nikolay Sivov (13): + dwrite: Initial implementation of GetTypographicFeatures(). + dwrite: Make sure we don't have duplicates in locale/value pairs for font names. + kernel32/tests: Make loader tests independent from each other. + kernel32/tests: Remove todo_wine that doesn't work anymore. + kernel32: Fix writing resource section as a last section in UpdateResource(). + kernel32/tests: Remove a couple of duplicated constants. + dwrite: Forward GetGdiCompatibleMetrics() to newer call. + dwrite: Implement GetCaretMetrics(). + po: Update Russian translation. + dwrite: Simplify collection_find_family(). + dwrite: Improve error handling during font collection creation. + dwrite/tests: Fix couple of leaks when creating test font instance. + dwrite: Implement GetGlyphCount(). + +Orion Poplawski (1): + msvcrt: Bump MSVCRT_MB_LEN_MAX to 5 and use it in MSVCRT__wctomb_l for default buffer lengthSet MB_LEN_MAX to 5 to match MSVCRT_MB_LEN_MAX. + +Piotr Caban (11): + msvcrt: Handle read buffer flushing in msvcrt_flush_buffer helper. + msvcrt: Reset write direction after flush on read/write stream. + msvcrt: Add _iswspace_l implementation. + msvcrt: Add _iswpunct_l implementation. + shell32: Create trash test file in temp directory. + shell32: Handle TRASH_EnumItems failures correctly. + shell32: Pass trash path to TRASH_EnumItems. + shell32: Add partial support for Mac trash enumeration. + msvcp71: Added basic_string::insert(iterator, char*, char*) implementation. + user32/tests: Added GetMessagePos tests. + user32: Only use DIALOGINFO->hwndFocus to store last focus of inactive windows. Sebastian Lackner (2): - wininet: Fix handling of subdirectory in FtpFindFirstFile. - ntoskrnl: Initialize irp.Tail.Overlay.OriginalFileObject with stub file object. + dbghelp: Don't fill KdHelp structure for usermode applications. + slc/tests: Add tests for SLGetWindowsInformationDWORD. + +Stefan Dösinger (7): + wined3d: Pass WM_SYSCOMMAND(SC_RESTORE) to DefWindowProc. + d3d/tests: Show that WM_SYSCOMMAND(SC_RESTORE) is delivered only once. + wined3d: Fix the color keyed P8 alpha ref value. + wined3d: Don't use TXP for rectangle P8 textures. + d3d11: Print UINT sdk_version with %u. + d3d11: Switch to d3d-style formatting. + wined3d: Check the d3d buffer to find converted attributes. -Vincent Povirk (1): - xmllite: Length is optional in IXmlReader::GetQualifiedName. +YongHao Hu (1): + msvcp90/tests: Add more tests to ostream_print_complex_float. -- Alexandre Julliard diff -Nru wine-staging-1.7.35~ubuntu12.04.1/AUTHORS wine-staging-1.7.36~ubuntu12.04.1/AUTHORS --- wine-staging-1.7.35~ubuntu12.04.1/AUTHORS 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/AUTHORS 2015-02-08 20:31:28.000000000 +0000 @@ -1043,6 +1043,7 @@ Olli-Pekka Wallin Ondrej Macek Onno Hovers +Orion Poplawski Ori Pessach Ove Kåven Owen Rudge diff -Nru wine-staging-1.7.35~ubuntu12.04.1/configure wine-staging-1.7.36~ubuntu12.04.1/configure --- wine-staging-1.7.35~ubuntu12.04.1/configure 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/configure 2015-02-08 20:31:28.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for Wine 1.7.35. +# Generated by GNU Autoconf 2.69 for Wine 1.7.36. # # Report bugs to . # @@ -580,8 +580,8 @@ # Identity of this package. PACKAGE_NAME='Wine' PACKAGE_TARNAME='wine' -PACKAGE_VERSION='1.7.35' -PACKAGE_STRING='Wine 1.7.35' +PACKAGE_VERSION='1.7.36' +PACKAGE_STRING='Wine 1.7.36' PACKAGE_BUGREPORT='wine-devel@winehq.org' PACKAGE_URL='http://www.winehq.org' @@ -1044,6 +1044,7 @@ enable_dxdiagn enable_dxgi enable_dxva2 +enable_evr enable_explorerframe enable_ext_ms_win_gdi_devcaps_l1_1_0 enable_faultrep @@ -2010,7 +2011,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Wine 1.7.35 to adapt to many kinds of systems. +\`configure' configures Wine 1.7.36 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -2079,7 +2080,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Wine 1.7.35:";; + short | recursive ) echo "Configuration of Wine 1.7.36:";; esac cat <<\_ACEOF @@ -2275,7 +2276,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Wine configure 1.7.35 +Wine configure 1.7.36 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2793,7 +2794,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Wine $as_me 1.7.35, which was +It was created by Wine $as_me 1.7.36, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -5771,7 +5772,7 @@ done test -n "$FONTFORGE" || FONTFORGE="false" - for ac_prog in rsvg + for ac_prog in rsvg-convert rsvg do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -7949,10 +7950,38 @@ fi if test "$ac_cv_header_QuickTime_ImageCompression_h" = "yes" then - QUICKTIME_LIBS="-framework QuickTime -framework ApplicationServices -framework CoreVideo" + ac_save_LIBS="$LIBS" + LIBS="-framework QuickTime -framework ApplicationServices -framework CoreVideo $LIBS" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the QuickTime framework" >&5 +$as_echo_n "checking for the QuickTime framework... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +CodecManagerVersion(NULL); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + QUICKTIME_LIBS="-framework QuickTime -framework ApplicationServices -framework CoreVideo" - enable_wineqtdecoder=${enable_wineqtdecoder:-yes} - else + enable_wineqtdecoder=${enable_wineqtdecoder:-yes} +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ac_cv_header_QuickTime_ImageCompression_h=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$ac_save_LIBS" + fi + if test "$ac_cv_header_QuickTime_ImageCompression_h" != "yes" + then as_fn_append wine_notices "|QuickTime ${notice_platform}development files not found, video decoding won't be supported." fi if test "$ac_cv_header_Carbon_Carbon_h" = "yes" @@ -17198,6 +17227,7 @@ wine_fn_config_test dlls/dxgi/tests dxgi_test wine_fn_config_lib dxguid wine_fn_config_dll dxva2 enable_dxva2 +wine_fn_config_dll evr enable_evr wine_fn_config_dll explorerframe enable_explorerframe clean wine_fn_config_test dlls/explorerframe/tests explorerframe_test wine_fn_config_dll ext-ms-win-gdi-devcaps-l1-1-0 enable_ext_ms_win_gdi_devcaps_l1_1_0 @@ -17502,6 +17532,7 @@ wine_fn_config_test dlls/shlwapi/tests shlwapi_test wine_fn_config_dll slbcsp enable_slbcsp wine_fn_config_dll slc enable_slc implib +wine_fn_config_test dlls/slc/tests slc_test wine_fn_config_dll snmpapi enable_snmpapi implib wine_fn_config_test dlls/snmpapi/tests snmpapi_test wine_fn_config_dll softpub enable_softpub @@ -18422,7 +18453,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Wine $as_me 1.7.35, which was +This file was extended by Wine $as_me 1.7.36, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -18493,7 +18524,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -Wine config.status 1.7.35 +Wine config.status 1.7.36 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/configure.ac wine-staging-1.7.36~ubuntu12.04.1/configure.ac --- wine-staging-1.7.35~ubuntu12.04.1/configure.ac 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/configure.ac 2015-02-08 20:31:28.000000000 +0000 @@ -284,7 +284,7 @@ else test "$srcdir" = . || AC_MSG_ERROR([Maintainer mode cannot work out of tree.]) AC_CHECK_PROGS(FONTFORGE, fontforge, false) - AC_CHECK_PROGS(RSVG, rsvg, false) + AC_CHECK_PROGS(RSVG, rsvg-convert rsvg, false) AC_CHECK_PROGS(CONVERT, convert, false) AC_CHECK_PROGS(ICOTOOL, icotool, false) test "$FONTFORGE" != "false" || AC_MSG_ERROR([You need fontforge to rebuild fonts in maintainer mode.]) @@ -813,9 +813,20 @@ fi if test "$ac_cv_header_QuickTime_ImageCompression_h" = "yes" then - AC_SUBST(QUICKTIME_LIBS,"-framework QuickTime -framework ApplicationServices -framework CoreVideo") - enable_wineqtdecoder=${enable_wineqtdecoder:-yes} - else + dnl Make sure we can actually use the QuickTime framework + ac_save_LIBS="$LIBS" + LIBS="-framework QuickTime -framework ApplicationServices -framework CoreVideo $LIBS" + AC_MSG_CHECKING([for the QuickTime framework]) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]],[[CodecManagerVersion(NULL);]])], + [AC_MSG_RESULT([yes]) + AC_SUBST(QUICKTIME_LIBS,"-framework QuickTime -framework ApplicationServices -framework CoreVideo") + enable_wineqtdecoder=${enable_wineqtdecoder:-yes}], + [AC_MSG_RESULT([no]) + ac_cv_header_QuickTime_ImageCompression_h=no]) + LIBS="$ac_save_LIBS" + fi + if test "$ac_cv_header_QuickTime_ImageCompression_h" != "yes" + then WINE_NOTICE([QuickTime ${notice_platform}development files not found, video decoding won't be supported.]) fi if test "$ac_cv_header_Carbon_Carbon_h" = "yes" @@ -2929,6 +2940,7 @@ WINE_CONFIG_TEST(dlls/dxgi/tests) WINE_CONFIG_LIB(dxguid) WINE_CONFIG_DLL(dxva2) +WINE_CONFIG_DLL(evr) WINE_CONFIG_DLL(explorerframe,,[clean]) WINE_CONFIG_TEST(dlls/explorerframe/tests) WINE_CONFIG_DLL(ext-ms-win-gdi-devcaps-l1-1-0) @@ -3233,6 +3245,7 @@ WINE_CONFIG_TEST(dlls/shlwapi/tests) WINE_CONFIG_DLL(slbcsp) WINE_CONFIG_DLL(slc,,[implib]) +WINE_CONFIG_TEST(dlls/slc/tests) WINE_CONFIG_DLL(snmpapi,,[implib]) WINE_CONFIG_TEST(dlls/snmpapi/tests) WINE_CONFIG_DLL(softpub) diff -Nru wine-staging-1.7.35~ubuntu12.04.1/debian/bzr-builder.manifest wine-staging-1.7.36~ubuntu12.04.1/debian/bzr-builder.manifest --- wine-staging-1.7.35~ubuntu12.04.1/debian/bzr-builder.manifest 2015-01-24 15:56:40.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/debian/bzr-builder.manifest 2015-02-08 21:09:38.000000000 +0000 @@ -1,3 +1,3 @@ -# bzr-builder format 0.4 deb-version 1.7.35 -lp:wine revid:git-v1:060b778fdef1e1efd428de8b93133cd1807bfdcb -merge compholio-release-package lp:wine-compholio revid:git-v1:4b62bd0dbc9098d83141598ff6697c55abddbe33 +# bzr-builder format 0.4 deb-version 1.7.36 +lp:wine revid:git-v1:21d470d11a3da2a8b8bf325a7508d7f8bea422d2 +merge compholio-release-package lp:wine-compholio revid:git-v1:b7770327f1def505cbf821ce83efec41a4010d56 diff -Nru wine-staging-1.7.35~ubuntu12.04.1/debian/changelog wine-staging-1.7.36~ubuntu12.04.1/debian/changelog --- wine-staging-1.7.35~ubuntu12.04.1/debian/changelog 2015-01-24 15:56:40.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/debian/changelog 2015-02-08 21:09:38.000000000 +0000 @@ -1,8 +1,35 @@ -wine-staging (1.7.35~ubuntu12.04.1) precise; urgency=low +wine-staging (1.7.36~ubuntu12.04.1) precise; urgency=low * Auto build. - -- Sebastian Lackner Sat, 24 Jan 2015 15:56:40 +0000 + -- Sebastian Lackner Sun, 08 Feb 2015 21:09:38 +0000 + +wine-staging (1.7.36) unstable; urgency=low + * Fix an incompatibility of patchinstall.sh with non-bash shells under specific situations. + * Improve dinput-Events patch to be compatible with applications which do not explicitly poll for input. + * Added patch to properly call DriverUnload when unloading device drivers. + * Added patch to fix check for end_frame in RtlUnwindEx on x86_64. + * Added patch to fix mouse jittering in Planetside 2. + * Added patch to implement additional stubs for vcomp dlls. + * Added patchset to implement Vista+ threadpool functions for work / timers. + * Added patchset for Vista+ threadpool wait objects. + * Added patch to fix crash in Jedi Knight: Dark Forces II when winmm is set to native. + * Added patch to fix arguments for OSMesaMakeCurrent when using 16 bit formats. + * Added patch to add library override instead of closing winecfg when pressing ENTER over the combobox. + * Added patchset for various improvements and cleanup of reg.exe. + * Added patch to add performance library registry keys needed by MS SQL Server Management Studio Express 2008 R2. + * Added patch to implement NVIDIA video encoder library (nvencodeapi). + * Added patch to make nvcuda.dll compatible with CUDA 7.0. + * Added patch to implement stub for ntoskrnl.IoGetAttachedDeviceReference. + * Added patch to implement stubs for ntoskrnl.Ex{Acquire,Release}FastMutexUnsafe. + * Added patch to implement stubs for ntoskrnl.ObReferenceObjectByPointer and ntoskrnl.ObDereferenceObject. + * Added patch to implement stub for ntoskrnl.KeDelayExecutionThread. + * Added patch to improve various ntoskrnl stub functions. + * Added patch to fix wrong defition of ntoskrnl.IoReleaseCancelSpinLock function. + * Added patch to improve stub for AEV_GetVolumeRange. + * Removed patch to add additional tests for SLGetWindowsInformationDWORD (accepted upstream). + * Removed patch to avoid filling KdHelp structure for usermode applications (accepted upstream). + -- Sebastian Lackner Sun, 08 Feb 2015 19:14:24 +0100 wine-staging (1.7.35) unstable; urgency=low * Add stub for KeWaitForMultipleObjects. diff -Nru wine-staging-1.7.35~ubuntu12.04.1/debian/tools/patchinstall.sh.in wine-staging-1.7.36~ubuntu12.04.1/debian/tools/patchinstall.sh.in --- wine-staging-1.7.35~ubuntu12.04.1/debian/tools/patchinstall.sh.in 2015-01-24 15:32:20.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/debian/tools/patchinstall.sh.in 2015-02-08 20:46:30.000000000 +0000 @@ -53,6 +53,12 @@ exit 1 }} +# Show a warning +warning() +{{ + echo "WARNING: $1" >&2 +}} + {patch_helpers} # Default settings @@ -154,7 +160,7 @@ # are applied, but the exitcode is zero. To avoid broken builds we # will workaround this issue or abort. For more information see # https://github.com/wine-compholio/wine-staging/issues/7 -test ! -d "$DESTDIR/.git" && (cd "$DESTDIR"; git rev-parse --git-dir) &> /dev/null +test ! -d ".git" && git rev-parse --git-dir >/dev/null 2>&1 workaround_git_bug="$?" # Apply the patches using gitapply.sh, a small wrapper around 'patch' @@ -183,9 +189,9 @@ gitapply_args="" fi - if ! command -v epatch &> /dev/null || \ - ! command -v ebegin &> /dev/null || \ - ! command -v eend &> /dev/null; then + if ! command -v epatch >/dev/null 2>&1 || \ + ! command -v ebegin >/dev/null 2>&1 || \ + ! command -v eend >/dev/null 2>&1; then abort "Shell functions epatch/ebegin/eend not found. You have to source this script from your ebuild." fi @@ -269,9 +275,14 @@ # If autoupdate is enabled then create a tempfile to keep track of all patches if test "$enable_patchlist" -eq 1; then - patchlist=$(mktemp) - if test ! -f "$patchlist"; then - abort "Unable to create temporary file for patchlist." + if test "$enable_Staging" -eq 1; then + patchlist=$(mktemp) + if test ! -f "$patchlist"; then + abort "Unable to create temporary file for patchlist." + fi + else + warning "Skipping generation of patchlist because 'Staging' patchset is disabled." + enable_patchlist=0 fi fi @@ -285,27 +296,16 @@ patch_data=$(cat "$patchlist" | sort) patch_lines=$(echo "$patch_data" | wc -l) if test ! -z "$patch_data"; then - patch_lines=$((${{patch_lines}}+23)) + patch_lines=$((${{patch_lines}}+21)) cat > "$patchlist" < Subject: Autogenerated patch list. -diff --git a/include/wine/library.h b/include/wine/library.h ---- a/include/wine/library.h -+++ b/include/wine/library.h -@@ -43,6 +43,7 @@ extern const char *wine_get_data_dir(void); - extern const char *wine_get_server_dir(void); - extern const char *wine_get_user_name(void); - extern const char *wine_get_version(void); -+extern const void *wine_get_patches(void); - extern const char *wine_get_build_id(void); - extern void wine_init_argv0_path( const char *argv0 ); - extern void wine_exec_wine_binary( const char *name, char **argv, const char *env_var ); diff --git a/libs/wine/config.c b/libs/wine/config.c -index a273502..0a3182f 100644 +index 5262c76..0a3182f 100644 --- a/libs/wine/config.c +++ b/libs/wine/config.c -@@ -478,6 +478,${{patch_lines}} @@ const char *wine_get_version(void) +@@ -478,10 +478,${{patch_lines}} @@ const char *wine_get_version(void) return PACKAGE_VERSION; }} @@ -321,39 +321,14 @@ + {{ NULL, NULL, 0 }} +}}; + -+/* return the applied non-standard patches */ -+const void *wine_get_patches(void) -+{{ + /* return the applied non-standard patches */ + const void *wine_get_patches(void) + {{ +- return NULL; + return &wine_patch_data[0]; -+}} -+ + }} + /* return the build id string */ - const char *wine_get_build_id(void) - {{ -diff --git a/libs/wine/wine.def b/libs/wine/wine.def -index ed315bd..5b42029 100644 ---- a/libs/wine/wine.def -+++ b/libs/wine/wine.def -@@ -83,6 +83,7 @@ EXPORTS - wine_get_sortkey - wine_get_user_name - wine_get_version -+ wine_get_patches - wine_init - wine_init_argv0_path - wine_is_dbcs_leadbyte -diff --git a/libs/wine/wine.map b/libs/wine/wine.map -index 2159fac..7cb2918 100644 ---- a/libs/wine/wine.map -+++ b/libs/wine/wine.map -@@ -90,6 +90,7 @@ WINE_1.0 - wine_get_ss; - wine_get_user_name; - wine_get_version; -+ wine_get_patches; - wine_init; - wine_init_argv0_path; - wine_is_dbcs_leadbyte; EOF patch_apply_file "$patchlist" fi diff -Nru wine-staging-1.7.35~ubuntu12.04.1/debian/tools/patchupdate.py wine-staging-1.7.36~ubuntu12.04.1/debian/tools/patchupdate.py --- wine-staging-1.7.35~ubuntu12.04.1/debian/tools/patchupdate.py 2015-01-24 15:32:20.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/debian/tools/patchupdate.py 2015-02-08 20:46:30.000000000 +0000 @@ -505,7 +505,7 @@ lines.append("patch_enable_all ()\n") lines.append("{\n") for i, patch in sorted([(i, all_patches[i]) for i in resolved], key=lambda x:x[1].name): - patch.variable = "enable_%s" % patch.name.replace("-","_") + patch.variable = "enable_%s" % patch.name.replace("-","_").replace(".","_") lines.append("\t%s=\"$1\"\n" % patch.variable) lines.append("}\n") lines.append("\n") diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/api-ms-win-core-libraryloader-l1-1-1/api-ms-win-core-libraryloader-l1-1-1.spec wine-staging-1.7.36~ubuntu12.04.1/dlls/api-ms-win-core-libraryloader-l1-1-1/api-ms-win-core-libraryloader-l1-1-1.spec --- wine-staging-1.7.35~ubuntu12.04.1/dlls/api-ms-win-core-libraryloader-l1-1-1/api-ms-win-core-libraryloader-l1-1-1.spec 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/api-ms-win-core-libraryloader-l1-1-1/api-ms-win-core-libraryloader-l1-1-1.spec 2015-02-08 20:31:28.000000000 +0000 @@ -1,7 +1,7 @@ @ stub AddDllDirectory @ stdcall DisableThreadLibraryCalls(long) kernel32.DisableThreadLibraryCalls -@ stub EnumResourceLanguagesExA -@ stub EnumResourceLanguagesExW +@ stdcall EnumResourceLanguagesExA(long str str ptr long long long) kernel32.EnumResourceLanguagesExA +@ stdcall EnumResourceLanguagesExW(long wstr wstr ptr long long long) kernel32.EnumResourceLanguagesExW @ stub EnumResourceNamesExA @ stub EnumResourceNamesExW @ stub EnumResourceTypesExA diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/api-ms-win-core-sysinfo-l1-2-0/api-ms-win-core-sysinfo-l1-2-0.spec wine-staging-1.7.36~ubuntu12.04.1/dlls/api-ms-win-core-sysinfo-l1-2-0/api-ms-win-core-sysinfo-l1-2-0.spec --- wine-staging-1.7.35~ubuntu12.04.1/dlls/api-ms-win-core-sysinfo-l1-2-0/api-ms-win-core-sysinfo-l1-2-0.spec 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/api-ms-win-core-sysinfo-l1-2-0/api-ms-win-core-sysinfo-l1-2-0.spec 2015-02-08 20:31:28.000000000 +0000 @@ -9,7 +9,7 @@ @ stdcall GetProductInfo(long long long long ptr) kernel32.GetProductInfo @ stdcall GetSystemDirectoryA(ptr long) kernel32.GetSystemDirectoryA @ stdcall GetSystemDirectoryW(ptr long) kernel32.GetSystemDirectoryW -@ stub GetSystemFirmwareTable +@ stdcall GetSystemFirmwareTable(long long ptr long) kernel32.GetSystemFirmwareTable @ stdcall GetSystemInfo(ptr) kernel32.GetSystemInfo @ stdcall GetSystemTime(ptr) kernel32.GetSystemTime @ stdcall GetSystemTimeAdjustment(ptr ptr ptr) kernel32.GetSystemTimeAdjustment diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/api-ms-win-core-sysinfo-l1-2-1/api-ms-win-core-sysinfo-l1-2-1.spec wine-staging-1.7.36~ubuntu12.04.1/dlls/api-ms-win-core-sysinfo-l1-2-1/api-ms-win-core-sysinfo-l1-2-1.spec --- wine-staging-1.7.35~ubuntu12.04.1/dlls/api-ms-win-core-sysinfo-l1-2-1/api-ms-win-core-sysinfo-l1-2-1.spec 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/api-ms-win-core-sysinfo-l1-2-1/api-ms-win-core-sysinfo-l1-2-1.spec 2015-02-08 20:31:28.000000000 +0000 @@ -11,7 +11,7 @@ @ stdcall GetProductInfo(long long long long ptr) kernel32.GetProductInfo @ stdcall GetSystemDirectoryA(ptr long) kernel32.GetSystemDirectoryA @ stdcall GetSystemDirectoryW(ptr long) kernel32.GetSystemDirectoryW -@ stub GetSystemFirmwareTable +@ stdcall GetSystemFirmwareTable(long long ptr long) kernel32.GetSystemFirmwareTable @ stdcall GetSystemInfo(ptr) kernel32.GetSystemInfo @ stdcall GetSystemTime(ptr) kernel32.GetSystemTime @ stdcall GetSystemTimeAdjustment(ptr ptr ptr) kernel32.GetSystemTimeAdjustment diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/apphelp/apphelp.c wine-staging-1.7.36~ubuntu12.04.1/dlls/apphelp/apphelp.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/apphelp/apphelp.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/apphelp/apphelp.c 2015-02-08 20:31:28.000000000 +0000 @@ -34,6 +34,10 @@ /* FIXME: don't know where to place that typedef */ typedef HANDLE PDB; typedef HANDLE HSDB; +typedef DWORD TAGID; + +/* FIXME: don't know where to place that define */ +#define TAGID_NULL 0x0 BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID reserved ) { @@ -83,10 +87,27 @@ return TRUE; } - HSDB WINAPI SdbInitDatabase(DWORD flags, LPCWSTR path) { FIXME("stub: %08x %s\n", flags, debugstr_w(path)); SetLastError(ERROR_CALL_NOT_IMPLEMENTED); return NULL; } + +PDB WINAPI SdbOpenDatabase(LPCWSTR path, PATH_TYPE type) +{ + FIXME("stub: %s %08x\n", debugstr_w(path), type); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return NULL; +} + +TAGID WINAPI SdbGetFirstChild(PDB pdb, TAGID parent) +{ + FIXME("stub: %p %d\n", pdb, parent); + return TAGID_NULL; +} + +void WINAPI SdbCloseDatabase(PDB pdb) +{ + FIXME("stub: %p\n", pdb); +} diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/apphelp/apphelp.spec wine-staging-1.7.36~ubuntu12.04.1/dlls/apphelp/apphelp.spec --- wine-staging-1.7.35~ubuntu12.04.1/dlls/apphelp/apphelp.spec 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/apphelp/apphelp.spec 2015-02-08 20:31:28.000000000 +0000 @@ -22,7 +22,7 @@ @ stub SdbApphelpNotifyExSdbApphelpNotifyEx @ stub SdbBuildCompatEnvVariables @ stub SdbCloseApphelpInformation -@ stub SdbCloseDatabase +@ stdcall SdbCloseDatabase(ptr) @ stub SdbCloseDatabaseWrite @ stub SdbCloseLocalDatabase @ stub SdbCommitIndexes @@ -62,7 +62,7 @@ @ stub SdbGetFileImageType @ stub SdbGetFileImageTypeEx @ stub SdbGetFileInfo -@ stub SdbGetFirstChild +@ stdcall SdbGetFirstChild(ptr long) @ stub SdbGetIndex @ stub SdbGetItemFromItemRef @ stub SdbGetLayerName @@ -96,7 +96,7 @@ @ stub SdbOpenApphelpInformation @ stub SdbOpenApphelpInformationByID @ stub SdbOpenApphelpResourceFile -@ stub SdbOpenDatabase +@ stdcall SdbOpenDatabase(wstr long) @ stub SdbOpenDbFromGuid @ stub SdbOpenLocalDatabase @ stub SdbPackAppCompatData diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/cryptui/cryptui.spec wine-staging-1.7.36~ubuntu12.04.1/dlls/cryptui/cryptui.spec --- wine-staging-1.7.35~ubuntu12.04.1/dlls/cryptui/cryptui.spec 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/cryptui/cryptui.spec 2015-02-08 20:31:28.000000000 +0000 @@ -3,7 +3,7 @@ 3 stub CryptUIDlgFreeCAContext 4 stub CryptUIDlgSelectCA 5 stdcall CryptUIDlgSelectCertificateA(ptr) -6 stub CryptUIDlgSelectCertificateFromStore +6 stdcall CryptUIDlgSelectCertificateFromStore(ptr ptr wstr wstr long long ptr) 7 stdcall CryptUIDlgSelectCertificateW(ptr) 8 stdcall CryptUIDlgSelectStoreA(ptr) 9 stdcall CryptUIDlgSelectStoreW(ptr) diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/cryptui/main.c wine-staging-1.7.36~ubuntu12.04.1/dlls/cryptui/main.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/cryptui/main.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/cryptui/main.c 2015-02-08 20:31:28.000000000 +0000 @@ -7049,3 +7049,11 @@ FIXME("%p: stub\n", pcsc); return NULL; } + +PCCERT_CONTEXT WINAPI CryptUIDlgSelectCertificateFromStore(HCERTSTORE hCertStore, HWND hwnd, LPCWSTR pwszTitle, + LPCWSTR pwszDisplayString, DWORD dwDontUseColumn, + DWORD dwFlags, void *pvReserved) +{ + FIXME("%p %p %s %s %d %d %p: stub\n", hCertStore, hwnd, debugstr_w(pwszTitle), debugstr_w(pwszDisplayString), dwDontUseColumn, dwFlags, pvReserved); + return NULL; +} diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/d2d1/bitmap.c wine-staging-1.7.36~ubuntu12.04.1/dlls/d2d1/bitmap.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/d2d1/bitmap.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/d2d1/bitmap.c 2015-02-08 20:31:28.000000000 +0000 @@ -65,7 +65,10 @@ TRACE("%p increasing refcount to %u.\n", iface, refcount); if (!refcount) + { + ID3D10ShaderResourceView_Release(bitmap->view); HeapFree(GetProcessHeap(), 0, bitmap); + } return refcount; } @@ -79,19 +82,22 @@ static D2D1_SIZE_F * STDMETHODCALLTYPE d2d_bitmap_GetSize(ID2D1Bitmap *iface, D2D1_SIZE_F *size) { - FIXME("iface %p, size %p stub!\n", iface, size); + struct d2d_bitmap *bitmap = impl_from_ID2D1Bitmap(iface); - size->width = 0.0f; - size->height = 0.0f; + TRACE("iface %p, size %p.\n", iface, size); + + size->width = bitmap->pixel_size.width / (bitmap->dpi_x / 96.0f); + size->height = bitmap->pixel_size.height / (bitmap->dpi_y / 96.0f); return size; } static D2D1_SIZE_U * STDMETHODCALLTYPE d2d_bitmap_GetPixelSize(ID2D1Bitmap *iface, D2D1_SIZE_U *pixel_size) { - FIXME("iface %p, pixel_size %p stub!\n", iface, pixel_size); + struct d2d_bitmap *bitmap = impl_from_ID2D1Bitmap(iface); + + TRACE("iface %p, pixel_size %p.\n", iface, pixel_size); - pixel_size->width = 0; - pixel_size->height = 0; + *pixel_size = bitmap->pixel_size; return pixel_size; } @@ -106,10 +112,12 @@ static void STDMETHODCALLTYPE d2d_bitmap_GetDpi(ID2D1Bitmap *iface, float *dpi_x, float *dpi_y) { - FIXME("iface %p, dpi_x %p, dpi_y %p stub!\n", iface, dpi_x, dpi_y); + struct d2d_bitmap *bitmap = impl_from_ID2D1Bitmap(iface); + + TRACE("iface %p, dpi_x %p, dpi_y %p.\n", iface, dpi_x, dpi_y); - *dpi_x = 96.0f; - *dpi_y = 96.0f; + *dpi_x = bitmap->dpi_x; + *dpi_y = bitmap->dpi_y; } static HRESULT STDMETHODCALLTYPE d2d_bitmap_CopyFromBitmap(ID2D1Bitmap *iface, @@ -151,11 +159,65 @@ d2d_bitmap_CopyFromMemory, }; -void d2d_bitmap_init(struct d2d_bitmap *bitmap, D2D1_SIZE_U size, const void *src_data, - UINT32 pitch, const D2D1_BITMAP_PROPERTIES *desc) +HRESULT d2d_bitmap_init(struct d2d_bitmap *bitmap, struct d2d_d3d_render_target *render_target, + D2D1_SIZE_U size, const void *src_data, UINT32 pitch, const D2D1_BITMAP_PROPERTIES *desc) { + D3D10_SUBRESOURCE_DATA resource_data; + D3D10_TEXTURE2D_DESC texture_desc; + ID3D10Texture2D *texture; + HRESULT hr; + FIXME("Ignoring bitmap properties.\n"); bitmap->ID2D1Bitmap_iface.lpVtbl = &d2d_bitmap_vtbl; bitmap->refcount = 1; + + texture_desc.Width = size.width; + texture_desc.Height = size.height; + texture_desc.MipLevels = 1; + texture_desc.ArraySize = 1; + texture_desc.Format = desc->pixelFormat.format; + texture_desc.SampleDesc.Count = 1; + texture_desc.SampleDesc.Quality = 0; + texture_desc.Usage = D3D10_USAGE_DEFAULT; + texture_desc.BindFlags = D3D10_BIND_SHADER_RESOURCE; + texture_desc.CPUAccessFlags = 0; + texture_desc.MiscFlags = 0; + + resource_data.pSysMem = src_data; + resource_data.SysMemPitch = pitch; + + if (FAILED(hr = ID3D10Device_CreateTexture2D(render_target->device, &texture_desc, &resource_data, &texture))) + { + ERR("Failed to create texture, hr %#x.\n", hr); + return hr; + } + + hr = ID3D10Device_CreateShaderResourceView(render_target->device, (ID3D10Resource *)texture, NULL, &bitmap->view); + ID3D10Texture2D_Release(texture); + if (FAILED(hr)) + { + ERR("Failed to create view, hr %#x.\n", hr); + return hr; + } + + bitmap->pixel_size = size; + bitmap->dpi_x = desc->dpiX; + bitmap->dpi_y = desc->dpiY; + + if (bitmap->dpi_x == 0.0f && bitmap->dpi_y == 0.0f) + { + bitmap->dpi_x = 96.0f; + bitmap->dpi_y = 96.0f; + } + + return S_OK; +} + +struct d2d_bitmap *unsafe_impl_from_ID2D1Bitmap(ID2D1Bitmap *iface) +{ + if (!iface) + return NULL; + assert(iface->lpVtbl == &d2d_bitmap_vtbl); + return CONTAINING_RECORD(iface, struct d2d_bitmap, ID2D1Bitmap_iface); } diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/d2d1/brush.c wine-staging-1.7.36~ubuntu12.04.1/dlls/d2d1/brush.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/d2d1/brush.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/d2d1/brush.c 2015-02-08 20:31:28.000000000 +0000 @@ -147,9 +147,17 @@ static void d2d_brush_init(struct d2d_brush *brush, ID2D1RenderTarget *render_target, enum d2d_brush_type type, const D2D1_BRUSH_PROPERTIES *desc, const struct ID2D1BrushVtbl *vtbl) { + static const D2D1_MATRIX_3X2_F identity = + { + 1.0f, 0.0f, + 0.0f, 1.0f, + 0.0f, 0.0f, + }; + brush->ID2D1Brush_iface.lpVtbl = vtbl; brush->refcount = 1; brush->opacity = desc ? desc->opacity : 1.0f; + brush->transform = desc ? desc->transform : identity; brush->type = type; } @@ -221,7 +229,11 @@ static void STDMETHODCALLTYPE d2d_solid_color_brush_SetTransform(ID2D1SolidColorBrush *iface, const D2D1_MATRIX_3X2_F *transform) { - FIXME("iface %p, transform %p stub!\n", iface, transform); + struct d2d_brush *brush = impl_from_ID2D1SolidColorBrush(iface); + + TRACE("iface %p, transform %p.\n", iface, transform); + + brush->transform = *transform; } static float STDMETHODCALLTYPE d2d_solid_color_brush_GetOpacity(ID2D1SolidColorBrush *iface) @@ -236,16 +248,11 @@ static void STDMETHODCALLTYPE d2d_solid_color_brush_GetTransform(ID2D1SolidColorBrush *iface, D2D1_MATRIX_3X2_F *transform) { - static const D2D1_MATRIX_3X2_F identity = - { - 1.0f, 0.0f, - 0.0f, 1.0f, - 0.0f, 0.0f, - }; + struct d2d_brush *brush = impl_from_ID2D1SolidColorBrush(iface); - FIXME("iface %p, transform %p stub!\n", iface, transform); + TRACE("iface %p, transform %p.\n", iface, transform); - *transform = identity; + *transform = brush->transform; } static void STDMETHODCALLTYPE d2d_solid_color_brush_SetColor(ID2D1SolidColorBrush *iface, const D2D1_COLOR_F *color) @@ -356,7 +363,11 @@ static void STDMETHODCALLTYPE d2d_linear_gradient_brush_SetTransform(ID2D1LinearGradientBrush *iface, const D2D1_MATRIX_3X2_F *transform) { - FIXME("iface %p, transform %p stub!\n", iface, transform); + struct d2d_brush *brush = impl_from_ID2D1LinearGradientBrush(iface); + + TRACE("iface %p, transform %p.\n", iface, transform); + + brush->transform = *transform; } static float STDMETHODCALLTYPE d2d_linear_gradient_brush_GetOpacity(ID2D1LinearGradientBrush *iface) @@ -369,16 +380,11 @@ static void STDMETHODCALLTYPE d2d_linear_gradient_brush_GetTransform(ID2D1LinearGradientBrush *iface, D2D1_MATRIX_3X2_F *transform) { - static const D2D1_MATRIX_3X2_F identity = - { - 1.0f, 0.0f, - 0.0f, 1.0f, - 0.0f, 0.0f, - }; + struct d2d_brush *brush = impl_from_ID2D1LinearGradientBrush(iface); - FIXME("iface %p, transform %p stub!\n", iface, transform); + TRACE("iface %p, transform %p.\n", iface, transform); - *transform = identity; + *transform = brush->transform; } static void STDMETHODCALLTYPE d2d_linear_gradient_brush_SetStartPoint(ID2D1LinearGradientBrush *iface, @@ -492,7 +498,10 @@ TRACE("%p decreasing refcount to %u.\n", iface, refcount); if (!refcount) + { + ID3D10SamplerState_Release(brush->u.bitmap.sampler_state); HeapFree(GetProcessHeap(), 0, brush); + } return refcount; } @@ -517,7 +526,11 @@ static void STDMETHODCALLTYPE d2d_bitmap_brush_SetTransform(ID2D1BitmapBrush *iface, const D2D1_MATRIX_3X2_F *transform) { - FIXME("iface %p, transform %p stub!\n", iface, transform); + struct d2d_brush *brush = impl_from_ID2D1BitmapBrush(iface); + + TRACE("iface %p, transform %p.\n", iface, transform); + + brush->transform = *transform; } static float STDMETHODCALLTYPE d2d_bitmap_brush_GetOpacity(ID2D1BitmapBrush *iface) @@ -532,16 +545,11 @@ static void STDMETHODCALLTYPE d2d_bitmap_brush_GetTransform(ID2D1BitmapBrush *iface, D2D1_MATRIX_3X2_F *transform) { - static const D2D1_MATRIX_3X2_F identity = - { - 1.0f, 0.0f, - 0.0f, 1.0f, - 0.0f, 0.0f, - }; + struct d2d_brush *brush = impl_from_ID2D1BitmapBrush(iface); - FIXME("iface %p, transform %p stub!\n", iface, transform); + TRACE("iface %p, transform %p.\n", iface, transform); - *transform = identity; + *transform = brush->transform; } static void STDMETHODCALLTYPE d2d_bitmap_brush_SetExtendModeX(ID2D1BitmapBrush *iface, D2D1_EXTEND_MODE mode) @@ -611,13 +619,40 @@ d2d_bitmap_brush_GetBitmap, }; -void d2d_bitmap_brush_init(struct d2d_brush *brush, ID2D1RenderTarget *render_target, const ID2D1Bitmap *bitmap, +HRESULT d2d_bitmap_brush_init(struct d2d_brush *brush, struct d2d_d3d_render_target *render_target, ID2D1Bitmap *bitmap, const D2D1_BITMAP_BRUSH_PROPERTIES *bitmap_brush_desc, const D2D1_BRUSH_PROPERTIES *brush_desc) { + D3D10_SAMPLER_DESC sampler_desc; + HRESULT hr; + FIXME("Ignoring brush properties.\n"); - d2d_brush_init(brush, render_target, D2D_BRUSH_TYPE_BITMAP, brush_desc, - (ID2D1BrushVtbl *)&d2d_bitmap_brush_vtbl); + d2d_brush_init(brush, &render_target->ID2D1RenderTarget_iface, D2D_BRUSH_TYPE_BITMAP, + brush_desc, (ID2D1BrushVtbl *)&d2d_bitmap_brush_vtbl); + brush->u.bitmap.bitmap = unsafe_impl_from_ID2D1Bitmap(bitmap); + + sampler_desc.Filter = D3D10_FILTER_MIN_MAG_MIP_POINT; + sampler_desc.AddressU = D3D10_TEXTURE_ADDRESS_CLAMP; + sampler_desc.AddressV = D3D10_TEXTURE_ADDRESS_CLAMP; + sampler_desc.AddressW = D3D10_TEXTURE_ADDRESS_CLAMP; + sampler_desc.MipLODBias = 0.0f; + sampler_desc.MaxAnisotropy = 0; + sampler_desc.ComparisonFunc = D3D10_COMPARISON_NEVER; + sampler_desc.BorderColor[0] = 0.0f; + sampler_desc.BorderColor[1] = 0.0f; + sampler_desc.BorderColor[2] = 0.0f; + sampler_desc.BorderColor[3] = 0.0f; + sampler_desc.MinLOD = 0.0f; + sampler_desc.MaxLOD = 0.0f; + + if (FAILED(hr = ID3D10Device_CreateSamplerState(render_target->device, + &sampler_desc, &brush->u.bitmap.sampler_state))) + { + ERR("Failed to create sampler state, hr %#x.\n", hr); + return hr; + } + + return S_OK; } struct d2d_brush *unsafe_impl_from_ID2D1Brush(ID2D1Brush *iface) @@ -629,3 +664,12 @@ || iface->lpVtbl == (const ID2D1BrushVtbl *)&d2d_bitmap_brush_vtbl); return CONTAINING_RECORD(iface, struct d2d_brush, ID2D1Brush_iface); } + +void d2d_brush_bind_resources(struct d2d_brush *brush, ID3D10Device *device) +{ + if (brush->type == D2D_BRUSH_TYPE_BITMAP) + { + ID3D10Device_PSSetShaderResources(device, 0, 1, &brush->u.bitmap.bitmap->view); + ID3D10Device_PSSetSamplers(device, 0, 1, &brush->u.bitmap.sampler_state); + } +} diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/d2d1/d2d1_private.h wine-staging-1.7.36~ubuntu12.04.1/dlls/d2d1/d2d1_private.h --- wine-staging-1.7.35~ubuntu12.04.1/dlls/d2d1/d2d1_private.h 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/d2d1/d2d1_private.h 2015-02-08 20:31:28.000000000 +0000 @@ -61,6 +61,7 @@ ID3D10BlendState *bs; ID3D10PixelShader *rect_solid_ps; + ID3D10PixelShader *rect_bitmap_ps; D2D1_SIZE_U pixel_size; D2D1_MATRIX_3X2_F transform; @@ -109,6 +110,7 @@ LONG refcount; float opacity; + D2D1_MATRIX_3X2_F transform; enum d2d_brush_type type; union @@ -117,6 +119,11 @@ { D2D1_COLOR_F color; } solid; + struct + { + struct d2d_bitmap *bitmap; + ID3D10SamplerState *sampler_state; + } bitmap; } u; }; @@ -125,9 +132,10 @@ void d2d_linear_gradient_brush_init(struct d2d_brush *brush, ID2D1RenderTarget *render_target, const D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES *gradient_brush_desc, const D2D1_BRUSH_PROPERTIES *brush_desc, ID2D1GradientStopCollection *gradient) DECLSPEC_HIDDEN; -void d2d_bitmap_brush_init(struct d2d_brush *brush, ID2D1RenderTarget *render_target, - const ID2D1Bitmap *bitmap, const D2D1_BITMAP_BRUSH_PROPERTIES *bitmap_brush_desc, +HRESULT d2d_bitmap_brush_init(struct d2d_brush *brush, struct d2d_d3d_render_target *render_target, + ID2D1Bitmap *bitmap, const D2D1_BITMAP_BRUSH_PROPERTIES *bitmap_brush_desc, const D2D1_BRUSH_PROPERTIES *brush_desc) DECLSPEC_HIDDEN; +void d2d_brush_bind_resources(struct d2d_brush *brush, ID3D10Device *device) DECLSPEC_HIDDEN; struct d2d_brush *unsafe_impl_from_ID2D1Brush(ID2D1Brush *iface) DECLSPEC_HIDDEN; struct d2d_stroke_style @@ -151,9 +159,15 @@ { ID2D1Bitmap ID2D1Bitmap_iface; LONG refcount; + + ID3D10ShaderResourceView *view; + D2D1_SIZE_U pixel_size; + float dpi_x; + float dpi_y; }; -void d2d_bitmap_init(struct d2d_bitmap *bitmap, D2D1_SIZE_U size, const void *src_data, - UINT32 pitch, const D2D1_BITMAP_PROPERTIES *desc) DECLSPEC_HIDDEN; +HRESULT d2d_bitmap_init(struct d2d_bitmap *bitmap, struct d2d_d3d_render_target *render_target, + D2D1_SIZE_U size, const void *src_data, UINT32 pitch, const D2D1_BITMAP_PROPERTIES *desc) DECLSPEC_HIDDEN; +struct d2d_bitmap *unsafe_impl_from_ID2D1Bitmap(ID2D1Bitmap *iface) DECLSPEC_HIDDEN; #endif /* __WINE_D2D1_PRIVATE_H */ diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/d2d1/render_target.c wine-staging-1.7.36~ubuntu12.04.1/dlls/d2d1/render_target.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/d2d1/render_target.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/d2d1/render_target.c 2015-02-08 20:31:28.000000000 +0000 @@ -122,7 +122,7 @@ } static void d2d_draw(struct d2d_d3d_render_target *render_target, ID3D10Buffer *vs_cb, - ID3D10PixelShader *ps, ID3D10Buffer *ps_cb, BOOL blend) + ID3D10PixelShader *ps, ID3D10Buffer *ps_cb, struct d2d_brush *brush) { ID3D10Device *device = render_target->device; unsigned int offset; @@ -169,8 +169,11 @@ ID3D10Device_RSSetState(device, render_target->rs); } ID3D10Device_OMSetRenderTargets(device, 1, &render_target->view, NULL); - if (blend) + if (brush) + { ID3D10Device_OMSetBlendState(device, render_target->bs, blend_factor, D3D10_DEFAULT_SAMPLE_MASK); + d2d_brush_bind_resources(brush, device); + } ID3D10Device_Draw(device, 4, 0); @@ -222,6 +225,7 @@ if (!refcount) { d2d_clip_stack_cleanup(&render_target->clip_stack); + ID3D10PixelShader_Release(render_target->rect_bitmap_ps); ID3D10PixelShader_Release(render_target->rect_solid_ps); ID3D10BlendState_Release(render_target->bs); ID3D10RasterizerState_Release(render_target->rs); @@ -247,7 +251,9 @@ static HRESULT STDMETHODCALLTYPE d2d_d3d_render_target_CreateBitmap(ID2D1RenderTarget *iface, D2D1_SIZE_U size, const void *src_data, UINT32 pitch, const D2D1_BITMAP_PROPERTIES *desc, ID2D1Bitmap **bitmap) { + struct d2d_d3d_render_target *render_target = impl_from_ID2D1RenderTarget(iface); struct d2d_bitmap *object; + HRESULT hr; TRACE("iface %p, size {%u, %u}, src_data %p, pitch %u, desc %p, bitmap %p.\n", iface, size.width, size.height, src_data, pitch, desc, bitmap); @@ -255,7 +261,12 @@ if (!(object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object)))) return E_OUTOFMEMORY; - d2d_bitmap_init(object, size, src_data, pitch, desc); + if (FAILED(hr = d2d_bitmap_init(object, render_target, size, src_data, pitch, desc))) + { + WARN("Failed to initialize bitmap, hr %#x.\n", hr); + HeapFree(GetProcessHeap(), 0, object); + return hr; + } TRACE("Created bitmap %p.\n", object); *bitmap = &object->ID2D1Bitmap_iface; @@ -364,7 +375,9 @@ ID2D1Bitmap *bitmap, const D2D1_BITMAP_BRUSH_PROPERTIES *bitmap_brush_desc, const D2D1_BRUSH_PROPERTIES *brush_desc, ID2D1BitmapBrush **brush) { + struct d2d_d3d_render_target *render_target = impl_from_ID2D1RenderTarget(iface); struct d2d_brush *object; + HRESULT hr; TRACE("iface %p, bitmap %p, bitmap_brush_desc %p, brush_desc %p, brush %p.\n", iface, bitmap, bitmap_brush_desc, brush_desc, brush); @@ -372,7 +385,12 @@ if (!(object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object)))) return E_OUTOFMEMORY; - d2d_bitmap_brush_init(object, iface, bitmap, bitmap_brush_desc, brush_desc); + if (FAILED(hr = d2d_bitmap_brush_init(object, render_target, bitmap, bitmap_brush_desc, brush_desc))) + { + WARN("Failed to initialize brush, hr %#x.\n", hr); + HeapFree(GetProcessHeap(), 0, object); + return hr; + } TRACE("Created brush %p.\n", object); *brush = (ID2D1BitmapBrush *)&object->ID2D1Brush_iface; @@ -511,6 +529,7 @@ D3D10_SUBRESOURCE_DATA buffer_data; D3D10_BUFFER_DESC buffer_desc; ID3D10Buffer *vs_cb, *ps_cb; + ID3D10PixelShader *ps; D2D1_COLOR_F color; float tmp_x, tmp_y; HRESULT hr; @@ -518,11 +537,12 @@ { float _11, _21, _31, pad0; float _12, _22, _32, pad1; - } transform; + } transform, transform_inverse; TRACE("iface %p, rect %p, brush %p.\n", iface, rect, brush); - if (brush_impl->type != D2D_BRUSH_TYPE_SOLID) + if (brush_impl->type != D2D_BRUSH_TYPE_SOLID + && brush_impl->type != D2D_BRUSH_TYPE_BITMAP) { FIXME("Unhandled brush type %#x.\n", brush_impl->type); return; @@ -569,14 +589,55 @@ return; } - color = brush_impl->u.solid.color; - color.r *= brush_impl->opacity; - color.g *= brush_impl->opacity; - color.b *= brush_impl->opacity; - color.a *= brush_impl->opacity; + if (brush_impl->type == D2D_BRUSH_TYPE_BITMAP) + { + struct d2d_bitmap *bitmap = brush_impl->u.bitmap.bitmap; + float rt_scale, rt_bitmap_scale, d; + + ps = render_target->rect_bitmap_ps; + + /* Scale for bitmap size and dpi. */ + rt_scale = render_target->dpi_x / 96.0f; + rt_bitmap_scale = bitmap->pixel_size.width * (bitmap->dpi_x / 96.0f) * rt_scale; + transform._11 = brush_impl->transform._11 * rt_bitmap_scale; + transform._21 = brush_impl->transform._21 * rt_bitmap_scale; + transform._31 = brush_impl->transform._31 * rt_scale; + rt_scale = render_target->dpi_y / 96.0f; + rt_bitmap_scale = bitmap->pixel_size.height * (bitmap->dpi_y / 96.0f) * rt_scale; + transform._12 = brush_impl->transform._12 * rt_bitmap_scale; + transform._22 = brush_impl->transform._22 * rt_bitmap_scale; + transform._32 = brush_impl->transform._32 * rt_scale; + + /* Invert the matrix. (Because the matrix is applied to the sampling + * coordinates. I.e., to scale the bitmap by 2 we need to divide the + * coordinates by 2.) */ + d = transform._11 * transform._22 - transform._21 * transform._22; + if (d != 0.0f) + { + transform_inverse._11 = transform._22 / d; + transform_inverse._21 = -transform._21 / d; + transform_inverse._31 = (transform._21 * transform._32 - transform._31 * transform._22) / d; + transform_inverse._12 = -transform._12 / d; + transform_inverse._22 = transform._11 / d; + transform_inverse._32 = -(transform._11 * transform._32 - transform._31 * transform._12) / d; + } + + buffer_desc.ByteWidth = sizeof(transform_inverse); + buffer_data.pSysMem = &transform_inverse; + } + else + { + ps = render_target->rect_solid_ps; - buffer_desc.ByteWidth = sizeof(color); - buffer_data.pSysMem = &color; + color = brush_impl->u.solid.color; + color.r *= brush_impl->opacity; + color.g *= brush_impl->opacity; + color.b *= brush_impl->opacity; + color.a *= brush_impl->opacity; + + buffer_desc.ByteWidth = sizeof(color); + buffer_data.pSysMem = &color; + } if (FAILED(hr = ID3D10Device_CreateBuffer(render_target->device, &buffer_desc, &buffer_data, &ps_cb))) { @@ -585,7 +646,7 @@ return; } - d2d_draw(render_target, vs_cb, render_target->rect_solid_ps, ps_cb, TRUE); + d2d_draw(render_target, vs_cb, ps, ps_cb, brush_impl); ID3D10Buffer_Release(ps_cb); ID3D10Buffer_Release(vs_cb); @@ -648,8 +709,62 @@ ID2D1Bitmap *bitmap, const D2D1_RECT_F *dst_rect, float opacity, D2D1_BITMAP_INTERPOLATION_MODE interpolation_mode, const D2D1_RECT_F *src_rect) { - FIXME("iface %p, bitmap %p, dst_rect %p, opacity %.8e, interpolation_mode %#x, src_rect %p stub!\n", + D2D1_BITMAP_BRUSH_PROPERTIES bitmap_brush_desc; + D2D1_BRUSH_PROPERTIES brush_desc; + ID2D1BitmapBrush *brush; + D2D1_RECT_F s, d; + HRESULT hr; + + TRACE("iface %p, bitmap %p, dst_rect %p, opacity %.8e, interpolation_mode %#x, src_rect %p.\n", iface, bitmap, dst_rect, opacity, interpolation_mode, src_rect); + + if (src_rect) + { + s = *src_rect; + } + else + { + D2D1_SIZE_F size; + + size = ID2D1Bitmap_GetSize(bitmap); + s.left = 0.0f; + s.top = 0.0f; + s.right = size.width; + s.bottom = size.height; + } + + if (dst_rect) + { + d = *dst_rect; + } + else + { + d.left = 0.0f; + d.top = 0.0f; + d.right = s.right - s.left; + d.bottom = s.bottom - s.top; + } + + bitmap_brush_desc.extendModeX = D2D1_EXTEND_MODE_CLAMP; + bitmap_brush_desc.extendModeY = D2D1_EXTEND_MODE_CLAMP; + bitmap_brush_desc.interpolationMode = interpolation_mode; + + brush_desc.opacity = opacity; + brush_desc.transform._11 = (d.right - d.left) / (s.right - s.left); + brush_desc.transform._21 = 0.0f; + brush_desc.transform._31 = d.left; + brush_desc.transform._12 = 0.0f; + brush_desc.transform._22 = (d.bottom - d.top) / (s.bottom - s.top); + brush_desc.transform._32 = d.top; + + if (FAILED(hr = ID2D1RenderTarget_CreateBitmapBrush(iface, bitmap, &bitmap_brush_desc, &brush_desc, &brush))) + { + ERR("Failed to create bitmap brush, hr %#x.\n", hr); + return; + } + + ID2D1RenderTarget_FillRectangle(iface, &d, (ID2D1Brush *)brush); + ID2D1BitmapBrush_Release(brush); } static void STDMETHODCALLTYPE d2d_d3d_render_target_DrawText(ID2D1RenderTarget *iface, @@ -870,7 +985,7 @@ return; } - d2d_draw(render_target, vs_cb, render_target->rect_solid_ps, ps_cb, FALSE); + d2d_draw(render_target, vs_cb, render_target->rect_solid_ps, ps_cb, NULL); ID3D10Buffer_Release(ps_cb); ID3D10Buffer_Release(vs_cb); @@ -1197,6 +1312,32 @@ 0x00000010, 0x04000059, 0x00208e46, 0x00000000, 0x00000001, 0x03000065, 0x001020f2, 0x00000000, 0x06000036, 0x001020f2, 0x00000000, 0x00208e46, 0x00000000, 0x00000000, 0x0100003e, }; + static const DWORD rect_bitmap_ps_code[] = + { +#if 0 + float3x2 transform; + SamplerState s; + Texture2D t; + + float4 main(float4 position : SV_POSITION) : SV_Target + { + return t.Sample(s, mul(float3(position.xy, 1.0), transform)); + } +#endif + 0x43425844, 0x20fce5be, 0x138fa37f, 0x9554f03f, 0x3dbe9c02, 0x00000001, 0x00000184, 0x00000003, + 0x0000002c, 0x00000060, 0x00000094, 0x4e475349, 0x0000002c, 0x00000001, 0x00000008, 0x00000020, + 0x00000000, 0x00000001, 0x00000003, 0x00000000, 0x0000030f, 0x505f5653, 0x5449534f, 0x004e4f49, + 0x4e47534f, 0x0000002c, 0x00000001, 0x00000008, 0x00000020, 0x00000000, 0x00000000, 0x00000003, + 0x00000000, 0x0000000f, 0x545f5653, 0x65677261, 0xabab0074, 0x52444853, 0x000000e8, 0x00000040, + 0x0000003a, 0x04000059, 0x00208e46, 0x00000000, 0x00000002, 0x0300005a, 0x00106000, 0x00000000, + 0x04001858, 0x00107000, 0x00000000, 0x00005555, 0x04002064, 0x00101032, 0x00000000, 0x00000001, + 0x03000065, 0x001020f2, 0x00000000, 0x02000068, 0x00000002, 0x05000036, 0x00100032, 0x00000000, + 0x00101046, 0x00000000, 0x05000036, 0x00100042, 0x00000000, 0x00004001, 0x3f800000, 0x08000010, + 0x00100012, 0x00000001, 0x00100246, 0x00000000, 0x00208246, 0x00000000, 0x00000000, 0x08000010, + 0x00100022, 0x00000001, 0x00100246, 0x00000000, 0x00208246, 0x00000000, 0x00000001, 0x09000045, + 0x001020f2, 0x00000000, 0x00100046, 0x00000001, 0x00107e46, 0x00000000, 0x00106000, 0x00000000, + 0x0100003e, + }; static const struct { float x, y; @@ -1320,7 +1461,14 @@ if (FAILED(hr = ID3D10Device_CreatePixelShader(render_target->device, rect_solid_ps_code, sizeof(rect_solid_ps_code), &render_target->rect_solid_ps))) { - WARN("Failed to create clear pixel shader, hr %#x.\n", hr); + WARN("Failed to create pixel shader, hr %#x.\n", hr); + goto err; + } + + if (FAILED(hr = ID3D10Device_CreatePixelShader(render_target->device, + rect_bitmap_ps_code, sizeof(rect_bitmap_ps_code), &render_target->rect_bitmap_ps))) + { + WARN("Failed to create pixel shader, hr %#x.\n", hr); goto err; } @@ -1353,6 +1501,8 @@ return S_OK; err: + if (render_target->rect_bitmap_ps) + ID3D10PixelShader_Release(render_target->rect_bitmap_ps); if (render_target->rect_solid_ps) ID3D10PixelShader_Release(render_target->rect_solid_ps); if (render_target->bs) diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/d3d11/d3d11_main.c wine-staging-1.7.36~ubuntu12.04.1/dlls/d3d11/d3d11_main.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/d3d11/d3d11_main.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/d3d11/d3d11_main.c 2015-02-08 20:31:28.000000000 +0000 @@ -30,7 +30,7 @@ static const char *debug_d3d_driver_type(D3D_DRIVER_TYPE driver_type) { - switch(driver_type) + switch (driver_type) { #define D3D11_TO_STR(x) case x: return #x D3D11_TO_STR(D3D_DRIVER_TYPE_UNKNOWN); @@ -46,11 +46,11 @@ } HRESULT WINAPI D3D11CreateDevice(IDXGIAdapter *adapter, D3D_DRIVER_TYPE driver_type, HMODULE swrast, UINT flags, - const D3D_FEATURE_LEVEL *feature_levels, UINT levels, UINT sdk_version, - ID3D11Device **device, D3D_FEATURE_LEVEL *feature_level, ID3D11DeviceContext **context) + const D3D_FEATURE_LEVEL *feature_levels, UINT levels, UINT sdk_version, ID3D11Device **device, + D3D_FEATURE_LEVEL *feature_level, ID3D11DeviceContext **context) { - FIXME("stub: adapter %p, driver_type %s, swrast %p, flags %#x, feature_levels %p, levels %#x, sdk_version %d, " - "device %p, feature_level %p, context %p\n", adapter, debug_d3d_driver_type(driver_type), swrast, - flags, feature_levels, levels, sdk_version, device, feature_level, context); + FIXME("adapter %p, driver_type %s, swrast %p, flags %#x, feature_levels %p, levels %#x, sdk_version %u, " + "device %p, feature_level %p, context %p stub!\n", adapter, debug_d3d_driver_type(driver_type), swrast, + flags, feature_levels, levels, sdk_version, device, feature_level, context); return E_OUTOFMEMORY; } diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/d3d8/directx.c wine-staging-1.7.36~ubuntu12.04.1/dlls/d3d8/directx.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/d3d8/directx.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/d3d8/directx.c 2015-02-08 20:31:28.000000000 +0000 @@ -404,7 +404,7 @@ BOOL d3d8_init(struct d3d8 *d3d8) { - DWORD flags = WINED3D_LEGACY_DEPTH_BIAS | WINED3D_VIDMEM_ACCOUNTING; + DWORD flags = WINED3D_LEGACY_DEPTH_BIAS | WINED3D_VIDMEM_ACCOUNTING | WINED3D_HANDLE_RESTORE; d3d8->IDirect3D8_iface.lpVtbl = &d3d8_vtbl; d3d8->refcount = 1; diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/d3d8/tests/device.c wine-staging-1.7.36~ubuntu12.04.1/dlls/d3d8/tests/device.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/d3d8/tests/device.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/d3d8/tests/device.c 2015-02-08 20:31:28.000000000 +0000 @@ -2183,7 +2183,7 @@ static const struct message *expect_messages; static HWND device_window, focus_window; -static BOOL windowposchanged_received; +static LONG windowposchanged_received, syscommand_received; struct wndproc_thread_param { @@ -2236,7 +2236,9 @@ * message. A WM_WINDOWPOSCHANGED message is not generated, so * just flag WM_WINDOWPOSCHANGED as bad. */ if (message == WM_WINDOWPOSCHANGED) - windowposchanged_received = TRUE; + InterlockedIncrement(&windowposchanged_received); + else if (message == WM_SYSCOMMAND) + InterlockedIncrement(&syscommand_received); return DefWindowProcA(hwnd, message, wparam, lparam); } @@ -2362,6 +2364,11 @@ }; static const struct message sc_restore_messages[] = { + /* WM_SYSCOMMAND is delivered only once, after d3d has already + * processed it. Our wndproc has no way to prevent d3d from + * handling the message. The second DefWindowProc call done by + * our wndproc doesn't do any changes to the window because it + * is already restored due to d3d's handling. */ {WM_WINDOWPOSCHANGING, FOCUS_WINDOW, FALSE, 0}, {WM_WINDOWPOSCHANGED, FOCUS_WINDOW, FALSE, 0}, {WM_SIZE, FOCUS_WINDOW, TRUE, SIZE_RESTORED}, @@ -2601,7 +2608,7 @@ flush_events(); expect_messages = focus_loss_messages_hidden; - windowposchanged_received = FALSE; + windowposchanged_received = 0; SetForegroundWindow(GetDesktopWindow()); ok(!expect_messages->message, "Expected message %#x for window %#x, but didn't receive it.\n", expect_messages->message, expect_messages->window); @@ -2620,10 +2627,12 @@ ShowWindow(focus_window, SW_SHOWMINNOACTIVE); flush_events(); + syscommand_received = 0; expect_messages = sc_restore_messages; SendMessageA(focus_window, WM_SYSCOMMAND, SC_RESTORE, 0); - todo_wine ok(!expect_messages->message, "Expected message %#x for window %#x, but didn't receive it.\n", + ok(!expect_messages->message, "Expected message %#x for window %#x, but didn't receive it.\n", expect_messages->message, expect_messages->window); + ok(syscommand_received == 1, "Got unexpected number of WM_SYSCOMMAND messages: %d.\n", syscommand_received); expect_messages = NULL; flush_events(); @@ -2684,7 +2693,7 @@ filter_messages = NULL; expect_messages = focus_loss_messages_filtered; - windowposchanged_received = FALSE; + windowposchanged_received = 0; SetForegroundWindow(GetDesktopWindow()); ok(!expect_messages->message, "Expected message %#x for window %#x, but didn't receive it.\n", expect_messages->message, expect_messages->window); @@ -2697,10 +2706,12 @@ hr = IDirect3DDevice8_TestCooperativeLevel(device); ok(hr == D3DERR_DEVICELOST, "Got unexpected hr %#x.\n", hr); + syscommand_received = 0; expect_messages = sc_restore_messages; SendMessageA(focus_window, WM_SYSCOMMAND, SC_RESTORE, 0); - todo_wine ok(!expect_messages->message, "Expected message %#x for window %#x, but didn't receive it.\n", + ok(!expect_messages->message, "Expected message %#x for window %#x, but didn't receive it.\n", expect_messages->message, expect_messages->window); + ok(syscommand_received == 1, "Got unexpected number of WM_SYSCOMMAND messages: %d.\n", syscommand_received); expect_messages = NULL; flush_events(); diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/d3d9/directx.c wine-staging-1.7.36~ubuntu12.04.1/dlls/d3d9/directx.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/d3d9/directx.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/d3d9/directx.c 2015-02-08 20:31:28.000000000 +0000 @@ -636,7 +636,7 @@ BOOL d3d9_init(struct d3d9 *d3d9, BOOL extended) { - DWORD flags = WINED3D_PRESENT_CONVERSION; + DWORD flags = WINED3D_PRESENT_CONVERSION | WINED3D_HANDLE_RESTORE; if (!extended) flags |= WINED3D_VIDMEM_ACCOUNTING; diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/d3d9/tests/d3d9ex.c wine-staging-1.7.36~ubuntu12.04.1/dlls/d3d9/tests/d3d9ex.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/d3d9/tests/d3d9ex.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/d3d9/tests/d3d9ex.c 2015-02-08 20:31:28.000000000 +0000 @@ -1725,7 +1725,7 @@ static const struct message *expect_messages; static HWND device_window, focus_window; -static BOOL windowposchanged_received; +static LONG windowposchanged_received, syscommand_received; struct wndproc_thread_param { @@ -1778,7 +1778,9 @@ * message. A WM_WINDOWPOSCHANGED message is not generated, so * just flag WM_WINDOWPOSCHANGED as bad. */ if (message == WM_WINDOWPOSCHANGED) - windowposchanged_received = TRUE; + InterlockedIncrement(&windowposchanged_received); + else if (message == WM_SYSCOMMAND) + InterlockedIncrement(&syscommand_received); return DefWindowProcA(hwnd, message, wparam, lparam); } @@ -1900,6 +1902,11 @@ }; static const struct message sc_restore_messages[] = { + /* WM_SYSCOMMAND is delivered only once, after d3d has already + * processed it. Our wndproc has no way to prevent d3d from + * handling the message. The second DefWindowProc call done by + * our wndproc doesn't do any changes to the window because it + * is already restored due to d3d's handling. */ {WM_WINDOWPOSCHANGING, FOCUS_WINDOW, FALSE, 0}, {WM_WINDOWPOSCHANGED, FOCUS_WINDOW, FALSE, 0}, {WM_SIZE, FOCUS_WINDOW, TRUE, SIZE_RESTORED}, @@ -2151,7 +2158,7 @@ flush_events(); expect_messages = focus_loss_messages_hidden; - windowposchanged_received = FALSE; + windowposchanged_received = 0; SetForegroundWindow(GetDesktopWindow()); ok(!expect_messages->message, "Expected message %#x for window %#x, but didn't receive it, i=%u.\n", expect_messages->message, expect_messages->window, i); @@ -2170,10 +2177,12 @@ ShowWindow(focus_window, SW_SHOWMINNOACTIVE); flush_events(); + syscommand_received = 0; expect_messages = sc_restore_messages; SendMessageA(focus_window, WM_SYSCOMMAND, SC_RESTORE, 0); - todo_wine ok(!expect_messages->message, "Expected message %#x for window %#x, but didn't receive it, i=%u.\n", + ok(!expect_messages->message, "Expected message %#x for window %#x, but didn't receive it, i=%u.\n", expect_messages->message, expect_messages->window, i); + ok(syscommand_received == 1, "Got unexpected number of WM_SYSCOMMAND messages: %d.\n", syscommand_received); expect_messages = NULL; flush_events(); @@ -2232,7 +2241,7 @@ flush_events(); expect_messages = focus_loss_messages_filtered; - windowposchanged_received = FALSE; + windowposchanged_received = 0; SetForegroundWindow(GetDesktopWindow()); ok(!expect_messages->message, "Expected message %#x for window %#x, but didn't receive it, i=%u.\n", expect_messages->message, expect_messages->window, i); @@ -2247,10 +2256,12 @@ ShowWindow(focus_window, SW_SHOWMINNOACTIVE); flush_events(); + syscommand_received = 0; expect_messages = sc_restore_messages; SendMessageA(focus_window, WM_SYSCOMMAND, SC_RESTORE, 0); - todo_wine ok(!expect_messages->message, "Expected message %#x for window %#x, but didn't receive it, i=%u.\n", + ok(!expect_messages->message, "Expected message %#x for window %#x, but didn't receive it, i=%u.\n", expect_messages->message, expect_messages->window, i); + ok(syscommand_received == 1, "Got unexpected number of WM_SYSCOMMAND messages: %d.\n", syscommand_received); expect_messages = NULL; flush_events(); diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/d3d9/tests/device.c wine-staging-1.7.36~ubuntu12.04.1/dlls/d3d9/tests/device.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/d3d9/tests/device.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/d3d9/tests/device.c 2015-02-08 20:31:28.000000000 +0000 @@ -3137,7 +3137,7 @@ static const struct message *expect_messages; static HWND device_window, focus_window; -static BOOL windowposchanged_received; +static LONG windowposchanged_received, syscommand_received; struct wndproc_thread_param { @@ -3190,7 +3190,9 @@ * message. A WM_WINDOWPOSCHANGED message is not generated, so * just flag WM_WINDOWPOSCHANGED as bad. */ if (message == WM_WINDOWPOSCHANGED) - windowposchanged_received = TRUE; + InterlockedIncrement(&windowposchanged_received); + else if (message == WM_SYSCOMMAND) + InterlockedIncrement(&syscommand_received); return DefWindowProcA(hwnd, message, wparam, lparam); } @@ -3330,6 +3332,11 @@ }; static const struct message sc_restore_messages[] = { + /* WM_SYSCOMMAND is delivered only once, after d3d has already + * processed it. Our wndproc has no way to prevent d3d from + * handling the message. The second DefWindowProc call done by + * our wndproc doesn't do any changes to the window because it + * is already restored due to d3d's handling. */ {WM_WINDOWPOSCHANGING, FOCUS_WINDOW, FALSE, 0}, {WM_WINDOWPOSCHANGED, FOCUS_WINDOW, FALSE, 0}, {WM_SIZE, FOCUS_WINDOW, TRUE, SIZE_RESTORED}, @@ -3585,7 +3592,7 @@ flush_events(); expect_messages = focus_loss_messages_hidden; - windowposchanged_received = FALSE; + windowposchanged_received = 0; SetForegroundWindow(GetDesktopWindow()); ok(!expect_messages->message, "Expected message %#x for window %#x, but didn't receive it, i=%u.\n", expect_messages->message, expect_messages->window, i); @@ -3604,10 +3611,12 @@ ShowWindow(focus_window, SW_SHOWMINNOACTIVE); flush_events(); + syscommand_received = 0; expect_messages = sc_restore_messages; SendMessageA(focus_window, WM_SYSCOMMAND, SC_RESTORE, 0); - todo_wine ok(!expect_messages->message, "Expected message %#x for window %#x, but didn't receive it, i=%u.\n", + ok(!expect_messages->message, "Expected message %#x for window %#x, but didn't receive it, i=%u.\n", expect_messages->message, expect_messages->window, i); + ok(syscommand_received == 1, "Got unexpected number of WM_SYSCOMMAND messages: %d.\n", syscommand_received); expect_messages = NULL; flush_events(); @@ -3671,7 +3680,7 @@ flush_events(); expect_messages = focus_loss_messages_filtered; - windowposchanged_received = FALSE; + windowposchanged_received = 0; SetForegroundWindow(GetDesktopWindow()); ok(!expect_messages->message, "Expected message %#x for window %#x, but didn't receive it, i=%u.\n", expect_messages->message, expect_messages->window, i); @@ -3688,10 +3697,12 @@ if (tests[i].create_flags & CREATE_DEVICE_NOWINDOWCHANGES) ShowWindow(focus_window, SW_MINIMIZE); + syscommand_received = 0; expect_messages = sc_restore_messages; SendMessageA(focus_window, WM_SYSCOMMAND, SC_RESTORE, 0); - todo_wine ok(!expect_messages->message, "Expected message %#x for window %#x, but didn't receive it, i=%u.\n", + ok(!expect_messages->message, "Expected message %#x for window %#x, but didn't receive it, i=%u.\n", expect_messages->message, expect_messages->window, i); + ok(syscommand_received == 1, "Got unexpected number of WM_SYSCOMMAND messages: %d.\n", syscommand_received); expect_messages = NULL; flush_events(); @@ -3721,7 +3732,7 @@ flush_events(); expect_messages = reactivate_messages_filtered; - windowposchanged_received = FALSE; + windowposchanged_received = 0; SetForegroundWindow(focus_window); flush_events(); ok(!expect_messages->message, "Expected message %#x for window %#x, but didn't receive it, i=%u.\n", diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/dbghelp/macho_module.c wine-staging-1.7.36~ubuntu12.04.1/dlls/dbghelp/macho_module.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/dbghelp/macho_module.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/dbghelp/macho_module.c 2015-02-08 20:31:28.000000000 +0000 @@ -981,10 +981,10 @@ &pbi, sizeof(pbi), NULL); if (status == STATUS_SUCCESS) { - ULONG dyld_image_info; + ULONG_PTR dyld_image_info; /* Read dyld image info address from PEB */ - if (ReadProcessMemory(pcs->handle, &pbi.PebBaseAddress->Reserved, + if (ReadProcessMemory(pcs->handle, &pbi.PebBaseAddress->Reserved[0], &dyld_image_info, sizeof(dyld_image_info), NULL)) { TRACE("got dyld_image_info 0x%08x from PEB %p MacDyldImageInfo %p\n", @@ -994,6 +994,7 @@ } } +#ifndef __LP64__ /* No reading the symtab with nlist(3) in LP64 */ if (!ret) { static void* dyld_all_image_infos_addr; @@ -1017,6 +1018,7 @@ ret = TRUE; } } +#endif } if (macho_info->flags & MACHO_INFO_MODULE) diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/dbghelp/stack.c wine-staging-1.7.36~ubuntu12.04.1/dlls/dbghelp/stack.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/dbghelp/stack.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/dbghelp/stack.c 2015-02-08 20:31:28.000000000 +0000 @@ -240,15 +240,6 @@ if (!cpu->stack_walk(&csw, frame, ctx)) return FALSE; /* we don't handle KdHelp */ - frame->KdHelp.Thread = 0xC000FADE; - frame->KdHelp.ThCallbackStack = 0x10; - frame->KdHelp.ThCallbackBStore = 0; - frame->KdHelp.NextCallback = 0; - frame->KdHelp.FramePointer = 0; - frame->KdHelp.KiCallUserMode = 0xD000DAFE; - frame->KdHelp.KeUserCallbackDispatcher = 0xE000F000; - frame->KdHelp.SystemRangeStart = 0xC0000000; - frame->KdHelp.Reserved[0] /* KiUserExceptionDispatcher */ = 0xE0005000; return TRUE; } diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/dsound/sound3d.c wine-staging-1.7.36~ubuntu12.04.1/dlls/dsound/sound3d.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/dsound/sound3d.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/dsound/sound3d.c 2015-02-08 20:31:28.000000000 +0000 @@ -181,13 +181,14 @@ case DS3DMODE_NORMAL: TRACE("Normal 3D processing mode\n"); /* we need to calculate distance between buffer and listener*/ - vDistance = VectorBetweenTwoPoints(&dsb->ds3db_ds3db.vPosition, &dsb->device->ds3dl.vPosition); + vDistance = VectorBetweenTwoPoints(&dsb->device->ds3dl.vPosition, &dsb->ds3db_ds3db.vPosition); flDistance = VectorMagnitude (&vDistance); break; case DS3DMODE_HEADRELATIVE: TRACE("Head-relative 3D processing mode\n"); /* distance between buffer and listener is same as buffer's position */ - flDistance = VectorMagnitude (&dsb->ds3db_ds3db.vPosition); + vDistance = dsb->ds3db_ds3db.vPosition; + flDistance = VectorMagnitude (&vDistance); break; } @@ -220,8 +221,14 @@ } else { + D3DVECTOR vDistanceInv; + + vDistanceInv.x = -vDistance.x; + vDistanceInv.y = -vDistance.y; + vDistanceInv.z = -vDistance.z; + /* calculate angle */ - flAngle = AngleBetweenVectorsDeg(&dsb->ds3db_ds3db.vConeOrientation, &vDistance); + flAngle = AngleBetweenVectorsDeg(&dsb->ds3db_ds3db.vConeOrientation, &vDistanceInv); /* if by any chance it happens that OutsideConeAngle = InsideConeAngle (that means that conning has no effect) */ if (dsb->ds3db_ds3db.dwInsideConeAngle != dsb->ds3db_ds3db.dwOutsideConeAngle) { @@ -254,14 +261,10 @@ } /* panning */ - if (dsb->device->ds3dl.vPosition.x == dsb->ds3db_ds3db.vPosition.x && - dsb->device->ds3dl.vPosition.y == dsb->ds3db_ds3db.vPosition.y && - dsb->device->ds3dl.vPosition.z == dsb->ds3db_ds3db.vPosition.z) { + if (vDistance.x == 0.0f && vDistance.y == 0.0f && vDistance.z == 0.0f) flAngle = 0.0; - } else { - vDistance = VectorBetweenTwoPoints(&dsb->device->ds3dl.vPosition, &dsb->ds3db_ds3db.vPosition); vLeft = VectorProduct(&dsb->device->ds3dl.vOrientFront, &dsb->device->ds3dl.vOrientTop); flAngle = AngleBetweenVectorsRad(&dsb->device->ds3dl.vOrientFront, &vDistance); flAngle2 = AngleBetweenVectorsRad(&vLeft, &vDistance); diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/dwrite/analyzer.c wine-staging-1.7.36~ubuntu12.04.1/dlls/dwrite/analyzer.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/dwrite/analyzer.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/dwrite/analyzer.c 2015-02-08 20:31:28.000000000 +0000 @@ -31,138 +31,143 @@ struct dwritescript_properties { DWRITE_SCRIPT_PROPERTIES props; + UINT32 scripttag; /* OpenType script tag */ + UINT32 scriptalttag; /* Version 2 tag, 0 is not defined */ BOOL is_complex; const struct scriptshaping_ops *ops; }; +#define _OT(a,b,c,d) DWRITE_MAKE_OPENTYPE_TAG(a,b,c,d) + /* NOTE: keep this array synced with script ids from scripts.h */ static const struct dwritescript_properties dwritescripts_properties[Script_LastId+1] = { { /* Zzzz */ { 0x7a7a7a5a, 999, 15, 0x0020, 0, 0, 0, 0, 0, 0, 0 } }, { /* Zyyy */ { 0x7979795a, 998, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 } }, - { /* Arab */ { 0x62617241, 160, 8, 0x0640, 0, 1, 0, 0, 0, 1, 1 }, TRUE }, - { /* Armn */ { 0x6e6d7241, 230, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 } }, - { /* Avst */ { 0x74737641, 134, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 } }, - { /* Bali */ { 0x696c6142, 360, 15, 0x0020, 1, 0, 1, 0, 0, 0, 0 } }, - { /* Bamu */ { 0x756d6142, 435, 8, 0x0020, 1, 1, 1, 0, 0, 0, 0 } }, + { /* Arab */ { 0x62617241, 160, 8, 0x0640, 0, 1, 0, 0, 0, 1, 1 }, _OT('a','r','a','b'), 0, TRUE }, + { /* Armn */ { 0x6e6d7241, 230, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('a','r','m','n') }, + { /* Avst */ { 0x74737641, 134, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('a','v','s','t') }, + { /* Bali */ { 0x696c6142, 360, 15, 0x0020, 1, 0, 1, 0, 0, 0, 0 }, _OT('b','a','l','i') }, + { /* Bamu */ { 0x756d6142, 435, 8, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, _OT('b','a','m','u') }, { /* Bass */ { 0x73736142, 259, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } }, - { /* Batk */ { 0x6b746142, 365, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 } }, - { /* Beng */ { 0x676e6542, 325, 15, 0x0020, 1, 1, 0, 0, 0, 1, 0 }, TRUE }, - { /* Bopo */ { 0x6f706f42, 285, 1, 0x0020, 0, 0, 1, 1, 0, 0, 0 } }, - { /* Brah */ { 0x68617242, 300, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 } }, - { /* Brai */ { 0x69617242, 570, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, TRUE }, - { /* Bugi */ { 0x69677542, 367, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 } }, - { /* Buhd */ { 0x64687542, 372, 8, 0x0020, 0, 0, 1, 0, 0, 0, 0 } }, - { /* Cans */ { 0x736e6143, 440, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, TRUE }, - { /* Cari */ { 0x69726143, 201, 1, 0x0020, 0, 0, 1, 0, 0, 0, 0 } }, + { /* Batk */ { 0x6b746142, 365, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('b','a','t','k') }, + { /* Beng */ { 0x676e6542, 325, 15, 0x0020, 1, 1, 0, 0, 0, 1, 0 }, _OT('b','e','n','g'), _OT('b','n','g','2'), TRUE }, + { /* Bopo */ { 0x6f706f42, 285, 1, 0x0020, 0, 0, 1, 1, 0, 0, 0 }, _OT('b','o','p','o') }, + { /* Brah */ { 0x68617242, 300, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('b','r','a','h') }, + { /* Brai */ { 0x69617242, 570, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('b','r','a','i'), 0, TRUE }, + { /* Bugi */ { 0x69677542, 367, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('b','u','g','i') }, + { /* Buhd */ { 0x64687542, 372, 8, 0x0020, 0, 0, 1, 0, 0, 0, 0 }, _OT('b','u','h','d') }, + { /* Cans */ { 0x736e6143, 440, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('c','a','n','s'), 0, TRUE }, + { /* Cari */ { 0x69726143, 201, 1, 0x0020, 0, 0, 1, 0, 0, 0, 0 }, _OT('c','a','r','i') }, { /* Aghb */ { 0x62686741, 239, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } }, - { /* Cakm */ { 0x6d6b6143, 349, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } }, - { /* Cham */ { 0x6d616843, 358, 8, 0x0020, 1, 1, 1, 0, 0, 0, 0 } }, - { /* Cher */ { 0x72656843, 445, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, TRUE }, - { /* Copt */ { 0x74706f43, 204, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 } }, - { /* Xsux */ { 0x78757358, 20, 1, 0x0020, 0, 0, 1, 1, 0, 0, 0 } }, - { /* Cprt */ { 0x74727043, 403, 1, 0x0020, 0, 0, 1, 0, 0, 0, 0 } }, - { /* Cyrl */ { 0x6c727943, 220, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 } }, - { /* Dsrt */ { 0x74727344, 250, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, TRUE }, - { /* Deva */ { 0x61766544, 315, 15, 0x0020, 1, 1, 0, 0, 0, 1, 0 }, TRUE }, + { /* Cakm */ { 0x6d6b6143, 349, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 }, _OT('c','a','k','m') }, + { /* Cham */ { 0x6d616843, 358, 8, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, _OT('c','h','a','m') }, + { /* Cher */ { 0x72656843, 445, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('c','h','e','r'), 0, TRUE }, + { /* Copt */ { 0x74706f43, 204, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('c','o','p','t') }, + { /* Xsux */ { 0x78757358, 20, 1, 0x0020, 0, 0, 1, 1, 0, 0, 0 }, _OT('x','s','u','x') }, + { /* Cprt */ { 0x74727043, 403, 1, 0x0020, 0, 0, 1, 0, 0, 0, 0 }, _OT('c','p','r','t') }, + { /* Cyrl */ { 0x6c727943, 220, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('c','y','r','l') }, + { /* Dsrt */ { 0x74727344, 250, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('d','s','r','t'), 0, TRUE }, + { /* Deva */ { 0x61766544, 315, 15, 0x0020, 1, 1, 0, 0, 0, 1, 0 }, _OT('d','e','v','a'), _OT('d','e','v','2'), TRUE }, { /* Dupl */ { 0x6c707544, 755, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } }, - { /* Egyp */ { 0x70796745, 50, 1, 0x0020, 0, 0, 1, 1, 0, 0, 0 } }, + { /* Egyp */ { 0x70796745, 50, 1, 0x0020, 0, 0, 1, 1, 0, 0, 0 }, _OT('e','g','y','p') }, { /* Elba */ { 0x61626c45, 226, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } }, - { /* Ethi */ { 0x69687445, 430, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, TRUE }, - { /* Geor */ { 0x726f6547, 240, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 } }, - { /* Glag */ { 0x67616c47, 225, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 } }, - { /* Goth */ { 0x68746f47, 206, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 } }, + { /* Ethi */ { 0x69687445, 430, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('e','t','h','i'), 0, TRUE }, + { /* Geor */ { 0x726f6547, 240, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('g','e','o','r') }, + { /* Glag */ { 0x67616c47, 225, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('g','l','a','g') }, + { /* Goth */ { 0x68746f47, 206, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('g','o','t','h') }, { /* Gran */ { 0x6e617247, 343, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } }, - { /* Grek */ { 0x6b657247, 200, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 } }, - { /* Gujr */ { 0x726a7547, 320, 15, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, TRUE }, - { /* Guru */ { 0x75727547, 310, 15, 0x0020, 1, 1, 0, 0, 0, 1, 0 }, TRUE }, - { /* Hani */ { 0x696e6148, 500, 8, 0x0020, 0, 0, 1, 1, 0, 0, 0 } }, - { /* Hang */ { 0x676e6148, 286, 8, 0x0020, 1, 1, 1, 1, 0, 0, 0 }, TRUE }, - { /* Hano */ { 0x6f6e6148, 371, 8, 0x0020, 0, 0, 1, 0, 0, 0, 0 } }, - { /* Hebr */ { 0x72626548, 125, 8, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, TRUE }, - { /* Hira */ { 0x61726948, 410, 8, 0x0020, 0, 0, 1, 1, 0, 0, 0 } }, - { /* Armi */ { 0x696d7241, 124, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 } }, - { /* Phli */ { 0x696c6850, 131, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 } }, - { /* Prti */ { 0x69747250, 130, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 } }, - { /* Java */ { 0x6176614a, 361, 15, 0x0020, 1, 0, 1, 0, 0, 0, 0 } }, - { /* Kthi */ { 0x6968744b, 317, 15, 0x0020, 1, 1, 0, 0, 0, 1, 0 } }, - { /* Knda */ { 0x61646e4b, 345, 15, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, TRUE }, - { /* Kana */ { 0x616e614b, 411, 8, 0x0020, 0, 0, 1, 1, 0, 0, 0 } }, - { /* Kali */ { 0x696c614b, 357, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 } }, - { /* Khar */ { 0x7261684b, 305, 15, 0x0020, 1, 0, 1, 0, 0, 0, 0 } }, - { /* Khmr */ { 0x726d684b, 355, 8, 0x0020, 1, 0, 1, 0, 1, 0, 0 }, TRUE }, + { /* Grek */ { 0x6b657247, 200, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('g','r','e','k') }, + { /* Gujr */ { 0x726a7547, 320, 15, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, _OT('g','u','j','r'), _OT('g','j','r','2'), TRUE }, + { /* Guru */ { 0x75727547, 310, 15, 0x0020, 1, 1, 0, 0, 0, 1, 0 }, _OT('g','u','r','u'), _OT('g','u','r','2'), TRUE }, + { /* Hani */ { 0x696e6148, 500, 8, 0x0020, 0, 0, 1, 1, 0, 0, 0 }, _OT('h','a','n','i') }, + { /* Hang */ { 0x676e6148, 286, 8, 0x0020, 1, 1, 1, 1, 0, 0, 0 }, _OT('h','a','n','g'), 0, TRUE }, + { /* Hano */ { 0x6f6e6148, 371, 8, 0x0020, 0, 0, 1, 0, 0, 0, 0 }, _OT('h','a','n','o') }, + { /* Hebr */ { 0x72626548, 125, 8, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, _OT('h','e','b','r'), 0, TRUE }, + { /* Hira */ { 0x61726948, 410, 8, 0x0020, 0, 0, 1, 1, 0, 0, 0 }, _OT('k','a','n','a') }, + { /* Armi */ { 0x696d7241, 124, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('a','r','m','i') }, + { /* Phli */ { 0x696c6850, 131, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('p','h','l','i') }, + { /* Prti */ { 0x69747250, 130, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('p','r','t','i') }, + { /* Java */ { 0x6176614a, 361, 15, 0x0020, 1, 0, 1, 0, 0, 0, 0 }, _OT('j','a','v','a') }, + { /* Kthi */ { 0x6968744b, 317, 15, 0x0020, 1, 1, 0, 0, 0, 1, 0 }, _OT('k','t','h','i') }, + { /* Knda */ { 0x61646e4b, 345, 15, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, _OT('k','n','d','a'), _OT('k','n','d','2'), TRUE }, + { /* Kana */ { 0x616e614b, 411, 8, 0x0020, 0, 0, 1, 1, 0, 0, 0 }, _OT('k','a','n','a') }, + { /* Kali */ { 0x696c614b, 357, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('k','a','l','i') }, + { /* Khar */ { 0x7261684b, 305, 15, 0x0020, 1, 0, 1, 0, 0, 0, 0 }, _OT('k','h','a','r') }, + { /* Khmr */ { 0x726d684b, 355, 8, 0x0020, 1, 0, 1, 0, 1, 0, 0 }, _OT('k','h','m','r'), 0, TRUE }, { /* Khoj */ { 0x6a6f684b, 322, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } }, { /* Sind */ { 0x646e6953, 318, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } }, - { /* Laoo */ { 0x6f6f614c, 356, 8, 0x0020, 1, 0, 1, 0, 1, 0, 0 }, TRUE }, - { /* Latn */ { 0x6e74614c, 215, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, FALSE, &latn_shaping_ops }, - { /* Lepc */ { 0x6370654c, 335, 8, 0x0020, 1, 1, 1, 0, 0, 0, 0 } }, - { /* Limb */ { 0x626d694c, 336, 8, 0x0020, 1, 1, 1, 0, 0, 0, 0 } }, + { /* Laoo */ { 0x6f6f614c, 356, 8, 0x0020, 1, 0, 1, 0, 1, 0, 0 }, _OT('l','a','o',' '), 0, TRUE }, + { /* Latn */ { 0x6e74614c, 215, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('l','a','t','n'), 0, FALSE, &latn_shaping_ops }, + { /* Lepc */ { 0x6370654c, 335, 8, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, _OT('l','e','p','c') }, + { /* Limb */ { 0x626d694c, 336, 8, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, _OT('l','i','m','b') }, { /* Lina */ { 0x616e694c, 400, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } }, - { /* Linb */ { 0x626e694c, 401, 1, 0x0020, 0, 0, 1, 1, 0, 0, 0 } }, - { /* Lisu */ { 0x7573694c, 399, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 } }, - { /* Lyci */ { 0x6963794c, 202, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 } }, - { /* Lydi */ { 0x6964794c, 116, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 } }, + { /* Linb */ { 0x626e694c, 401, 1, 0x0020, 0, 0, 1, 1, 0, 0, 0 }, _OT('l','i','n','b') }, + { /* Lisu */ { 0x7573694c, 399, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('l','i','s','u') }, + { /* Lyci */ { 0x6963794c, 202, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('l','y','c','i') }, + { /* Lydi */ { 0x6964794c, 116, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('l','y','d','i') }, { /* Mahj */ { 0x6a68614d, 314, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } }, - { /* Mlym */ { 0x6d796c4d, 347, 15, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, TRUE }, - { /* Mand */ { 0x646e614d, 140, 8, 0x0640, 0, 1, 0, 0, 0, 1, 1 } }, + { /* Mlym */ { 0x6d796c4d, 347, 15, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, _OT('m','l','y','m'), _OT('m','l','m','2'), TRUE }, + { /* Mand */ { 0x646e614d, 140, 8, 0x0640, 0, 1, 0, 0, 0, 1, 1 }, _OT('m','a','n','d') }, { /* Mani */ { 0x696e614d, 139, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } }, - { /* Mtei */ { 0x6965744d, 337, 8, 0x0020, 1, 1, 1, 0, 0, 0, 0 } }, + { /* Mtei */ { 0x6965744d, 337, 8, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, _OT('m','t','e','i') }, { /* Mend */ { 0x646e654d, 438, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } }, - { /* Merc */ { 0x6372654d, 101, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } }, - { /* Mero */ { 0x6f72654d, 100, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } }, + { /* Merc */ { 0x6372654d, 101, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 }, _OT('m','e','r','c') }, + { /* Mero */ { 0x6f72654d, 100, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 }, _OT('m','e','r','o') }, { /* Plrd */ { 0x64726c50, 282, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } }, { /* Modi */ { 0x69646f4d, 324, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } }, - { /* Mong */ { 0x676e6f4d, 145, 8, 0x0020, 0, 1, 0, 0, 0, 1, 1 }, TRUE }, + { /* Mong */ { 0x676e6f4d, 145, 8, 0x0020, 0, 1, 0, 0, 0, 1, 1 }, _OT('m','o','n','g'), 0, TRUE }, { /* Mroo */ { 0x6f6f724d, 199, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } }, - { /* Mymr */ { 0x726d794d, 350, 15, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, TRUE }, + { /* Mymr */ { 0x726d794d, 350, 15, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, _OT('m','y','m','r'), 0, TRUE }, { /* Nbat */ { 0x7461624e, 159, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } }, - { /* Talu */ { 0x756c6154, 354, 8, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, TRUE }, - { /* Nkoo */ { 0x6f6f6b4e, 165, 8, 0x0020, 0, 1, 0, 0, 0, 1, 1 }, TRUE }, - { /* Ogam */ { 0x6d61674f, 212, 1, 0x1680, 0, 1, 0, 0, 0, 1, 0 }, TRUE }, - { /* Olck */ { 0x6b636c4f, 261, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 } }, - { /* Ital */ { 0x6c617449, 210, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 } }, + { /* Talu */ { 0x756c6154, 354, 8, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, _OT('t','a','l','u'), 0, TRUE }, + { /* Nkoo */ { 0x6f6f6b4e, 165, 8, 0x0020, 0, 1, 0, 0, 0, 1, 1 }, _OT('n','k','o',' '), 0, TRUE }, + { /* Ogam */ { 0x6d61674f, 212, 1, 0x1680, 0, 1, 0, 0, 0, 1, 0 }, _OT('o','g','a','m'), 0, TRUE }, + { /* Olck */ { 0x6b636c4f, 261, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('o','l','c','k') }, + { /* Ital */ { 0x6c617449, 210, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('i','t','a','l') }, { /* Narb */ { 0x6272614e, 106, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } }, { /* Perm */ { 0x6d726550, 227, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } }, - { /* Xpeo */ { 0x6f657058, 30, 1, 0x0020, 0, 1, 1, 1, 0, 0, 0 }, TRUE }, - { /* Sarb */ { 0x62726153, 105, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 } }, - { /* Orkh */ { 0x686b724f, 175, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 } }, - { /* Orya */ { 0x6179724f, 327, 15, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, TRUE }, - { /* Osma */ { 0x616d734f, 260, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, TRUE }, + { /* Xpeo */ { 0x6f657058, 30, 1, 0x0020, 0, 1, 1, 1, 0, 0, 0 }, _OT('x','p','e','o'), 0, TRUE }, + { /* Sarb */ { 0x62726153, 105, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('s','a','r','b') }, + { /* Orkh */ { 0x686b724f, 175, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('o','r','k','h') }, + { /* Orya */ { 0x6179724f, 327, 15, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, _OT('o','r','y','a'), _OT('o','r','y','2'), TRUE }, + { /* Osma */ { 0x616d734f, 260, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('o','s','m','a'), 0, TRUE }, { /* Hmng */ { 0x676e6d48, 450, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } }, { /* Palm */ { 0x6d6c6150, 126, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } }, { /* Pauc */ { 0x63756150, 263, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } }, - { /* Phag */ { 0x67616850, 331, 8, 0x0020, 0, 1, 0, 0, 0, 1, 1 }, TRUE }, - { /* Phnx */ { 0x786e6850, 115, 1, 0x0020, 0, 0, 1, 0, 0, 0, 0 } }, + { /* Phag */ { 0x67616850, 331, 8, 0x0020, 0, 1, 0, 0, 0, 1, 1 }, _OT('p','h','a','g'), 0, TRUE }, + { /* Phnx */ { 0x786e6850, 115, 1, 0x0020, 0, 0, 1, 0, 0, 0, 0 }, _OT('p','h','n','x') }, { /* Phlp */ { 0x706c6850, 132, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } }, - { /* Rjng */ { 0x676e6a52, 363, 8, 0x0020, 1, 0, 1, 0, 0, 0, 0 } }, - { /* Runr */ { 0x726e7552, 211, 1, 0x0020, 0, 0, 1, 0, 0, 0, 0 }, TRUE }, - { /* Samr */ { 0x726d6153, 123, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 } }, - { /* Saur */ { 0x72756153, 344, 8, 0x0020, 1, 1, 1, 0, 0, 0, 0 } }, - { /* Shrd */ { 0x64726853, 319, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } }, - { /* Shaw */ { 0x77616853, 281, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 } }, + { /* Rjng */ { 0x676e6a52, 363, 8, 0x0020, 1, 0, 1, 0, 0, 0, 0 }, _OT('r','j','n','g') }, + { /* Runr */ { 0x726e7552, 211, 1, 0x0020, 0, 0, 1, 0, 0, 0, 0 }, _OT('r','u','n','r'), 0, TRUE }, + { /* Samr */ { 0x726d6153, 123, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('s','a','m','r') }, + { /* Saur */ { 0x72756153, 344, 8, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, _OT('s','a','u','r') }, + { /* Shrd */ { 0x64726853, 319, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 }, _OT('s','h','r','d') }, + { /* Shaw */ { 0x77616853, 281, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('s','h','a','w') }, { /* Sidd */ { 0x64646953, 302, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } }, - { /* Sinh */ { 0x686e6953, 348, 8, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, TRUE }, - { /* Sora */ { 0x61726f53, 398, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } }, - { /* Sund */ { 0x646e7553, 362, 8, 0x0020, 1, 1, 1, 0, 0, 0, 0 } }, - { /* Sylo */ { 0x6f6c7953, 316, 8, 0x0020, 1, 1, 0, 0, 0, 1, 0 } }, - { /* Syrc */ { 0x63727953, 135, 8, 0x0640, 0, 1, 0, 0, 0, 1, 1 }, TRUE }, - { /* Tglg */ { 0x676c6754, 370, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 } }, - { /* Tagb */ { 0x62676154, 373, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 } }, - { /* Tale */ { 0x656c6154, 353, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, TRUE }, - { /* Lana */ { 0x616e614c, 351, 8, 0x0020, 1, 0, 1, 0, 0, 0, 0 } }, - { /* Tavt */ { 0x74766154, 359, 8, 0x0020, 1, 0, 1, 0, 1, 0, 0 } }, - { /* Takr */ { 0x726b6154, 321, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } }, - { /* Taml */ { 0x6c6d6154, 346, 15, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, TRUE }, - { /* Telu */ { 0x756c6554, 340, 15, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, TRUE }, - { /* Thaa */ { 0x61616854, 170, 8, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, TRUE }, - { /* Thai */ { 0x69616854, 352, 8, 0x0020, 1, 0, 1, 0, 1, 0, 0 }, TRUE }, - { /* Tibt */ { 0x74626954, 330, 8, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, TRUE }, - { /* Tfng */ { 0x676e6654, 120, 8, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, TRUE }, + { /* Sinh */ { 0x686e6953, 348, 8, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, _OT('s','i','n','h'), 0, TRUE }, + { /* Sora */ { 0x61726f53, 398, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 }, _OT('s','o','r','a') }, + { /* Sund */ { 0x646e7553, 362, 8, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, _OT('s','u','n','d') }, + { /* Sylo */ { 0x6f6c7953, 316, 8, 0x0020, 1, 1, 0, 0, 0, 1, 0 }, _OT('s','y','l','o') }, + { /* Syrc */ { 0x63727953, 135, 8, 0x0640, 0, 1, 0, 0, 0, 1, 1 }, _OT('s','y','r','c'), 0, TRUE }, + { /* Tglg */ { 0x676c6754, 370, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('t','g','l','g') }, + { /* Tagb */ { 0x62676154, 373, 8, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('t','a','g','b') }, + { /* Tale */ { 0x656c6154, 353, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('t','a','l','e'), 0, TRUE }, + { /* Lana */ { 0x616e614c, 351, 8, 0x0020, 1, 0, 1, 0, 0, 0, 0 }, _OT('l','a','n','a') }, + { /* Tavt */ { 0x74766154, 359, 8, 0x0020, 1, 0, 1, 0, 1, 0, 0 }, _OT('t','a','v','t') }, + { /* Takr */ { 0x726b6154, 321, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 }, _OT('t','a','k','r') }, + { /* Taml */ { 0x6c6d6154, 346, 15, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, _OT('t','a','m','l'), _OT('t','m','l','2'), TRUE }, + { /* Telu */ { 0x756c6554, 340, 15, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, _OT('t','e','l','u'), _OT('t','e','l','2'), TRUE }, + { /* Thaa */ { 0x61616854, 170, 8, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, _OT('t','h','a','a'), 0, TRUE }, + { /* Thai */ { 0x69616854, 352, 8, 0x0020, 1, 0, 1, 0, 1, 0, 0 }, _OT('t','h','a','i'), 0, TRUE }, + { /* Tibt */ { 0x74626954, 330, 8, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, _OT('t','i','b','t'), 0, TRUE }, + { /* Tfng */ { 0x676e6654, 120, 8, 0x0020, 1, 1, 1, 0, 0, 0, 0 }, _OT('t','f','n','g'), 0, TRUE }, { /* Tirh */ { 0x68726954, 326, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } }, - { /* Ugar */ { 0x72616755, 40, 1, 0x0020, 0, 0, 1, 1, 0, 0, 0 } }, - { /* Vaii */ { 0x69696156, 470, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, TRUE }, + { /* Ugar */ { 0x72616755, 40, 1, 0x0020, 0, 0, 1, 1, 0, 0, 0 }, _OT('u','g','a','r') }, + { /* Vaii */ { 0x69696156, 470, 1, 0x0020, 0, 1, 1, 0, 0, 0, 0 }, _OT('v','a','i',' '), 0, TRUE }, { /* Wara */ { 0x61726157, 262, 1, 0x0020, 0, 0, 0, 0, 0, 0, 0 } }, - { /* Yiii */ { 0x69696959, 460, 1, 0x0020, 0, 0, 1, 1, 0, 0, 0 }, TRUE } + { /* Yiii */ { 0x69696959, 460, 1, 0x0020, 0, 0, 1, 1, 0, 0, 0 }, _OT('y','i',' ',' '), 0, TRUE } }; +#undef _OT struct dwrite_numbersubstitution { IDWriteNumberSubstitution IDWriteNumberSubstitution_iface; @@ -835,6 +840,19 @@ return hr; } +static UINT32 get_opentype_language(const WCHAR *locale) +{ + UINT32 language = DWRITE_FONT_FEATURE_TAG_DEFAULT; + + if (locale) { + WCHAR tag[5]; + if (GetLocaleInfoEx(locale, LOCALE_SOPENTYPELANGUAGETAG, tag, sizeof(tag)/sizeof(WCHAR))) + language = DWRITE_MAKE_OPENTYPE_TAG(tag[0],tag[1],tag[2],tag[3]); + } + + return language; +} + static HRESULT WINAPI dwritetextanalyzer_GetGlyphs(IDWriteTextAnalyzer2 *iface, WCHAR const* text, UINT32 length, IDWriteFontFace* fontface, BOOL is_sideways, BOOL is_rtl, DWRITE_SCRIPT_ANALYSIS const* analysis, WCHAR const* locale, @@ -934,12 +952,7 @@ context.length = length; context.is_rtl = is_rtl; context.max_glyph_count = max_glyph_count; - context.language_tag = DWRITE_MAKE_OPENTYPE_TAG('d','f','l','t'); - if (locale) { - WCHAR tag[5]; - if (GetLocaleInfoEx(locale, LOCALE_SOPENTYPELANGUAGETAG, tag, sizeof(tag)/sizeof(WCHAR))) - context.language_tag = DWRITE_MAKE_OPENTYPE_TAG(tag[0],tag[1],tag[2],tag[3]); - } + context.language_tag = get_opentype_language(locale); scriptprops = &dwritescripts_properties[script]; if (scriptprops->ops && scriptprops->ops->contextual_shaping) { @@ -1165,13 +1178,31 @@ } static HRESULT WINAPI dwritetextanalyzer2_GetTypographicFeatures(IDWriteTextAnalyzer2 *iface, - IDWriteFontFace *face, DWRITE_SCRIPT_ANALYSIS sa, const WCHAR *localeName, + IDWriteFontFace *fontface, DWRITE_SCRIPT_ANALYSIS sa, const WCHAR *locale, UINT32 max_tagcount, UINT32 *actual_tagcount, DWRITE_FONT_FEATURE_TAG *tags) { - FIXME("(%p %u %s %u %p %p): stub\n", face, sa.script, debugstr_w(localeName), max_tagcount, actual_tagcount, + const struct dwritescript_properties *props; + HRESULT hr = S_OK; + UINT32 language; + + TRACE("(%p %u %s %u %p %p)\n", fontface, sa.script, debugstr_w(locale), max_tagcount, actual_tagcount, tags); - return E_NOTIMPL; -} + + if (sa.script > Script_LastId) + return E_INVALIDARG; + + language = get_opentype_language(locale); + props = &dwritescripts_properties[sa.script]; + *actual_tagcount = 0; + + if (props->scriptalttag) + hr = opentype_get_typographic_features(fontface, props->scriptalttag, language, max_tagcount, actual_tagcount, tags); + + if (*actual_tagcount == 0) + hr = opentype_get_typographic_features(fontface, props->scripttag, language, max_tagcount, actual_tagcount, tags); + + return hr; +}; static HRESULT WINAPI dwritetextanalyzer2_CheckTypographicFeature(IDWriteTextAnalyzer2 *iface, IDWriteFontFace *face, DWRITE_SCRIPT_ANALYSIS sa, const WCHAR *localeName, diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/dwrite/dwrite_private.h wine-staging-1.7.36~ubuntu12.04.1/dlls/dwrite/dwrite_private.h --- wine-staging-1.7.35~ubuntu12.04.1/dlls/dwrite/dwrite_private.h 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/dwrite/dwrite_private.h 2015-02-08 20:31:28.000000000 +0000 @@ -127,9 +127,11 @@ extern HRESULT opentype_get_font_table(IDWriteFontFileStream*,DWRITE_FONT_FACE_TYPE,UINT32,UINT32,const void**,void**,UINT32*,BOOL*) DECLSPEC_HIDDEN; extern void opentype_cmap_get_glyphindex(void*,UINT32,UINT16*) DECLSPEC_HIDDEN; extern HRESULT opentype_cmap_get_unicode_ranges(void*,UINT32,DWRITE_UNICODE_RANGE*,UINT32*) DECLSPEC_HIDDEN; -extern void opentype_get_font_properties(const void*,const void*,DWRITE_FONT_STRETCH*,DWRITE_FONT_WEIGHT*,DWRITE_FONT_STYLE*) DECLSPEC_HIDDEN; -extern void opentype_get_font_metrics(IDWriteFontFileStream*,DWRITE_FONT_FACE_TYPE,UINT32,DWRITE_FONT_METRICS1*) DECLSPEC_HIDDEN; +extern void opentype_get_font_properties(IDWriteFontFileStream*,DWRITE_FONT_FACE_TYPE,UINT32,DWRITE_FONT_STRETCH*, + DWRITE_FONT_WEIGHT*,DWRITE_FONT_STYLE*) DECLSPEC_HIDDEN; +extern void opentype_get_font_metrics(IDWriteFontFileStream*,DWRITE_FONT_FACE_TYPE,UINT32,DWRITE_FONT_METRICS1*,DWRITE_CARET_METRICS*) DECLSPEC_HIDDEN; extern HRESULT opentype_get_font_strings_from_id(const void*,DWRITE_INFORMATIONAL_STRING_ID,IDWriteLocalizedStrings**) DECLSPEC_HIDDEN; +extern HRESULT opentype_get_typographic_features(IDWriteFontFace*,UINT32,UINT32,UINT32,UINT32*,DWRITE_FONT_FEATURE_TAG*) DECLSPEC_HIDDEN; /* BiDi helpers */ extern HRESULT bidi_computelevels(const WCHAR*,UINT32,UINT8,UINT8*,UINT8*) DECLSPEC_HIDDEN; @@ -158,6 +160,7 @@ extern void freetype_notify_cacheremove(IDWriteFontFace2*) DECLSPEC_HIDDEN; extern BOOL freetype_is_monospaced(IDWriteFontFace2*) DECLSPEC_HIDDEN; extern HRESULT freetype_get_glyph_outline(IDWriteFontFace2*,FLOAT,UINT16,USHORT,struct glyph_outline**) DECLSPEC_HIDDEN; +extern UINT16 freetype_get_glyphcount(IDWriteFontFace2*) DECLSPEC_HIDDEN; /* Glyph shaping */ enum SCRIPT_JUSTIFY diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/dwrite/font.c wine-staging-1.7.36~ubuntu12.04.1/dlls/dwrite/font.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/dwrite/font.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/dwrite/font.c 2015-02-08 20:31:28.000000000 +0000 @@ -114,6 +114,7 @@ USHORT simulations; DWRITE_FONT_FACE_TYPE type; DWRITE_FONT_METRICS1 metrics; + DWRITE_CARET_METRICS caret; struct dwrite_fonttable cmap; DWRITE_GLYPH_METRICS *glyphs[GLYPH_MAX/GLYPH_BLOCK_SIZE]; @@ -348,8 +349,8 @@ static UINT16 WINAPI dwritefontface_GetGlyphCount(IDWriteFontFace2 *iface) { struct dwrite_fontface *This = impl_from_IDWriteFontFace2(iface); - FIXME("(%p): stub\n", This); - return 0; + TRACE("(%p)\n", This); + return freetype_get_glyphcount(iface); } static HRESULT WINAPI dwritefontface_GetDesignGlyphMetrics(IDWriteFontFace2 *iface, @@ -556,8 +557,17 @@ DWRITE_MATRIX const *transform, DWRITE_FONT_METRICS *metrics) { struct dwrite_fontface *This = impl_from_IDWriteFontFace2(iface); - FIXME("(%p)->(%f %f %p %p): stub\n", This, emSize, pixels_per_dip, transform, metrics); - return E_NOTIMPL; + DWRITE_FONT_METRICS1 metrics1; + HRESULT hr; + + TRACE("(%p)->(%.2f %.2f %p %p)\n", This, emSize, pixels_per_dip, transform, metrics); + + hr = IDWriteFontFace2_GetGdiCompatibleMetrics(iface, emSize, pixels_per_dip, transform, &metrics1); + if (FAILED(hr)) + return hr; + + memcpy(metrics, &metrics1, sizeof(*metrics)); + return hr; } static HRESULT WINAPI dwritefontface_GetGdiCompatibleGlyphMetrics(IDWriteFontFace2 *iface, FLOAT emSize, FLOAT pixels_per_dip, @@ -588,7 +598,8 @@ static void WINAPI dwritefontface1_GetCaretMetrics(IDWriteFontFace2 *iface, DWRITE_CARET_METRICS *metrics) { struct dwrite_fontface *This = impl_from_IDWriteFontFace2(iface); - FIXME("(%p)->(%p): stub\n", This, metrics); + TRACE("(%p)->(%p)\n", This, metrics); + *metrics = This->caret; } static HRESULT WINAPI dwritefontface1_GetUnicodeRanges(IDWriteFontFace2 *iface, UINT32 max_count, @@ -762,38 +773,11 @@ dwritefontface2_GetRecommendedRenderingMode }; -static void get_font_properties_from_stream(IDWriteFontFileStream *stream, DWRITE_FONT_FACE_TYPE face_type, - UINT32 face_index, DWRITE_FONT_METRICS1 *metrics, DWRITE_FONT_STRETCH *stretch, DWRITE_FONT_WEIGHT *weight, - DWRITE_FONT_STYLE *style) -{ - const void *tt_os2 = NULL, *tt_head = NULL; - void *os2_context, *head_context; - DWRITE_FONT_STRETCH fontstretch; - DWRITE_FONT_WEIGHT fontweight; - DWRITE_FONT_STYLE fontstyle; - - opentype_get_font_table(stream, face_type, face_index, MS_OS2_TAG, &tt_os2, &os2_context, NULL, NULL); - opentype_get_font_table(stream, face_type, face_index, MS_HEAD_TAG, &tt_head, &head_context, NULL, NULL); - - if (!stretch) stretch = &fontstretch; - if (!weight) weight = &fontweight; - if (!style) style = &fontstyle; - - opentype_get_font_properties(tt_os2, tt_head, stretch, weight, style); - opentype_get_font_metrics(stream, face_type, face_index, metrics); - - if (tt_os2) - IDWriteFontFileStream_ReleaseFileFragment(stream, os2_context); - if (tt_head) - IDWriteFontFileStream_ReleaseFileFragment(stream, head_context); -} - HRESULT convert_fontface_to_logfont(IDWriteFontFace *face, LOGFONTW *logfont) { DWRITE_FONT_SIMULATIONS simulations; DWRITE_FONT_FACE_TYPE face_type; IDWriteFontFileStream *stream; - DWRITE_FONT_METRICS1 metrics; DWRITE_FONT_STRETCH stretch; DWRITE_FONT_STYLE style; DWRITE_FONT_WEIGHT weight; @@ -816,7 +800,7 @@ index = IDWriteFontFace_GetIndex(face); face_type = IDWriteFontFace_GetType(face); - get_font_properties_from_stream(stream, face_type, index, &metrics, &stretch, &weight, &style); + opentype_get_font_properties(stream, face_type, index, &stretch, &weight, &style); IDWriteFontFileStream_Release(stream); simulations = IDWriteFontFace_GetSimulations(face); @@ -1440,40 +1424,33 @@ return create_fontfamily(This->family_data[index], iface, family); } -static HRESULT collection_find_family(struct dwrite_fontcollection *collection, const WCHAR *name, UINT32 *index, BOOL *exists) +static UINT32 collection_find_family(struct dwrite_fontcollection *collection, const WCHAR *name) { UINT32 i; - if (collection->family_count) { - for (i = 0; i < collection->family_count; i++) { - IDWriteLocalizedStrings *family_name = collection->family_data[i]->familyname; - HRESULT hr; - int j; - - for (j = 0; j < IDWriteLocalizedStrings_GetCount(family_name); j++) { - WCHAR buffer[255]; - hr = IDWriteLocalizedStrings_GetString(family_name, j, buffer, 255); - if (SUCCEEDED(hr)) { - if (!strcmpW(buffer, name)) { - *index = i; - *exists = TRUE; - return S_OK; - } - } - } + for (i = 0; i < collection->family_count; i++) { + IDWriteLocalizedStrings *family_name = collection->family_data[i]->familyname; + HRESULT hr; + int j; + + for (j = 0; j < IDWriteLocalizedStrings_GetCount(family_name); j++) { + WCHAR buffer[255]; + hr = IDWriteLocalizedStrings_GetString(family_name, j, buffer, 255); + if (SUCCEEDED(hr) && !strcmpW(buffer, name)) + return i; } - *index = (UINT32)-1; - *exists = FALSE; } - return S_OK; + return ~0u; } static HRESULT WINAPI dwritefontcollection_FindFamilyName(IDWriteFontCollection *iface, const WCHAR *name, UINT32 *index, BOOL *exists) { struct dwrite_fontcollection *This = impl_from_IDWriteFontCollection(iface); TRACE("(%p)->(%s %p %p)\n", This, debugstr_w(name), index, exists); - return collection_find_family(This, name, index, exists); + *index = collection_find_family(This, name); + *exists = *index != ~0u; + return S_OK; } static BOOL is_same_fontfile(IDWriteFontFile *left, IDWriteFontFile *right) @@ -1574,7 +1551,6 @@ } family_data->fonts[family_data->font_count] = font_data; - InterlockedIncrement(&font_data->ref); family_data->font_count++; return S_OK; } @@ -1640,17 +1616,25 @@ return hr; } -static HRESULT init_font_data(IDWriteFactory2 *factory, IDWriteFontFile *file, UINT32 face_index, DWRITE_FONT_FACE_TYPE face_type, struct dwrite_font_data *data) +static HRESULT init_font_data(IDWriteFactory2 *factory, IDWriteFontFile *file, UINT32 face_index, DWRITE_FONT_FACE_TYPE face_type, + IDWriteFontFileStream **stream, struct dwrite_font_data **ret) { void *os2_context, *head_context; const void *tt_os2 = NULL, *tt_head = NULL; - IDWriteFontFileStream *stream; + struct dwrite_font_data *data; HRESULT hr; - hr = get_filestream_from_file(file, &stream); - if (FAILED(hr)) + data = heap_alloc_zero(sizeof(*data)); + if (!data) + return E_OUTOFMEMORY; + + hr = get_filestream_from_file(file, stream); + if (FAILED(hr)) { + heap_free(data); return hr; + } + data->ref = 1; data->factory = factory; data->file = file; data->face_index = face_index; @@ -1658,23 +1642,29 @@ IDWriteFontFile_AddRef(file); IDWriteFactory2_AddRef(factory); - opentype_get_font_table(stream, face_type, face_index, MS_OS2_TAG, &tt_os2, &os2_context, NULL, NULL); - opentype_get_font_table(stream, face_type, face_index, MS_HEAD_TAG, &tt_head, &head_context, NULL, NULL); + opentype_get_font_table(*stream, face_type, face_index, MS_OS2_TAG, &tt_os2, &os2_context, NULL, NULL); + opentype_get_font_table(*stream, face_type, face_index, MS_HEAD_TAG, &tt_head, &head_context, NULL, NULL); - opentype_get_font_properties(tt_os2, tt_head, &data->stretch, &data->weight, &data->style); - opentype_get_font_metrics(stream, face_type, face_index, &data->metrics); + opentype_get_font_properties(*stream, face_type, face_index, &data->stretch, &data->weight, &data->style); + opentype_get_font_metrics(*stream, face_type, face_index, &data->metrics, NULL); if (tt_os2) - IDWriteFontFileStream_ReleaseFileFragment(stream, os2_context); + IDWriteFontFileStream_ReleaseFileFragment(*stream, os2_context); if (tt_head) - IDWriteFontFileStream_ReleaseFileFragment(stream, head_context); - IDWriteFontFileStream_Release(stream); + IDWriteFontFileStream_ReleaseFileFragment(*stream, head_context); + *ret = data; return S_OK; } -static HRESULT init_fontfamily_data(IDWriteLocalizedStrings *familyname, struct dwrite_fontfamily_data *data) +static HRESULT init_fontfamily_data(IDWriteLocalizedStrings *familyname, struct dwrite_fontfamily_data **ret) { + struct dwrite_fontfamily_data *data; + + data = heap_alloc(sizeof(*data)); + if (!data) + return E_OUTOFMEMORY; + data->ref = 1; data->font_count = 0; data->font_alloc = 2; @@ -1688,6 +1678,7 @@ data->familyname = familyname; IDWriteLocalizedStrings_AddRef(familyname); + *ret = data; return S_OK; } @@ -1695,7 +1686,7 @@ { struct dwrite_fontcollection *collection; BOOL current = FALSE; - HRESULT hr; + HRESULT hr = S_OK; *ret = NULL; @@ -1712,7 +1703,7 @@ TRACE("building font collection:\n"); - while (1) { + while (hr == S_OK) { DWRITE_FONT_FACE_TYPE face_type; DWRITE_FONT_FILE_TYPE file_type; IDWriteFontFile *file; @@ -1744,56 +1735,59 @@ IDWriteFontFileStream *stream; WCHAR buffer[255]; UINT32 index; - BOOL exists; /* alloc and init new font data structure */ - font_data = heap_alloc_zero(sizeof(struct dwrite_font_data)); - init_font_data(factory, file, i, face_type, font_data); - - hr = get_filestream_from_file(file, &stream); - if (FAILED(hr)) { - heap_free (font_data); - return hr; - } + hr = init_font_data(factory, file, i, face_type, &stream, &font_data); + if (FAILED(hr)) + break; /* get family name from font file */ name_table = NULL; opentype_get_font_table(stream, face_type, i, MS_NAME_TAG, &name_table, &name_context, NULL, NULL); - if (name_table) + if (name_table) { hr = opentype_get_font_strings_from_id(name_table, DWRITE_INFORMATIONAL_STRING_WIN32_FAMILY_NAMES, &family_name); + IDWriteFontFileStream_ReleaseFileFragment(stream, name_context); + } IDWriteFontFileStream_Release(stream); if (FAILED(hr) || !family_name) { WARN("unable to get family name from font\n"); + release_font_data(font_data); continue; } buffer[0] = 0; IDWriteLocalizedStrings_GetString(family_name, 0, buffer, sizeof(buffer)/sizeof(WCHAR)); - exists = FALSE; - hr = collection_find_family(collection, buffer, &index, &exists); - if (exists) - fontfamily_add_font(collection->family_data[index], font_data); + index = collection_find_family(collection, buffer); + if (index != ~0u) + hr = fontfamily_add_font(collection->family_data[index], font_data); else { struct dwrite_fontfamily_data *family_data; /* create and init new family */ - family_data = heap_alloc(sizeof(*family_data)); - init_fontfamily_data(family_name, family_data); + hr = init_fontfamily_data(family_name, &family_data); + if (hr == S_OK) { + /* add font to family, family - to collection */ + hr = fontfamily_add_font(family_data, font_data); + if (hr == S_OK) + hr = fontcollection_add_family(collection, family_data); - /* add font to family, family - to collection */ - fontfamily_add_font(family_data, font_data); - fontcollection_add_family(collection, family_data); + if (FAILED(hr)) + release_fontfamily_data(family_data); + } } IDWriteLocalizedStrings_Release(family_name); + + if (FAILED(hr)) + break; } IDWriteFontFile_Release(file); }; - return S_OK; + return hr; } struct system_fontfile_enumerator @@ -2207,7 +2201,14 @@ IDWriteFontFile_AddRef(font_files[i]); } - get_font_properties_from_stream(fontface->streams[0], facetype, index, &fontface->metrics, NULL, NULL, NULL); + opentype_get_font_metrics(fontface->streams[0], facetype, index, &fontface->metrics, &fontface->caret); + if (simulations & DWRITE_FONT_SIMULATIONS_OBLIQUE) { + /* TODO: test what happens if caret is already slanted */ + if (fontface->caret.slopeRise == 1) { + fontface->caret.slopeRise = fontface->metrics.designUnitsPerEm; + fontface->caret.slopeRun = fontface->caret.slopeRise / 3; + } + } *ret = &fontface->IDWriteFontFace2_iface; return S_OK; diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/dwrite/freetype.c wine-staging-1.7.36~ubuntu12.04.1/dlls/dwrite/freetype.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/dwrite/freetype.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/dwrite/freetype.c 2015-02-08 20:31:28.000000000 +0000 @@ -375,6 +375,19 @@ return hr; } +UINT16 freetype_get_glyphcount(IDWriteFontFace2 *fontface) +{ + UINT16 count = 0; + FT_Face face; + + EnterCriticalSection(&freetype_cs); + if (pFTC_Manager_LookupFace(cache_manager, fontface, &face) == 0) + count = face->num_glyphs; + LeaveCriticalSection(&freetype_cs); + + return count; +} + #else /* HAVE_FREETYPE */ BOOL init_freetype(void) @@ -406,4 +419,9 @@ return E_NOTIMPL; } +UINT16 freetype_get_glyphcount(IDWriteFontFace2 *fontface) +{ + return 0; +} + #endif /* HAVE_FREETYPE */ diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/dwrite/main.c wine-staging-1.7.36~ubuntu12.04.1/dlls/dwrite/main.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/dwrite/main.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/dwrite/main.c 2015-02-08 20:31:28.000000000 +0000 @@ -383,14 +383,32 @@ HRESULT add_localizedstring(IDWriteLocalizedStrings *iface, const WCHAR *locale, const WCHAR *string) { struct localizedstrings *This = impl_from_IDWriteLocalizedStrings(iface); + UINT32 i; + + /* make sure there's no duplicates */ + for (i = 0; i < This->count; i++) + if (!strcmpW(This->data[i].locale, locale)) + return S_OK; if (This->count == This->alloc) { + void *ptr; + + ptr = heap_realloc(This->data, 2*This->alloc*sizeof(struct localizedpair)); + if (!ptr) + return E_OUTOFMEMORY; + This->alloc *= 2; - This->data = heap_realloc(This->data, This->alloc*sizeof(struct localizedpair)); + This->data = ptr; } This->data[This->count].locale = heap_strdupW(locale); This->data[This->count].string = heap_strdupW(string); + if (!This->data[This->count].locale || !This->data[This->count].string) { + heap_free(This->data[This->count].locale); + heap_free(This->data[This->count].string); + return E_OUTOFMEMORY; + } + This->count++; return S_OK; diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/dwrite/opentype.c wine-staging-1.7.36~ubuntu12.04.1/dlls/dwrite/opentype.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/dwrite/opentype.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/dwrite/opentype.c 2015-02-08 20:31:28.000000000 +0000 @@ -30,6 +30,8 @@ #define MS_OS2_TAG DWRITE_MAKE_OPENTYPE_TAG('O','S','/','2') #define MS_POST_TAG DWRITE_MAKE_OPENTYPE_TAG('p','o','s','t') #define MS_TTCF_TAG DWRITE_MAKE_OPENTYPE_TAG('t','t','c','f') +#define MS_GPOS_TAG DWRITE_MAKE_OPENTYPE_TAG('G','P','O','S') +#define MS_GSUB_TAG DWRITE_MAKE_OPENTYPE_TAG('G','S','U','B') #ifdef WORDS_BIGENDIAN #define GET_BE_WORD(x) (x) @@ -236,6 +238,51 @@ TT_NameRecord nameRecord[1]; } TT_NAME_V0; +typedef struct { + CHAR FeatureTag[4]; + WORD Feature; +} OT_FeatureRecord; + +typedef struct { + WORD FeatureCount; + OT_FeatureRecord FeatureRecord[1]; +} OT_FeatureList; + +typedef struct { + WORD LookupOrder; /* Reserved */ + WORD ReqFeatureIndex; + WORD FeatureCount; + WORD FeatureIndex[1]; +} OT_LangSys; + +typedef struct { + CHAR LangSysTag[4]; + WORD LangSys; +} OT_LangSysRecord; + +typedef struct { + WORD DefaultLangSys; + WORD LangSysCount; + OT_LangSysRecord LangSysRecord[1]; +} OT_Script; + +typedef struct { + CHAR ScriptTag[4]; + WORD Script; +} OT_ScriptRecord; + +typedef struct { + WORD ScriptCount; + OT_ScriptRecord ScriptRecord[1]; +} OT_ScriptList; + +typedef struct { + DWORD version; + WORD ScriptList; + WORD FeatureList; + WORD LookupList; +} GPOS_GSUB_Header; + enum OPENTYPE_PLATFORM_ID { OPENTYPE_PLATFORM_UNICODE = 0, @@ -903,7 +950,7 @@ } void opentype_get_font_metrics(IDWriteFontFileStream *stream, DWRITE_FONT_FACE_TYPE face_type, UINT32 face_index, - DWRITE_FONT_METRICS1 *metrics) + DWRITE_FONT_METRICS1 *metrics, DWRITE_CARET_METRICS *caret) { void *os2_context, *head_context, *post_context, *hhea_context; const TT_OS2_V2 *tt_os2; @@ -926,6 +973,19 @@ metrics->glyphBoxBottom = GET_BE_WORD(tt_head->yMin); } + if (caret) { + if (tt_hhea) { + caret->slopeRise = GET_BE_WORD(tt_hhea->caretSlopeRise); + caret->slopeRun = GET_BE_WORD(tt_hhea->caretSlopeRun); + caret->offset = GET_BE_WORD(tt_hhea->caretOffset); + } + else { + caret->slopeRise = 0; + caret->slopeRun = 0; + caret->offset = 0; + } + } + if (tt_os2) { USHORT version = GET_BE_WORD(tt_os2->version); @@ -993,10 +1053,15 @@ IDWriteFontFileStream_ReleaseFileFragment(stream, hhea_context); } -void opentype_get_font_properties(const void *os2, const void *head, DWRITE_FONT_STRETCH *stretch, DWRITE_FONT_WEIGHT *weight, DWRITE_FONT_STYLE *style) +void opentype_get_font_properties(IDWriteFontFileStream *stream, DWRITE_FONT_FACE_TYPE type, UINT32 index, + DWRITE_FONT_STRETCH *stretch, DWRITE_FONT_WEIGHT *weight, DWRITE_FONT_STYLE *style) { - TT_OS2_V2 *tt_os2 = (TT_OS2_V2*)os2; - TT_HEAD *tt_head = (TT_HEAD*)head; + void *os2_context, *head_context; + const TT_OS2_V2 *tt_os2; + const TT_HEAD *tt_head; + + opentype_get_font_table(stream, type, index, MS_OS2_TAG, (const void**)&tt_os2, &os2_context, NULL, NULL); + opentype_get_font_table(stream, type, index, MS_HEAD_TAG, (const void**)&tt_head, &head_context, NULL, NULL); /* default stretch, weight and style to normal */ *stretch = DWRITE_FONT_STRETCH_NORMAL; @@ -1017,6 +1082,11 @@ if (macStyle & 0x0002) *style = DWRITE_FONT_STYLE_ITALIC; } + + if (tt_os2) + IDWriteFontFileStream_ReleaseFileFragment(stream, os2_context); + if (tt_head) + IDWriteFontFileStream_ReleaseFileFragment(stream, head_context); } static UINT get_name_record_codepage(enum OPENTYPE_PLATFORM_ID platform, USHORT encoding) @@ -1147,6 +1217,14 @@ if (FAILED(hr)) return hr; header = table_data; + + switch (header->format) { + case 0: + break; + default: + FIXME("unsupported NAME format %d\n", header->format); + } + storage_area = (LPBYTE)table_data + GET_BE_WORD(header->stringOffset); count = GET_BE_WORD(header->count); @@ -1172,6 +1250,12 @@ continue; } + /* Skip such entries for now, as it's not clear which locale is implied when + unicode platform is used. Also fonts tend to duplicate those strings as + WIN platform entries. */ + if (platform == OPENTYPE_PLATFORM_UNICODE) + continue; + lang_id = GET_BE_WORD(record->languageID); length = GET_BE_WORD(record->length); offset = GET_BE_WORD(record->offset); @@ -1217,3 +1301,87 @@ return hr; } + +static inline const OT_Script *opentype_get_script(const OT_ScriptList *scriptlist, UINT32 scripttag) +{ + UINT16 j; + + for (j = 0; j < GET_BE_WORD(scriptlist->ScriptCount); j++) { + const char *tag = scriptlist->ScriptRecord[j].ScriptTag; + if (scripttag == DWRITE_MAKE_OPENTYPE_TAG(tag[0], tag[1], tag[2], tag[3])) + return (OT_Script*)((BYTE*)scriptlist + GET_BE_WORD(scriptlist->ScriptRecord[j].Script)); + } + + return NULL; +} + +static inline const OT_LangSys *opentype_get_langsys(const OT_Script *script, UINT32 languagetag) +{ + UINT16 j; + + for (j = 0; j < GET_BE_WORD(script->LangSysCount); j++) { + const char *tag = script->LangSysRecord[j].LangSysTag; + if (languagetag == DWRITE_MAKE_OPENTYPE_TAG(tag[0], tag[1], tag[2], tag[3])) + return (OT_LangSys*)((BYTE*)script + GET_BE_WORD(script->LangSysRecord[j].LangSys)); + } + + return NULL; +} + +static void opentype_add_font_features(const GPOS_GSUB_Header *header, const OT_LangSys *langsys, + UINT32 max_tagcount, UINT32 *count, DWRITE_FONT_FEATURE_TAG *tags) +{ + const OT_FeatureList *features = (const OT_FeatureList*)((const BYTE*)header + GET_BE_WORD(header->FeatureList)); + UINT16 j; + + for (j = 0; j < GET_BE_WORD(langsys->FeatureCount); j++) { + const OT_FeatureRecord *feature = &features->FeatureRecord[langsys->FeatureIndex[j]]; + const char *tag = feature->FeatureTag; + + if (*count < max_tagcount) + tags[*count] = DWRITE_MAKE_OPENTYPE_TAG(tag[0], tag[1], tag[2], tag[3]); + + (*count)++; + } +} + +HRESULT opentype_get_typographic_features(IDWriteFontFace *fontface, UINT32 scripttag, UINT32 languagetag, UINT32 max_tagcount, + UINT32 *count, DWRITE_FONT_FEATURE_TAG *tags) +{ + UINT32 tables[2] = { MS_GSUB_TAG, MS_GPOS_TAG }; + HRESULT hr; + UINT8 i; + + *count = 0; + for (i = 0; i < sizeof(tables)/sizeof(tables[0]); i++) { + const OT_ScriptList *scriptlist; + const GPOS_GSUB_Header *header; + const OT_Script *script; + const void *ptr; + void *context; + UINT32 size; + BOOL exists; + + exists = FALSE; + hr = IDWriteFontFace_TryGetFontTable(fontface, tables[i], &ptr, &size, &context, &exists); + if (FAILED(hr)) + return hr; + + if (!exists) + continue; + + header = (const GPOS_GSUB_Header*)ptr; + scriptlist = (const OT_ScriptList*)((const BYTE*)header + GET_BE_WORD(header->ScriptList)); + + script = opentype_get_script(scriptlist, scripttag); + if (script) { + const OT_LangSys *langsys = opentype_get_langsys(script, languagetag); + if (langsys) + opentype_add_font_features(header, langsys, max_tagcount, count, tags); + } + + IDWriteFontFace_ReleaseFontTable(fontface, context); + } + + return *count > max_tagcount ? E_NOT_SUFFICIENT_BUFFER : S_OK; +} diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/dwrite/tests/analyzer.c wine-staging-1.7.36~ubuntu12.04.1/dlls/dwrite/tests/analyzer.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/dwrite/tests/analyzer.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/dwrite/tests/analyzer.c 2015-02-08 20:31:28.000000000 +0000 @@ -1299,8 +1299,8 @@ memset(tags, 0, sizeof(tags)); count = 0; hr = IDWriteTextAnalyzer2_GetTypographicFeatures(analyzer2, fontface, sa, NULL, sizeof(tags)/sizeof(tags[0]), &count, tags); -todo_wine { ok(hr == S_OK, "got 0x%08x\n", hr); +todo_wine { ok(count > 0, "got %u\n", count); ret = has_feature(tags, count, DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_ALTERNATES); ok(ret, "expected 'calt' feature\n"); @@ -1311,8 +1311,8 @@ memset(tags, 0, sizeof(tags)); count = 0; hr = IDWriteTextAnalyzer2_GetTypographicFeatures(analyzer2, fontface, sa, NULL, sizeof(tags)/sizeof(tags[0]), &count, tags); -todo_wine { ok(hr == S_OK, "got 0x%08x\n", hr); +todo_wine { ok(count > 0, "got %u\n", count); ret = has_feature(tags, count, DWRITE_FONT_FEATURE_TAG_GLYPH_COMPOSITION_DECOMPOSITION); ok(ret, "expected 'ccmp' feature\n"); diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/dwrite/tests/font.c wine-staging-1.7.36~ubuntu12.04.1/dlls/dwrite/tests/font.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/dwrite/tests/font.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/dwrite/tests/font.c 2015-02-08 20:31:28.000000000 +0000 @@ -75,7 +75,7 @@ HRSRC res; void *ptr; file = CreateFileW(filename, GENERIC_READ|GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, 0 ); - ok( file != INVALID_HANDLE_VALUE, "file creation failed\n" ); + ok(file != INVALID_HANDLE_VALUE, "file creation failed, error %d\n", GetLastError()); res = FindResourceA(GetModuleHandleA(NULL), (LPCSTR)MAKEINTRESOURCE(1), (LPCSTR)RT_RCDATA); ok( res != 0, "couldn't find resource\n" ); @@ -2074,19 +2074,15 @@ IDWriteFactory_Release(factory); } -static void test_GetFirstMatchingFont(void) +static IDWriteFont *get_tahoma_instance(IDWriteFactory *factory, DWRITE_FONT_STYLE style) { - DWRITE_FONT_SIMULATIONS simulations; IDWriteFontCollection *collection; - IDWriteFont *font, *font2; IDWriteFontFamily *family; - IDWriteFactory *factory; + IDWriteFont *font; UINT32 index; BOOL exists; HRESULT hr; - factory = create_factory(); - hr = IDWriteFactory_GetSystemFontCollection(factory, &collection, FALSE); ok(hr == S_OK, "got 0x%08x\n", hr); @@ -2100,26 +2096,33 @@ ok(hr == S_OK, "got 0x%08x\n", hr); hr = IDWriteFontFamily_GetFirstMatchingFont(family, DWRITE_FONT_WEIGHT_NORMAL, - DWRITE_FONT_STRETCH_NORMAL, DWRITE_FONT_STYLE_NORMAL, &font); + DWRITE_FONT_STRETCH_NORMAL, style, &font); ok(hr == S_OK, "got 0x%08x\n", hr); - hr = IDWriteFontFamily_GetFirstMatchingFont(family, DWRITE_FONT_WEIGHT_NORMAL, - DWRITE_FONT_STRETCH_NORMAL, DWRITE_FONT_STYLE_NORMAL, &font2); - ok(hr == S_OK, "got 0x%08x\n", hr); + IDWriteFontFamily_Release(family); + IDWriteFontCollection_Release(collection); + return font; +} + +static void test_GetFirstMatchingFont(void) +{ + DWRITE_FONT_SIMULATIONS simulations; + IDWriteFont *font, *font2; + IDWriteFactory *factory; + + factory = create_factory(); + + font = get_tahoma_instance(factory, DWRITE_FONT_STYLE_NORMAL); + font2 = get_tahoma_instance(factory, DWRITE_FONT_STYLE_NORMAL); ok(font != font2, "got %p, %p\n", font, font2); IDWriteFont_Release(font); + IDWriteFont_Release(font2); - hr = IDWriteFontFamily_GetFirstMatchingFont(family, DWRITE_FONT_WEIGHT_NORMAL, - DWRITE_FONT_STRETCH_NORMAL, DWRITE_FONT_STYLE_ITALIC, &font); - ok(hr == S_OK, "got 0x%08x\n", hr); - + font = get_tahoma_instance(factory, DWRITE_FONT_STYLE_ITALIC); simulations = IDWriteFont_GetSimulations(font); ok(simulations == DWRITE_FONT_SIMULATIONS_OBLIQUE, "%d\n", simulations); - IDWriteFont_Release(font); - IDWriteFont_Release(font2); - IDWriteFontFamily_Release(family); - IDWriteFontCollection_Release(collection); + IDWriteFactory_Release(factory); } @@ -2955,6 +2958,109 @@ IDWriteFactory1_Release(factory1); } +static void test_GetCaretMetrics(void) +{ + DWRITE_FONT_METRICS1 metrics; + IDWriteFontFace1 *fontface1; + DWRITE_CARET_METRICS caret; + IDWriteFontFace *fontface; + IDWriteFactory *factory; + IDWriteFontFile *file; + IDWriteFont *font; + HRESULT hr; + + create_testfontfile(test_fontfile); + factory = create_factory(); + + hr = IDWriteFactory_CreateFontFileReference(factory, test_fontfile, NULL, &file); + ok(hr == S_OK, "got 0x%08x\n", hr); + + hr = IDWriteFactory_CreateFontFace(factory, DWRITE_FONT_FACE_TYPE_TRUETYPE, 1, &file, 0, DWRITE_FONT_SIMULATIONS_NONE, &fontface); + ok(hr == S_OK, "got 0x%08x\n", hr); + IDWriteFontFile_Release(file); + + hr = IDWriteFontFace_QueryInterface(fontface, &IID_IDWriteFontFace1, (void**)&fontface1); + IDWriteFontFace_Release(fontface); + if (hr != S_OK) { + win_skip("GetCaretMetrics() is not supported.\n"); + IDWriteFactory_Release(factory); + DeleteFileW(test_fontfile); + return; + } + + memset(&caret, 0xcc, sizeof(caret)); + IDWriteFontFace1_GetCaretMetrics(fontface1, &caret); + ok(caret.slopeRise == 1, "got %d\n", caret.slopeRise); + ok(caret.slopeRun == 0, "got %d\n", caret.slopeRun); + ok(caret.offset == 0, "got %d\n", caret.offset); + IDWriteFontFace1_Release(fontface1); + IDWriteFactory_Release(factory); + + /* now with Tahoma Normal */ + factory = create_factory(); + font = get_tahoma_instance(factory, DWRITE_FONT_STYLE_NORMAL); + hr = IDWriteFont_CreateFontFace(font, &fontface); + ok(hr == S_OK, "got 0x%08x\n", hr); + IDWriteFont_Release(font); + hr = IDWriteFontFace_QueryInterface(fontface, &IID_IDWriteFontFace1, (void**)&fontface1); + ok(hr == S_OK, "got 0x%08x\n", hr); + IDWriteFontFace_Release(fontface); + + memset(&caret, 0xcc, sizeof(caret)); + IDWriteFontFace1_GetCaretMetrics(fontface1, &caret); + ok(caret.slopeRise == 1, "got %d\n", caret.slopeRise); + ok(caret.slopeRun == 0, "got %d\n", caret.slopeRun); + ok(caret.offset == 0, "got %d\n", caret.offset); + IDWriteFontFace1_Release(fontface1); + + /* simulated italic */ + font = get_tahoma_instance(factory, DWRITE_FONT_STYLE_ITALIC); + hr = IDWriteFont_CreateFontFace(font, &fontface); + ok(hr == S_OK, "got 0x%08x\n", hr); + IDWriteFont_Release(font); + hr = IDWriteFontFace_QueryInterface(fontface, &IID_IDWriteFontFace1, (void**)&fontface1); + ok(hr == S_OK, "got 0x%08x\n", hr); + IDWriteFontFace_Release(fontface); + + IDWriteFontFace1_GetMetrics(fontface1, &metrics); + + memset(&caret, 0xcc, sizeof(caret)); + IDWriteFontFace1_GetCaretMetrics(fontface1, &caret); + ok(caret.slopeRise == metrics.designUnitsPerEm, "got %d\n", caret.slopeRise); + ok(caret.slopeRun > 0, "got %d\n", caret.slopeRun); + ok(caret.offset == 0, "got %d\n", caret.offset); + IDWriteFontFace1_Release(fontface1); + + IDWriteFactory_Release(factory); + DeleteFileW(test_fontfile); +} + +static void test_GetGlyphCount(void) +{ + IDWriteFontFace *fontface; + IDWriteFactory *factory; + IDWriteFontFile *file; + HRESULT hr; + UINT16 count; + + create_testfontfile(test_fontfile); + factory = create_factory(); + + hr = IDWriteFactory_CreateFontFileReference(factory, test_fontfile, NULL, &file); + ok(hr == S_OK, "got 0x%08x\n", hr); + + hr = IDWriteFactory_CreateFontFace(factory, DWRITE_FONT_FACE_TYPE_TRUETYPE, 1, &file, 0, DWRITE_FONT_SIMULATIONS_NONE, &fontface); + ok(hr == S_OK, "got 0x%08x\n", hr); + IDWriteFontFile_Release(file); + + count = IDWriteFontFace_GetGlyphCount(fontface); + ok(count == 7, "got %u\n", count); + + IDWriteFontFace_Release(fontface); + IDWriteFactory_Release(factory); + DeleteFileW(test_fontfile); +} + START_TEST(font) { IDWriteFactory *factory; @@ -2993,6 +3099,8 @@ test_IsMonospacedFont(); test_GetGlyphRunOutline(); test_GetEudcFontCollection(); + test_GetCaretMetrics(); + test_GetGlyphCount(); IDWriteFactory_Release(factory); } diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/evr/evr.spec wine-staging-1.7.36~ubuntu12.04.1/dlls/evr/evr.spec --- wine-staging-1.7.35~ubuntu12.04.1/dlls/evr/evr.spec 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/evr/evr.spec 2015-02-08 20:31:28.000000000 +0000 @@ -0,0 +1,28 @@ +@ stub DllCanUnloadNow +@ stub DllGetClassObject +@ stub DllRegisterServer +@ stub DllUnregisterServer +@ stub MFConvertColorInfoFromDXVA +@ stub MFConvertColorInfoToDXVA +@ stub MFConvertFromFP16Array +@ stub MFConvertToFP16Array +@ stub MFCopyImage +@ stub MFCreateDXSurfaceBuffer +@ stub MFCreateVideoMediaType +@ stub MFCreateVideoMediaTypeFromBitMapInfoHeader +@ stub MFCreateVideoMediaTypeFromSubtype +@ stub MFCreateVideoMediaTypeFromVideoInfoHeader2 +@ stub MFCreateVideoMediaTypeFromVideoInfoHeader +@ stub MFCreateVideoMixer +@ stub MFCreateVideoMixerAndPresenter +@ stub MFCreateVideoOTA +@ stub MFCreateVideoPresenter2 +@ stub MFCreateVideoPresenter +@ stub MFCreateVideoSampleAllocator +@ stub MFCreateVideoSampleFromSurface +@ stub MFGetPlaneSize +@ stub MFGetStrideForBitmapInfoHeader +@ stub MFGetUncompressedVideoFormat +@ stub MFInitVideoFormat +@ stub MFInitVideoFormat_RGB +@ stub MFIsFormatYUV diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/evr/main.c wine-staging-1.7.36~ubuntu12.04.1/dlls/evr/main.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/evr/main.c 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/evr/main.c 2015-02-08 20:31:28.000000000 +0000 @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2015 Austin English + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ +#include "config.h" + +#include + +#include "windef.h" +#include "winbase.h" + +BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved) +{ + switch (reason) + { + case DLL_WINE_PREATTACH: + return FALSE; /* prefer native version */ + case DLL_PROCESS_ATTACH: + DisableThreadLibraryCalls(instance); + break; + } + + return TRUE; +} diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/evr/Makefile.in wine-staging-1.7.36~ubuntu12.04.1/dlls/evr/Makefile.in --- wine-staging-1.7.35~ubuntu12.04.1/dlls/evr/Makefile.in 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/evr/Makefile.in 2015-02-08 20:31:28.000000000 +0000 @@ -0,0 +1,4 @@ +MODULE = evr.dll + +C_SRCS = \ + main.c diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/jscript/array.c wine-staging-1.7.36~ubuntu12.04.1/dlls/jscript/array.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/jscript/array.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/jscript/array.c 2015-02-08 20:31:28.000000000 +0000 @@ -49,9 +49,14 @@ static const WCHAR default_separatorW[] = {',',0}; +static inline ArrayInstance *array_from_jsdisp(jsdisp_t *jsdisp) +{ + return CONTAINING_RECORD(jsdisp, ArrayInstance, dispex); +} + static inline ArrayInstance *array_from_vdisp(vdisp_t *vdisp) { - return (ArrayInstance*)vdisp->u.jsdisp; + return array_from_jsdisp(vdisp->u.jsdisp); } static inline ArrayInstance *array_this(vdisp_t *jsthis) @@ -113,44 +118,38 @@ return ptr+1; } -static HRESULT Array_length(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, - jsval_t *r) +static HRESULT Array_get_length(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r) { - ArrayInstance *This = array_from_vdisp(jsthis); + TRACE("%p\n", jsthis); - TRACE("%p %d\n", This, This->length); + *r = jsval_number(array_from_jsdisp(jsthis)->length); + return S_OK; +} - switch(flags) { - case DISPATCH_PROPERTYGET: - *r = jsval_number(This->length); - break; - case DISPATCH_PROPERTYPUT: { - DOUBLE len = -1; - DWORD i; - HRESULT hres; +static HRESULT Array_set_length(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t value) +{ + ArrayInstance *This = array_from_jsdisp(jsthis); + DOUBLE len = -1; + DWORD i; + HRESULT hres; - hres = to_number(ctx, argv[0], &len); - if(FAILED(hres)) - return hres; + TRACE("%p %d\n", This, This->length); - len = floor(len); - if(len!=(DWORD)len) - return throw_range_error(ctx, JS_E_INVALID_LENGTH, NULL); + hres = to_number(ctx, value, &len); + if(FAILED(hres)) + return hres; - for(i=len; ilength; i++) { - hres = jsdisp_delete_idx(&This->dispex, i); - if(FAILED(hres)) - return hres; - } + len = floor(len); + if(len!=(DWORD)len) + return throw_range_error(ctx, JS_E_INVALID_LENGTH, NULL); - This->length = len; - break; - } - default: - FIXME("unimplemented flags %x\n", flags); - return E_NOTIMPL; + for(i=len; i < This->length; i++) { + hres = jsdisp_delete_idx(&This->dispex, i); + if(FAILED(hres)) + return hres; } + This->length = len; return S_OK; } @@ -999,22 +998,13 @@ return S_OK; } -static HRESULT Array_value(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, - jsval_t *r) +static HRESULT Array_get_value(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r) { - TRACE("\n"); + ArrayInstance *array = array_from_jsdisp(jsthis); - switch(flags) { - case INVOKE_FUNC: - return throw_type_error(ctx, JS_E_FUNCTION_EXPECTED, NULL); - case INVOKE_PROPERTYGET: - return array_join(ctx, jsthis->u.jsdisp, array_from_vdisp(jsthis)->length, default_separatorW, r); - default: - FIXME("unimplemented flags %x\n", flags); - return E_NOTIMPL; - } + TRACE("\n"); - return S_OK; + return array_join(ctx, &array->dispex, array->length, default_separatorW, r); } static void Array_destructor(jsdisp_t *dispex) @@ -1046,7 +1036,7 @@ static const builtin_prop_t Array_props[] = { {concatW, Array_concat, PROPF_METHOD|1}, {joinW, Array_join, PROPF_METHOD|1}, - {lengthW, Array_length, 0}, + {lengthW, NULL,0, Array_get_length, Array_set_length}, {popW, Array_pop, PROPF_METHOD}, {pushW, Array_push, PROPF_METHOD|1}, {reverseW, Array_reverse, PROPF_METHOD}, @@ -1061,7 +1051,7 @@ static const builtin_info_t Array_info = { JSCLASS_ARRAY, - {NULL, Array_value, 0}, + {NULL, NULL,0, Array_get_value}, sizeof(Array_props)/sizeof(*Array_props), Array_props, Array_destructor, @@ -1069,12 +1059,12 @@ }; static const builtin_prop_t ArrayInst_props[] = { - {lengthW, Array_length, 0} + {lengthW, NULL,0, Array_get_length, Array_set_length} }; static const builtin_info_t ArrayInst_info = { JSCLASS_ARRAY, - {NULL, Array_value, 0}, + {NULL, NULL,0, Array_get_value}, sizeof(ArrayInst_props)/sizeof(*ArrayInst_props), ArrayInst_props, Array_destructor, diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/jscript/date.c wine-staging-1.7.36~ubuntu12.04.1/dlls/jscript/date.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/jscript/date.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/jscript/date.c 2015-02-08 20:31:28.000000000 +0000 @@ -94,9 +94,14 @@ static const WCHAR UTCW[] = {'U','T','C',0}; static const WCHAR parseW[] = {'p','a','r','s','e',0}; +static inline DateInstance *date_from_jsdisp(jsdisp_t *jsdisp) +{ + return CONTAINING_RECORD(jsdisp, DateInstance, dispex); +} + static inline DateInstance *date_this(vdisp_t *jsthis) { - return is_vclass(jsthis, JSCLASS_DATE) ? (DateInstance*)jsthis->u.jsdisp : NULL; + return is_vclass(jsthis, JSCLASS_DATE) ? date_from_jsdisp(jsthis->u.jsdisp) : NULL; } /*ECMA-262 3rd Edition 15.9.1.2 */ @@ -1917,22 +1922,11 @@ return S_OK; } -static HRESULT Date_value(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, - jsval_t *r) +static HRESULT Date_get_value(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r) { TRACE("\n"); - switch(flags) { - case INVOKE_FUNC: - return throw_type_error(ctx, JS_E_FUNCTION_EXPECTED, NULL); - case INVOKE_PROPERTYGET: - return dateobj_to_string( (DateInstance*)jsthis->u.jsdisp, r); - default: - FIXME("unimplemented flags %x\n", flags); - return E_NOTIMPL; - } - - return S_OK; + return dateobj_to_string(date_from_jsdisp(jsthis), r); } static const builtin_prop_t Date_props[] = { @@ -1984,7 +1978,7 @@ static const builtin_info_t Date_info = { JSCLASS_DATE, - {NULL, Date_value, 0}, + {NULL, NULL,0, Date_get_value}, sizeof(Date_props)/sizeof(*Date_props), Date_props, NULL, @@ -1993,7 +1987,7 @@ static const builtin_info_t DateInst_info = { JSCLASS_DATE, - {NULL, Date_value, 0}, + {NULL, NULL,0, Date_get_value}, 0, NULL, NULL, NULL @@ -2508,7 +2502,7 @@ static const builtin_info_t DateConstr_info = { JSCLASS_FUNCTION, - {NULL, Function_value, 0}, + DEFAULT_FUNCTION_VALUE, sizeof(DateConstr_props)/sizeof(*DateConstr_props), DateConstr_props, NULL, diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/jscript/dispex.c wine-staging-1.7.36~ubuntu12.04.1/dlls/jscript/dispex.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/jscript/dispex.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/jscript/dispex.c 2015-02-08 20:31:28.000000000 +0000 @@ -420,8 +420,12 @@ switch(prop->type) { case PROP_BUILTIN: - if(prop->u.p->flags & PROPF_METHOD) { + if(prop->u.p->getter) { + hres = prop->u.p->getter(This->ctx, This, r); + }else { jsdisp_t *obj; + + assert(prop->u.p->invoke != NULL); hres = create_builtin_function(This->ctx, prop->u.p->invoke, prop->u.p->name, NULL, prop->u.p->flags, NULL, &obj); if(FAILED(hres)) @@ -432,12 +436,6 @@ jsdisp_addref(obj); *r = jsval_obj(obj); - }else { - vdisp_t vthis; - - set_jsdisp(&vthis, This); - hres = prop->u.p->invoke(This->ctx, &vthis, DISPATCH_PROPERTYGET, 0, NULL, r); - vdisp_release(&vthis); } break; case PROP_PROTREF: @@ -472,13 +470,12 @@ switch(prop->type) { case PROP_BUILTIN: - if(!(prop->flags & PROPF_METHOD)) { - vdisp_t vthis; + if(prop->u.p->setter) + return prop->u.p->setter(This->ctx, This, val); - set_jsdisp(&vthis, This); - hres = prop->u.p->invoke(This->ctx, &vthis, DISPATCH_PROPERTYPUT, 1, &val, NULL); - vdisp_release(&vthis); - return hres; + if(prop->u.p->setter) { + FIXME("getter with no setter\n"); + return E_FAIL; } /* fall through */ case PROP_PROTREF: @@ -510,6 +507,12 @@ return S_OK; } +HRESULT builtin_set_const(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t value) +{ + TRACE("%p %s\n", jsthis, debugstr_jsval(value)); + return S_OK; +} + static HRESULT fill_protrefs(jsdisp_t *This) { dispex_prop_t *iter, *prop; @@ -907,7 +910,7 @@ jsdisp_addref(prototype); dispex->prop_cnt = 1; - if(builtin_info->value_prop.invoke) { + if(builtin_info->value_prop.invoke || builtin_info->value_prop.getter) { dispex->props[0].type = PROP_BUILTIN; dispex->props[0].u.p = &builtin_info->value_prop; }else { @@ -1057,11 +1060,18 @@ { HRESULT hres; + assert(!(flags & ~(DISPATCH_METHOD|DISPATCH_CONSTRUCT))); + if(is_class(jsfunc, JSCLASS_FUNCTION)) { hres = Function_invoke(jsfunc, jsthis, flags, argc, argv, r); }else { vdisp_t vdisp; + if(!jsfunc->builtin_info->value_prop.invoke) { + WARN("Not a function\n"); + return throw_type_error(jsfunc->ctx, JS_E_FUNCTION_EXPECTED, NULL); + } + set_disp(&vdisp, jsthis); hres = jsfunc->builtin_info->value_prop.invoke(jsfunc->ctx, &vdisp, flags, argc, argv, r); vdisp_release(&vdisp); @@ -1190,13 +1200,10 @@ unsigned i; HRESULT hres; + assert(!(flags & ~(DISPATCH_METHOD|DISPATCH_CONSTRUCT))); + jsdisp = iface_to_jsdisp((IUnknown*)disp); if(jsdisp) { - if(flags & DISPATCH_PROPERTYPUT) { - FIXME("disp_call(propput) on builtin object\n"); - return E_FAIL; - } - hres = jsdisp_call_value(jsdisp, jsthis, flags, argc, argv, r); jsdisp_release(jsdisp); return hres; diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/jscript/function.c wine-staging-1.7.36~ubuntu12.04.1/dlls/jscript/function.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/jscript/function.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/jscript/function.c 2015-02-08 20:31:28.000000000 +0000 @@ -43,9 +43,14 @@ jsdisp_t *var_obj; } ArgumentsInstance; +static inline FunctionInstance *function_from_jsdisp(jsdisp_t *jsdisp) +{ + return CONTAINING_RECORD(jsdisp, FunctionInstance, dispex); +} + static inline FunctionInstance *function_from_vdisp(vdisp_t *vdisp) { - return (FunctionInstance*)vdisp->u.jsdisp; + return function_from_jsdisp(vdisp->u.jsdisp); } static inline FunctionInstance *function_this(vdisp_t *jsthis) @@ -362,25 +367,20 @@ return invoke_source(function->dispex.ctx, function, jsthis, argc, argv, r); } -static HRESULT Function_length(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, - jsval_t *r) +static HRESULT Function_get_length(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r) { - FunctionInstance *This = function_from_vdisp(jsthis); - - TRACE("%p %d\n", This, This->length); - - switch(flags) { - case DISPATCH_PROPERTYGET: - *r = jsval_number(This->length); - break; - default: - FIXME("unimplemented flags %x\n", flags); - return E_NOTIMPL; - } + TRACE("%p\n", jsthis); + *r = jsval_number(function_from_jsdisp(jsthis)->length); return S_OK; } +static HRESULT Function_set_length(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t value) +{ + FIXME("\n"); + return E_NOTIMPL; +} + static HRESULT Function_toString(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r) { @@ -537,56 +537,33 @@ function = (FunctionInstance*)jsthis->u.jsdisp; - switch(flags) { - case DISPATCH_METHOD: - assert(function->value_proc != NULL); - return invoke_value_proc(ctx, function, NULL, flags, argc, argv, r); - - case DISPATCH_PROPERTYGET: { - HRESULT hres; - jsstr_t *str; - - hres = function_to_string(function, &str); - if(FAILED(hres)) - return hres; + assert(function->value_proc != NULL); + return invoke_value_proc(ctx, function, NULL, flags, argc, argv, r); +} - *r = jsval_string(str); - break; - } +HRESULT Function_get_value(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r) +{ + jsstr_t *str; + HRESULT hres; - case DISPATCH_CONSTRUCT: - assert(function->value_proc != NULL); - return invoke_value_proc(ctx, function, NULL, flags, argc, argv, r); + TRACE("\n"); - default: - FIXME("not implemented flags %x\n", flags); - return E_NOTIMPL; - } + hres = function_to_string(function_from_jsdisp(jsthis), &str); + if(FAILED(hres)) + return hres; + *r = jsval_string(str); return S_OK; } -static HRESULT Function_arguments(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, - unsigned argc, jsval_t *argv, jsval_t *r) +static HRESULT Function_get_arguments(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r) { - FunctionInstance *function = (FunctionInstance*)jsthis->u.jsdisp; - HRESULT hres = S_OK; + FunctionInstance *function = function_from_jsdisp(jsthis); TRACE("\n"); - switch(flags) { - case DISPATCH_PROPERTYGET: { - *r = function->arguments ? jsval_obj(jsdisp_addref(function->arguments)) : jsval_null(); - break; - } - case DISPATCH_PROPERTYPUT: - break; - default: - FIXME("unimplemented flags %x\n", flags); - hres = E_NOTIMPL; - } - - return hres; + *r = function->arguments ? jsval_obj(jsdisp_addref(function->arguments)) : jsval_null(); + return S_OK; } static void Function_destructor(jsdisp_t *dispex) @@ -602,15 +579,15 @@ static const builtin_prop_t Function_props[] = { {applyW, Function_apply, PROPF_METHOD|2}, - {argumentsW, Function_arguments, 0}, + {argumentsW, NULL, 0, Function_get_arguments, builtin_set_const}, {callW, Function_call, PROPF_METHOD|1}, - {lengthW, Function_length, 0}, + {lengthW, NULL, 0, Function_get_length, Function_set_length}, {toStringW, Function_toString, PROPF_METHOD} }; static const builtin_info_t Function_info = { JSCLASS_FUNCTION, - {NULL, Function_value, 0}, + DEFAULT_FUNCTION_VALUE, sizeof(Function_props)/sizeof(*Function_props), Function_props, Function_destructor, @@ -618,13 +595,13 @@ }; static const builtin_prop_t FunctionInst_props[] = { - {argumentsW, Function_arguments, 0}, - {lengthW, Function_length, 0} + {argumentsW, NULL, 0, Function_get_arguments, builtin_set_const}, + {lengthW, NULL, 0, Function_get_length, Function_set_length} }; static const builtin_info_t FunctionInst_info = { JSCLASS_FUNCTION, - {NULL, Function_value, 0}, + DEFAULT_FUNCTION_VALUE, sizeof(FunctionInst_props)/sizeof(*FunctionInst_props), FunctionInst_props, Function_destructor, diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/jscript/global.c wine-staging-1.7.36~ubuntu12.04.1/dlls/jscript/global.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/jscript/global.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/jscript/global.c 2015-02-08 20:31:28.000000000 +0000 @@ -112,151 +112,6 @@ return 'A'+i-10; } -static HRESULT constructor_call(jsdisp_t *constr, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r) -{ - if(flags != DISPATCH_PROPERTYGET) - return jsdisp_call_value(constr, NULL, flags, argc, argv, r); - - *r = jsval_obj(jsdisp_addref(constr)); - return S_OK; -} - -static HRESULT JSGlobal_Array(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, - jsval_t *r) -{ - TRACE("\n"); - - return constructor_call(ctx->array_constr, flags, argc, argv, r); -} - -static HRESULT JSGlobal_Boolean(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, - jsval_t *r) -{ - TRACE("\n"); - - return constructor_call(ctx->bool_constr, flags, argc, argv, r); -} - -static HRESULT JSGlobal_Date(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, - jsval_t *r) -{ - TRACE("\n"); - - return constructor_call(ctx->date_constr, flags, argc, argv, r); -} - -static HRESULT JSGlobal_Error(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, - jsval_t *r) -{ - TRACE("\n"); - - return constructor_call(ctx->error_constr, flags, argc, argv, r); -} - -static HRESULT JSGlobal_EvalError(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, - jsval_t *r) -{ - TRACE("\n"); - - return constructor_call(ctx->eval_error_constr, flags, argc, argv, r); -} - -static HRESULT JSGlobal_RangeError(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, - jsval_t *r) -{ - TRACE("\n"); - - return constructor_call(ctx->range_error_constr, flags, argc, argv, r); -} - -static HRESULT JSGlobal_RegExpError(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, - jsval_t *r) -{ - TRACE("\n"); - - return constructor_call(ctx->regexp_error_constr, flags, argc, argv, r); -} - -static HRESULT JSGlobal_ReferenceError(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, - jsval_t *r) -{ - TRACE("\n"); - - return constructor_call(ctx->reference_error_constr, flags, argc, argv, r); -} - -static HRESULT JSGlobal_SyntaxError(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, - jsval_t *r) -{ - TRACE("\n"); - - return constructor_call(ctx->syntax_error_constr, flags, argc, argv, r); -} - -static HRESULT JSGlobal_TypeError(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, - jsval_t *r) -{ - TRACE("\n"); - - return constructor_call(ctx->type_error_constr, flags, argc, argv, r); -} - -static HRESULT JSGlobal_URIError(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, - jsval_t *r) -{ - TRACE("\n"); - - return constructor_call(ctx->uri_error_constr, flags, argc, argv, r); -} - -static HRESULT JSGlobal_Function(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, - jsval_t *r) -{ - TRACE("\n"); - - return constructor_call(ctx->function_constr, flags, argc, argv, r); -} - -static HRESULT JSGlobal_Number(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, - jsval_t *r) -{ - TRACE("\n"); - - return constructor_call(ctx->number_constr, flags, argc, argv, r); -} - -static HRESULT JSGlobal_Object(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, - jsval_t *r) -{ - TRACE("\n"); - - return constructor_call(ctx->object_constr, flags, argc, argv, r); -} - -static HRESULT JSGlobal_String(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, - jsval_t *r) -{ - TRACE("\n"); - - return constructor_call(ctx->string_constr, flags, argc, argv, r); -} - -static HRESULT JSGlobal_RegExp(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, - jsval_t *r) -{ - TRACE("\n"); - - return constructor_call(ctx->regexp_constr, flags, argc, argv, r); -} - -static HRESULT JSGlobal_VBArray(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, - jsval_t *r) -{ - TRACE("\n"); - - return constructor_call(ctx->vbarray_constr, flags, argc, argv, r); -} - static HRESULT JSGlobal_Enumerator(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r) { @@ -1079,30 +934,13 @@ } static const builtin_prop_t JSGlobal_props[] = { - {ArrayW, JSGlobal_Array, PROPF_CONSTR|1}, - {BooleanW, JSGlobal_Boolean, PROPF_CONSTR|1}, {CollectGarbageW, JSGlobal_CollectGarbage, PROPF_METHOD}, - {DateW, JSGlobal_Date, PROPF_CONSTR|7}, {EnumeratorW, JSGlobal_Enumerator, PROPF_METHOD|7}, - {ErrorW, JSGlobal_Error, PROPF_CONSTR|1}, - {EvalErrorW, JSGlobal_EvalError, PROPF_CONSTR|1}, - {FunctionW, JSGlobal_Function, PROPF_CONSTR|1}, {_GetObjectW, JSGlobal_GetObject, PROPF_METHOD|2}, - {NumberW, JSGlobal_Number, PROPF_CONSTR|1}, - {ObjectW, JSGlobal_Object, PROPF_CONSTR|1}, - {RangeErrorW, JSGlobal_RangeError, PROPF_CONSTR|1}, - {ReferenceErrorW, JSGlobal_ReferenceError, PROPF_CONSTR|1}, - {RegExpW, JSGlobal_RegExp, PROPF_CONSTR|2}, - {RegExpErrorW, JSGlobal_RegExpError, PROPF_CONSTR|1}, {ScriptEngineW, JSGlobal_ScriptEngine, PROPF_METHOD}, {ScriptEngineBuildVersionW, JSGlobal_ScriptEngineBuildVersion, PROPF_METHOD}, {ScriptEngineMajorVersionW, JSGlobal_ScriptEngineMajorVersion, PROPF_METHOD}, {ScriptEngineMinorVersionW, JSGlobal_ScriptEngineMinorVersion, PROPF_METHOD}, - {StringW, JSGlobal_String, PROPF_CONSTR|1}, - {SyntaxErrorW, JSGlobal_SyntaxError, PROPF_CONSTR|1}, - {TypeErrorW, JSGlobal_TypeError, PROPF_CONSTR|1}, - {URIErrorW, JSGlobal_URIError, PROPF_CONSTR|1}, - {VBArrayW, JSGlobal_VBArray, PROPF_CONSTR|1}, {decodeURIW, JSGlobal_decodeURI, PROPF_METHOD|1}, {decodeURIComponentW, JSGlobal_decodeURIComponent, PROPF_METHOD|1}, {encodeURIW, JSGlobal_encodeURI, PROPF_METHOD|1}, @@ -1133,42 +971,110 @@ if(FAILED(hres)) return hres; + hres = jsdisp_propput_dontenum(ctx->global, FunctionW, jsval_obj(ctx->function_constr)); + if(FAILED(hres)) + return hres; + hres = create_object_constr(ctx, object_prototype, &ctx->object_constr); if(FAILED(hres)) return hres; + hres = jsdisp_propput_dontenum(ctx->global, ObjectW, jsval_obj(ctx->object_constr)); + if(FAILED(hres)) + return hres; + hres = create_array_constr(ctx, object_prototype, &ctx->array_constr); if(FAILED(hres)) return hres; + hres = jsdisp_propput_dontenum(ctx->global, ArrayW, jsval_obj(ctx->array_constr)); + if(FAILED(hres)) + return hres; + hres = create_bool_constr(ctx, object_prototype, &ctx->bool_constr); if(FAILED(hres)) return hres; + hres = jsdisp_propput_dontenum(ctx->global, BooleanW, jsval_obj(ctx->bool_constr)); + if(FAILED(hres)) + return hres; + hres = create_date_constr(ctx, object_prototype, &ctx->date_constr); if(FAILED(hres)) return hres; + hres = jsdisp_propput_dontenum(ctx->global, DateW, jsval_obj(ctx->date_constr)); + if(FAILED(hres)) + return hres; + hres = init_error_constr(ctx, object_prototype); if(FAILED(hres)) return hres; + hres = jsdisp_propput_dontenum(ctx->global, ErrorW, jsval_obj(ctx->error_constr)); + if(FAILED(hres)) + return hres; + + hres = jsdisp_propput_dontenum(ctx->global, EvalErrorW, jsval_obj(ctx->eval_error_constr)); + if(FAILED(hres)) + return hres; + + hres = jsdisp_propput_dontenum(ctx->global, RangeErrorW, jsval_obj(ctx->range_error_constr)); + if(FAILED(hres)) + return hres; + + hres = jsdisp_propput_dontenum(ctx->global, ReferenceErrorW, jsval_obj(ctx->reference_error_constr)); + if(FAILED(hres)) + return hres; + + hres = jsdisp_propput_dontenum(ctx->global, RegExpErrorW, jsval_obj(ctx->regexp_error_constr)); + if(FAILED(hres)) + return hres; + + hres = jsdisp_propput_dontenum(ctx->global, SyntaxErrorW, jsval_obj(ctx->syntax_error_constr)); + if(FAILED(hres)) + return hres; + + hres = jsdisp_propput_dontenum(ctx->global, TypeErrorW, jsval_obj(ctx->type_error_constr)); + if(FAILED(hres)) + return hres; + + hres = jsdisp_propput_dontenum(ctx->global, URIErrorW, jsval_obj(ctx->uri_error_constr)); + if(FAILED(hres)) + return hres; + hres = create_number_constr(ctx, object_prototype, &ctx->number_constr); if(FAILED(hres)) return hres; + hres = jsdisp_propput_dontenum(ctx->global, NumberW, jsval_obj(ctx->number_constr)); + if(FAILED(hres)) + return hres; + hres = create_regexp_constr(ctx, object_prototype, &ctx->regexp_constr); if(FAILED(hres)) return hres; + hres = jsdisp_propput_dontenum(ctx->global, RegExpW, jsval_obj(ctx->regexp_constr)); + if(FAILED(hres)) + return hres; + hres = create_string_constr(ctx, object_prototype, &ctx->string_constr); if(FAILED(hres)) return hres; + hres = jsdisp_propput_dontenum(ctx->global, StringW, jsval_obj(ctx->string_constr)); + if(FAILED(hres)) + return hres; + hres = create_vbarray_constr(ctx, object_prototype, &ctx->vbarray_constr); if(FAILED(hres)) return hres; + hres = jsdisp_propput_dontenum(ctx->global, VBArrayW, jsval_obj(ctx->vbarray_constr)); + if(FAILED(hres)) + return hres; + return S_OK; } @@ -1180,16 +1086,16 @@ if(ctx->global) return S_OK; - hres = create_object_prototype(ctx, &object_prototype); + hres = create_dispex(ctx, &JSGlobal_info, NULL, &ctx->global); if(FAILED(hres)) return hres; - hres = init_constructors(ctx, object_prototype); - jsdisp_release(object_prototype); + hres = create_object_prototype(ctx, &object_prototype); if(FAILED(hres)) return hres; - hres = create_dispex(ctx, &JSGlobal_info, NULL, &ctx->global); + hres = init_constructors(ctx, object_prototype); + jsdisp_release(object_prototype); if(FAILED(hres)) return hres; diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/jscript/jscript.h wine-staging-1.7.36~ubuntu12.04.1/dlls/jscript/jscript.h --- wine-staging-1.7.35~ubuntu12.04.1/dlls/jscript/jscript.h 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/jscript/jscript.h 2015-02-08 20:31:28.000000000 +0000 @@ -187,11 +187,17 @@ } typedef HRESULT (*builtin_invoke_t)(script_ctx_t*,vdisp_t*,WORD,unsigned,jsval_t*,jsval_t*); +typedef HRESULT (*builtin_getter_t)(script_ctx_t*,jsdisp_t*,jsval_t*); +typedef HRESULT (*builtin_setter_t)(script_ctx_t*,jsdisp_t*,jsval_t); + +HRESULT builtin_set_const(script_ctx_t*,jsdisp_t*,jsval_t) DECLSPEC_HIDDEN; typedef struct { const WCHAR *name; builtin_invoke_t invoke; DWORD flags; + builtin_getter_t getter; + builtin_setter_t setter; } builtin_prop_t; typedef struct { @@ -287,9 +293,12 @@ jsdisp_t*,jsdisp_t**) DECLSPEC_HIDDEN; HRESULT create_builtin_constructor(script_ctx_t*,builtin_invoke_t,const WCHAR*,const builtin_info_t*,DWORD, jsdisp_t*,jsdisp_t**) DECLSPEC_HIDDEN; -HRESULT Function_value(script_ctx_t*,vdisp_t*,WORD,unsigned,jsval_t*,jsval_t*) DECLSPEC_HIDDEN; HRESULT Function_invoke(jsdisp_t*,IDispatch*,WORD,unsigned,jsval_t*,jsval_t*) DECLSPEC_HIDDEN; +HRESULT Function_value(script_ctx_t*,vdisp_t*,WORD,unsigned,jsval_t*,jsval_t*) DECLSPEC_HIDDEN; +HRESULT Function_get_value(script_ctx_t*,jsdisp_t*,jsval_t*) DECLSPEC_HIDDEN; +#define DEFAULT_FUNCTION_VALUE {NULL, Function_value,0, Function_get_value} + HRESULT throw_eval_error(script_ctx_t*,HRESULT,const WCHAR*) DECLSPEC_HIDDEN; HRESULT throw_generic_error(script_ctx_t*,HRESULT,const WCHAR*) DECLSPEC_HIDDEN; HRESULT throw_range_error(script_ctx_t*,HRESULT,const WCHAR*) DECLSPEC_HIDDEN; diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/jscript/jsregexp.c wine-staging-1.7.36~ubuntu12.04.1/dlls/jscript/jsregexp.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/jscript/jsregexp.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/jscript/jsregexp.c 2015-02-08 20:31:28.000000000 +0000 @@ -58,9 +58,14 @@ static const WCHAR idx8W[] = {'$','8',0}; static const WCHAR idx9W[] = {'$','9',0}; +static inline RegExpInstance *regexp_from_jsdisp(jsdisp_t *jsdisp) +{ + return CONTAINING_RECORD(jsdisp, RegExpInstance, dispex); +} + static inline RegExpInstance *regexp_from_vdisp(vdisp_t *vdisp) { - return (RegExpInstance*)vdisp->u.jsdisp; + return regexp_from_jsdisp(vdisp->u.jsdisp); } static void set_last_index(RegExpInstance *This, DWORD last_index) @@ -243,41 +248,51 @@ return S_OK; } -static HRESULT RegExp_source(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, - jsval_t *r) +static HRESULT RegExp_get_source(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r) { TRACE("\n"); - switch(flags) { - case DISPATCH_PROPERTYGET: { - RegExpInstance *This = regexp_from_vdisp(jsthis); - *r = jsval_string(jsstr_addref(This->str)); - break; - } - default: - FIXME("Unimplemented flags %x\n", flags); - return E_NOTIMPL; - } - + *r = jsval_string(jsstr_addref(regexp_from_jsdisp(jsthis)->str)); return S_OK; } -static HRESULT RegExp_global(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, - jsval_t *r) +static HRESULT RegExp_set_source(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t value) { FIXME("\n"); return E_NOTIMPL; } -static HRESULT RegExp_ignoreCase(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, - jsval_t *r) +static HRESULT RegExp_get_global(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r) { FIXME("\n"); return E_NOTIMPL; } -static HRESULT RegExp_multiline(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, - jsval_t *r) +static HRESULT RegExp_set_global(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t value) +{ + FIXME("\n"); + return E_NOTIMPL; +} + +static HRESULT RegExp_get_ignoreCase(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r) +{ + FIXME("\n"); + return E_NOTIMPL; +} + +static HRESULT RegExp_set_ignoreCase(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t value) +{ + FIXME("\n"); + return E_NOTIMPL; +} + +static HRESULT RegExp_get_multiline(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r) +{ + FIXME("\n"); + return E_NOTIMPL; +} + +static HRESULT RegExp_set_multiline(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t value) { FIXME("\n"); return E_NOTIMPL; @@ -298,33 +313,27 @@ return is_int32(n) ? n : 0; } -static HRESULT RegExp_lastIndex(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, - jsval_t *r) +static HRESULT RegExp_get_lastIndex(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r) { + RegExpInstance *regexp = regexp_from_jsdisp(jsthis); + TRACE("\n"); - switch(flags) { - case DISPATCH_PROPERTYGET: { - RegExpInstance *regexp = regexp_from_vdisp(jsthis); + return jsval_copy(regexp->last_index_val, r); +} - return jsval_copy(regexp->last_index_val, r); - } - case DISPATCH_PROPERTYPUT: { - RegExpInstance *regexp = regexp_from_vdisp(jsthis); - HRESULT hres; +static HRESULT RegExp_set_lastIndex(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t value) +{ + RegExpInstance *regexp = regexp_from_jsdisp(jsthis); + HRESULT hres; - hres = jsval_copy(argv[0], ®exp->last_index_val); - if(FAILED(hres)) - return hres; + TRACE("\n"); - regexp->last_index = index_from_val(ctx, argv[0]); - break; - } - default: - FIXME("unimplemented flags: %x\n", flags); - return E_NOTIMPL; - } + hres = jsval_copy(value, ®exp->last_index_val); + if(FAILED(hres)) + return hres; + regexp->last_index = index_from_val(ctx, value); return S_OK; } @@ -591,11 +600,11 @@ static const builtin_prop_t RegExp_props[] = { {execW, RegExp_exec, PROPF_METHOD|1}, - {globalW, RegExp_global, 0}, - {ignoreCaseW, RegExp_ignoreCase, 0}, - {lastIndexW, RegExp_lastIndex, 0}, - {multilineW, RegExp_multiline, 0}, - {sourceW, RegExp_source, 0}, + {globalW, NULL,0, RegExp_get_global, RegExp_set_global}, + {ignoreCaseW, NULL,0, RegExp_get_ignoreCase, RegExp_set_ignoreCase}, + {lastIndexW, NULL,0, RegExp_get_lastIndex, RegExp_set_lastIndex}, + {multilineW, NULL,0, RegExp_get_multiline, RegExp_set_multiline}, + {sourceW, NULL,0, RegExp_get_source, RegExp_set_source}, {testW, RegExp_test, PROPF_METHOD|1}, {toStringW, RegExp_toString, PROPF_METHOD} }; @@ -610,11 +619,11 @@ }; static const builtin_prop_t RegExpInst_props[] = { - {globalW, RegExp_global, 0}, - {ignoreCaseW, RegExp_ignoreCase, 0}, - {lastIndexW, RegExp_lastIndex, 0}, - {multilineW, RegExp_multiline, 0}, - {sourceW, RegExp_source, 0} + {globalW, NULL,0, RegExp_get_global, RegExp_set_global}, + {ignoreCaseW, NULL,0, RegExp_get_ignoreCase, RegExp_set_ignoreCase}, + {lastIndexW, NULL,0, RegExp_get_lastIndex, RegExp_set_lastIndex}, + {multilineW, NULL,0, RegExp_get_multiline, RegExp_set_multiline}, + {sourceW, NULL,0, RegExp_get_source, RegExp_set_source} }; static const builtin_info_t RegExpInst_info = { @@ -836,142 +845,98 @@ return hres; } -static HRESULT global_idx(script_ctx_t *ctx, DWORD flags, DWORD idx, jsval_t *r) +static HRESULT global_idx(script_ctx_t *ctx, DWORD idx, jsval_t *r) { - switch(flags) { - case DISPATCH_PROPERTYGET: { - jsstr_t *ret; - - ret = jsstr_substr(ctx->last_match, ctx->match_parens[idx].index, ctx->match_parens[idx].length); - if(!ret) - return E_OUTOFMEMORY; + jsstr_t *ret; - *r = jsval_string(ret); - break; - } - case DISPATCH_PROPERTYPUT: - break; - default: - FIXME("unsupported flags\n"); - return E_NOTIMPL; - } + ret = jsstr_substr(ctx->last_match, ctx->match_parens[idx].index, ctx->match_parens[idx].length); + if(!ret) + return E_OUTOFMEMORY; + *r = jsval_string(ret); return S_OK; } -static HRESULT RegExpConstr_idx1(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, - unsigned argc, jsval_t *argv, jsval_t *r) +static HRESULT RegExpConstr_get_idx1(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r) { TRACE("\n"); - return global_idx(ctx, flags, 0, r); + return global_idx(ctx, 0, r); } -static HRESULT RegExpConstr_idx2(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, - unsigned argc, jsval_t *argv, jsval_t *r) +static HRESULT RegExpConstr_get_idx2(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r) { TRACE("\n"); - return global_idx(ctx, flags, 1, r); + return global_idx(ctx, 1, r); } -static HRESULT RegExpConstr_idx3(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, - unsigned argc, jsval_t *argv, jsval_t *r) +static HRESULT RegExpConstr_get_idx3(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r) { TRACE("\n"); - return global_idx(ctx, flags, 2, r); + return global_idx(ctx, 2, r); } -static HRESULT RegExpConstr_idx4(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, - unsigned argc, jsval_t *argv, jsval_t *r) +static HRESULT RegExpConstr_get_idx4(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r) { TRACE("\n"); - return global_idx(ctx, flags, 3, r); + return global_idx(ctx, 3, r); } -static HRESULT RegExpConstr_idx5(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, - unsigned argc, jsval_t *argv, jsval_t *r) +static HRESULT RegExpConstr_get_idx5(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r) { TRACE("\n"); - return global_idx(ctx, flags, 4, r); + return global_idx(ctx, 4, r); } -static HRESULT RegExpConstr_idx6(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, - unsigned argc, jsval_t *argv, jsval_t *r) +static HRESULT RegExpConstr_get_idx6(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r) { TRACE("\n"); - return global_idx(ctx, flags, 5, r); + return global_idx(ctx, 5, r); } -static HRESULT RegExpConstr_idx7(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, - unsigned argc, jsval_t *argv, jsval_t *r) +static HRESULT RegExpConstr_get_idx7(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r) { TRACE("\n"); - return global_idx(ctx, flags, 6, r); + return global_idx(ctx, 6, r); } -static HRESULT RegExpConstr_idx8(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, - unsigned argc, jsval_t *argv, jsval_t *r) +static HRESULT RegExpConstr_get_idx8(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r) { TRACE("\n"); - return global_idx(ctx, flags, 7, r); + return global_idx(ctx, 7, r); } -static HRESULT RegExpConstr_idx9(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, - unsigned argc, jsval_t *argv, jsval_t *r) +static HRESULT RegExpConstr_get_idx9(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r) { TRACE("\n"); - return global_idx(ctx, flags, 8, r); + return global_idx(ctx, 8, r); } -static HRESULT RegExpConstr_leftContext(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, - unsigned argc, jsval_t *argv, jsval_t *r) +static HRESULT RegExpConstr_get_leftContext(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r) { - TRACE("\n"); - - switch(flags) { - case DISPATCH_PROPERTYGET: { - jsstr_t *ret; + jsstr_t *ret; - ret = jsstr_substr(ctx->last_match, 0, ctx->last_match_index); - if(!ret) - return E_OUTOFMEMORY; + TRACE("\n"); - *r = jsval_string(ret); - break; - } - case DISPATCH_PROPERTYPUT: - break; - default: - FIXME("unsupported flags\n"); - return E_NOTIMPL; - } + ret = jsstr_substr(ctx->last_match, 0, ctx->last_match_index); + if(!ret) + return E_OUTOFMEMORY; + *r = jsval_string(ret); return S_OK; } -static HRESULT RegExpConstr_rightContext(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, - unsigned argc, jsval_t *argv, jsval_t *r) +static HRESULT RegExpConstr_get_rightContext(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r) { - TRACE("\n"); - - switch(flags) { - case DISPATCH_PROPERTYGET: { - jsstr_t *ret; + jsstr_t *ret; - ret = jsstr_substr(ctx->last_match, ctx->last_match_index+ctx->last_match_length, - jsstr_length(ctx->last_match) - ctx->last_match_index - ctx->last_match_length); - if(!ret) - return E_OUTOFMEMORY; + TRACE("\n"); - *r = jsval_string(ret); - break; - } - case DISPATCH_PROPERTYPUT: - break; - default: - FIXME("unsupported flags\n"); - return E_NOTIMPL; - } + ret = jsstr_substr(ctx->last_match, ctx->last_match_index+ctx->last_match_length, + jsstr_length(ctx->last_match) - ctx->last_match_index - ctx->last_match_length); + if(!ret) + return E_OUTOFMEMORY; + *r = jsval_string(ret); return S_OK; } @@ -1031,22 +996,22 @@ } static const builtin_prop_t RegExpConstr_props[] = { - {idx1W, RegExpConstr_idx1, 0}, - {idx2W, RegExpConstr_idx2, 0}, - {idx3W, RegExpConstr_idx3, 0}, - {idx4W, RegExpConstr_idx4, 0}, - {idx5W, RegExpConstr_idx5, 0}, - {idx6W, RegExpConstr_idx6, 0}, - {idx7W, RegExpConstr_idx7, 0}, - {idx8W, RegExpConstr_idx8, 0}, - {idx9W, RegExpConstr_idx9, 0}, - {leftContextW, RegExpConstr_leftContext, 0}, - {rightContextW, RegExpConstr_rightContext, 0} + {idx1W, NULL,0, RegExpConstr_get_idx1, builtin_set_const}, + {idx2W, NULL,0, RegExpConstr_get_idx2, builtin_set_const}, + {idx3W, NULL,0, RegExpConstr_get_idx3, builtin_set_const}, + {idx4W, NULL,0, RegExpConstr_get_idx4, builtin_set_const}, + {idx5W, NULL,0, RegExpConstr_get_idx5, builtin_set_const}, + {idx6W, NULL,0, RegExpConstr_get_idx6, builtin_set_const}, + {idx7W, NULL,0, RegExpConstr_get_idx7, builtin_set_const}, + {idx8W, NULL,0, RegExpConstr_get_idx8, builtin_set_const}, + {idx9W, NULL,0, RegExpConstr_get_idx9, builtin_set_const}, + {leftContextW, NULL,0, RegExpConstr_get_leftContext, builtin_set_const}, + {rightContextW, NULL,0, RegExpConstr_get_rightContext, builtin_set_const} }; static const builtin_info_t RegExpConstr_info = { JSCLASS_FUNCTION, - {NULL, Function_value, 0}, + DEFAULT_FUNCTION_VALUE, sizeof(RegExpConstr_props)/sizeof(*RegExpConstr_props), RegExpConstr_props, NULL, diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/jscript/jsutils.c wine-staging-1.7.36~ubuntu12.04.1/dlls/jscript/jsutils.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/jscript/jsutils.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/jscript/jsutils.c 2015-02-08 20:31:28.000000000 +0000 @@ -246,6 +246,9 @@ HRESULT variant_to_jsval(VARIANT *var, jsval_t *r) { + if(V_VT(var) == (VT_VARIANT|VT_BYREF)) + var = V_VARIANTREF(var); + switch(V_VT(var)) { case VT_EMPTY: *r = jsval_undefined(); @@ -288,6 +291,9 @@ case VT_INT: *r = jsval_number(V_INT(var)); return S_OK; + case VT_UI4: + *r = jsval_number(V_UI4(var)); + return S_OK; case VT_UNKNOWN: if(V_UNKNOWN(var)) { IDispatch *disp; diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/jscript/number.c wine-staging-1.7.36~ubuntu12.04.1/dlls/jscript/number.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/jscript/number.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/jscript/number.c 2015-02-08 20:31:28.000000000 +0000 @@ -44,9 +44,14 @@ #define NUMBER_TOSTRING_BUF_SIZE 64 #define NUMBER_DTOA_SIZE 18 +static inline NumberInstance *number_from_jsdisp(jsdisp_t *jsdisp) +{ + return CONTAINING_RECORD(jsdisp, NumberInstance, dispex); +} + static inline NumberInstance *number_from_vdisp(vdisp_t *vdisp) { - return (NumberInstance*)vdisp->u.jsdisp; + return number_from_jsdisp(vdisp->u.jsdisp); } static inline NumberInstance *number_this(vdisp_t *jsthis) @@ -500,23 +505,13 @@ return S_OK; } -static HRESULT Number_value(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, - jsval_t *r) +static HRESULT Number_get_value(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r) { - NumberInstance *number = number_from_vdisp(jsthis); + NumberInstance *number = number_from_jsdisp(jsthis); - switch(flags) { - case INVOKE_FUNC: - return throw_type_error(ctx, JS_E_FUNCTION_EXPECTED, NULL); - case DISPATCH_PROPERTYGET: - *r = jsval_number(number->value); - break; - - default: - FIXME("flags %x\n", flags); - return E_NOTIMPL; - } + TRACE("(%p)\n", number); + *r = jsval_number(number->value); return S_OK; } @@ -531,7 +526,7 @@ static const builtin_info_t Number_info = { JSCLASS_NUMBER, - {NULL, Number_value, 0}, + {NULL, NULL,0, Number_get_value}, sizeof(Number_props)/sizeof(*Number_props), Number_props, NULL, @@ -540,7 +535,7 @@ static const builtin_info_t NumberInst_info = { JSCLASS_NUMBER, - {NULL, Number_value, 0}, + {NULL, NULL,0, Number_get_value}, 0, NULL, NULL, NULL diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/jscript/object.c wine-staging-1.7.36~ubuntu12.04.1/dlls/jscript/object.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/jscript/object.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/jscript/object.c 2015-02-08 20:31:28.000000000 +0000 @@ -207,26 +207,17 @@ return E_NOTIMPL; } -static HRESULT Object_value(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, - jsval_t *r) +static HRESULT Object_get_value(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r) { + jsstr_t *ret; + TRACE("\n"); - switch(flags) { - case INVOKE_FUNC: - return throw_type_error(ctx, JS_E_FUNCTION_EXPECTED, NULL); - case DISPATCH_PROPERTYGET: { - jsstr_t *ret = jsstr_alloc(default_valueW); - if(!ret) - return E_OUTOFMEMORY; - *r = jsval_string(ret); - break; - } - default: - FIXME("unimplemented flags %x\n", flags); - return E_NOTIMPL; - } + ret = jsstr_alloc(default_valueW); + if(!ret) + return E_OUTOFMEMORY; + *r = jsval_string(ret); return S_OK; } @@ -246,7 +237,7 @@ static const builtin_info_t Object_info = { JSCLASS_OBJECT, - {NULL, Object_value, 0}, + {NULL, NULL,0, Object_get_value}, sizeof(Object_props)/sizeof(*Object_props), Object_props, Object_destructor, @@ -255,7 +246,7 @@ static const builtin_info_t ObjectInst_info = { JSCLASS_OBJECT, - {NULL, Object_value, 0}, + {NULL, NULL,0, Object_get_value}, 0, NULL, Object_destructor, NULL diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/jscript/string.c wine-staging-1.7.36~ubuntu12.04.1/dlls/jscript/string.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/jscript/string.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/jscript/string.c 2015-02-08 20:31:28.000000000 +0000 @@ -68,9 +68,14 @@ static const WCHAR localeCompareW[] = {'l','o','c','a','l','e','C','o','m','p','a','r','e',0}; static const WCHAR fromCharCodeW[] = {'f','r','o','m','C','h','a','r','C','o','d','e',0}; +static inline StringInstance *string_from_jsdisp(jsdisp_t *jsdisp) +{ + return CONTAINING_RECORD(jsdisp, StringInstance, dispex); +} + static inline StringInstance *string_from_vdisp(vdisp_t *vdisp) { - return (StringInstance*)vdisp->u.jsdisp; + return string_from_jsdisp(vdisp->u.jsdisp); } static inline StringInstance *string_this(vdisp_t *jsthis) @@ -106,26 +111,22 @@ return E_OUTOFMEMORY; } -static HRESULT String_length(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, - jsval_t *r) +static HRESULT String_get_length(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r) { - TRACE("%p\n", jsthis); - - switch(flags) { - case DISPATCH_PROPERTYGET: { - StringInstance *string = string_from_vdisp(jsthis); + StringInstance *string = (StringInstance*)jsthis; - *r = jsval_number(jsstr_length(string->str)); - break; - } - default: - FIXME("unimplemented flags %x\n", flags); - return E_NOTIMPL; - } + TRACE("%p\n", jsthis); + *r = jsval_number(jsstr_length(string->str)); return S_OK; } +static HRESULT String_set_length(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t value) +{ + FIXME("%p\n", jsthis); + return E_NOTIMPL; +} + static HRESULT stringobj_to_string(vdisp_t *jsthis, jsval_t *r) { StringInstance *string; @@ -1471,25 +1472,13 @@ return E_NOTIMPL; } -static HRESULT String_value(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, - jsval_t *r) +static HRESULT String_get_value(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r) { - StringInstance *This = string_from_vdisp(jsthis); + StringInstance *This = (StringInstance*)jsthis; TRACE("\n"); - switch(flags) { - case INVOKE_FUNC: - return throw_type_error(ctx, JS_E_FUNCTION_EXPECTED, NULL); - case DISPATCH_PROPERTYGET: { - *r = jsval_string(jsstr_addref(This->str)); - break; - } - default: - FIXME("flags %x\n", flags); - return E_NOTIMPL; - } - + *r = jsval_string(jsstr_addref(This->str)); return S_OK; } @@ -1544,7 +1533,7 @@ {indexOfW, String_indexOf, PROPF_METHOD|2}, {italicsW, String_italics, PROPF_METHOD}, {lastIndexOfW, String_lastIndexOf, PROPF_METHOD|2}, - {lengthW, String_length, 0}, + {lengthW, NULL,0, String_get_length, String_set_length}, {linkW, String_link, PROPF_METHOD|1}, {localeCompareW, String_localeCompare, PROPF_METHOD|1}, {matchW, String_match, PROPF_METHOD|1}, @@ -1568,7 +1557,7 @@ static const builtin_info_t String_info = { JSCLASS_STRING, - {NULL, String_value, 0}, + {NULL, NULL,0, String_get_value}, sizeof(String_props)/sizeof(*String_props), String_props, String_destructor, @@ -1576,12 +1565,12 @@ }; static const builtin_prop_t StringInst_props[] = { - {lengthW, String_length, 0} + {lengthW, NULL,0, String_get_length, String_set_length} }; static const builtin_info_t StringInst_info = { JSCLASS_STRING, - {NULL, String_value, 0}, + {NULL, NULL,0, String_get_value}, sizeof(StringInst_props)/sizeof(*StringInst_props), StringInst_props, String_destructor, @@ -1699,7 +1688,7 @@ static const builtin_info_t StringConstr_info = { JSCLASS_FUNCTION, - {NULL, Function_value, 0}, + DEFAULT_FUNCTION_VALUE, sizeof(StringConstr_props)/sizeof(*StringConstr_props), StringConstr_props, NULL, diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/jscript/tests/lang.js wine-staging-1.7.36~ubuntu12.04.1/dlls/jscript/tests/lang.js --- wine-staging-1.7.35~ubuntu12.04.1/dlls/jscript/tests/lang.js 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/jscript/tests/lang.js 2015-02-08 20:31:28.000000000 +0000 @@ -1453,6 +1453,21 @@ ActiveXObject = 1; ok(ActiveXObject === 1, "ActiveXObject = " + ActiveXObject); +Boolean = 1; +ok(Boolean === 1, "Boolean = " + Boolean); + +Object = 1; +ok(Object === 1, "Object = " + Object); + +Array = 1; +ok(Array === 1, "Array = " + Array); + +Date = 1; +ok(Date === 1, "Date = " + Date); + +Error = 1; +ok(Error === 1, "Error = " + Error); + /* Keep this test in the end of file */ undefined = 6; ok(undefined === 6, "undefined = " + undefined); diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/jscript/tests/run.c wine-staging-1.7.36~ubuntu12.04.1/dlls/jscript/tests/run.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/jscript/tests/run.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/jscript/tests/run.c 2015-02-08 20:31:28.000000000 +0000 @@ -1211,7 +1211,7 @@ return S_OK; case DISPID_GLOBAL_TESTARGTYPES: { - VARIANT args[4]; + VARIANT args[6], v; DISPPARAMS dp = {args, NULL, sizeof(args)/sizeof(*args), 0}; HRESULT hres; @@ -1247,6 +1247,12 @@ V_UNKNOWN(args+2) = (IUnknown*)&testObj; V_VT(args+3) = VT_UNKNOWN; V_UNKNOWN(args+3) = NULL; + V_VT(args+4) = VT_UI4; + V_UI4(args+4) = 0xffffffff; + V_VT(args+5) = VT_BYREF|VT_VARIANT; + V_VARIANTREF(args+5) = &v; + V_VT(&v) = VT_I4; + V_I4(&v) = 2; hres = IDispatch_Invoke(V_DISPATCH(pdp->rgvarg), DISPID_VALUE, &IID_NULL, 0, DISPATCH_METHOD, &dp, NULL, NULL, NULL); ok(hres == S_OK, "Invoke failed: %08x\n", hres); @@ -2410,12 +2416,16 @@ CHECK_CALLED(global_propargput_i); SET_EXPECT(global_testargtypes_i); - parse_script_a("testArgTypes(dispUnk, intProp(), intProp, getShort(), shortProp, function(nullunk,d,i,s) {" + parse_script_a("testArgTypes(dispUnk, intProp(), intProp, getShort(), shortProp, function(i4ref,ui4,nullunk,d,i,s) {" " ok(getVT(i) === 'VT_I4', 'getVT(i) = ' + getVT(i));" " ok(getVT(s) === 'VT_I4', 'getVT(s) = ' + getVT(s));" " ok(getVT(d) === 'VT_DISPATCH', 'getVT(d) = ' + getVT(d));" " ok(getVT(nullunk) === 'VT_DISPATCH', 'getVT(nullunk) = ' + getVT(nullunk));" " ok(nullunk === null, 'nullunk !== null');" + " ok(getVT(ui4) === 'VT_R8', 'getVT(ui4) = ' + getVT(ui4));" + " ok(ui4 > 0, 'ui4 = ' + ui4);" + " ok(getVT(i4ref) === 'VT_I4', 'getVT(i4ref) = ' + getVT(i4ref));" + " ok(i4ref === 2, 'i4ref = ' + i4ref);" "});"); CHECK_CALLED(global_testargtypes_i); diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/kernel32/kernel32.spec wine-staging-1.7.36~ubuntu12.04.1/dlls/kernel32/kernel32.spec --- wine-staging-1.7.35~ubuntu12.04.1/dlls/kernel32/kernel32.spec 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/kernel32/kernel32.spec 2015-02-08 20:31:28.000000000 +0000 @@ -140,11 +140,17 @@ @ stdcall AddAtomW(wstr) @ stdcall AddConsoleAliasA(str str str) @ stdcall AddConsoleAliasW(wstr wstr wstr) +# @ stub AddDllDirectory +# @ stub AddIntegrityLabelToBoundaryDescriptor # @ stub AddLocalAlternateComputerNameA # @ stub AddLocalAlternateComputerNameW @ stdcall AddRefActCtx(ptr) +# @ stub AddSIDToBoundaryDescriptor +# @ stub AddSecureMemoryCacheCallback @ stdcall AddVectoredContinueHandler(long ptr) ntdll.RtlAddVectoredContinueHandler @ stdcall AddVectoredExceptionHandler(long ptr) ntdll.RtlAddVectoredExceptionHandler +# @ stub AdjustCalendarDate +# @ stub AllocateUserPhysicalPagesNuma @ stdcall AllocConsole() @ stub -i386 AllocLSCallback @ stdcall -i386 -private AllocSLCallback(ptr ptr) krnl386.exe16.AllocSLCallback @@ -159,17 +165,37 @@ @ stdcall BackupWrite(ptr ptr long ptr long long ptr) @ stub BaseAttachCompleteThunk @ stub BaseCheckAppcompatCache +# @ stub BaseCheckAppcompatCacheEx +# @ stub BaseCheckRunApp @ stub BaseCleanupAppcompatCache @ stub BaseCleanupAppcompatCacheSupport +# @ stub BaseDllReadWriteIniFile @ stub BaseDumpAppcompatCache @ stub BaseFlushAppcompatCache +# @ stub BaseFormatObjectAttributes +# @ stub BaseFormatTimeOut +# @ stub BaseGenerateAppCompatData +# @ stub BaseGetNamedObjectDirectory @ stub BaseInitAppcompatCache @ stub BaseInitAppcompatCacheSupport +# @ stub BaseIsAppcompatInfrastructureDisabled @ stub BaseProcessInitPostImport # @ stub BaseQueryModuleData +# @ stub BaseSetLastNTError +# @ stub BaseThreadInitThunk @ stub BaseUpdateAppcompatCache +# @ stub BaseVerifyUnicodeString +# @ stub Basep8BitStringToDynamicUnicodeString +# @ stub BasepAllocateActivationContextActivationBlock +# @ stub BasepAnsiStringToDynamicUnicodeString +# @ stub BasepCheckAppCompat +# @ stub BasepCheckBadapp # @ stub BasepCheckWinSaferRestrictions @ stub BasepDebugDump +# @ stub BasepFreeActivationContextActivationBlock +# @ stub BasepFreeAppCompatData +# @ stub BasepMapModuleHandle +# @ stub BaseVerifyUnicodeString @ stdcall Beep(long long) @ stdcall BeginUpdateResourceA(str long) @ stdcall BeginUpdateResourceW(wstr long) @@ -178,14 +204,20 @@ @ stdcall BuildCommDCBAndTimeoutsA(str ptr ptr) @ stdcall BuildCommDCBAndTimeoutsW(wstr ptr ptr) @ stdcall BuildCommDCBW(wstr ptr) +# @ stub CallbackMayRunLong @ stdcall CallNamedPipeA(str ptr long ptr long ptr long) @ stdcall CallNamedPipeW(wstr ptr long ptr long ptr long) @ stub CancelDeviceWakeupRequest @ stdcall CancelIo(long) @ stdcall CancelIoEx(long ptr) +# @ stub CancelSynchronousIo +# @ stub CancelThreadpoolIo @ stdcall CancelTimerQueueTimer(ptr ptr) @ stdcall CancelWaitableTimer(long) @ stdcall ChangeTimerQueueTimer(ptr ptr long long) +# @ stub CheckElevation +# @ stub CheckElevationEnabled +# @ stub CheckForReadOnlyResource # @ stub CheckNameLegalDOS8Dot3A # @ stub CheckNameLegalDOS8Dot3W @ stdcall CheckRemoteDebuggerPresent(long ptr) @@ -193,11 +225,20 @@ @ stdcall ClearCommError(long ptr ptr) @ stdcall CloseConsoleHandle(long) @ stdcall CloseHandle(long) +# @ stub ClosePrivateNamespace @ stdcall CloseProfileUserMapping() @ stub CloseSystemHandle +# @ stub CloseThreadpool +# @ stub CloseThreadpoolCleanupGroup +# @ stub CloseThreadpoolCleanupGroupMembers +# @ stub CloseThreadpoolIo +# @ stub CloseThreadpoolTimer +# @ stub CloseThreadpoolWait +# @ stub CloseThreadpoolWork @ stdcall CmdBatNotification(long) @ stdcall CommConfigDialogA(str long ptr) @ stdcall CommConfigDialogW(wstr long ptr) +# @ stub CompareCalendarDates @ stdcall CompareFileTime(ptr ptr) @ stdcall CompareStringA(long long str long str long) @ stdcall CompareStringW(long long wstr long wstr long) @@ -207,22 +248,32 @@ @ stub ConsoleMenuControl @ stub ConsoleSubst @ stdcall ContinueDebugEvent(long long long) +# @ stub ConvertCalDateTimeToSystemTime @ stdcall ConvertDefaultLocale (long) @ stdcall ConvertFiberToThread() +# @ stub ConvertNLSDayOfWeekToWin32DayOfWeek +# @ stub ConvertSystemTimeToCalDateTime @ stdcall ConvertThreadToFiber(ptr) @ stdcall ConvertThreadToFiberEx(ptr long) @ stdcall ConvertToGlobalHandle(long) +# @ stub CopyContext @ stdcall CopyFileA(str str long) @ stdcall CopyFileExA (str str ptr ptr ptr long) @ stdcall CopyFileExW (wstr wstr ptr ptr ptr long) +# @ stub CopyFileTransactedA +# @ stub CopyFileTransactedW @ stdcall CopyFileW(wstr wstr long) @ stdcall CopyLZFile(long long) LZCopy @ stdcall CreateActCtxA(ptr) @ stdcall CreateActCtxW(ptr) +# @ stub CreateBoundaryDescriptorA +# @ stub CreateBoundaryDescriptorW @ stdcall CreateConsoleScreenBuffer(long long ptr long ptr) @ stdcall CreateDirectoryA(str ptr) @ stdcall CreateDirectoryExA(str str ptr) @ stdcall CreateDirectoryExW(wstr wstr ptr) +# @ stub CreateDirectoryTransactedA +# @ stub CreateDirectoryTransactedW @ stdcall CreateDirectoryW(wstr ptr) @ stdcall CreateEventA(ptr long long str) @ stdcall CreateEventExA(ptr str long long) @@ -233,9 +284,15 @@ @ stdcall CreateFile2(wstr long long long ptr) @ stdcall CreateFileA(str long long ptr long long long) @ stdcall CreateFileMappingA(long ptr long long long str) +# @ stub CreateFileMappingNumaA +# @ stub CreateFileMappingNumaW +@ stdcall CreateHardLinkTransactedA(str str ptr ptr) +@ stdcall CreateHardLinkTransactedW(wstr wstr ptr ptr) @ stdcall CreateFileMappingW(long ptr long long long wstr) @ stdcall CreateFileW(wstr long long ptr long long long) @ stdcall CreateHardLinkA(str str ptr) +# @ stub CreateHardLinkTransactedA +# @ stub CreateHardLinkTransactedW @ stdcall CreateHardLinkW(wstr wstr ptr) @ stdcall CreateIoCompletionPort(long long long long) @ stdcall CreateJobObjectA(ptr str) @@ -253,29 +310,44 @@ @ stdcall CreateNamedPipeW(wstr long long long long long long ptr) # @ stub CreateNlsSecurityDescriptor @ stdcall CreatePipe(ptr ptr ptr long) +# @ stub CreatePrivateNamespaceA +# @ stub CreatePrivateNamespaceW @ stdcall CreateProcessA(str str ptr ptr long long ptr str ptr ptr) +# @ stub CreateProcessAsUserW # @ stub CreateProcessInternalA # @ stub CreateProcessInternalW # @ stub CreateProcessInternalWSecure @ stdcall CreateProcessW(wstr wstr ptr ptr long long ptr wstr ptr ptr) @ stdcall CreateRemoteThread(long ptr long ptr long long ptr) +# @ stub CreateRemoteThreadEx @ stdcall CreateSemaphoreA(ptr long long str) @ stdcall CreateSemaphoreExA(ptr long long str long long) @ stdcall CreateSemaphoreExW(ptr long long wstr long long) @ stdcall CreateSemaphoreW(ptr long long wstr) @ stdcall CreateSocketHandle() @ stdcall CreateSymbolicLinkA(str str long) +# @ stub CreateSymbolicLinkTransactedA +# @ stub CreateSymbolicLinkTransactedW @ stdcall CreateSymbolicLinkW(wstr wstr long) @ stdcall CreateTapePartition(long long long long) @ stdcall CreateThread(ptr long ptr long long ptr) +# @ stub CreateThreadpool +# @ stub CreateThreadpoolCleanupGroup +# @ stub CreateThreadpoolIo +# @ stub CreateThreadpoolTimer +# @ stub CreateThreadpoolWait +# @ stub CreateThreadpoolWork @ stdcall CreateTimerQueue () @ stdcall CreateTimerQueueTimer(ptr long ptr ptr long long long) @ stdcall CreateToolhelp32Snapshot(long long) +# @ stub -arch=x86_64 CreateUmsCompletionList +# @ stub -arch=x86_64 CreateUmsThreadContext @ stub CreateVirtualBuffer @ stdcall CreateWaitableTimerA(ptr long str) @ stdcall CreateWaitableTimerExA(ptr str long long) @ stdcall CreateWaitableTimerExW(ptr wstr long long) @ stdcall CreateWaitableTimerW(ptr long wstr) +# @ stub CtrlRoutine @ stdcall DeactivateActCtx(long ptr) @ stdcall DebugActiveProcess(long) @ stdcall DebugActiveProcessStop(long) @@ -288,15 +360,24 @@ @ stdcall DefineDosDeviceW(long wstr wstr) @ stdcall DelayLoadFailureHook(str str) @ stdcall DeleteAtom(long) +# @ stub DeleteBoundaryDescriptor @ stdcall DeleteCriticalSection(ptr) ntdll.RtlDeleteCriticalSection @ stdcall DeleteFiber(ptr) @ stdcall DeleteFileA(str) +# @ stub DeleteFileTransactedA +# @ stub DeleteFileTransactedW @ stdcall DeleteFileW(wstr) +# @ stub DeleteProcThreadAttributeList +# @ stub DisableThreadProfiling +# @ stub DisassociateCurrentThreadFromCallback @ stdcall DeleteTimerQueue(long) @ stdcall DeleteTimerQueueEx (long long) @ stdcall DeleteTimerQueueTimer(long long long) +# @ stub -arch=x86_64 DeleteUmsCompletionList +# @ stub -arch=x86_64 DeleteUmsThreadContext @ stdcall DeleteVolumeMountPointA(str) @ stdcall DeleteVolumeMountPointW(wstr) +# @ stub -arch=x86_64 DequeueUmsCompletionListItems @ stdcall DeviceIoControl(long long ptr long ptr long ptr ptr) @ stdcall DisableThreadLibraryCalls(long) @ stdcall DisconnectNamedPipe(long) @@ -307,6 +388,7 @@ # @ stub DosPathToSessionPathW @ stdcall DuplicateConsoleHandle(long long long long) @ stdcall DuplicateHandle(long long long ptr long long long) +# @ stub EnableThreadProfiling @ stdcall EncodePointer(ptr) ntdll.RtlEncodePointer # @ stub EncodeSystemPointer ( -> ntdll.RtlEncodeSystemPointer) @ stdcall EndUpdateResourceA(long long) @@ -314,22 +396,31 @@ @ stdcall EnterCriticalSection(ptr) ntdll.RtlEnterCriticalSection @ stdcall EnumCalendarInfoA(ptr long long long) @ stdcall EnumCalendarInfoExA(ptr long long long) +# @ stub EnumCalendarInfoExEx @ stdcall EnumCalendarInfoExW(ptr long long long) @ stdcall EnumCalendarInfoW(ptr long long long) @ stdcall EnumDateFormatsA(ptr long long) @ stdcall EnumDateFormatsExA(ptr long long) +# @ stub EnumDateFormatsExEx @ stdcall EnumDateFormatsExW(ptr long long) @ stdcall EnumDateFormatsW(ptr long long) @ stdcall EnumLanguageGroupLocalesA(ptr long long ptr) @ stdcall EnumLanguageGroupLocalesW(ptr long long ptr) @ stdcall EnumResourceLanguagesA(long str str ptr long) +@ stdcall EnumResourceLanguagesExA(long str str ptr long long long) +@ stdcall EnumResourceLanguagesExW(long wstr wstr ptr long long long) @ stdcall EnumResourceLanguagesW(long wstr wstr ptr long) @ stdcall EnumResourceNamesA(long str ptr long) +# @ stub EnumResourceNamesExA +# @ stub EnumResourceNamesExW @ stdcall EnumResourceNamesW(long wstr ptr long) @ stdcall EnumResourceTypesA(long ptr long) +# @ stub EnumResourceTypesExA +# @ stub EnumResourceTypesExW @ stdcall EnumResourceTypesW(long ptr long) @ stdcall EnumSystemCodePagesA(ptr long) @ stdcall EnumSystemCodePagesW(ptr long) +# @ stub EnumSystemFirmwareTables @ stdcall EnumSystemGeoID(long long ptr) @ stdcall EnumSystemLanguageGroupsA(ptr long ptr) @ stdcall EnumSystemLanguageGroupsW(ptr long ptr) @@ -337,13 +428,16 @@ @ stdcall EnumSystemLocalesEx(ptr long long ptr) @ stdcall EnumSystemLocalesW(ptr long) @ stdcall EnumTimeFormatsA(ptr long long) +# @ stub EnumTimeFormatsEx @ stdcall EnumTimeFormatsW(ptr long long) @ stdcall EnumUILanguagesA(ptr long long) @ stdcall EnumUILanguagesW(ptr long long) # @ stub EnumerateLocalComputerNamesA # @ stub EnumerateLocalComputerNamesW +# @ stub -arch=x86_64 EnterUmsSchedulingMode @ stdcall EraseTape(ptr long long) @ stdcall EscapeCommFunction(long long) +# @ stub -arch=x86_64 ExecuteUmsThread @ stdcall ExitProcess(long) @ stdcall ExitThread(long) @ stub ExitVDM @@ -390,22 +484,34 @@ @ stdcall FindFirstFileA(str ptr) @ stdcall FindFirstFileExA(str long ptr long ptr long) @ stdcall FindFirstFileExW(wstr long ptr long ptr long) +# @ stub FindFirstFileNameTransactedW +# @ stub FindFirstFileNameW +# @ stub FindFirstFileTransactedA +# @ stub FindFirstFileTransactedW @ stdcall FindFirstFileW(wstr ptr) +# @ stub FindFirstStreamTransactedW +# @ stub FindFirstStreamW @ stdcall FindFirstVolumeA(ptr long) @ stdcall FindFirstVolumeMountPointA(str ptr long) @ stdcall FindFirstVolumeMountPointW(wstr ptr long) @ stdcall FindFirstVolumeW(ptr long) +# @ stub FreeLibraryWhenCallbackReturns @ stdcall FindNextChangeNotification(long) @ stdcall FindNextFileA(long ptr) +# @ stub FindNextFileNameW @ stdcall FindNextFileW(long ptr) +# @ stub FindNextStreamW @ stdcall FindNextVolumeA(long ptr long) @ stub FindNextVolumeMountPointA @ stub FindNextVolumeMountPointW @ stdcall FindNextVolumeW(long ptr long) +# @ stub FindNLSString +# @ stub FindNLSStringEx @ stdcall FindResourceA(long str str) @ stdcall FindResourceExA(long str str long) @ stdcall FindResourceExW(long wstr wstr long) @ stdcall FindResourceW(long wstr wstr) +# @ stub FindStringOrdinal @ stdcall FindVolumeClose(ptr) @ stdcall FindVolumeMountPointClose(ptr) @ stdcall FlsAlloc(ptr) @@ -434,6 +540,10 @@ @ stdcall GenerateConsoleCtrlEvent(long long) @ stdcall -i386 -private Get16DLLAddress(long str) krnl386.exe16.Get16DLLAddress @ stdcall GetACP() +# @ stub GetActiveProcessorCount +# @ stub GetActiveProcessorGroupCount +# @ stub GetApplicationRecoveryCallback +# @ stub GetApplicationRestartSettings @ stdcall GetAtomNameA(long ptr long) @ stdcall GetAtomNameW(long ptr long) @ stdcall GetBinaryType(str ptr) GetBinaryTypeA @@ -443,9 +553,16 @@ @ stdcall GetCPInfo(long ptr) @ stdcall GetCPInfoExA(long long ptr) @ stdcall GetCPInfoExW(long long ptr) +# @ stub GetCalendarDateFormat +# @ stub GetCalendarDateFormatEx +# @ stub GetCalendarDaysInMonth +# @ stub GetCalendarDifferenceInDays @ stdcall GetCalendarInfoA(long long long ptr long ptr) @ stdcall GetCalendarInfoW(long long long ptr long ptr) @ stdcall GetCalendarInfoEx(wstr long ptr long ptr long ptr) +# @ stub GetCalendarMonthsInYear +# @ stub GetCalendarSupportedDateRange +# @ stub GetCalendarWeekNumber # @ stub GetComPlusPackageInstallStatus @ stdcall GetCommConfig(long ptr long) @ stdcall GetCommMask(long ptr) @@ -456,6 +573,8 @@ @ stdcall GetCommandLineA() @ stdcall GetCommandLineW() @ stdcall GetCompressedFileSizeA(long ptr) +# @ stub GetCompressedFileSizeTransactedA +# @ stub GetCompressedFileSizeTransactedW @ stdcall GetCompressedFileSizeW(long ptr) @ stdcall GetComputerNameA(ptr ptr) @ stdcall GetComputerNameExA(long ptr ptr) @@ -483,6 +602,7 @@ @ stub GetConsoleFontInfo @ stdcall GetConsoleFontSize(long long) @ stub GetConsoleHardwareState +# @ stub GetConsoleHistoryInfo @ stdcall GetConsoleInputExeNameA(long ptr) @ stdcall GetConsoleInputExeNameW(long ptr) @ stdcall GetConsoleInputWaitHandle() @@ -490,25 +610,32 @@ @ stdcall GetConsoleKeyboardLayoutNameW(ptr) @ stdcall GetConsoleMode(long ptr) @ stub GetConsoleNlsMode +# @ stub GetConsoleOriginalTitleA +# @ stub GetConsoleOriginalTitleW @ stdcall GetConsoleOutputCP() @ stdcall GetConsoleProcessList(ptr long) @ stdcall GetConsoleScreenBufferInfo(long ptr) +# @ stub GetConsoleScreenBufferInfoEx # @ stub GetConsoleSelectionInfo @ stdcall GetConsoleTitleA(ptr long) @ stdcall GetConsoleTitleW(ptr long) @ stdcall GetConsoleWindow() @ stdcall GetCurrencyFormatA(long long str ptr str long) +# @ stub GetCurrencyFormatEx @ stdcall GetCurrencyFormatW(long long str ptr str long) @ stdcall GetCurrentActCtx(ptr) @ stdcall GetCurrentConsoleFont(long long ptr) +# @ stub GetCurrentConsoleFontEx @ stdcall GetCurrentDirectoryA(long ptr) @ stdcall GetCurrentDirectoryW(long ptr) @ stdcall GetCurrentPackageId(ptr ptr) @ stdcall -norelay GetCurrentProcess() @ stdcall -norelay GetCurrentProcessId() @ stdcall GetCurrentProcessorNumber() ntdll.NtGetCurrentProcessorNumber +# @ stub GetCurrentProcessorNumberEx @ stdcall -norelay GetCurrentThread() @ stdcall -norelay GetCurrentThreadId() +# @ stub -arch=x86_64 GetCurrentUmsThread @ stdcall GetDateFormatA(long long ptr str ptr long) @ stdcall GetDateFormatEx(wstr long ptr wstr ptr long wstr) @ stdcall GetDateFormatW(long long ptr wstr ptr long) @@ -525,12 +652,16 @@ @ stdcall GetDllDirectoryW(long ptr) @ stdcall GetDriveTypeA(str) @ stdcall GetDriveTypeW(wstr) +# @ stub GetDurationFormat +# @ stub GetDurationFormatEx @ stdcall GetDynamicTimeZoneInformation(ptr) +# @ stub GetEnabledXStateFeatures @ stdcall GetEnvironmentStrings() GetEnvironmentStringsA @ stdcall GetEnvironmentStringsA() @ stdcall GetEnvironmentStringsW() @ stdcall GetEnvironmentVariableA(str ptr long) @ stdcall GetEnvironmentVariableW(wstr ptr long) +# @ stub GetEraNameCountedString @ stdcall GetErrorMode() @ stdcall GetExitCodeProcess(long ptr) @ stdcall GetExitCodeThread(long ptr) @@ -539,16 +670,25 @@ @ stdcall GetFileAttributesA(str) @ stdcall GetFileAttributesExA(str long ptr) @ stdcall GetFileAttributesExW(wstr long ptr) +# @ stub GetFileAttributesTransactedA +# @ stub GetFileAttributesTransactedW @ stdcall GetFileAttributesW(wstr) +# @ stub GetFileBandwidthReservation @ stdcall GetFileInformationByHandle(long ptr) @ stdcall GetFileInformationByHandleEx(long long ptr long) +# @ stub GetFileMUIInfo +# @ stub GetFileMUIPath @ stdcall GetFileSize(long ptr) @ stdcall GetFileSizeEx(long ptr) @ stdcall GetFileTime(long ptr ptr ptr) @ stdcall GetFileType(long) +# @ stub GetFinalPathNameByHandleA +# @ stub GetFinalPathNameByHandleW @ stdcall GetFirmwareEnvironmentVariableA(str str ptr long) @ stdcall GetFirmwareEnvironmentVariableW(wstr wstr ptr long) @ stdcall GetFullPathNameA(str long ptr ptr) +# @ stub GetFullPathNameTransactedA +# @ stub GetFullPathNameTransactedW @ stdcall GetFullPathNameW(wstr long ptr ptr) @ stdcall GetGeoInfoA(long long ptr long long) @ stdcall GetGeoInfoW(long long ptr long long) @@ -556,6 +696,7 @@ @ stdcall GetHandleInformation(long ptr) @ stub -i386 GetLSCallbackTarget @ stub -i386 GetLSCallbackTemplate +# @ stub GetLargePageMinimum @ stdcall GetLargestConsoleWindowSize(long) @ stdcall GetLastError() @ stub GetLinguistLangSize @@ -569,27 +710,48 @@ @ stdcall GetLogicalProcessorInformation(ptr ptr) @ stdcall GetLogicalProcessorInformationEx(long ptr ptr) @ stdcall GetLongPathNameA (str long long) +# @ stub GetLongPathNameTransactedA +# @ stub GetLongPathNameTransactedW @ stdcall GetLongPathNameW (wstr long long) @ stdcall GetMailslotInfo(long ptr ptr ptr ptr) +# @ stub GetMaximumProcessorCount +# @ stub GetMaximumProcessorGroupCount @ stdcall GetModuleFileNameA(long ptr long) @ stdcall GetModuleFileNameW(long ptr long) @ stdcall GetModuleHandleA(str) @ stdcall GetModuleHandleExA(long ptr ptr) @ stdcall GetModuleHandleExW(long ptr ptr) @ stdcall GetModuleHandleW(wstr) +# @ stub GetNamedPipeAttribute +# @ stub GetNamedPipeClientComputerNameA +# @ stub GetNamedPipeClientComputerNameW +# @ stub GetNamedPipeClientProcessId +# @ stub GetNamedPipeClientSessionId @ stdcall GetNamedPipeHandleStateA(long ptr ptr ptr ptr str long) @ stdcall GetNamedPipeHandleStateW(long ptr ptr ptr ptr wstr long) @ stdcall GetNamedPipeInfo(long ptr ptr ptr ptr) +# @ stub GetNamedPipeServerProcessId +# @ stub GetNamedPipeServerSessionId @ stdcall GetNativeSystemInfo(ptr) +# @ stub -arch=x86_64 GetNextUmsListItem @ stub GetNextVDMCommand @ stub GetNlsSectionName +# @ stub GetNLSVersion +# @ stub GetNLSVersionEx # @ stub GetNumaAvailableMemory @ stdcall GetNumaAvailableMemoryNode(long ptr) +# @ stub GetNumaAvailableMemoryNodeEx @ stdcall GetNumaHighestNodeNumber(ptr) +# @ stub GetNumaNodeNumberFromHandle @ stdcall GetNumaNodeProcessorMask(long ptr) +# @ stub GetNumaNodeProcessorMaskEx # @ stub GetNumaProcessorMap # @ stub GetNumaProcessorNode +# @ stub GetNumaProcessorNodeEx +# @ stub GetNumaProximityNode +# @ stub GetNumaProximityNodeEx @ stdcall GetNumberFormatA(long long str ptr ptr long) +# @ stub GetNumberFormatEx @ stdcall GetNumberFormatW(long long wstr ptr ptr long) @ stub GetNumberOfConsoleFonts @ stdcall GetNumberOfConsoleInputEvents(long ptr) @@ -597,6 +759,7 @@ @ stdcall GetOEMCP() @ stdcall GetOverlappedResult(long ptr ptr long) @ stdcall GetUserPreferredUILanguages(long ptr ptr ptr) +# @ stub GetPhysicallyInstalledSystemMemory @ stdcall GetPriorityClass(long) @ stdcall GetPrivateProfileIntA(str str long str) @ stdcall GetPrivateProfileIntW(wstr wstr long wstr) @@ -612,16 +775,22 @@ @ stdcall GetProcessAffinityMask(long ptr ptr) @ stdcall GetProcessDEPPolicy(long ptr ptr) @ stdcall GetProcessFlags(long) +# @ stub GetProcessGroupAffinity @ stdcall GetProcessHandleCount(long ptr) @ stdcall -norelay GetProcessHeap() @ stdcall GetProcessHeaps(long ptr) @ stdcall GetProcessId(long) +# @ stub GetProcessIdOfThread @ stdcall GetProcessIoCounters(long ptr) +# @ stub GetProcessPreferredUILanguages @ stdcall GetProcessPriorityBoost(long ptr) @ stdcall GetProcessShutdownParameters(ptr ptr) +# @ stub GetProcessorSystemCycleTime @ stdcall GetProcessTimes(long ptr ptr ptr ptr) +# @ stub GetProcessUserModeExceptionPolicy @ stdcall GetProcessVersion(long) @ stdcall GetProcessWorkingSetSize(long ptr ptr) +# @ stub GetProcessWorkingSetSizeEx @ stdcall GetProductInfo(long long long long ptr) @ stub GetProductName @ stdcall GetProfileIntA(str str long) @@ -631,6 +800,7 @@ @ stdcall GetProfileStringA(str str str ptr long) @ stdcall GetProfileStringW(wstr wstr wstr ptr long) @ stdcall GetQueuedCompletionStatus(long ptr ptr ptr long) +# @ stub GetQueuedCompletionStatusEx @ stub -i386 GetSLCallbackTarget @ stub -i386 GetSLCallbackTemplate @ stdcall GetShortPathNameA(str ptr long) @@ -638,6 +808,7 @@ @ stdcall GetStartupInfoA(ptr) @ stdcall GetStartupInfoW(ptr) @ stdcall GetStdHandle(long) +# @ stub GetStringScripts @ stdcall GetStringTypeA(long long str long ptr) @ stdcall GetStringTypeExA(long long str long ptr) @ stdcall GetStringTypeExW(long long wstr long ptr) @@ -650,8 +821,10 @@ @ stdcall GetSystemDEPPolicy() @ stdcall GetSystemDirectoryA(ptr long) @ stdcall GetSystemDirectoryW(ptr long) +@ stdcall GetSystemFirmwareTable(long long ptr long) @ stdcall GetSystemInfo(ptr) @ stdcall GetSystemPowerStatus(ptr) +# @ stub GetSystemPreferredUILanguages @ stdcall GetSystemRegistryQuota(ptr ptr) @ stdcall GetSystemTime(ptr) @ stdcall GetSystemTimeAdjustment(ptr ptr ptr) @@ -670,7 +843,9 @@ @ stdcall GetTempPathW(long ptr) @ stdcall GetThreadContext(long ptr) @ stdcall GetThreadErrorMode() +# @ stub GetThreadGroupAffinity @ stdcall GetThreadId(ptr) +# @ stub GetThreadIdealProcessorEx @ stdcall GetThreadIOPendingFlag(long ptr) @ stdcall GetThreadLocale() @ stdcall GetThreadPreferredUILanguages(long ptr ptr ptr) @@ -684,7 +859,11 @@ @ stdcall GetTimeFormatEx(wstr long ptr wstr ptr long) @ stdcall GetTimeFormatW(long long ptr wstr ptr long) @ stdcall GetTimeZoneInformation(ptr) +# @ stub GetTimeZoneInformationForYear @ stdcall GetThreadUILanguage() +# @ stub GetUILanguageInfo +# @ stub -arch=x86_64 GetUmsCompletionListEvent +# @ stub -arch=x86_64 GetUmsSystemThreadInformation @ stdcall GetUserDefaultLCID() @ stdcall GetUserDefaultLangID() @ stdcall GetUserDefaultLocaleName(ptr long) @@ -695,6 +874,7 @@ @ stdcall GetVersionExA(ptr) @ stdcall GetVersionExW(ptr) @ stdcall GetVolumeInformationA(str ptr long ptr ptr ptr ptr long) +# @ stub GetVolumeInformationByHandleW @ stdcall GetVolumeInformationW(wstr ptr long ptr ptr ptr ptr long) @ stdcall GetVolumeNameForVolumeMountPointA(str ptr long) @ stdcall GetVolumeNameForVolumeMountPointW(wstr ptr long) @@ -705,6 +885,7 @@ @ stdcall GetWindowsDirectoryA(ptr long) @ stdcall GetWindowsDirectoryW(ptr long) @ stdcall GetWriteWatch(long ptr long ptr ptr ptr) +# @ stub GetXStateFeaturesMask @ stdcall GlobalAddAtomA(str) @ stdcall GlobalAddAtomW(wstr) @ stdcall GlobalAlloc(long long) @@ -759,9 +940,11 @@ @ stdcall InitOnceExecuteOnce(ptr ptr ptr ptr) @ stdcall InitOnceInitialize(ptr) ntdll.RtlRunOnceInitialize @ stdcall InitializeConditionVariable(ptr) ntdll.RtlInitializeConditionVariable +# @ stub InitializeContext @ stdcall InitializeCriticalSection(ptr) @ stdcall InitializeCriticalSectionAndSpinCount(ptr long) @ stdcall InitializeCriticalSectionEx(ptr long long) +# @ stub InitializeProcThreadAttributeList @ stdcall InitializeSListHead(ptr) ntdll.RtlInitializeSListHead @ stdcall InitializeSRWLock(ptr) ntdll.RtlInitializeSRWLock @ stdcall -arch=i386 InterlockedCompareExchange (ptr long long) @@ -773,6 +956,7 @@ @ stdcall -arch=i386 InterlockedIncrement(ptr) @ stdcall InterlockedPopEntrySList(ptr) ntdll.RtlInterlockedPopEntrySList @ stdcall InterlockedPushEntrySList(ptr ptr) ntdll.RtlInterlockedPushEntrySList +# @ stub InterlockedPushListSList @ stub InvalidateConsoleDIBits @ stdcall InvalidateNLSCache() @ stdcall IsBadCodePtr(ptr) @@ -782,16 +966,23 @@ @ stdcall IsBadStringPtrA(ptr long) @ stdcall IsBadStringPtrW(ptr long) @ stdcall IsBadWritePtr(ptr long) +# @ stub IsCalendarLeapDay +# @ stub IsCalendarLeapMonth +# @ stub IsCalendarLeapYear @ stdcall IsDBCSLeadByte(long) @ stdcall IsDBCSLeadByteEx(long long) @ stdcall IsDebuggerPresent() @ stub -i386 IsLSCallback +# @ stub IsNLSDefinedString @ stdcall IsNormalizedString(long wstr long) @ stdcall IsProcessInJob(long long ptr) @ stdcall IsProcessorFeaturePresent(long) @ stub -i386 IsSLCallback @ stdcall IsSystemResumeAutomatic() @ stdcall IsThreadAFiber() +# @ stub IsThreadpoolTimerSet +# @ stub IsTimeZoneRedirectionEnabled +# @ stub IsValidCalDateTime @ stdcall IsValidCodePage(long) @ stdcall IsValidLanguageGroup(long long) @ stdcall IsValidLocale(long long) @@ -799,8 +990,6 @@ # @ stub IsValidUILanguage @ stdcall IsWow64Process(ptr ptr) @ stdcall K32EmptyWorkingSet(long) -@ stdcall K32GetProcessImageFileNameA(long ptr long) -@ stdcall K32GetProcessImageFileNameW(long ptr long) @ stdcall K32EnumDeviceDrivers(ptr long ptr) @ stdcall K32EnumPageFilesA(ptr ptr) @ stdcall K32EnumPageFilesW(ptr ptr) @@ -819,8 +1008,11 @@ @ stdcall K32GetModuleFileNameExW(long long ptr long) @ stdcall K32GetModuleInformation(long long ptr long) @ stdcall K32GetPerformanceInfo(ptr long) +@ stdcall K32GetProcessImageFileNameA(long ptr long) +@ stdcall K32GetProcessImageFileNameW(long ptr long) @ stdcall K32GetProcessMemoryInfo(long ptr long) @ stdcall K32GetWsChanges(long ptr long) +# @ stub K32GetWsChangesEx @ stdcall K32InitializeProcessForWsWatch(long) @ stdcall K32QueryWorkingSet(long ptr long) @ stdcall K32QueryWorkingSetEx(long ptr long) @@ -842,12 +1034,16 @@ @ stdcall LZSeek(long long long) @ stdcall LZStart() @ stdcall LeaveCriticalSection(ptr) ntdll.RtlLeaveCriticalSection +# @ stub LeaveCriticalSectionWhenCallbackReturns +# @ stub LoadAppInitDlls @ stdcall LoadLibraryA(str) @ stdcall LoadLibraryExA( str long long) @ stdcall LoadLibraryExW(wstr long long) @ stdcall LoadLibraryW(wstr) @ stdcall LoadModule(str ptr) @ stdcall LoadResource(long long) +# @ stub LoadStringBaseExW +# @ stub LoadStringBaseW @ stdcall LocalAlloc(long long) @ stdcall LocalCompact(long) @ stdcall LocalFileTimeToFileTime(ptr ptr) @@ -860,6 +1056,7 @@ @ stdcall LocalSize(long) @ stdcall LocalUnlock(long) @ stdcall LocaleNameToLCID(wstr long) +# @ stub LocateXStateFeature @ stdcall LockFile(long long long long long) @ stdcall LockFileEx(long long long long long ptr) @ stdcall LockResource(long) @@ -877,6 +1074,7 @@ # @ stub MapUserPhysicalPagesScatter @ stdcall MapViewOfFile(long long long long long) @ stdcall MapViewOfFileEx(long long long long long ptr) +# @ stub MapViewOfFileExNuma @ stdcall Module32First(long ptr) @ stdcall Module32FirstW(long ptr) @ stdcall Module32Next(long ptr) @@ -884,6 +1082,8 @@ @ stdcall MoveFileA(str str) @ stdcall MoveFileExA(str str long) @ stdcall MoveFileExW(wstr wstr long) +# @ stub MoveFileTransactedA +# @ stub MoveFileTransactedW @ stdcall MoveFileW(wstr wstr) @ stdcall MoveFileWithProgressA(str str ptr ptr long) @ stdcall MoveFileWithProgressW(wstr wstr ptr ptr long) @@ -891,11 +1091,18 @@ @ stdcall MultiByteToWideChar(long long str long ptr long) @ stdcall NeedCurrentDirectoryForExePathA(str) @ stdcall NeedCurrentDirectoryForExePathW(wstr) +# @ stub NlsCheckPolicy # @ stub NlsConvertIntegerToString +# @ stub NlsEventDataDescCreate # @ stub NlsGetCacheUpdateCount # @ stub NlsResetProcessLocale +# @ stub NlsUpdateLocale +# @ stub NlsUpdateSystemLocale +# @ stub NlsWriteEtwEvent @ stdcall NormalizeString(long wstr long ptr long) +# @ stub NotifyMountMgr @ stub NotifyNLSUserCache +# @ stub NotifyUILanguageChange # @ stub NumaVirtualQueryNode @ stdcall OpenConsoleW(wstr long long long) @ stub OpenDataFile @@ -909,11 +1116,15 @@ @ stdcall OpenJobObjectW(long long wstr) @ stdcall OpenMutexA(long long str) @ stdcall OpenMutexW(long long wstr) +# @ stub OpenPrivateNamespaceA +# @ stub OpenPrivateNamespaceW @ stdcall OpenProcess(long long long) +# @ stub OpenProcessToken @ stdcall OpenProfileUserMapping() @ stdcall OpenSemaphoreA(long long str) @ stdcall OpenSemaphoreW(long long wstr) @ stdcall OpenThread(long long long) +# @ stub OpenThreadToken @ stdcall -i386 OpenVxDHandle(long) @ stdcall OpenWaitableTimerA(long long str) @ stdcall OpenWaitableTimerW(long long wstr) @@ -923,6 +1134,9 @@ @ stdcall PeekConsoleInputW(ptr ptr long ptr) @ stdcall PeekNamedPipe(long ptr long ptr ptr ptr) @ stdcall PostQueuedCompletionStatus(long long ptr ptr) +# @ stub PowerClearRequest +# @ stub PowerCreateRequest +# @ stub PowerSetRequest @ stdcall PrepareTape(ptr long long) @ stub PrivCopyFileExW @ stub PrivMoveFileIdentityW @@ -936,23 +1150,33 @@ @ stdcall PulseEvent(long) @ stdcall PurgeComm(long long) @ stdcall -i386 -private -register QT_Thunk() krnl386.exe16.QT_Thunk +# @ stub QueryActCtxSettingsW @ stdcall QueryActCtxW(long ptr ptr long ptr long ptr) @ stdcall QueryDepthSList(ptr) ntdll.RtlQueryDepthSList @ stdcall QueryDosDeviceA(str ptr long) @ stdcall QueryDosDeviceW(wstr ptr long) @ stdcall QueryFullProcessImageNameA(ptr long ptr ptr) @ stdcall QueryFullProcessImageNameW(ptr long ptr ptr) +# @ stub QueryIdleProcessorCycleTime +# @ stub QueryIdleProcessorCycleTimeEx @ stdcall QueryInformationJobObject(long long ptr long ptr) @ stdcall QueryMemoryResourceNotification(ptr ptr) @ stub QueryNumberOfEventLogRecords @ stub QueryOldestEventLogRecord @ stdcall QueryPerformanceCounter(ptr) @ stdcall QueryPerformanceFrequency(ptr) +# @ stub QueryProcessAffinityUpdateMode +# @ stub QueryProcessCycleTime +# @ stub QueryThreadCycleTime +# @ stub QueryThreadProfiling +# @ stub QueryThreadpoolStackInformation +# @ stub -arch=x86_64 QueryUmsThreadInformation @ stdcall QueryUnbiasedInterruptTime(ptr) @ stub QueryWin31IniFilesMappedToRegistry @ stdcall QueueUserAPC(ptr long long) @ stdcall QueueUserWorkItem(ptr ptr long) @ stdcall RaiseException(long long long ptr) +# @ stub RaiseFailFastException @ stdcall ReadConsoleA(long ptr long ptr ptr) @ stdcall ReadConsoleInputA(long ptr long ptr) @ stub ReadConsoleInputExA @@ -969,6 +1193,7 @@ @ stdcall ReadFileEx(long ptr long ptr ptr) @ stdcall ReadFileScatter(long ptr long ptr ptr) @ stdcall ReadProcessMemory(long ptr ptr long ptr) +# @ stub ReadThreadProfilingData @ stdcall RegCloseKey(long) advapi32.RegCloseKey @ stdcall RegCreateKeyExA(long str long ptr long long ptr ptr ptr) advapi32.RegCreateKeyExA @ stdcall RegCreateKeyExW(long wstr long ptr long long ptr ptr ptr) advapi32.RegCreateKeyExW @@ -1026,7 +1251,9 @@ @ stdcall ReinitializeCriticalSection(ptr) @ stdcall ReleaseActCtx(ptr) @ stdcall ReleaseMutex(long) +# @ stub ReleaseMutexWhenCallbackReturns @ stdcall ReleaseSemaphore(long long ptr) +# @ stub ReleaseSemaphoreWhenCallbackReturns @ stdcall ReleaseSRWLockExclusive(ptr) ntdll.RtlReleaseSRWLockExclusive @ stdcall ReleaseSRWLockShared(ptr) ntdll.RtlReleaseSRWLockShared @ stdcall RemoveDirectoryA(str) @@ -1035,20 +1262,28 @@ # @ stub RemoveLocalAlternateComputerNameW @ stdcall RemoveVectoredContinueHandler(ptr) ntdll.RtlRemoveVectoredContinueHandler @ stdcall RemoveVectoredExceptionHandler(ptr) ntdll.RtlRemoveVectoredExceptionHandler +# @ stub ReOpenFile @ stdcall ReplaceFile(wstr wstr wstr long ptr ptr) ReplaceFileW @ stdcall ReplaceFileA(str str str long ptr ptr) @ stdcall ReplaceFileW(wstr wstr wstr long ptr ptr) @ stub RequestDeviceWakeup +# @ stub RemoveDirectoryTransactedA +# @ stub RemoveDirectoryTransactedW +# @ stub RemoveDllDirectory +# @ stub RemoveSecureMemoryCacheCallback +# @ stub ReplacePartitionUnit @ stdcall RequestWakeupLatency(long) @ stdcall ResetEvent(long) @ stdcall ResetWriteWatch(ptr long) @ stdcall ResolveDelayLoadedAPI(ptr ptr ptr ptr ptr long) ntdll.LdrResolveDelayLoadedAPI +# @ stub ResolveLocaleName @ stdcall RestoreLastError(long) ntdll.RtlRestoreLastWin32Error @ stdcall ResumeThread(long) @ cdecl -arch=arm,x86_64 RtlAddFunctionTable(ptr long long) ntdll.RtlAddFunctionTable @ stdcall -register RtlCaptureContext(ptr) ntdll.RtlCaptureContext @ stdcall RtlCaptureStackBackTrace(long long ptr ptr) ntdll.RtlCaptureStackBackTrace @ stdcall -arch=x86_64 RtlCompareMemory(ptr ptr long) ntdll.RtlCompareMemory +# @ stub -arch=x86_64 RtlCopyMemory @ cdecl -arch=arm,x86_64 RtlDeleteFunctionTable(ptr) ntdll.RtlDeleteFunctionTable @ stdcall RtlFillMemory(ptr long long) ntdll.RtlFillMemory @ cdecl -arch=x86_64 RtlInstallFunctionTableCallback(long long long ptr ptr ptr) ntdll.RtlInstallFunctionTableCallback @@ -1056,6 +1291,7 @@ @ stdcall RtlMoveMemory(ptr ptr long) ntdll.RtlMoveMemory @ stdcall -arch=x86_64,arm RtlPcToFileHeader(ptr ptr) ntdll.RtlPcToFileHeader @ stdcall -arch=arm -register RtlRaiseException(ptr) ntdll.RtlRaiseException +# @ stub -arch=x86_64 RtlRestoreContext @ stdcall RtlUnwind(ptr ptr ptr long) ntdll.RtlUnwind @ stdcall -arch=x86_64 RtlUnwindEx(long long ptr long ptr) ntdll.RtlUnwindEx @ stdcall -arch=x86_64 RtlVirtualUnwind(long long long ptr ptr ptr ptr ptr) ntdll.RtlVirtualUnwind @@ -1100,6 +1336,7 @@ @ stdcall SetComputerNameW(wstr) @ stdcall SetConsoleActiveScreenBuffer(long) @ stdcall SetConsoleCP(long) +# @ stub SetConsoleHistoryInfo @ stub SetConsoleCommandHistoryMode @ stdcall SetConsoleCtrlHandler(ptr long) @ stub SetConsoleCursor @@ -1123,29 +1360,41 @@ @ stub SetConsoleOS2OemFormat @ stdcall SetConsoleOutputCP(long) @ stub SetConsolePalette +# @ stub SetConsoleScreenBufferInfoEx @ stdcall SetConsoleScreenBufferSize(long long) @ stdcall SetConsoleTextAttribute(long long) @ stdcall SetConsoleTitleA(str) @ stdcall SetConsoleTitleW(wstr) @ stdcall SetConsoleWindowInfo(long long ptr) @ stdcall SetCriticalSectionSpinCount(ptr long) ntdll.RtlSetCriticalSectionSpinCount +# @ stub SetCurrentConsoleFontEx @ stdcall SetCurrentDirectoryA(str) @ stdcall SetCurrentDirectoryW(wstr) @ stub SetDaylightFlag @ stdcall SetDefaultCommConfigA(str ptr long) @ stdcall SetDefaultCommConfigW(wstr ptr long) +# @ stub SetDefaultDllDirectories @ stdcall SetDllDirectoryA(str) @ stdcall SetDllDirectoryW(wstr) +# @ stub SetDynamicTimeZoneInformation @ stdcall SetEndOfFile(long) +# @ stub SetEnvironmentStringsA +# @ stub SetEnvironmentStringsW @ stdcall SetEnvironmentVariableA(str str) @ stdcall SetEnvironmentVariableW(wstr wstr) @ stdcall SetErrorMode(long) @ stdcall SetEvent(long) +# @ stub SetEventWhenCallbackReturns @ stdcall SetFileApisToANSI() @ stdcall SetFileApisToOEM() @ stdcall SetFileAttributesA(str long) +# @ stub SetFileAttributesTransactedA +# @ stub SetFileAttributesTransactedW @ stdcall SetFileAttributesW(wstr long) +# @ stub SetFileBandwidthReservation +# @ stub SetFileCompletionNotificationModes @ stdcall SetFileInformationByHandle(long long ptr long) +# @ stub SetFileIoOverlappedRange @ stdcall SetFilePointer(long long ptr long) @ stdcall SetFilePointerEx(long int64 ptr long) # @ stub SetFileShortNameA @@ -1167,14 +1416,21 @@ @ stdcall SetLocaleInfoW(long long wstr) @ stdcall SetMailslotInfo(long long) @ stub SetMessageWaitingIndicator +# @ stub SetNamedPipeAttribute @ stdcall SetNamedPipeHandleState(long ptr ptr ptr) @ stdcall SetPriorityClass(long long) @ stdcall SetProcessAffinityMask(long long) +# @ stub SetProcessAffinityUpdateMode @ stdcall SetProcessDEPPolicy(long) +# @ stub SetProcessPreferredUILanguages @ stdcall SetProcessPriorityBoost(long long) @ stdcall SetProcessShutdownParameters(long long) +# @ stub SetProcessUserModeExceptionPolicy @ stdcall SetProcessWorkingSetSize(long long long) +# @ stub SetProcessWorkingSetSizeEx +# @ stub SetSearchPathMode @ stdcall SetStdHandle(long long) +# @ stub SetStdHandleEx @ stdcall SetSystemFileCacheSize(long long long) @ stdcall SetSystemPowerState(long long) @ stdcall SetSystemTime(ptr) @@ -1186,15 +1442,24 @@ @ stdcall SetThreadContext(long ptr) @ stdcall SetThreadErrorMode(long ptr) @ stdcall SetThreadExecutionState(long) +# @ stub SetThreadGroupAffinity @ stdcall SetThreadIdealProcessor(long long) +# @ stub SetThreadIdealProcessorEx @ stdcall SetThreadLocale(long) @ stdcall SetThreadPreferredUILanguages(long ptr ptr) @ stdcall SetThreadPriority(long long) @ stdcall SetThreadPriorityBoost(long long) @ stdcall SetThreadStackGuarantee(ptr) +# @ stub SetThreadToken @ stdcall SetThreadUILanguage(long) +# @ stub SetThreadpoolStackInformation +# @ stub SetThreadpoolThreadMaximum +# @ stub SetThreadpoolThreadMinimum +# @ stub SetThreadpoolTimer +# @ stub SetThreadpoolWait @ stdcall SetTimeZoneInformation(ptr) @ stub SetTimerQueueTimer +# @ stub -arch=x86_64 SetUmsThreadInformation @ stdcall SetUnhandledExceptionFilter(ptr) @ stdcall SetUserGeoID(long) @ stub SetVDMCurrentDirectories @@ -1204,6 +1469,7 @@ @ stub SetVolumeMountPointW @ stdcall SetWaitableTimer(long ptr long ptr ptr long) @ stdcall SetWaitableTimerEx(long ptr long ptr ptr ptr long) +# @ stub SetXStateFeaturesMask @ stdcall SetupComm(long long long) @ stub ShowConsoleCursor @ stdcall SignalObjectAndWait(long long long long) @@ -1212,11 +1478,16 @@ @ stdcall SleepConditionVariableCS(ptr ptr long) @ stdcall SleepConditionVariableSRW(ptr ptr long long) @ stdcall SleepEx(long long) +# @ stub SortCloseHandle +# @ stub SortGetHandle +# @ stub StartThreadpoolIo +# @ stub SubmitThreadpoolWork @ stdcall SuspendThread(long) @ stdcall SwitchToFiber(ptr) @ stdcall SwitchToThread() @ stdcall SystemTimeToFileTime(ptr ptr) @ stdcall SystemTimeToTzSpecificLocalTime (ptr ptr ptr) +# @ stub SystemTimeToTzSpecificLocalTimeEx @ stdcall TerminateJobObject(long long) @ stdcall TerminateProcess(long long) @ stdcall TerminateThread(long long) @@ -1237,7 +1508,19 @@ @ stdcall TryAcquireSRWLockExclusive(ptr) ntdll.RtlTryAcquireSRWLockExclusive @ stdcall TryAcquireSRWLockShared(ptr) ntdll.RtlTryAcquireSRWLockShared @ stdcall TryEnterCriticalSection(ptr) ntdll.RtlTryEnterCriticalSection +# @ stub TrySubmitThreadpoolCallback @ stdcall TzSpecificLocalTimeToSystemTime(ptr ptr ptr) +# @ stub TzSpecificLocalTimeToSystemTimeEx +# @ stub -arch=x86_64 uaw_lstrcmpW +# @ stub -arch=x86_64 uaw_lstrcmpiW +# @ stub -arch=x86_64 uaw_lstrlenW +# @ stub -arch=x86_64 uaw_wcschr +# @ stub -arch=x86_64 uaw_wcscpy +# @ stub -arch=x86_64 uaw_wcsicmp +# @ stub -arch=x86_64 uaw_wcslen +# @ stub -arch=x86_64 uaw_wcsrchr +# @ stub -arch=x86_64 UmsThreadYield +# @ stub -arch=x86_64 __misaligned_access @ stdcall -i386 -private UTRegister(long str str str ptr ptr ptr) krnl386.exe16.UTRegister @ stdcall -i386 -private UTUnRegister(long) krnl386.exe16.UTUnRegister @ stdcall -i386 -private UnMapLS(long) krnl386.exe16.UnMapLS @@ -1247,10 +1530,13 @@ @ stdcall UnlockFile(long long long long long) @ stdcall UnlockFileEx(long long long long ptr) @ stdcall UnmapViewOfFile(ptr) +# @ stub UnregisterApplicationRecoveryCallback @ stdcall UnregisterApplicationRestart() # @ stub UnregisterConsoleIME @ stdcall UnregisterWait(long) @ stdcall UnregisterWaitEx(long long) +# @ stub UpdateCalendarDayOfWeek +# @ stub UpdateProcThreadAttribute @ stdcall UpdateResourceA(long str str long ptr long) @ stdcall UpdateResourceW(long wstr wstr long ptr long) @ stub VDMConsoleOperation @@ -1261,10 +1547,12 @@ @ stdcall VerLanguageNameW(long wstr long) @ stdcall -ret64 VerSetConditionMask(long long long long) ntdll.VerSetConditionMask @ stdcall VerifyConsoleIoHandle(long) +# @ stub VerifyScripts @ stdcall VerifyVersionInfoA(long long int64) @ stdcall VerifyVersionInfoW(long long int64) @ stdcall VirtualAlloc(ptr long long long) @ stdcall VirtualAllocEx(long ptr long long long) +# @ stub VirtualAllocExNuma @ stub VirtualBufferExceptionHandler @ stdcall VirtualFree(ptr long long) @ stdcall VirtualFreeEx(long ptr long long) @@ -1281,20 +1569,37 @@ @ stdcall WaitForMultipleObjectsEx(long ptr long long long) @ stdcall WaitForSingleObject(long long) @ stdcall WaitForSingleObjectEx(long long long) +# @ stub WaitForThreadpoolIoCallbacks +# @ stub WaitForThreadpoolTimerCallbacks +# @ stub WaitForThreadpoolWaitCallbacks +# @ stub WaitForThreadpoolWorkCallbacks @ stdcall WaitNamedPipeA (str long) @ stdcall WaitNamedPipeW (wstr long) @ stdcall WakeAllConditionVariable(ptr) ntdll.RtlWakeAllConditionVariable @ stdcall WakeConditionVariable(ptr) ntdll.RtlWakeConditionVariable +# @ stub WerGetFlags @ stdcall WerRegisterFile(wstr long long) @ stdcall WerRegisterMemoryBlock(ptr long) @ stdcall WerRegisterRuntimeExceptionModule(wstr ptr) @ stdcall WerSetFlags(long) +# @ stub WerUnregisterFile @ stdcall WerUnregisterMemoryBlock(ptr) +# @ stub WerUnregisterRuntimeExceptionModule +# @ stub WerpCleanupMessageMapping +# @ stub WerpInitiateRemoteRecovery +# @ stub WerpNotifyLoadStringResource +# @ stub WerpNotifyLoadStringResourceEx +# @ stub WerpNotifyUseStringResource +# @ stub WerpStringLookup @ stdcall WideCharToMultiByte(long long wstr long ptr long ptr ptr) @ stdcall WinExec(str long) @ stdcall Wow64EnableWow64FsRedirection(long) @ stdcall Wow64DisableWow64FsRedirection(ptr) +# @ stub Wow64GetThreadContext +# @ stub Wow64GetThreadSelectorEntry @ stdcall Wow64RevertWow64FsRedirection(ptr) +# @ stub Wow64SetThreadContext +# @ stub Wow64SuspendThread @ stdcall WriteConsoleA(long ptr long ptr ptr) @ stdcall WriteConsoleInputA(long ptr long ptr) @ stub WriteConsoleInputVDMA diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/kernel32/path.c wine-staging-1.7.36~ubuntu12.04.1/dlls/kernel32/path.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/kernel32/path.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/kernel32/path.c 2015-02-08 20:31:28.000000000 +0000 @@ -1972,3 +1972,23 @@ FIXME("(%s %s %d): stub\n", debugstr_a(link), debugstr_a(target), flags); return TRUE; } + +/************************************************************************* + * CreateHardLinkTransactedA (KERNEL32.@) + */ +BOOL WINAPI CreateHardLinkTransactedA(LPCSTR link, LPCSTR target, LPSECURITY_ATTRIBUTES sa, HANDLE transaction) +{ + FIXME("(%s %s %p %p): stub\n", debugstr_a(link), debugstr_a(target), sa, transaction); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + +/************************************************************************* + * CreateHardLinkTransactedW (KERNEL32.@) + */ +BOOL WINAPI CreateHardLinkTransactedW(LPCWSTR link, LPCWSTR target, LPSECURITY_ATTRIBUTES sa, HANDLE transaction) +{ + FIXME("(%s %s %p %p): stub\n", debugstr_w(link), debugstr_w(target), sa, transaction); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/kernel32/process.c wine-staging-1.7.36~ubuntu12.04.1/dlls/kernel32/process.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/kernel32/process.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/kernel32/process.c 2015-02-08 20:31:28.000000000 +0000 @@ -4004,3 +4004,13 @@ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); return S_OK; } + +/*********************************************************************** + * GetSystemFirmwareTable (KERNEL32.@) + */ +UINT WINAPI GetSystemFirmwareTable(DWORD provider, DWORD id, PVOID buffer, DWORD size) +{ + FIXME("(%d %d %p %d):stub\n", provider, id, buffer, size); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return 0; +} diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/kernel32/resource.c wine-staging-1.7.36~ubuntu12.04.1/dlls/kernel32/resource.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/kernel32/resource.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/kernel32/resource.c 2015-02-08 20:31:28.000000000 +0000 @@ -437,10 +437,11 @@ /********************************************************************** - * EnumResourceLanguagesA (KERNEL32.@) + * EnumResourceLanguagesExA (KERNEL32.@) */ -BOOL WINAPI EnumResourceLanguagesA( HMODULE hmod, LPCSTR type, LPCSTR name, - ENUMRESLANGPROCA lpfun, LONG_PTR lparam ) +BOOL WINAPI EnumResourceLanguagesExA( HMODULE hmod, LPCSTR type, LPCSTR name, + ENUMRESLANGPROCA lpfun, LONG_PTR lparam, + DWORD flags, LANGID lang ) { int i; BOOL ret = FALSE; @@ -450,7 +451,15 @@ const IMAGE_RESOURCE_DIRECTORY *basedir, *resdir; const IMAGE_RESOURCE_DIRECTORY_ENTRY *et; - TRACE( "%p %s %s %p %lx\n", hmod, debugstr_a(type), debugstr_a(name), lpfun, lparam ); + TRACE( "%p %s %s %p %lx %x %d\n", hmod, debugstr_a(type), debugstr_a(name), + lpfun, lparam, flags, lang ); + + if (flags & (RESOURCE_ENUM_MUI | RESOURCE_ENUM_MUI_SYSTEM | RESOURCE_ENUM_VALIDATE)) + FIXME( "unimplemented flags: %x\n", flags ); + + if (!flags) flags = RESOURCE_ENUM_LN | RESOURCE_ENUM_MUI; + + if (!(flags & RESOURCE_ENUM_LN)) return ret; if (!hmod) hmod = GetModuleHandleA( NULL ); typeW.Buffer = nameW.Buffer = NULL; @@ -489,10 +498,21 @@ /********************************************************************** - * EnumResourceLanguagesW (KERNEL32.@) + * EnumResourceLanguagesA (KERNEL32.@) */ -BOOL WINAPI EnumResourceLanguagesW( HMODULE hmod, LPCWSTR type, LPCWSTR name, - ENUMRESLANGPROCW lpfun, LONG_PTR lparam ) +BOOL WINAPI EnumResourceLanguagesA( HMODULE hmod, LPCSTR type, LPCSTR name, + ENUMRESLANGPROCA lpfun, LONG_PTR lparam ) +{ + return EnumResourceLanguagesExA( hmod, type, name, lpfun, lparam, 0, 0 ); +} + + +/********************************************************************** + * EnumResourceLanguagesExW (KERNEL32.@) + */ +BOOL WINAPI EnumResourceLanguagesExW( HMODULE hmod, LPCWSTR type, LPCWSTR name, + ENUMRESLANGPROCW lpfun, LONG_PTR lparam, + DWORD flags, LANGID lang ) { int i; BOOL ret = FALSE; @@ -502,7 +522,15 @@ const IMAGE_RESOURCE_DIRECTORY *basedir, *resdir; const IMAGE_RESOURCE_DIRECTORY_ENTRY *et; - TRACE( "%p %s %s %p %lx\n", hmod, debugstr_w(type), debugstr_w(name), lpfun, lparam ); + TRACE( "%p %s %s %p %lx %x %d\n", hmod, debugstr_w(type), debugstr_w(name), + lpfun, lparam, flags, lang ); + + if (flags & (RESOURCE_ENUM_MUI | RESOURCE_ENUM_MUI_SYSTEM | RESOURCE_ENUM_VALIDATE)) + FIXME( "unimplemented flags: %x\n", flags ); + + if (!flags) flags = RESOURCE_ENUM_LN | RESOURCE_ENUM_MUI; + + if (!(flags & RESOURCE_ENUM_LN)) return ret; if (!hmod) hmod = GetModuleHandleW( NULL ); typeW.Buffer = nameW.Buffer = NULL; @@ -541,6 +569,16 @@ /********************************************************************** + * EnumResourceLanguagesW (KERNEL32.@) + */ +BOOL WINAPI EnumResourceLanguagesW( HMODULE hmod, LPCWSTR type, LPCWSTR name, + ENUMRESLANGPROCW lpfun, LONG_PTR lparam ) +{ + return EnumResourceLanguagesExW( hmod, type, name, lpfun, lparam, 0, 0 ); +} + + +/********************************************************************** * LoadResource (KERNEL32.@) */ HGLOBAL WINAPI LoadResource( HINSTANCE hModule, HRSRC hRsrc ) @@ -1507,7 +1545,8 @@ int delta = section_size - (sec->SizeOfRawData + (-sec->SizeOfRawData) % PeFileAlignment); int rva_delta = virtual_section_size - (sec->Misc.VirtualSize + (-sec->Misc.VirtualSize) % PeSectionAlignment); - BOOL rsrc_is_last = sec->PointerToRawData + sec->SizeOfRawData == old_size; + /* when new section is added it could end past current mapping size */ + BOOL rsrc_is_last = sec->PointerToRawData + sec->SizeOfRawData >= old_size; /* align .rsrc size when possible */ DWORD mapping_size = rsrc_is_last ? sec->PointerToRawData + section_size : old_size + delta; diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/kernel32/tests/loader.c wine-staging-1.7.36~ubuntu12.04.1/dlls/kernel32/tests/loader.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/kernel32/tests/loader.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/kernel32/tests/loader.c 2015-02-08 20:31:28.000000000 +0000 @@ -78,7 +78,7 @@ static IMAGE_DOS_HEADER dos_header; -static IMAGE_NT_HEADERS nt_header = +static const IMAGE_NT_HEADERS nt_header_template = { IMAGE_NT_SIGNATURE, /* Signature */ { @@ -123,8 +123,8 @@ 4, /* MajorSubsystemVersion */ 0, /* MinorSubsystemVersion */ 0, /* Win32VersionValue */ - sizeof(dos_header) + sizeof(nt_header) + sizeof(IMAGE_SECTION_HEADER) + 0x1000, /* SizeOfImage */ - sizeof(dos_header) + sizeof(nt_header), /* SizeOfHeaders */ + sizeof(dos_header) + sizeof(nt_header_template) + sizeof(IMAGE_SECTION_HEADER) + 0x1000, /* SizeOfImage */ + sizeof(dos_header) + sizeof(nt_header_template), /* SizeOfHeaders */ 0, /* CheckSum */ IMAGE_SUBSYSTEM_WINDOWS_CUI, /* Subsystem */ 0, /* DllCharacteristics */ @@ -266,14 +266,14 @@ }, { sizeof(dos_header), 1, sizeof(IMAGE_OPTIONAL_HEADER), 0x1000, 0x1000, - sizeof(dos_header) + sizeof(nt_header) + sizeof(IMAGE_SECTION_HEADER) + 0xe00, - sizeof(dos_header) + sizeof(nt_header) + sizeof(IMAGE_SECTION_HEADER), + sizeof(dos_header) + sizeof(nt_header_template) + sizeof(IMAGE_SECTION_HEADER) + 0xe00, + sizeof(dos_header) + sizeof(nt_header_template) + sizeof(IMAGE_SECTION_HEADER), { ERROR_BAD_EXE_FORMAT } /* XP doesn't like too small image size */ }, { sizeof(dos_header), 1, sizeof(IMAGE_OPTIONAL_HEADER), 0x1000, 0x1000, - sizeof(dos_header) + sizeof(nt_header) + sizeof(IMAGE_SECTION_HEADER) + 0x1000, - sizeof(dos_header) + sizeof(nt_header) + sizeof(IMAGE_SECTION_HEADER), + sizeof(dos_header) + sizeof(nt_header_template) + sizeof(IMAGE_SECTION_HEADER) + 0x1000, + sizeof(dos_header) + sizeof(nt_header_template) + sizeof(IMAGE_SECTION_HEADER), { ERROR_SUCCESS } }, { sizeof(dos_header), @@ -284,25 +284,25 @@ }, { sizeof(dos_header), 1, sizeof(IMAGE_OPTIONAL_HEADER), 0x200, 0x200, - sizeof(dos_header) + sizeof(nt_header) + sizeof(IMAGE_SECTION_HEADER) + 0x200, - sizeof(dos_header) + sizeof(nt_header) + sizeof(IMAGE_SECTION_HEADER), + sizeof(dos_header) + sizeof(nt_header_template) + sizeof(IMAGE_SECTION_HEADER) + 0x200, + sizeof(dos_header) + sizeof(nt_header_template) + sizeof(IMAGE_SECTION_HEADER), { ERROR_SUCCESS, ERROR_INVALID_ADDRESS } /* vista is more strict */ }, { sizeof(dos_header), 1, sizeof(IMAGE_OPTIONAL_HEADER), 0x200, 0x1000, - sizeof(dos_header) + sizeof(nt_header) + sizeof(IMAGE_SECTION_HEADER) + 0x1000, - sizeof(dos_header) + sizeof(nt_header) + sizeof(IMAGE_SECTION_HEADER), + sizeof(dos_header) + sizeof(nt_header_template) + sizeof(IMAGE_SECTION_HEADER) + 0x1000, + sizeof(dos_header) + sizeof(nt_header_template) + sizeof(IMAGE_SECTION_HEADER), { ERROR_BAD_EXE_FORMAT } /* XP doesn't like alignments */ }, { sizeof(dos_header), 1, sizeof(IMAGE_OPTIONAL_HEADER), 0x1000, 0x200, - sizeof(dos_header) + sizeof(nt_header) + sizeof(IMAGE_SECTION_HEADER) + 0x1000, - sizeof(dos_header) + sizeof(nt_header) + sizeof(IMAGE_SECTION_HEADER), + sizeof(dos_header) + sizeof(nt_header_template) + sizeof(IMAGE_SECTION_HEADER) + 0x1000, + sizeof(dos_header) + sizeof(nt_header_template) + sizeof(IMAGE_SECTION_HEADER), { ERROR_SUCCESS } }, { sizeof(dos_header), 1, sizeof(IMAGE_OPTIONAL_HEADER), 0x1000, 0x200, - sizeof(dos_header) + sizeof(nt_header) + sizeof(IMAGE_SECTION_HEADER) + 0x1000, + sizeof(dos_header) + sizeof(nt_header_template) + sizeof(IMAGE_SECTION_HEADER) + 0x1000, 0x200, { ERROR_SUCCESS } }, @@ -363,7 +363,7 @@ /* the following data mimics the PE image which upack creates */ { 0x10, 1, 0x148, 0x1000, 0x200, - sizeof(dos_header) + sizeof(nt_header) + sizeof(IMAGE_SECTION_HEADER) + 0x1000, + sizeof(dos_header) + sizeof(nt_header_template) + sizeof(IMAGE_SECTION_HEADER) + 0x1000, 0x200, { ERROR_SUCCESS } }, @@ -384,7 +384,8 @@ SIZE_T size; BOOL ret; NTSTATUS status; - WORD orig_machine = nt_header.FileHeader.Machine; + WORD orig_machine = nt_header_template.FileHeader.Machine; + IMAGE_NT_HEADERS nt_header; /* prevent displaying of the "Unable to load this DLL" message box */ SetErrorMode(SEM_FAILCRITICALERRORS); @@ -395,6 +396,7 @@ { GetTempFileNameA(temp_path, "ldr", 0, dll_name); + nt_header = nt_header_template; nt_header.FileHeader.NumberOfSections = td[i].number_of_sections; nt_header.FileHeader.SizeOfOptionalHeader = td[i].size_of_optional_header; @@ -589,13 +591,14 @@ ok(ret, "DeleteFile error %d\n", GetLastError()); } + nt_header = nt_header_template; nt_header.FileHeader.NumberOfSections = 1; nt_header.FileHeader.SizeOfOptionalHeader = sizeof(IMAGE_OPTIONAL_HEADER); nt_header.OptionalHeader.SectionAlignment = page_size; nt_header.OptionalHeader.FileAlignment = page_size; nt_header.OptionalHeader.SizeOfHeaders = sizeof(dos_header) + sizeof(nt_header) + sizeof(IMAGE_SECTION_HEADER); - nt_header.OptionalHeader.SizeOfImage = nt_header.OptionalHeader.SizeOfImage + page_size; + nt_header.OptionalHeader.SizeOfImage = sizeof(dos_header) + sizeof(nt_header) + sizeof(IMAGE_SECTION_HEADER) + page_size; status = map_image_section( &nt_header ); ok( status == STATUS_SUCCESS, "NtCreateSection error %08x\n", status ); @@ -1032,8 +1035,6 @@ { IMAGE_SCN_CNT_UNINITIALIZED_DATA | IMAGE_SCN_MEM_WRITE | IMAGE_SCN_MEM_EXECUTE, PAGE_EXECUTE_WRITECOPY, PAGE_EXECUTE_READWRITE }, { IMAGE_SCN_CNT_UNINITIALIZED_DATA | IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_WRITE | IMAGE_SCN_MEM_EXECUTE, PAGE_EXECUTE_WRITECOPY, PAGE_EXECUTE_READWRITE } }; - static const char filler[0x1000]; - static const char section_data[0x10] = "section data"; char buf[256]; int i; DWORD dummy, file_align; @@ -1054,6 +1055,8 @@ for (i = 0; i < sizeof(td)/sizeof(td[0]); i++) { + IMAGE_NT_HEADERS nt_header; + GetTempFileNameA(temp_path, "ldr", 0, dll_name); /*trace("creating %s\n", dll_name);*/ @@ -1068,6 +1071,7 @@ ret = WriteFile(hfile, &dos_header, sizeof(dos_header), &dummy, NULL); ok(ret, "WriteFile error %d\n", GetLastError()); + nt_header = nt_header_template; nt_header.FileHeader.NumberOfSections = 1; nt_header.FileHeader.SizeOfOptionalHeader = sizeof(IMAGE_OPTIONAL_HEADER); nt_header.FileHeader.Characteristics = IMAGE_FILE_EXECUTABLE_IMAGE | IMAGE_FILE_DLL | IMAGE_FILE_RELOCS_STRIPPED; @@ -1235,11 +1239,13 @@ for (test = 0; test < 3; test++) { #define DATA_RVA(ptr) (page_size + ((char *)(ptr) - (char *)&data)) - nt = nt_header; + nt = nt_header_template; nt.FileHeader.NumberOfSections = 1; nt.FileHeader.SizeOfOptionalHeader = sizeof(IMAGE_OPTIONAL_HEADER); nt.FileHeader.Characteristics = IMAGE_FILE_EXECUTABLE_IMAGE | IMAGE_FILE_32BIT_MACHINE | IMAGE_FILE_RELOCS_STRIPPED; if (test != 2) nt.FileHeader.Characteristics |= IMAGE_FILE_DLL; + nt.OptionalHeader.SectionAlignment = page_size; + nt.OptionalHeader.FileAlignment = 0x200; nt.OptionalHeader.ImageBase = 0x12340000; nt.OptionalHeader.SizeOfImage = 2 * page_size; nt.OptionalHeader.SizeOfHeaders = nt.OptionalHeader.FileAlignment; @@ -2015,6 +2021,7 @@ void *addr; LARGE_INTEGER offset; SIZE_T size; + IMAGE_NT_HEADERS nt_header; #if !defined(__i386__) && !defined(__x86_64__) skip("x86 specific ExitProcess test\n"); @@ -2055,6 +2062,7 @@ ret = WriteFile(file, &dos_header, sizeof(dos_header), &dummy, NULL); ok(ret, "WriteFile error %d\n", GetLastError()); + nt_header = nt_header_template; nt_header.FileHeader.NumberOfSections = 1; nt_header.FileHeader.SizeOfOptionalHeader = sizeof(IMAGE_OPTIONAL_HEADER); nt_header.FileHeader.Characteristics = IMAGE_FILE_EXECUTABLE_IMAGE | IMAGE_FILE_DLL | IMAGE_FILE_RELOCS_STRIPPED; @@ -2510,6 +2518,8 @@ DWORD dummy, file_size, i; WORD hint = 0; BOOL ret; + IMAGE_NT_HEADERS nt_header; + static const struct test_data { BOOL func; @@ -2536,7 +2546,7 @@ if (!pResolveDelayLoadedAPI) { - todo_wine win_skip("ResolveDelayLoadedAPI is not available\n"); + win_skip("ResolveDelayLoadedAPI is not available\n"); return; } @@ -2569,6 +2579,7 @@ ret = WriteFile(hfile, &dos_header, sizeof(dos_header), &dummy, NULL); ok(ret, "WriteFile error %d\n", GetLastError()); + nt_header = nt_header_template; nt_header.FileHeader.NumberOfSections = 2; nt_header.FileHeader.SizeOfOptionalHeader = sizeof(IMAGE_OPTIONAL_HEADER); diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/ktmw32/ktmw32_main.c wine-staging-1.7.36~ubuntu12.04.1/dlls/ktmw32/ktmw32_main.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/ktmw32/ktmw32_main.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/ktmw32/ktmw32_main.c 2015-02-08 20:31:28.000000000 +0000 @@ -49,3 +49,13 @@ return (HANDLE) 1; } + +/*********************************************************************** + * Rollback Transaction (ktmw32.@) + */ +BOOL WINAPI RollbackTransaction(HANDLE transaction) +{ + FIXME("stub: %p\n", transaction); + SetLastError(ERROR_ACCESS_DENIED); + return FALSE; +} diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/ktmw32/ktmw32.spec wine-staging-1.7.36~ubuntu12.04.1/dlls/ktmw32/ktmw32.spec --- wine-staging-1.7.35~ubuntu12.04.1/dlls/ktmw32/ktmw32.spec 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/ktmw32/ktmw32.spec 2015-02-08 20:31:28.000000000 +0000 @@ -35,7 +35,7 @@ @ stub RenameTransactionManager @ stub RollbackComplete @ stub RollbackEnlistment -@ stub RollbackTransaction +@ stdcall RollbackTransaction(ptr) @ stub RollbackTransactionAsync @ stub RollforwardTransactionManager @ stub SetEnlistmentRecoveryInformation diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/mciqtz32/mciqtz.c wine-staging-1.7.36~ubuntu12.04.1/dlls/mciqtz32/mciqtz.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/mciqtz32/mciqtz.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/mciqtz32/mciqtz.c 2015-02-08 20:31:28.000000000 +0000 @@ -605,6 +605,7 @@ { WINE_MCIQTZ* wma; HRESULT hr; + DWORD ret = MCI_INTEGER_RETURNED; TRACE("(%04x, %08X, %p)\n", wDevID, dwFlags, lpParms); @@ -663,30 +664,33 @@ LONG state = State_Stopped; IMediaControl_GetState(wma->pmctrl, -1, &state); if (state == State_Stopped) - lpParms->dwReturn = MCI_MODE_STOP; + lpParms->dwReturn = MAKEMCIRESOURCE(MCI_MODE_STOP, MCI_MODE_STOP); else if (state == State_Running) { LONG code; LONG_PTR p1, p2; - lpParms->dwReturn = MCI_MODE_PLAY; + lpParms->dwReturn = MAKEMCIRESOURCE(MCI_MODE_PLAY, MCI_MODE_PLAY); do { hr = IMediaEvent_GetEvent(wma->mevent, &code, &p1, &p2, 0); if (hr == S_OK && code == EC_COMPLETE){ - lpParms->dwReturn = MCI_MODE_STOP; + lpParms->dwReturn = MAKEMCIRESOURCE(MCI_MODE_STOP, MCI_MODE_STOP); IMediaControl_Stop(wma->pmctrl); } } while (hr == S_OK); } else if (state == State_Paused) - lpParms->dwReturn = MCI_MODE_PAUSE; + lpParms->dwReturn = MAKEMCIRESOURCE(MCI_MODE_PAUSE, MCI_MODE_PAUSE); + ret = MCI_RESOURCE_RETURNED; break; } case MCI_STATUS_MEDIA_PRESENT: FIXME("MCI_STATUS_MEDIA_PRESENT not implemented yet\n"); return MCIERR_UNRECOGNIZED_COMMAND; case MCI_STATUS_TIME_FORMAT: - lpParms->dwReturn = wma->time_format; + lpParms->dwReturn = MAKEMCIRESOURCE(wma->time_format, + MCI_FORMAT_RETURN_BASE + wma->time_format); + ret = MCI_RESOURCE_RETURNED; break; case MCI_STATUS_READY: FIXME("MCI_STATUS_READY not implemented yet\n"); @@ -702,7 +706,7 @@ if (dwFlags & MCI_NOTIFY) mciDriverNotify(HWND_32(LOWORD(lpParms->dwCallback)), wDevID, MCI_NOTIFY_SUCCESSFUL); - return 0; + return ret; } /*************************************************************************** diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/mmdevapi/devenum.c wine-staging-1.7.36~ubuntu12.04.1/dlls/mmdevapi/devenum.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/mmdevapi/devenum.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/mmdevapi/devenum.c 2015-02-08 20:31:28.000000000 +0000 @@ -372,7 +372,17 @@ } if (flow != eCapture) - set_driver_prop_value(id, flow, &PKEY_AudioEndpoint_PhysicalSpeakers); + { + PROPVARIANT pv2; + + PropVariantInit(&pv2); + + /* make read-write by not overwriting if already set */ + if (FAILED(MMDevice_GetPropValue(id, flow, &PKEY_AudioEndpoint_PhysicalSpeakers, &pv2)) || pv2.vt != VT_UI4) + set_driver_prop_value(id, flow, &PKEY_AudioEndpoint_PhysicalSpeakers); + + PropVariantClear(&pv2); + } RegCloseKey(keyprop); } @@ -1459,8 +1469,17 @@ static HRESULT WINAPI MMDevPropStore_Commit(IPropertyStore *iface) { - FIXME("stub\n"); - return E_NOTIMPL; + MMDevPropStore *This = impl_from_IPropertyStore(iface); + TRACE("(%p)\n", iface); + + if (This->access != STGM_WRITE + && This->access != STGM_READWRITE) + return STG_E_ACCESSDENIED; + + /* Does nothing - for mmdevapi, the propstore values are written on SetValue, + * not on Commit. */ + + return S_OK; } static const IPropertyStoreVtbl MMDevPropVtbl = diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/mshtml/binding.h wine-staging-1.7.36~ubuntu12.04.1/dlls/mshtml/binding.h --- wine-staging-1.7.35~ubuntu12.04.1/dlls/mshtml/binding.h 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/mshtml/binding.h 2015-02-08 20:31:28.000000000 +0000 @@ -57,6 +57,7 @@ } nsChannel; typedef struct { + nsIInputStream *post_stream; WCHAR *headers; HGLOBAL post_data; ULONG post_data_len; @@ -133,7 +134,7 @@ nsresult on_start_uri_open(NSContainer*,nsIURI*,cpp_bool*) DECLSPEC_HIDDEN; HRESULT hlink_frame_navigate(HTMLDocument*,LPCWSTR,nsChannel*,DWORD,BOOL*) DECLSPEC_HIDDEN; HRESULT create_doc_uri(HTMLOuterWindow*,IUri*,nsWineURI**) DECLSPEC_HIDDEN; -HRESULT load_nsuri(HTMLOuterWindow*,nsWineURI*,nsChannelBSC*,DWORD) DECLSPEC_HIDDEN; +HRESULT load_nsuri(HTMLOuterWindow*,nsWineURI*,nsIInputStream*,nsChannelBSC*,DWORD) DECLSPEC_HIDDEN; HRESULT set_moniker(HTMLOuterWindow*,IMoniker*,IUri*,IBindCtx*,nsChannelBSC*,BOOL) DECLSPEC_HIDDEN; void prepare_for_binding(HTMLDocument*,IMoniker*,DWORD) DECLSPEC_HIDDEN; HRESULT super_navigate(HTMLOuterWindow*,IUri*,DWORD,const WCHAR*,BYTE*,DWORD) DECLSPEC_HIDDEN; diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/mshtml/htmldoc.c wine-staging-1.7.36~ubuntu12.04.1/dlls/mshtml/htmldoc.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/mshtml/htmldoc.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/mshtml/htmldoc.c 2015-02-08 20:31:28.000000000 +0000 @@ -1320,15 +1320,19 @@ static HRESULT WINAPI HTMLDocument_put_ondblclick(IHTMLDocument2 *iface, VARIANT v) { HTMLDocument *This = impl_from_IHTMLDocument2(iface); - FIXME("(%p)->(%s)\n", This, debugstr_variant(&v)); - return E_NOTIMPL; + + TRACE("(%p)->(%s)\n", This, debugstr_variant(&v)); + + return set_doc_event(This, EVENTID_DBLCLICK, &v); } static HRESULT WINAPI HTMLDocument_get_ondblclick(IHTMLDocument2 *iface, VARIANT *p) { HTMLDocument *This = impl_from_IHTMLDocument2(iface); - FIXME("(%p)->(%p)\n", This, p); - return E_NOTIMPL; + + TRACE("(%p)->(%p)\n", This, p); + + return get_doc_event(This, EVENTID_DBLCLICK, p); } static HRESULT WINAPI HTMLDocument_put_onkeyup(IHTMLDocument2 *iface, VARIANT v) diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/mshtml/htmlform.c wine-staging-1.7.36~ubuntu12.04.1/dlls/mshtml/htmlform.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/mshtml/htmlform.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/mshtml/htmlform.c 2015-02-08 20:31:28.000000000 +0000 @@ -384,14 +384,15 @@ { HTMLFormElement *This = impl_from_IHTMLFormElement(iface); HTMLOuterWindow *window = NULL, *this_window = NULL; + nsAString action_uri_str, target_str, method_str; nsIInputStream *post_stream; - nsAString action_uri_str, target_str; + BOOL is_post_submit = FALSE; IUri *uri; nsresult nsres; HRESULT hres; BOOL use_new_window; - TRACE("(%p)->()\n", This); + TRACE("(%p)\n", This); if(This->element.node.doc) { HTMLDocumentNode *doc = This->element.node.doc; @@ -413,11 +414,23 @@ return S_OK; } + nsAString_Init(&method_str, NULL); + nsres = nsIDOMHTMLFormElement_GetMethod(This->nsform, &method_str); + if(NS_SUCCEEDED(nsres)) { + const PRUnichar *method; + + static const PRUnichar postW[] = {'p','o','s','t',0}; + + nsAString_GetData(&method_str, &method); + TRACE("method is %s\n", debugstr_w(method)); + is_post_submit = !strcmpiW(method, postW); + } + nsAString_Finish(&method_str); + /* - * FIXME: We currently don't use our submit implementation for sub-windows because - * load_nsuri can't support post data. We should fix it. + * FIXME: We currently use our submit implementation for POST submit. We should always use it. */ - if(window && (!window->doc_obj || window->doc_obj->basedoc.window != window)) { + if(window && !is_post_submit) { nsres = nsIDOMHTMLFormElement_Submit(This->nsform); nsAString_Finish(&target_str); IHTMLWindow2_Release(&window->base.IHTMLWindow2_iface); diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/mshtml/htmlwindow.c wine-staging-1.7.36~ubuntu12.04.1/dlls/mshtml/htmlwindow.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/mshtml/htmlwindow.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/mshtml/htmlwindow.c 2015-02-08 20:31:28.000000000 +0000 @@ -932,6 +932,8 @@ IUri *uri; HRESULT hres; + static const WCHAR _selfW[] = {'_','s','e','l','f',0}; + TRACE("(%p)->(%s %s %s %x %p)\n", This, debugstr_w(url), debugstr_w(name), debugstr_w(features), replace, pomWindowResult); @@ -939,6 +941,23 @@ return E_UNEXPECTED; if(name && *name == '_') { + if(!strcmpW(name, _selfW)) { + if((features && *features) || replace) + FIXME("Unsupported arguments for _self target\n"); + + hres = IHTMLWindow2_navigate(&This->IHTMLWindow2_iface, url); + if(FAILED(hres)) + return hres; + + if(pomWindowResult) { + FIXME("Returning this window for _self target\n"); + *pomWindowResult = &This->IHTMLWindow2_iface; + IHTMLWindow2_AddRef(*pomWindowResult); + } + + return S_OK; + } + FIXME("Unsupported name %s\n", debugstr_w(name)); return E_NOTIMPL; } diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/mshtml/navigate.c wine-staging-1.7.36~ubuntu12.04.1/dlls/mshtml/navigate.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/mshtml/navigate.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/mshtml/navigate.c 2015-02-08 20:31:28.000000000 +0000 @@ -213,6 +213,8 @@ static void release_request_data(request_data_t *request_data) { + if(request_data->post_stream) + nsIInputStream_Release(request_data->post_stream); heap_free(request_data->headers); if(request_data->post_data) GlobalFree(request_data->post_data); @@ -822,6 +824,7 @@ static HRESULT read_post_data_stream(nsIInputStream *stream, BOOL contains_headers, struct list *headers_list, request_data_t *request_data) { + nsISeekableStream *seekable_stream; UINT64 available = 0; UINT32 data_len = 0; char *data, *post_data; @@ -906,6 +909,17 @@ post_data[data_len] = 0; request_data->post_data = post_data; request_data->post_data_len = data_len; + + nsres = nsIInputStream_QueryInterface(stream, &IID_nsISeekableStream, (void**)&seekable_stream); + assert(nsres == NS_OK); + + nsres = nsISeekableStream_Seek(seekable_stream, NS_SEEK_SET, 0); + assert(nsres == NS_OK); + + nsISeekableStream_Release(seekable_stream); + + nsIInputStream_AddRef(stream); + request_data->post_stream = stream; TRACE("post_data = %s\n", debugstr_an(request_data->post_data, request_data->post_data_len)); return S_OK; } @@ -2267,7 +2281,7 @@ if(FAILED(hres)) return hres; - hres = load_nsuri(window, nsuri, NULL, LOAD_FLAGS_NONE); + hres = load_nsuri(window, nsuri, request_data ? request_data->post_stream : NULL, NULL, LOAD_FLAGS_NONE); nsISupports_Release((nsISupports*)nsuri); return hres; } diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/mshtml/nsiface.idl wine-staging-1.7.36~ubuntu12.04.1/dlls/mshtml/nsiface.idl --- wine-staging-1.7.35~ubuntu12.04.1/dlls/mshtml/nsiface.idl 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/mshtml/nsiface.idl 2015-02-08 20:31:28.000000000 +0000 @@ -59,6 +59,8 @@ #define uint32_t UINT32 #define uint64_t UINT64 +#define char16_t PRUnichar + typedef uint64_t DOMTimeStamp; typedef uint32_t nsLoadFlags; typedef int64_t PRTime; @@ -150,7 +152,6 @@ typedef nsISupports nsIStyleSheet; typedef nsISupports nsIStyleRule; typedef nsISupports nsIDOMUserDataHandler; -typedef nsISupports nsIDocShellLoadInfo; typedef nsISupports nsISHEntry; typedef nsISupports nsIPresShell; typedef nsISupports nsIDocumentCharsetInfo; @@ -385,6 +386,24 @@ [ object, + uuid(8429d350-1040-4661-8b71-f2a6ba455980), + local +] +interface nsISeekableStream : nsISupports +{ + enum { + NS_SEEK_SET = 0, + NS_SEEK_CUR = 1, + NS_SEEK_END = 2 + }; + + nsresult Seek(int32_t whence, int64_t offset); + nsresult Tell(int64_t *_retval); + nsresult SetEOF(); +} + +[ + object, uuid(395fe045-7d18-4adb-a3fd-af98c8a1af11), local ] @@ -2731,6 +2750,27 @@ ] interface nsIProtocolHandler : nsISupports { + const unsigned long URI_STD = 0; + const unsigned long URI_NORELATIVE = (1<<0); + const unsigned long URI_NOAUTH = (1<<1); + const unsigned long ALLOWS_PROXY = (1<<2); + const unsigned long ALLOWS_PROXY_HTTP = (1<<3); + const unsigned long URI_INHERITS_SECURITY_CONTEXT = (1<<4); + const unsigned long URI_FORBIDS_AUTOMATIC_DOCUMENT_REPLACEMENT = (1<<5); + const unsigned long URI_LOADABLE_BY_ANYONE = (1<<6); + const unsigned long URI_DANGEROUS_TO_LOAD = (1<<7); + const unsigned long URI_IS_UI_RESOURCE = (1<<8); + const unsigned long URI_IS_LOCAL_FILE = (1<<9); + const unsigned long URI_LOADABLE_BY_SUBSUMERS = (1<<10); + const unsigned long URI_DOES_NOT_RETURN_DATA = (1<<11); + const unsigned long URI_IS_LOCAL_RESOURCE = (1<<12); + const unsigned long URI_OPENING_EXECUTES_SCRIPT = (1<<13); + const unsigned long URI_NON_PERSISTABLE = (1<<14); + const unsigned long URI_FORBIDS_COOKIE_ACCESS = (1<<15); + const unsigned long URI_CROSS_ORIGIN_NEEDS_WEBAPPS_PERM = (1<<16); + const unsigned long URI_SYNC_LOAD_IS_OK = (1<<17); + const unsigned long URI_SAFE_TO_LOAD_IN_SECURE_CONTEXT = (1<<18); + nsresult GetScheme(nsACString *aScheme); nsresult GetDefaultPort(int32_t *aDefaultPort); nsresult GetProtocolFlags(uint32_t *aProtocolFlags); @@ -3671,6 +3711,44 @@ } [ + object, + uuid(c8d3b1e1-565a-427e-9d68-b109910ce9b7), + local +] +interface nsIDocShellLoadInfo : nsISupports +{ + typedef int nsDocShellInfoLoadType; + + nsresult GetReferrer(nsIURI **aReferrer); + nsresult SetReferrer(nsIURI *aReferrer); + nsresult GetOwner(nsISupports **aOwner); + nsresult SetOwner(nsISupports *aOwner); + nsresult GetInheritOwner(bool *aInheritOwner); + nsresult SetInheritOwner(bool aInheritOwner); + nsresult GetOwnerIsExplicit(bool *aOwnerIsExplicit); + nsresult SetOwnerIsExplicit(bool aOwnerIsExplicit); + nsresult GetLoadType(nsDocShellInfoLoadType *aLoadType); + nsresult SetLoadType(nsDocShellInfoLoadType aLoadType); + nsresult GetSHEntry(nsISHEntry **aSHEntry); + nsresult SetSHEntry(nsISHEntry *aSHEntry); + nsresult GetTarget(char16_t **aTarget); + nsresult SetTarget(const char16_t * aTarget); + nsresult GetPostDataStream(nsIInputStream **aPostDataStream); + nsresult SetPostDataStream(nsIInputStream *aPostDataStream); + nsresult GetHeadersStream(nsIInputStream * *aHeadersStream); + nsresult SetHeadersStream(nsIInputStream *aHeadersStream); + nsresult GetSendReferrer(bool *aSendReferrer); + nsresult SetSendReferrer(bool aSendReferrer); + nsresult GetIsSrcdocLoad(bool *aIsSrcdocLoad); + nsresult GetSrcdocData(nsAString *aSrcdocData); + nsresult SetSrcdocData(const nsAString *aSrcdocData); + nsresult GetSourceDocShell(nsIDocShell * *aSourceDocShell); + nsresult SetSourceDocShell(nsIDocShell *aSourceDocShell); + nsresult GetBaseURI(nsIURI **aBaseURI); + nsresult SetBaseURI(nsIURI *aBaseURI); +} + +[ object, uuid(3646c915-df79-4500-8b57-c65ab9c3b39f), local diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/mshtml/nsio.c wine-staging-1.7.36~ubuntu12.04.1/dlls/mshtml/nsio.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/mshtml/nsio.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/mshtml/nsio.c 2015-02-08 20:31:28.000000000 +0000 @@ -268,8 +268,10 @@ return NS_OK; } -HRESULT load_nsuri(HTMLOuterWindow *window, nsWineURI *uri, nsChannelBSC *channelbsc, DWORD flags) +HRESULT load_nsuri(HTMLOuterWindow *window, nsWineURI *uri, nsIInputStream *post_stream, + nsChannelBSC *channelbsc, DWORD flags) { + nsIDocShellLoadInfo *load_info = NULL; nsIWebNavigation *web_navigation; nsIDocShell *doc_shell; HTMLDocumentNode *doc; @@ -288,14 +290,27 @@ return E_FAIL; } + if(post_stream) { + nsres = nsIDocShell_CreateLoadInfo(doc_shell, &load_info); + if(NS_FAILED(nsres)) { + nsIDocShell_Release(doc_shell); + return E_FAIL; + } + + nsres = nsIDocShellLoadInfo_SetPostDataStream(load_info, post_stream); + assert(nsres == NS_OK); + } + uri->channel_bsc = channelbsc; doc = window->base.inner_window->doc; doc->skip_mutation_notif = TRUE; - nsres = nsIDocShell_LoadURI(doc_shell, (nsIURI*)&uri->nsIFileURL_iface, NULL, flags, FALSE); + nsres = nsIDocShell_LoadURI(doc_shell, (nsIURI*)&uri->nsIFileURL_iface, load_info, flags, FALSE); if(doc == window->base.inner_window->doc) doc->skip_mutation_notif = FALSE; uri->channel_bsc = NULL; nsIDocShell_Release(doc_shell); + if(load_info) + nsIDocShellLoadInfo_Release(load_info); if(NS_FAILED(nsres)) { WARN("LoadURI failed: %08x\n", nsres); return E_FAIL; @@ -3622,18 +3637,48 @@ return nsINetUtil_ParseContentType(net_util, aTypeHeader, aCharset, aHadCharset, aContentType); } +static const char *debugstr_protocol_flags(UINT32 flags) +{ + switch(flags) { +#define X(f) case f: return #f + X(URI_STD); + X(URI_NORELATIVE); + X(URI_NOAUTH); + X(ALLOWS_PROXY); + X(ALLOWS_PROXY_HTTP); + X(URI_INHERITS_SECURITY_CONTEXT); + X(URI_FORBIDS_AUTOMATIC_DOCUMENT_REPLACEMENT); + X(URI_LOADABLE_BY_ANYONE); + X(URI_DANGEROUS_TO_LOAD); + X(URI_IS_UI_RESOURCE); + X(URI_IS_LOCAL_FILE); + X(URI_LOADABLE_BY_SUBSUMERS); + X(URI_DOES_NOT_RETURN_DATA); + X(URI_IS_LOCAL_RESOURCE); + X(URI_OPENING_EXECUTES_SCRIPT); + X(URI_NON_PERSISTABLE); + X(URI_FORBIDS_COOKIE_ACCESS); + X(URI_CROSS_ORIGIN_NEEDS_WEBAPPS_PERM); + X(URI_SYNC_LOAD_IS_OK); + X(URI_SAFE_TO_LOAD_IN_SECURE_CONTEXT); +#undef X + default: + return wine_dbg_sprintf("%08x", flags); + } +} + static nsresult NSAPI nsNetUtil_ProtocolHasFlags(nsINetUtil *iface, nsIURI *aURI, UINT32 aFlags, cpp_bool *_retval) { - TRACE("()\n"); + TRACE("(%p %s %p)\n", aURI, debugstr_protocol_flags(aFlags), _retval); return nsINetUtil_ProtocolHasFlags(net_util, aURI, aFlags, _retval); } static nsresult NSAPI nsNetUtil_URIChainHasFlags(nsINetUtil *iface, nsIURI *aURI, UINT32 aFlags, cpp_bool *_retval) { - TRACE("(%p %08x %p)\n", aURI, aFlags, _retval); + TRACE("(%p %s %p)\n", aURI, debugstr_protocol_flags(aFlags), _retval); - if(aFlags == (1<<11)) { + if(aFlags == URI_DOES_NOT_RETURN_DATA) { *_retval = FALSE; return NS_OK; } diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/mshtml/persist.c wine-staging-1.7.36~ubuntu12.04.1/dlls/mshtml/persist.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/mshtml/persist.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/mshtml/persist.c 2015-02-08 20:31:28.000000000 +0000 @@ -398,7 +398,7 @@ remove_target_tasks(window->base.inner_window->task_magic); abort_window_bindings(window->base.inner_window); - hres = load_nsuri(window, nsuri, bscallback, LOAD_FLAGS_BYPASS_CACHE); + hres = load_nsuri(window, nsuri, NULL, bscallback, LOAD_FLAGS_BYPASS_CACHE); nsISupports_Release((nsISupports*)nsuri); /* FIXME */ if(SUCCEEDED(hres)) { hres = create_pending_window(window, bscallback); diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/mshtml/tests/nav_test.html wine-staging-1.7.36~ubuntu12.04.1/dlls/mshtml/tests/nav_test.html --- wine-staging-1.7.35~ubuntu12.04.1/dlls/mshtml/tests/nav_test.html 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/mshtml/tests/nav_test.html 2015-02-08 20:31:28.000000000 +0000 @@ -5,7 +5,7 @@ return external.ok(b, m); } -function nav_back_test() { +function nav_parent_test() { external.trace("Running _parent navigation tests..."); var iframe = document.getElementById("testframe"); @@ -29,7 +29,7 @@ } function window_navigate_test() { - external.trace("Runnint window.navigate() tests..."); + external.trace("Running window.navigate() tests..."); var iframe = document.getElementById("testframe"); @@ -43,6 +43,23 @@ iframe.contentWindow.navigate("about:blank"); } +function window_open_self_test() { + external.trace("Running window.open(_self) tests..."); + + var iframe = document.getElementById("testframe"); + var iframe_window = iframe.contentWindow; + + iframe.onload = function() { + iframe.onload = null; + var href = iframe.contentWindow.location.href; + ok(/.*blank.html\?window_open_self/.test(href), "Unexpected href " + href); + ok(iframe.contentWindow === iframe_window, "iframe.contentWindow !== iframe_window"); + next_test(); + } + + iframe_window.open("blank.html?window_open_self", "_self"); +} + function detached_src_test() { var iframe = document.createElement("iframe"); var onload_called = false; @@ -58,8 +75,9 @@ } var tests = [ - nav_back_test, + nav_parent_test, window_navigate_test, + window_open_self_test, detached_src_test, function() { external.reportSuccess(); } ]; diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/msi/msi.spec wine-staging-1.7.36~ubuntu12.04.1/dlls/msi/msi.spec --- wine-staging-1.7.35~ubuntu12.04.1/dlls/msi/msi.spec 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/msi/msi.spec 2015-02-08 20:31:28.000000000 +0000 @@ -284,8 +284,8 @@ 288 stub MsiSetOfflineContextW 289 stdcall MsiEnumComponentsExA(str long long ptr ptr ptr ptr) 290 stdcall MsiEnumComponentsExW(wstr long long ptr ptr ptr ptr) -291 stub MsiEnumClientsExA -292 stub MsiEnumClientsExW +291 stdcall MsiEnumClientsExA(str str long long ptr ptr ptr ptr) +292 stdcall MsiEnumClientsExW(wstr wstr long long ptr ptr ptr ptr) 293 stub MsiGetComponentPathExA 294 stub MsiGetComponentPathExW 295 stub QueryInstanceCount diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/msi/registry.c wine-staging-1.7.36~ubuntu12.04.1/dlls/msi/registry.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/msi/registry.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/msi/registry.c 2015-02-08 20:31:28.000000000 +0000 @@ -1503,6 +1503,24 @@ return r; } +UINT WINAPI MsiEnumClientsExA(LPCSTR component, LPCSTR usersid, DWORD ctx, DWORD index, + CHAR installed_product[GUID_SIZE], + MSIINSTALLCONTEXT *installed_ctx, LPSTR sid, LPDWORD sid_len) +{ + FIXME("%s, %s, %u, %u, %p, %p, %p, %p\n", debugstr_a(component), debugstr_a(usersid), + ctx, index, installed_product, installed_ctx, sid, sid_len); + return ERROR_ACCESS_DENIED; +} + +UINT WINAPI MsiEnumClientsExW(LPCWSTR component, LPCWSTR usersid, DWORD ctx, DWORD index, + WCHAR installed_product[GUID_SIZE], + MSIINSTALLCONTEXT *installed_ctx, LPWSTR sid, LPDWORD sid_len) +{ + FIXME("%s, %s, %u, %u, %p, %p, %p, %p\n", debugstr_w(component), debugstr_w(usersid), + ctx, index, installed_product, installed_ctx, sid, sid_len); + return ERROR_ACCESS_DENIED; +} + static UINT MSI_EnumComponentQualifiers( LPCWSTR szComponent, DWORD iIndex, awstring *lpQualBuf, LPDWORD pcchQual, awstring *lpAppBuf, LPDWORD pcchAppBuf ) diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/msvcp71/msvcp71.spec wine-staging-1.7.36~ubuntu12.04.1/dlls/msvcp71/msvcp71.spec --- wine-staging-1.7.35~ubuntu12.04.1/dlls/msvcp71/msvcp71.spec 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/msvcp71/msvcp71.spec 2015-02-08 20:31:28.000000000 +0000 @@ -3832,8 +3832,8 @@ @ thiscall -arch=win32 ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IPBDI@Z(ptr long ptr long) basic_string_char_insert_cstr_len @ cdecl -arch=win64 ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KPEBD@Z(ptr long str) basic_string_char_insert_cstr @ thiscall -arch=win32 ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXViterator@12@ID@Z(ptr ptr long long) basic_string_char_insert_iter_chn -@ thiscall -arch=win32 ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXViterator@12@PBD1@Z(ptr ptr ptr ptr) basic_string_wchar_insert_iter_ptr_ptr -@ thiscall -arch=win32 ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXViterator@12@Vconst_iterator@12@1@Z(ptr ptr ptr ptr) basic_string_wchar_insert_iter_beg_end +@ thiscall -arch=win32 ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXViterator@12@PBD1@Z(ptr ptr ptr ptr) basic_string_char_insert_iter_ptr_ptr +@ thiscall -arch=win32 ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXViterator@12@Vconst_iterator@12@1@Z(ptr ptr ptr ptr) basic_string_char_insert_iter_beg_end @ thiscall -arch=win32 ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AViterator@12@V312@@Z(ptr ptr ptr) basic_string_wchar_insert_iter_null @ thiscall -arch=win32 ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AViterator@12@V312@G@Z(ptr ptr ptr long) basic_string_wchar_insert_iter_ch @ thiscall -arch=win32 ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IABV12@@Z(ptr long ptr) basic_string_wchar_insert diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/msvcp90/string.c wine-staging-1.7.36~ubuntu12.04.1/dlls/msvcp90/string.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/msvcp90/string.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/msvcp90/string.c 2015-02-08 20:31:28.000000000 +0000 @@ -4138,6 +4138,15 @@ return this; } +static basic_string_char* basic_string_char_replace_iter_ptr_ptr(basic_string_char *this, + basic_string_char_iterator beg, basic_string_char_iterator end, + const char *res_beg, const char *res_end) +{ + basic_string_char_iterator begin = { basic_string_char_ptr(this) }; + return basic_string_char_replace_cstr_len(this, basic_string_char__Pdif(beg, begin), + basic_string_char__Pdif(end, beg), res_beg, res_end-res_beg); +} + /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Viterator@12@0PBD1@Z */ /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_Ptrit@DHPADAADPADAAD@2@0PBD1@Z */ DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_beg_end, 20) @@ -4205,6 +4214,22 @@ return basic_string_char_insert_iter_ch(this, ret, where, 0); } +/* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXViterator@12@PBD1@Z */ +DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_ptr_ptr, 16) +void __thiscall basic_string_char_insert_iter_ptr_ptr(basic_string_char *this, + basic_string_char_iterator where, const char *beg, const char *end) +{ + basic_string_char_replace_iter_ptr_ptr(this, where, where, beg, end); +} + +/* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXViterator@12@PBD1@Z */ +DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_beg_end, 16) +void __thiscall basic_string_char_insert_iter_beg_end(basic_string_char *this, + basic_string_char_iterator where, basic_string_char_iterator beg, basic_string_char_iterator end) +{ + basic_string_char_replace_iter_ptr_ptr(this, where, where, beg.pos, end.pos); +} + /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AViterator@12@XZ */ /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AVconst_iterator@12@XZ */ /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$reverse_iterator@Viterator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@XZ */ @@ -4360,8 +4385,6 @@ return this; } -/* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0PB_W1@Z */ -/* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0PEB_W1@Z */ static basic_string_wchar* basic_string_wchar_replace_iter_ptr_ptr(basic_string_wchar *this, basic_string_wchar_iterator beg, basic_string_wchar_iterator end, const wchar_t *res_beg, const wchar_t *res_end) diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/msvcp90/tests/ios.c wine-staging-1.7.36~ubuntu12.04.1/dlls/msvcp90/tests/ios.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/msvcp90/tests/ios.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/msvcp90/tests/ios.c 2015-02-08 20:31:28.000000000 +0000 @@ -2122,22 +2122,83 @@ static void test_ostream_print_complex_float(void) { - static const char complex_float_str[] = "(3.14,1.57)"; - basic_stringstream_char ss; basic_string_char pstr; const char *str; - complex_float val = {3.14, 1.57}; - - call_func1(p_basic_stringstream_char_ctor, &ss); - p_basic_ostream_char_print_complex_float(&ss.base.base2, &val); - - call_func2(p_basic_stringstream_char_str_get, &ss, &pstr); - str = call_func1(p_basic_string_char_cstr, &pstr); - ok(!strcmp(complex_float_str, str), "str = %s\n", str); - - call_func1(p_basic_string_char_dtor, &pstr); - call_func1(p_basic_stringstream_char_vbase_dtor, &ss); + locale lcl, retlcl; + int i; + struct _test_print_complex_float { + complex_float val; + const char *lcl; + streamsize prec; /* set to -1 for default */ + IOSB_fmtflags fmtfl; /* FMTFLAG_scientific, FMTFLAG_fixed */ + const char *str; + } tests[] = { + /* simple cases */ + { {0.123,-4.5}, NULL, -1, 0, "(0.123,-4.5)" }, + { {0.123,-4.5}, NULL, 6, 0, "(0.123,-4.5)" }, + { {0.123,-4.5}, NULL, 0, 0, "(0.123,-4.5)" }, + + /*{ fixed format */ + { {0.123,-4.6}, NULL, 0, FMTFLAG_fixed, "(0,-5)" }, + { {0.123,-4.6}, NULL, -1, FMTFLAG_fixed, "(0.123000,-4.600000)" }, + { {0.123,-4.6}, NULL, 6, FMTFLAG_fixed, "(0.123000,-4.600000)" }, + + /*{ scientific format */ + { {123456.789,-4.5678}, NULL, -1, FMTFLAG_scientific, "(1.234568e+005,-4.567800e+000)" }, + { {123456.789,-4.5678}, NULL, 0, FMTFLAG_scientific, "(1.234568e+005,-4.567800e+000)" }, + { {123456.789,-4.5678}, NULL, 9, FMTFLAG_scientific, "(1.234567891e+005,-4.567800045e+000)" }, + { {123456.789,-4.5678}, "German", 9, FMTFLAG_scientific, "(1,234567891e+005,-4,567800045e+000)" }, + + /*{ different locales */ + { {0.123,-4.5}, "C", -1, 0, "(0.123,-4.5)" }, + { {0.123,-4.5}, "English", -1, 0, "(0.123,-4.5)" }, + { {0.123,-4.5}, "German", -1, 0, "(0,123,-4,5)" }, + + { {123456.789,-4.5678}, "C", -1, 0, "(123457,-4.5678)" }, + { {123456.789,-4.5678}, "English", -1, 0, "(123,457,-4.5678)" }, + { {123456.789,-4.5678}, "German", -1, 0, "(123.457,-4,5678)" }, + + /*{ signs and exponents */ + { { 1.0e-9,-4.1e-3}, NULL, -1, 0, "(1e-009,-0.0041)" }, + { { 1.0e-9,-4.1e-3}, NULL, 9, 0, "(9.99999972e-010,-0.00410000002)" }, + { {-1.0e9,-4.1e-3}, NULL, -1, 0, "(-1e+009,-0.0041)" }, + { {-1.0e9,-4.1e-3}, NULL, 9, 0, "(-1e+009,-0.00410000002)" }, + + { { 1.0e-9,0}, NULL, 0, FMTFLAG_fixed, "(0,0)" }, + { { 1.0e-9,0}, NULL, 6, FMTFLAG_fixed, "(0.000000,0.000000)" }, + { { 1.0e-9,0}, NULL, 9, FMTFLAG_fixed, "(0.000000001,0.000000000)" }, + { {-1.0e9, 0}, NULL, 0, FMTFLAG_fixed, "(-1000000000,0)" }, + { {-1.0e9, 0}, NULL, 6, FMTFLAG_fixed, "(-1000000000.000000,0.000000)" }, + + { {-1.23456789e9,2.3456789e9}, NULL, 0, 0, "(-1.23457e+009,2.34568e+009)" }, + { {-1.23456789e9,2.3456789e9}, NULL, 0, FMTFLAG_fixed, "(-1234567936,2345678848)" }, + { {-1.23456789e9,2.3456789e9}, NULL, 6, FMTFLAG_fixed, "(-1234567936.000000,2345678848.000000)" }, + { {-1.23456789e-9,2.3456789e9}, NULL, 6, FMTFLAG_fixed, "(-0.000000,2345678848.000000)" }, + { {-1.23456789e-9,2.3456789e9}, NULL, 9, FMTFLAG_fixed, "(-0.000000001,2345678848.000000000)" } + }; + + for(i=0; i_flag & (MSVCRT__IOMYBUF | MSVCRT__USERBUF)) { + if((file->_flag & (MSVCRT__IOREAD|MSVCRT__IOWRT)) == MSVCRT__IOWRT && + file->_flag & (MSVCRT__IOMYBUF|MSVCRT__USERBUF)) { int cnt=file->_ptr-file->_base; if(cnt>0 && MSVCRT__write(file->_file, file->_base, cnt) != cnt) { file->_flag |= MSVCRT__IOERR; return MSVCRT_EOF; } - file->_ptr=file->_base; - file->_cnt=0; - } - return 0; + + if(file->_flag & MSVCRT__IORW) + file->_flag &= ~MSVCRT__IOWRT; + } + + file->_ptr=file->_base; + file->_cnt=0; + return 0; } /********************************************************************* @@ -964,23 +969,17 @@ */ int CDECL MSVCRT__fflush_nolock(MSVCRT_FILE* file) { + int res; + if(!file) { msvcrt_flush_all_buffers(MSVCRT__IOWRT); - } else if(file->_flag & MSVCRT__IOWRT) { - int res; - - res = msvcrt_flush_buffer(file); - if(!res && (file->_flag & MSVCRT__IOCOMMIT)) - res = MSVCRT__commit(file->_file) ? MSVCRT_EOF : 0; - - return res; - } else if(file->_flag & MSVCRT__IOREAD) { - file->_cnt = 0; - file->_ptr = file->_base; - return 0; } - return 0; + + res = msvcrt_flush_buffer(file); + if(!res && (file->_flag & MSVCRT__IOCOMMIT)) + res = MSVCRT__commit(file->_file) ? MSVCRT_EOF : 0; + return res; } /********************************************************************* @@ -1333,18 +1332,13 @@ { int ret; - /* Flush output if needed */ - if(file->_flag & MSVCRT__IOWRT) - msvcrt_flush_buffer(file); - if(whence == SEEK_CUR && file->_flag & MSVCRT__IOREAD ) { whence = SEEK_SET; offset += MSVCRT__ftelli64_nolock(file); } - /* Discard buffered input */ - file->_cnt = 0; - file->_ptr = file->_base; + /* Flush output if needed */ + msvcrt_flush_buffer(file); /* Reset direction of i/o */ if(file->_flag & MSVCRT__IORW) { file->_flag &= ~(MSVCRT__IOREAD|MSVCRT__IOWRT); @@ -3806,6 +3800,7 @@ res = msvcrt_flush_buffer(file); if(res) return res; + file->_flag |= MSVCRT__IOWRT; file->_cnt=file->_bufsiz; } *file->_ptr++ = c; @@ -4369,14 +4364,8 @@ int ret; MSVCRT__lock_file(file); - /* Note that all this has been lifted 'as is' from fseek */ - if(file->_flag & MSVCRT__IOWRT) - msvcrt_flush_buffer(file); + msvcrt_flush_buffer(file); - /* Discard buffered input */ - file->_cnt = 0; - file->_ptr = file->_base; - /* Reset direction of i/o */ if(file->_flag & MSVCRT__IORW) { file->_flag &= ~(MSVCRT__IOREAD|MSVCRT__IOWRT); diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/msvcrt/msvcrt.h wine-staging-1.7.36~ubuntu12.04.1/dlls/msvcrt/msvcrt.h --- wine-staging-1.7.35~ubuntu12.04.1/dlls/msvcrt/msvcrt.h 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/msvcrt/msvcrt.h 2015-02-08 20:31:28.000000000 +0000 @@ -47,7 +47,7 @@ #define MSVCRT_I64_MAX (((__int64)0x7fffffff << 32) | 0xffffffff) #define MSVCRT_I64_MIN (-MSVCRT_I64_MAX-1) #define MSVCRT_UI64_MAX (((unsigned __int64)0xffffffff << 32) | 0xffffffff) -#define MSVCRT_MB_LEN_MAX 2 +#define MSVCRT_MB_LEN_MAX 5 #ifdef _WIN64 #define MSVCRT_SIZE_MAX MSVCRT_UI64_MAX #else diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/msvcrt/msvcrt.spec wine-staging-1.7.36~ubuntu12.04.1/dlls/msvcrt/msvcrt.spec --- wine-staging-1.7.35~ubuntu12.04.1/dlls/msvcrt/msvcrt.spec 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/msvcrt/msvcrt.spec 2015-02-08 20:31:28.000000000 +0000 @@ -641,8 +641,8 @@ # stub _iswgraph_l(long ptr) # stub _iswlower_l(long ptr) # stub _iswprint_l(long ptr) -# stub _iswpunct_l(long ptr) -# stub _iswspace_l(long ptr) +@ cdecl _iswpunct_l(long ptr) MSVCRT__iswpunct_l +@ cdecl _iswspace_l(long ptr) MSVCRT__iswspace_l # stub _iswupper_l(long ptr) # stub _iswxdigit_l(long ptr) @ cdecl _isxdigit_l(long ptr) MSVCRT__isxdigit_l diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/msvcrt/tests/file.c wine-staging-1.7.36~ubuntu12.04.1/dlls/msvcrt/tests/file.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/msvcrt/tests/file.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/msvcrt/tests/file.c 2015-02-08 20:31:28.000000000 +0000 @@ -2244,6 +2244,7 @@ char *inbuffer; char *outbuffer; int size, fd; + fpos_t pos, pos2; fd = fileno(file); inbuffer = calloc(bufsize + 1, 1); @@ -2275,6 +2276,19 @@ fseek(file, 0, SEEK_SET); ok(fread(inbuffer, 1, bufsize, file) == bufsize, "read failed\n"); ok(memcmp(outbuffer, inbuffer, bufsize) != 0, "unexpected flush by %d/2 byte double write\n", bufsize); + + ok(!fseek(file, -1, SEEK_END), "fseek failed\n"); + ok(!fgetpos(file, &pos), "fgetpos failed\n"); + ok(fread(inbuffer, 1, 1, file) == 1, "fread failed\n"); + ok(file->_flag & _IOREAD, "file->_flag = %x\n", file->_flag); + ok(!file->_cnt, "file->_cnt = %d\n", file->_cnt); + ok(file->_ptr != file->_base, "file->_ptr == file->_base\n"); + ok(fwrite(outbuffer, 1, bufsize, file), "fwrite failed\n"); + ok(file->_flag & _IOREAD, "file->_flag = %x\n", file->_flag); + ok(!file->_cnt, "file->_cnt = %d\n", file->_cnt); + ok(file->_ptr == file->_base, "file->_ptr == file->_base\n"); + ok(!fgetpos(file, &pos2), "fgetpos failed\n"); + ok(pos+bufsize+1 == pos2, "pos = %d (%d)\n", (int)pos, (int)pos2); free(inbuffer); free(outbuffer); } diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/msvcrt/wcs.c wine-staging-1.7.36~ubuntu12.04.1/dlls/msvcrt/wcs.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/msvcrt/wcs.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/msvcrt/wcs.c 2015-02-08 20:31:28.000000000 +0000 @@ -1474,7 +1474,7 @@ { int len; - MSVCRT__wctomb_s_l(&len, dst, dst ? 6 : 0, ch, locale); + MSVCRT__wctomb_s_l(&len, dst, dst ? MSVCRT_MB_LEN_MAX : 0, ch, locale); return len; } @@ -1588,6 +1588,14 @@ } /********************************************************************* + * _iswpunct_l (MSVCRT.@) + */ +INT CDECL MSVCRT__iswpunct_l( MSVCRT_wchar_t wc, MSVCRT__locale_t locale ) +{ + return ispunctW( wc ); +} + +/********************************************************************* * iswpunct (MSVCRT.@) */ INT CDECL MSVCRT_iswpunct( MSVCRT_wchar_t wc ) @@ -1596,6 +1604,14 @@ } /********************************************************************* + * _iswspace_l (MSVCRT.@) + */ +INT CDECL MSVCRT__iswspace_l( MSVCRT_wchar_t wc, MSVCRT__locale_t locale ) +{ + return isspaceW( wc ); +} + +/********************************************************************* * iswspace (MSVCRT.@) */ INT CDECL MSVCRT_iswspace( MSVCRT_wchar_t wc ) diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/ntdll/ntdll.spec wine-staging-1.7.36~ubuntu12.04.1/dlls/ntdll/ntdll.spec --- wine-staging-1.7.35~ubuntu12.04.1/dlls/ntdll/ntdll.spec 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/ntdll/ntdll.spec 2015-02-08 20:31:28.000000000 +0000 @@ -146,7 +146,7 @@ @ stdcall NtCreateTimer(ptr long ptr long) @ stub NtCreateToken # @ stub NtCreateWaitablePort -@ stdcall -arch=win32,arm64 NtCurrentTeb() +@ stdcall NtCurrentTeb() # @ stub NtDebugActiveProcess # @ stub NtDebugContinue @ stdcall NtDelayExecution(long ptr) diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/ntdll/signal_x86_64.c wine-staging-1.7.36~ubuntu12.04.1/dlls/ntdll/signal_x86_64.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/ntdll/signal_x86_64.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/ntdll/signal_x86_64.c 2015-02-08 20:31:28.000000000 +0000 @@ -236,6 +236,39 @@ #define ERROR_sig(context) ((context)->uc_mcontext.__gregs[_REG_ERR]) #define FPU_sig(context) ((XMM_SAVE_AREA32 *)((context)->uc_mcontext.__fpregs)) +#elif defined (__APPLE__) +static pthread_key_t teb_key; + +#define RAX_sig(context) ((context)->uc_mcontext->__ss.__rax) +#define RBX_sig(context) ((context)->uc_mcontext->__ss.__rbx) +#define RCX_sig(context) ((context)->uc_mcontext->__ss.__rcx) +#define RDX_sig(context) ((context)->uc_mcontext->__ss.__rdx) +#define RSI_sig(context) ((context)->uc_mcontext->__ss.__rsi) +#define RDI_sig(context) ((context)->uc_mcontext->__ss.__rdi) +#define RBP_sig(context) ((context)->uc_mcontext->__ss.__rbp) +#define R8_sig(context) ((context)->uc_mcontext->__ss.__r8) +#define R9_sig(context) ((context)->uc_mcontext->__ss.__r9) +#define R10_sig(context) ((context)->uc_mcontext->__ss.__r10) +#define R11_sig(context) ((context)->uc_mcontext->__ss.__r11) +#define R12_sig(context) ((context)->uc_mcontext->__ss.__r12) +#define R13_sig(context) ((context)->uc_mcontext->__ss.__r13) +#define R14_sig(context) ((context)->uc_mcontext->__ss.__r14) +#define R15_sig(context) ((context)->uc_mcontext->__ss.__r15) + +#define CS_sig(context) ((context)->uc_mcontext->__ss.__cs) +#define FS_sig(context) ((context)->uc_mcontext->__ss.__fs) +#define GS_sig(context) ((context)->uc_mcontext->__ss.__gs) + +#define EFL_sig(context) ((context)->uc_mcontext->__ss.__rflags) + +#define RIP_sig(context) (*((unsigned long*)&(context)->uc_mcontext->__ss.__rip)) +#define RSP_sig(context) (*((unsigned long*)&(context)->uc_mcontext->__ss.__rsp)) + +#define TRAP_sig(context) ((context)->uc_mcontext->__es.__trapno) +#define ERROR_sig(context) ((context)->uc_mcontext->__es.__err) + +#define FPU_sig(context) ((XMM_SAVE_AREA32 *)&(context)->uc_mcontext->__fs.__fpu_fcw) + #else #error You must define the signal context functions for your platform #endif @@ -2506,6 +2539,12 @@ NtFreeVirtualMemory( NtCurrentProcess(), (void **)&teb, &size, MEM_RELEASE ); } +#ifdef __APPLE__ +static void init_teb_key(void) +{ + pthread_key_create( &teb_key, NULL ); +} +#endif /********************************************************************** * signal_init_thread @@ -2515,12 +2554,20 @@ const WORD fpu_cw = 0x27f; stack_t ss; +#ifdef __APPLE__ + static pthread_once_t init_once = PTHREAD_ONCE_INIT; +#endif + #if defined __linux__ arch_prctl( ARCH_SET_GS, teb ); #elif defined (__FreeBSD__) || defined (__FreeBSD_kernel__) amd64_set_gsbase( teb ); #elif defined(__NetBSD__) sysarch( X86_64_SET_GSBASE, &teb ); +#elif defined (__APPLE__) + /* FIXME: Actually setting %gs needs support from the OS */ + pthread_once( &init_once, init_teb_key ); + pthread_setspecific( teb_key, teb ); #else # error Please define setting %gs for your architecture #endif @@ -3425,4 +3472,19 @@ */ __ASM_STDCALL_FUNC( DbgUserBreakPoint, 0, "int $3; ret") +/********************************************************************** + * NtCurrentTeb (NTDLL.@) + * + * FIXME: This isn't exported from NTDLL on real NT. This should be + * removed if and when we can set the GSBASE MSR on Mac OS X. + */ +#ifdef __APPLE__ +TEB * WINAPI NtCurrentTeb(void) +{ + return pthread_getspecific( teb_key ); +} +#else +__ASM_STDCALL_FUNC( NtCurrentTeb, 0, ".byte 0x65\n\tmovq 0x30,%rax\n\tret" ) +#endif + #endif /* __x86_64__ */ diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/ntdll/thread.c wine-staging-1.7.36~ubuntu12.04.1/dlls/ntdll/thread.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/ntdll/thread.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/ntdll/thread.c 2015-02-08 20:31:28.000000000 +0000 @@ -189,9 +189,9 @@ #include #include -static ULONG get_dyld_image_info_addr(void) +static ULONG64 get_dyld_image_info_addr(void) { - ULONG ret = 0; + ULONG64 ret = 0; #ifdef TASK_DYLD_INFO struct task_dyld_info dyld_info; mach_msg_type_number_t size = TASK_DYLD_INFO_COUNT; @@ -219,6 +219,9 @@ NTSTATUS status; struct ntdll_thread_data *thread_data; static struct debug_info debug_info; /* debug info for initial thread */ +#ifdef __APPLE__ + ULONG64 dyld_image_info; +#endif virtual_init(); @@ -263,7 +266,18 @@ InitializeListHead( &ldr.InMemoryOrderModuleList ); InitializeListHead( &ldr.InInitializationOrderModuleList ); #ifdef __APPLE__ - peb->Reserved[0] = get_dyld_image_info_addr(); + dyld_image_info = get_dyld_image_info_addr(); +#ifdef __LP64__ +#ifdef WORDS_BIGENDIAN + peb->Reserved[1] = dyld_image_info & 0xFFFFFFFF; + peb->Reserved[0] = dyld_image_info >> 32; +#else + peb->Reserved[0] = dyld_image_info & 0xFFFFFFFF; + peb->Reserved[1] = dyld_image_info >> 32; +#endif +#else + peb->Reserved[0] = dyld_image_info & 0xFFFFFFFF; +#endif #endif /* allocate and initialize the initial TEB */ diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/ntoskrnl.exe/ntoskrnl.c wine-staging-1.7.36~ubuntu12.04.1/dlls/ntoskrnl.exe/ntoskrnl.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/ntoskrnl.exe/ntoskrnl.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/ntoskrnl.exe/ntoskrnl.c 2015-02-08 20:31:28.000000000 +0000 @@ -2022,3 +2022,26 @@ csq, insert_irp, remove_irp, peek_irp, acquire_lock, release_lock, complete_irp); return STATUS_SUCCESS; } + +/***************************************************** + * ExInterlockedRemoveHeadList (NTOSKRNL.EXE.@) + */ +PLIST_ENTRY WINAPI ExInterlockedRemoveHeadList(PLIST_ENTRY head, PKSPIN_LOCK lock) +{ + FIXME("(%p %p) stub\n", head, lock); + return NULL; +} + +/*********************************************************************** + * ExfInterlockedRemoveHeadList (NTOSKRNL.EXE.@) + */ +#ifdef DEFINE_FASTCALL2_ENTRYPOINT +DEFINE_FASTCALL2_ENTRYPOINT( ExfInterlockedRemoveHeadList ) +PLIST_ENTRY WINAPI __regs_ExfInterlockedRemoveHeadList(PLIST_ENTRY head, PKSPIN_LOCK lock) +#else +PLIST_ENTRY WINAPI ExfInterlockedRemoveHeadList(PLIST_ENTRY head, PKSPIN_LOCK lock) +#endif +{ + FIXME("(%p %p) stub\n", head, lock); + return ExInterlockedRemoveHeadList( head, lock ); +} diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/ntoskrnl.exe/ntoskrnl.exe.spec wine-staging-1.7.36~ubuntu12.04.1/dlls/ntoskrnl.exe/ntoskrnl.exe.spec --- wine-staging-1.7.35~ubuntu12.04.1/dlls/ntoskrnl.exe/ntoskrnl.exe.spec 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/ntoskrnl.exe/ntoskrnl.exe.spec 2015-02-08 20:31:28.000000000 +0000 @@ -22,7 +22,7 @@ @ stub ExfInterlockedInsertTailList @ stub ExfInterlockedPopEntryList @ stub ExfInterlockedPushEntryList -@ stub ExfInterlockedRemoveHeadList +@ stdcall -norelay ExfInterlockedRemoveHeadList(ptr ptr) @ stub ExfReleasePushLock @ stub Exfi386InterlockedDecrementLong @ stub Exfi386InterlockedExchangeUlong @@ -153,7 +153,7 @@ @ stub ExInterlockedInsertTailList @ stub ExInterlockedPopEntryList @ stub ExInterlockedPushEntryList -@ stub ExInterlockedRemoveHeadList +@ stdcall ExInterlockedRemoveHeadList(ptr ptr) @ stub ExIsProcessorFeaturePresent @ stub ExIsResourceAcquiredExclusiveLite @ stub ExIsResourceAcquiredSharedLite diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/oleaut32/oleaut32.spec wine-staging-1.7.36~ubuntu12.04.1/dlls/oleaut32/oleaut32.spec --- wine-staging-1.7.35~ubuntu12.04.1/dlls/oleaut32/oleaut32.spec 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/oleaut32/oleaut32.spec 2015-02-08 20:31:28.000000000 +0000 @@ -391,7 +391,7 @@ 420 stdcall OleCreateFontIndirect(ptr ptr ptr) 421 stdcall OleTranslateColor(long long long) 422 stub OleLoadPictureFile -423 stub OleSavePictureFile +423 stdcall OleSavePictureFile(ptr wstr) 424 stdcall OleLoadPicturePath(wstr ptr long long ptr ptr) 425 stdcall VarUI4FromI8(int64 ptr) 426 stdcall VarUI4FromUI8(int64 ptr) diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/oleaut32/olepicture.c wine-staging-1.7.36~ubuntu12.04.1/dlls/oleaut32/olepicture.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/oleaut32/olepicture.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/oleaut32/olepicture.c 2015-02-08 20:31:28.000000000 +0000 @@ -2302,6 +2302,15 @@ } /*********************************************************************** + * OleSavePictureFile (OLEAUT32.423) + */ +HRESULT WINAPI OleSavePictureFile(IDispatch *picture, BSTR filename) +{ + FIXME("(%p %s): stub\n", picture, debugstr_w(filename)); + return CTL_E_FILENOTFOUND; +} + +/*********************************************************************** * OleLoadPicturePath (OLEAUT32.424) */ HRESULT WINAPI OleLoadPicturePath( LPOLESTR szURLorPath, LPUNKNOWN punkCaller, diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/opengl32/wgl.c wine-staging-1.7.36~ubuntu12.04.1/dlls/opengl32/wgl.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/opengl32/wgl.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/opengl32/wgl.c 2015-02-08 20:31:28.000000000 +0000 @@ -162,6 +162,12 @@ LeaveCriticalSection( &wgl_section ); } +static inline enum wgl_handle_type get_current_context_type(void) +{ + if (!NtCurrentTeb()->glCurrentRC) return HANDLE_CONTEXT; + return LOWORD(NtCurrentTeb()->glCurrentRC) & HANDLE_TYPE_MASK; +} + /*********************************************************************** * wglCopyContext (OPENGL32.@) */ @@ -684,6 +690,30 @@ /* check if the extension is present in the list */ static BOOL has_extension( const char *list, const char *ext, size_t len ) { + if (!list) + { + const struct opengl_funcs *funcs = NtCurrentTeb()->glTable; + const char *gl_ext; + unsigned int i; + GLint extensions_count; + + if (!funcs->ext.p_glGetStringi) + { + void **func_ptr = (void **)&funcs->ext.p_glGetStringi; + + *func_ptr = funcs->wgl.p_wglGetProcAddress("glGetStringi"); + } + + glGetIntegerv(GL_NUM_EXTENSIONS, &extensions_count); + for (i = 0; i < extensions_count; ++i) + { + gl_ext = (const char *)funcs->ext.p_glGetStringi(GL_EXTENSIONS, i); + if (!strncmp(gl_ext, ext, len) && !gl_ext[len]) + return TRUE; + } + return FALSE; + } + while (list) { while (*list == ' ') list++; @@ -701,15 +731,21 @@ /* Check if a GL extension is supported */ static BOOL is_extension_supported(const char* extension) { + enum wgl_handle_type type = get_current_context_type(); const struct opengl_funcs *funcs = NtCurrentTeb()->glTable; - const char *gl_ext_string = (const char*)glGetString(GL_EXTENSIONS); + const char *gl_ext_string = NULL; size_t len; TRACE("Checking for extension '%s'\n", extension); - if(!gl_ext_string) { - ERR("No OpenGL extensions found, check if your OpenGL setup is correct!\n"); - return FALSE; + if (type == HANDLE_CONTEXT) + { + gl_ext_string = (const char*)glGetString(GL_EXTENSIONS); + if (!gl_ext_string) + { + ERR("No OpenGL extensions found, check if your OpenGL setup is correct!\n"); + return FALSE; + } } /* We use the GetProcAddress function from the display driver to retrieve function pointers diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/prntvpt/main.c wine-staging-1.7.36~ubuntu12.04.1/dlls/prntvpt/main.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/prntvpt/main.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/prntvpt/main.c 2015-02-08 20:31:28.000000000 +0000 @@ -41,3 +41,10 @@ } return TRUE; } + + +HRESULT WINAPI PTQuerySchemaVersionSupport(PCWSTR printer, DWORD *version) +{ + FIXME("stub:%s %p\n", debugstr_w(printer), version); + return E_NOTIMPL; +} diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/prntvpt/prntvpt.spec wine-staging-1.7.36~ubuntu12.04.1/dlls/prntvpt/prntvpt.spec --- wine-staging-1.7.35~ubuntu12.04.1/dlls/prntvpt/prntvpt.spec 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/prntvpt/prntvpt.spec 2015-02-08 20:31:28.000000000 +0000 @@ -1,4 +1,4 @@ -1 stub PTQuerySchemaVersionSupport +1 stdcall PTQuerySchemaVersionSupport(wstr ptr) 2 stub PTOpenProvider 3 stub PTOpenProviderEx 4 stub PTCloseProvider diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/shdocvw/shdocvw_main.c wine-staging-1.7.36~ubuntu12.04.1/dlls/shdocvw/shdocvw_main.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/shdocvw/shdocvw_main.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/shdocvw/shdocvw_main.c 2015-02-08 20:31:28.000000000 +0000 @@ -550,3 +550,12 @@ { FIXME("(%p %p %s %x)\n", hwnd, handle, debugstr_a(cmdline), show); } + +/****************************************************************** + * DoFileDownload (SHDOCVW.@) + */ +BOOL WINAPI DoFileDownload(LPWSTR filename) +{ + FIXME("(%s) stub\n", debugstr_w(filename)); + return FALSE; +} diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/shdocvw/shdocvw.spec wine-staging-1.7.36~ubuntu12.04.1/dlls/shdocvw/shdocvw.spec --- wine-staging-1.7.35~ubuntu12.04.1/dlls/shdocvw/shdocvw.spec 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/shdocvw/shdocvw.spec 2015-02-08 20:31:28.000000000 +0000 @@ -111,7 +111,7 @@ @ stdcall -private DllUnregisterServer() @ stub DoAddToFavDlg @ stub DoAddToFavDlgW -@ stub DoFileDownload +@ stdcall DoFileDownload(wstr) @ stub DoFileDownloadEx @ stub DoOrganizeFavDlg @ stub DoOrganizeFavDlgW diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/shell32/recyclebin.c wine-staging-1.7.36~ubuntu12.04.1/dlls/shell32/recyclebin.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/shell32/recyclebin.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/shell32/recyclebin.c 2015-02-08 20:31:28.000000000 +0000 @@ -411,7 +411,7 @@ IEnumIDListImpl *list; LPITEMIDLIST *pidls; HRESULT ret = E_OUTOFMEMORY; - int pidls_count; + int pidls_count = 0; int i=0; TRACE("(%p, %p, %x, %p)\n", This, hwnd, grfFlags, ppenumIDList); @@ -423,7 +423,7 @@ if (grfFlags & SHCONTF_NONFOLDERS) { - if (FAILED(ret = TRASH_EnumItems(&pidls, &pidls_count))) + if (FAILED(ret = TRASH_EnumItems(NULL, &pidls, &pidls_count))) goto failed; for (i=0; ii64NumItems = cidl; pSHQueryRBInfo->i64Size = 0; for (; imkid.cb = (USHORT)(2+1+sizeof(WIN32_FIND_DATAW)+1+lstrlenA(filename)+1); + pidl->mkid.abID[0] = 0; + memcpy(pidl->mkid.abID+1, data, sizeof(WIN32_FIND_DATAW)); + pidl->mkid.abID[1+sizeof(WIN32_FIND_DATAW)] = 0; + lstrcpyA((LPSTR)(pidl->mkid.abID+1+sizeof(WIN32_FIND_DATAW)+1), filename); + *(USHORT *)(pidl->mkid.abID+1+sizeof(WIN32_FIND_DATAW)+1+lstrlenA(filename)+1) = 0; + *pidlOut = pidl; + return S_OK; +} + +/*********************************************************************** + * TRASH_UnpackItemID [Internal] + * + * DESCRIPTION: + * Extract the information stored in an Item ID. The WIN32_FIND_DATA contains + * the information about the original file. The data->ftLastAccessTime contains + * the deletion time + * + * PARAMETER(S): + * [I] id : the ID of the item + * [O] data : the WIN32_FIND_DATA of the original file. Can be NULL is not needed + */ +HRESULT TRASH_UnpackItemID(LPCSHITEMID id, WIN32_FIND_DATAW *data) +{ + if (id->cb < 2+1+sizeof(WIN32_FIND_DATAW)+2) + return E_INVALIDARG; + if (id->abID[0] != 0 || id->abID[1+sizeof(WIN32_FIND_DATAW)] != 0) + return E_INVALIDARG; + if (memchr(id->abID+1+sizeof(WIN32_FIND_DATAW)+1, 0, id->cb-(2+1+sizeof(WIN32_FIND_DATAW)+1)) == NULL) + return E_INVALIDARG; + + if (data != NULL) + *data = *(const WIN32_FIND_DATAW *)(id->abID+1); + return S_OK; +} + #ifdef HAVE_CORESERVICES_CORESERVICES_H BOOL TRASH_CanTrashFile(LPCWSTR wszPath) @@ -100,16 +149,125 @@ return (status == noErr); } -HRESULT TRASH_EnumItems(LPITEMIDLIST **pidls, int *count) +/* TODO: + * - set file deletion time + * - set original file location + */ +HRESULT TRASH_GetDetails(const char *trash_path, const char *name, WIN32_FIND_DATAW *data) { - FIXME("stub!\n"); - return E_NOTIMPL; + static int once; + + int trash_path_length = lstrlenA(trash_path); + int name_length = lstrlenA(name); + char *path = SHAlloc(trash_path_length+1+name_length+1); + struct stat stats; + int ret; + + if(!once++) FIXME("semi-stub\n"); + + if(!path) return E_OUTOFMEMORY; + memcpy(path, trash_path, trash_path_length); + path[trash_path_length] = '/'; + memcpy(path+trash_path_length+1, name, name_length+1); + + ret = lstat(path, &stats); + HeapFree(GetProcessHeap(), 0, path); + if(ret == -1) return S_FALSE; + memset(data, 0, sizeof(*data)); + data->nFileSizeHigh = stats.st_size>>32; + data->nFileSizeLow = stats.st_size & 0xffffffff; + RtlSecondsSince1970ToTime(stats.st_mtime, (LARGE_INTEGER*)&data->ftLastWriteTime); + + if(!MultiByteToWideChar(CP_UNIXCP, 0, name, -1, data->cFileName, MAX_PATH)) + return S_FALSE; + return S_OK; } -HRESULT TRASH_UnpackItemID(LPCSHITEMID id, WIN32_FIND_DATAW *data) +HRESULT TRASH_EnumItems(const WCHAR *path, LPITEMIDLIST **pidls, int *count) { - FIXME("stub!\n"); - return E_NOTIMPL; + WCHAR volume_path[MAX_PATH]; + char *unix_path, trash_path[MAX_PATH]; + FSCatalogInfo catalog_info; + OSStatus status; + FSRef ref; + struct dirent *entry; + DIR *dir; + LPITEMIDLIST *ret; + int i=0, ret_size=8; + HRESULT hr; + + TRACE("(%s %p %p)\n", debugstr_w(path), pidls, count); + + if(!path) { + FIXME("All trashes enumeration not supported\n"); + volume_path[0] = 'C'; + volume_path[1] = ':'; + volume_path[2] = 0; + } else { + if(!GetVolumePathNameW(path, volume_path, MAX_PATH)) + return E_FAIL; + } + + if(!(unix_path = wine_get_unix_file_name(volume_path))) + return E_OUTOFMEMORY; + + status = FSPathMakeRef((UInt8*)unix_path, &ref, NULL); + HeapFree(GetProcessHeap(), 0, unix_path); + if(status != noErr) return E_FAIL; + status = FSGetCatalogInfo(&ref, kFSCatInfoVolume, &catalog_info, NULL, NULL, NULL); + if(status != noErr) return E_FAIL; + status = FSFindFolder(catalog_info.volume, kTrashFolderType, kCreateFolder, &ref); + if(status != noErr) return E_FAIL; + status = FSRefMakePath(&ref, (UInt8*)trash_path, MAX_PATH); + if(status != noErr) return E_FAIL; + + if(!(dir = opendir(trash_path))) return E_FAIL; + ret = HeapAlloc(GetProcessHeap(), 0, ret_size * sizeof(*ret)); + if(!ret) { + closedir(dir); + return E_OUTOFMEMORY; + } + while((entry = readdir(dir))) { + WIN32_FIND_DATAW data; + + if(!lstrcmpA(entry->d_name, ".") || !lstrcmpA(entry->d_name, ".." ) + || !lstrcmpA(entry->d_name, ".DS_Store")) + continue; + + if(i == ret_size) { + LPITEMIDLIST *resized; + ret_size *= 2; + resized = HeapReAlloc(GetProcessHeap(), 0, ret, ret_size * sizeof(*ret)); + if(!resized) hr = E_OUTOFMEMORY; + else ret = resized; + } + + if(SUCCEEDED(hr)) { + hr = TRASH_GetDetails(trash_path, entry->d_name, &data); + if(hr == S_FALSE) continue; + } + if(SUCCEEDED(hr)) + hr = TRASH_CreateSimplePIDL(entry->d_name, &data, ret+i); + if(FAILED(hr)) { + while(i>0) SHFree(ret+(--i)); + HeapFree(GetProcessHeap(), 0, ret); + closedir(dir); + return hr; + } + i++; + } + closedir(dir); + + *pidls = SHAlloc(sizeof(**pidls) * i); + if(!*pidls) { + while(i>0) SHFree(ret+(--i)); + HeapFree(GetProcessHeap(), 0, ret); + return E_OUTOFMEMORY; + } + *count = i; + for(i--; i>=0; i--) (*pidls)[i] = ret[i]; + HeapFree(GetProcessHeap(), 0, ret); + return S_OK; } HRESULT TRASH_RestoreItem(LPCITEMIDLIST pidl) @@ -388,55 +546,6 @@ return result; } -/* - * The item ID of a trashed element is built as follows: - * NUL byte - in most PIDLs the first byte is the type so we keep it constant - * WIN32_FIND_DATAW structure - with data about original file attributes - * bucket name - currently only an empty string meaning the home bucket is supported - * trash file name - a NUL-terminated string - */ -static HRESULT TRASH_CreateSimplePIDL(LPCSTR filename, const WIN32_FIND_DATAW *data, LPITEMIDLIST *pidlOut) -{ - LPITEMIDLIST pidl = SHAlloc(2+1+sizeof(WIN32_FIND_DATAW)+1+lstrlenA(filename)+1+2); - *pidlOut = NULL; - if (pidl == NULL) - return E_OUTOFMEMORY; - pidl->mkid.cb = (USHORT)(2+1+sizeof(WIN32_FIND_DATAW)+1+lstrlenA(filename)+1); - pidl->mkid.abID[0] = 0; - memcpy(pidl->mkid.abID+1, data, sizeof(WIN32_FIND_DATAW)); - pidl->mkid.abID[1+sizeof(WIN32_FIND_DATAW)] = 0; - lstrcpyA((LPSTR)(pidl->mkid.abID+1+sizeof(WIN32_FIND_DATAW)+1), filename); - *(USHORT *)(pidl->mkid.abID+1+sizeof(WIN32_FIND_DATAW)+1+lstrlenA(filename)+1) = 0; - *pidlOut = pidl; - return S_OK; -} - -/*********************************************************************** - * TRASH_UnpackItemID [Internal] - * - * DESCRIPTION: - * Extract the information stored in an Item ID. The WIN32_FIND_DATA contains - * the information about the original file. The data->ftLastAccessTime contains - * the deletion time - * - * PARAMETER(S): - * [I] id : the ID of the item - * [O] data : the WIN32_FIND_DATA of the original file. Can be NULL is not needed - */ -HRESULT TRASH_UnpackItemID(LPCSHITEMID id, WIN32_FIND_DATAW *data) -{ - if (id->cb < 2+1+sizeof(WIN32_FIND_DATAW)+2) - return E_INVALIDARG; - if (id->abID[0] != 0 || id->abID[1+sizeof(WIN32_FIND_DATAW)] != 0) - return E_INVALIDARG; - if (memchr(id->abID+1+sizeof(WIN32_FIND_DATAW)+1, 0, id->cb-(2+1+sizeof(WIN32_FIND_DATAW)+1)) == NULL) - return E_INVALIDARG; - - if (data != NULL) - *data = *(const WIN32_FIND_DATAW *)(id->abID+1); - return S_OK; -} - static HRESULT TRASH_GetDetails(const TRASH_BUCKET *bucket, LPCSTR filename, WIN32_FIND_DATAW *data) { LPSTR path = NULL; @@ -577,12 +686,15 @@ return NULL; } -HRESULT TRASH_EnumItems(LPITEMIDLIST **pidls, int *count) +HRESULT TRASH_EnumItems(const WCHAR *path, LPITEMIDLIST **pidls, int *count) { int ti_count; int pos=0, i; HRESULT err = E_OUTOFMEMORY; HDPA tinfs; + + if(path) + FIXME("Ignoring path = %s\n", debugstr_w(path)); if (!TRASH_EnsureInitialized()) return E_FAIL; tinfs = enum_bucket_trashinfos(home_trash, &ti_count); diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/shell32/xdg.h wine-staging-1.7.36~ubuntu12.04.1/dlls/shell32/xdg.h --- wine-staging-1.7.35~ubuntu12.04.1/dlls/shell32/xdg.h 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/shell32/xdg.h 2015-02-08 20:31:28.000000000 +0000 @@ -40,7 +40,7 @@ BOOL TRASH_CanTrashFile(LPCWSTR wszPath) DECLSPEC_HIDDEN; BOOL TRASH_TrashFile(LPCWSTR wszPath) DECLSPEC_HIDDEN; HRESULT TRASH_UnpackItemID(LPCSHITEMID id, WIN32_FIND_DATAW *data) DECLSPEC_HIDDEN; -HRESULT TRASH_EnumItems(LPITEMIDLIST **pidls, int *count) DECLSPEC_HIDDEN; +HRESULT TRASH_EnumItems(const WCHAR *path, LPITEMIDLIST **pidls, int *count) DECLSPEC_HIDDEN; HRESULT TRASH_RestoreItem(LPCITEMIDLIST pidl) DECLSPEC_HIDDEN; HRESULT TRASH_EraseItem(LPCITEMIDLIST pidl) DECLSPEC_HIDDEN; diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/slc/tests/Makefile.in wine-staging-1.7.36~ubuntu12.04.1/dlls/slc/tests/Makefile.in --- wine-staging-1.7.35~ubuntu12.04.1/dlls/slc/tests/Makefile.in 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/slc/tests/Makefile.in 2015-02-08 20:31:28.000000000 +0000 @@ -0,0 +1,5 @@ +TESTDLL = slc.dll +IMPORTS = slc + +C_SRCS = \ + slc.c diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/slc/tests/slc.c wine-staging-1.7.36~ubuntu12.04.1/dlls/slc/tests/slc.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/slc/tests/slc.c 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/slc/tests/slc.c 2015-02-08 20:31:28.000000000 +0000 @@ -0,0 +1,80 @@ +/* + * Copyright 2014 Sebastian Lackner + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include + +#include "windef.h" +#include "winbase.h" +#include "winerror.h" + +#include "slpublic.h" +#include "slerror.h" + +#include + +static void test_SLGetWindowsInformationDWORD(void) +{ + static const WCHAR NonexistentLicenseValueW[] = {'N','o','n','e','x','i','s','t','e','n','t','-', + 'L','i','c','e','n','s','e','-','V','a','l','u','e',0}; + static const WCHAR KernelMUILanguageAllowedW[] = {'K','e','r','n','e','l','-','M','U','I','-', + 'L','a','n','g','u','a','g','e','-','A','l','l','o','w','e','d',0}; + static const WCHAR KernelMUINumberAllowedW[] = {'K','e','r','n','e','l','-','M','U','I','-', + 'N','u','m','b','e','r','-','A','l','l','o','w','e','d',0}; + static const WCHAR emptyW[] = {0}; + DWORD value; + HRESULT res; + + res = SLGetWindowsInformationDWORD(NonexistentLicenseValueW, NULL); + todo_wine + ok(res == E_INVALIDARG, "expected E_INVALIDARG, got %08x\n", res); + + res = SLGetWindowsInformationDWORD(NULL, &value); + todo_wine + ok(res == E_INVALIDARG, "expected E_INVALIDARG, got %08x\n", res); + + value = 0xdeadbeef; + res = SLGetWindowsInformationDWORD(NonexistentLicenseValueW, &value); + todo_wine + ok(res == SL_E_VALUE_NOT_FOUND, "expected SL_E_VALUE_NOT_FOUND, got %08x\n", res); + ok(value == 0xdeadbeef, "expected value = 0xdeadbeef, got %u\n", value); + + value = 0xdeadbeef; + res = SLGetWindowsInformationDWORD(emptyW, &value); + ok(res == SL_E_RIGHT_NOT_GRANTED || broken(res == 0xd000000d) /* Win 8 */, + "expected SL_E_RIGHT_NOT_GRANTED, got %08x\n", res); + ok(value == 0xdeadbeef, "expected value = 0xdeadbeef, got %u\n", value); + + value = 0xdeadbeef; + res = SLGetWindowsInformationDWORD(KernelMUILanguageAllowedW, &value); + todo_wine + ok(res == SL_E_DATATYPE_MISMATCHED, "expected SL_E_DATATYPE_MISMATCHED, got %08x\n", res); + ok(value == 0xdeadbeef, "expected value = 0xdeadbeef, got %u\n", value); + + value = 0xdeadbeef; + res = SLGetWindowsInformationDWORD(KernelMUINumberAllowedW, &value); + todo_wine + ok(res == S_OK, "expected S_OK, got %u\n", res); + todo_wine + ok(value != 0xdeadbeef, "expected value != 0xdeadbeef\n"); +} + + +START_TEST(slc) +{ + test_SLGetWindowsInformationDWORD(); +} diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/user32/dialog.c wine-staging-1.7.36~ubuntu12.04.1/dlls/user32/dialog.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/user32/dialog.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/user32/dialog.c 2015-02-08 20:31:28.000000000 +0000 @@ -704,10 +704,10 @@ /* By returning TRUE, app has requested a default focus assignment. * WM_INITDIALOG may have changed the tab order, so find the first * tabstop control again. */ - dlgInfo->hwndFocus = GetNextDlgTabItem( hwnd, 0, FALSE ); - if (!dlgInfo->hwndFocus) dlgInfo->hwndFocus = GetNextDlgGroupItem( hwnd, 0, FALSE ); - if( dlgInfo->hwndFocus ) - SetFocus( dlgInfo->hwndFocus ); + focus = GetNextDlgTabItem( hwnd, 0, FALSE ); + if (!focus) focus = GetNextDlgGroupItem( hwnd, 0, FALSE ); + if (focus) + SetFocus( focus ); } } diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/user32/tests/dialog.c wine-staging-1.7.36~ubuntu12.04.1/dlls/user32/tests/dialog.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/user32/tests/dialog.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/user32/tests/dialog.c 2015-02-08 20:31:28.000000000 +0000 @@ -1227,7 +1227,12 @@ static INT_PTR CALLBACK messageBoxFontDlgWinProc (HWND hDlg, UINT uiMsg, WPARAM wParam, LPARAM lParam) { - return (uiMsg == WM_INITDIALOG); + if (uiMsg == WM_INITDIALOG) { + SetFocus(hDlg); + return 1; + } + + return 0; } static void test_MessageBoxFontTest(void) @@ -1337,6 +1342,12 @@ foundId = GetWindowLongPtrA(GetFocus(), GWLP_ID); ok (foundId == 1000, "First edit box should have gained focus on dialog creation. Expected: %d, Found: %ld\n", 1000, foundId); + SetFocus(GetNextDlgTabItem(hDlg, GetFocus(), FALSE)); + SendMessageA(hDlg, WM_ACTIVATE, MAKEWPARAM(WA_ACTIVE, 0), 0); + foundId = GetWindowLongPtrA(GetFocus(), GWLP_ID); + ok (foundId == 1001, "First edit box should have regained focus after dialog reactivation. Expected: %d, Found: %ld\n", 1001, foundId); + SetFocus(GetNextDlgTabItem(hDlg, NULL, FALSE)); + /* de- then reactivate the dialog */ SendMessageA(hDlg, WM_ACTIVATE, MAKEWPARAM(WA_INACTIVE, 0), 0); SendMessageA(hDlg, WM_ACTIVATE, MAKEWPARAM(WA_ACTIVE, 0), 0); diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/user32/tests/win.c wine-staging-1.7.36~ubuntu12.04.1/dlls/user32/tests/win.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/user32/tests/win.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/user32/tests/win.c 2015-02-08 20:31:28.000000000 +0000 @@ -7979,6 +7979,67 @@ CloseHandle(data.thread_replied); } +static void test_GetMessagePos(void) +{ + HWND button; + DWORD pos; + MSG msg; + + button = CreateWindowExA(0, "button", "button", WS_VISIBLE, + 100, 100, 100, 100, 0, 0, 0, NULL); + ok(button != 0, "CreateWindowExA failed\n"); + + SetCursorPos(120, 140); + flush_events(TRUE); + pos = GetMessagePos(); + ok(pos == MAKELONG(120, 140), "pos = %08x\n", pos); + + SetCursorPos(340, 320); + pos = GetMessagePos(); + ok(pos == MAKELONG(120, 140), "pos = %08x\n", pos); + + SendMessageW(button, WM_APP, 0, 0); + pos = GetMessagePos(); + ok(pos == MAKELONG(120, 140), "pos = %08x\n", pos); + + PostMessageA(button, WM_APP, 0, 0); + GetMessageA(&msg, button, 0, 0); + ok(msg.message == WM_APP, "msg.message = %x\n", msg.message); + pos = GetMessagePos(); + todo_wine ok(pos == MAKELONG(340, 320), "pos = %08x\n", pos); + + PostMessageA(button, WM_APP, 0, 0); + SetCursorPos(350, 330); + GetMessageA(&msg, button, 0, 0); + ok(msg.message == WM_APP, "msg.message = %x\n", msg.message); + pos = GetMessagePos(); + todo_wine ok(pos == MAKELONG(340, 320), "pos = %08x\n", pos); + + PostMessageA(button, WM_APP, 0, 0); + SetCursorPos(320, 340); + PostMessageA(button, WM_APP+1, 0, 0); + pos = GetMessagePos(); + todo_wine ok(pos == MAKELONG(340, 320), "pos = %08x\n", pos); + GetMessageA(&msg, button, 0, 0); + ok(msg.message == WM_APP, "msg.message = %x\n", msg.message); + pos = GetMessagePos(); + todo_wine ok(pos == MAKELONG(350, 330), "pos = %08x\n", pos); + GetMessageA(&msg, button, 0, 0); + ok(msg.message == WM_APP+1, "msg.message = %x\n", msg.message); + pos = GetMessagePos(); + todo_wine ok(pos == MAKELONG(320, 340), "pos = %08x\n", pos); + + SetTimer(button, 1, 250, NULL); + SetCursorPos(330, 350); + GetMessageA(&msg, button, 0, 0); + ok(msg.message == WM_TIMER, "msg.message = %x\n", msg.message); + pos = GetMessagePos(); + todo_wine ok(pos == MAKELONG(330, 350), "pos = %08x\n", pos); + KillTimer(button, 1); + + DestroyWindow(button); +} + START_TEST(win) { char **argv; @@ -8110,6 +8171,7 @@ test_update_region(); test_window_without_child_style(); test_smresult(); + test_GetMessagePos(); /* add the tests above this line */ if (hhook) UnhookWindowsHookEx(hhook); diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/vbscript/compile.c wine-staging-1.7.36~ubuntu12.04.1/dlls/vbscript/compile.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/vbscript/compile.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/vbscript/compile.c 2015-02-08 20:31:28.000000000 +0000 @@ -522,6 +522,8 @@ return compile_binary_expression(ctx, (binary_expression_t*)expr, OP_nequal); case EXPR_NEW: return push_instr_str(ctx, OP_new, ((string_expression_t*)expr)->value); + case EXPR_NOARG: + return push_instr_int(ctx, OP_hres, DISP_E_PARAMNOTFOUND); case EXPR_NOT: return compile_unary_expression(ctx, (unary_expression_t*)expr, OP_not); case EXPR_NOTHING: diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/vbscript/interp.c wine-staging-1.7.36~ubuntu12.04.1/dlls/vbscript/interp.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/vbscript/interp.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/vbscript/interp.c 2015-02-08 20:31:28.000000000 +0000 @@ -1366,6 +1366,18 @@ return stack_push(ctx, &v); } +static HRESULT interp_hres(exec_ctx_t *ctx) +{ + const unsigned arg = ctx->instr->arg1.uint; + VARIANT v; + + TRACE("%d\n", arg); + + V_VT(&v) = VT_ERROR; + V_ERROR(&v) = arg; + return stack_push(ctx, &v); +} + static HRESULT interp_not(exec_ctx_t *ctx) { variant_val_t val; diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/vbscript/parse.h wine-staging-1.7.36~ubuntu12.04.1/dlls/vbscript/parse.h --- wine-staging-1.7.35~ubuntu12.04.1/dlls/vbscript/parse.h 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/vbscript/parse.h 2015-02-08 20:31:28.000000000 +0000 @@ -42,6 +42,7 @@ EXPR_NEG, EXPR_NEQUAL, EXPR_NEW, + EXPR_NOARG, /* not a real expression */ EXPR_NOT, EXPR_NOTHING, EXPR_NULL, diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/vbscript/parser.y wine-staging-1.7.36~ubuntu12.04.1/dlls/vbscript/parser.y --- wine-staging-1.7.35~ubuntu12.04.1/dlls/vbscript/parser.y 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/vbscript/parser.y 2015-02-08 20:31:28.000000000 +0000 @@ -128,7 +128,7 @@ %type NotExpression UnaryExpression AndExpression OrExpression XorExpression EqvExpression %type ConstExpression NumericLiteralExpression %type MemberExpression -%type Arguments_opt ArgumentList_opt Step_opt ExpressionList +%type Arguments_opt ArgumentList ArgumentList_opt Step_opt ExpressionList %type OptionExplicit_opt DoType %type ArgumentsDecl_opt ArgumentDeclList ArgumentDecl %type FunctionDecl PropertyDecl @@ -279,11 +279,16 @@ Arguments_opt : EmptyBrackets_opt { $$ = NULL; } - | '(' ExpressionList ')' { $$ = $2; } + | '(' ArgumentList ')' { $$ = $2; } ArgumentList_opt : EmptyBrackets_opt { $$ = NULL; } - | ExpressionList { $$ = $1; } + | ArgumentList { $$ = $1; } + +ArgumentList + : Expression { $$ = $1; } + | Expression ',' ArgumentList { $1->next = $3; $$ = $1; } + | ',' ArgumentList { $$ = new_expression(ctx, EXPR_NOARG, 0); CHECK_ERROR; $$->next = $2; } EmptyBrackets_opt : /* empty */ diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/vbscript/tests/run.c wine-staging-1.7.36~ubuntu12.04.1/dlls/vbscript/tests/run.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/vbscript/tests/run.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/vbscript/tests/run.c 2015-02-08 20:31:28.000000000 +0000 @@ -92,6 +92,7 @@ DEFINE_EXPECT(global_propargput_i); DEFINE_EXPECT(global_propargput1_d); DEFINE_EXPECT(global_propargput1_i); +DEFINE_EXPECT(global_testoptionalarg_i); DEFINE_EXPECT(collectionobj_newenum_i); DEFINE_EXPECT(Next); DEFINE_EXPECT(GetWindow); @@ -115,6 +116,7 @@ #define DISPID_GLOBAL_DOUBLEASSTRING 1014 #define DISPID_GLOBAL_TESTARRAY 1015 #define DISPID_GLOBAL_THROWINT 1016 +#define DISPID_GLOBAL_TESTOPTIONALARG 1017 #define DISPID_TESTOBJ_PROPGET 2000 #define DISPID_TESTOBJ_PROPPUT 2001 @@ -1007,6 +1009,11 @@ *pid = DISPID_GLOBAL_THROWINT; return S_OK; } + if(!strcmp_wa(bstrName, "testOptionalArg")) { + test_grfdex(grfdex, fdexNameCaseInsensitive); + *pid = DISPID_GLOBAL_TESTOPTIONALARG; + return S_OK; + } if(strict_dispid_check && strcmp_wa(bstrName, "x")) ok(0, "unexpected call %s %x\n", wine_dbgstr_w(bstrName), grfdex); @@ -1044,7 +1051,7 @@ return S_OK; } - case DISPID_GLOBAL_TRACE: + case DISPID_GLOBAL_TRACE: ok(wFlags == INVOKE_FUNC, "wFlags = %x\n", wFlags); ok(pdp != NULL, "pdp == NULL\n"); ok(pdp->rgvarg != NULL, "rgvarg == NULL\n"); @@ -1320,6 +1327,30 @@ return hres; } + + case DISPID_GLOBAL_TESTOPTIONALARG: { + VARIANT *v; + int opt; + + CHECK_EXPECT(global_testoptionalarg_i); + + ok(wFlags == INVOKE_FUNC, "wFlags = %x\n", wFlags); + ok(pdp != NULL, "pdp == NULL\n"); + ok(pdp->rgvarg != NULL, "rgvarg == NULL\n"); + ok(!pdp->rgdispidNamedArgs, "rgdispidNamedArgs != NULL\n"); + ok(pdp->cArgs == 3, "cArgs = %d\n", pdp->cArgs); + ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs); + ok(!pvarRes, "pvarRes != NULL\n"); + ok(pei != NULL, "pei == NULL\n"); + + ok(V_VT(pdp->rgvarg) == VT_I2, "V_VT(pdp->rgvarg) = %d\n", V_VT(pdp->rgvarg)); + opt = V_I2(pdp->rgvarg); + ok(opt == 1 || opt == 2, "opt = %d\n", opt); + v = pdp->rgvarg+pdp->cArgs-opt; + ok(V_VT(v) == VT_ERROR, "V_VT(v) = %d\n", V_VT(v)); + ok(V_ERROR(v) == DISP_E_PARAMNOTFOUND, "V_ERROR(v) = %08x\n", V_ERROR(v)); + return S_OK; + } } ok(0, "unexpected call %d\n", id); @@ -2075,6 +2106,18 @@ hres = parse_script_ar("throwInt(&h80004001&)"); ok(hres == MAKE_VBSERROR(445), "hres = %08x\n", hres); + SET_EXPECT(global_testoptionalarg_i); + parse_script_a("call testOptionalArg(1,,2)"); + CHECK_CALLED(global_testoptionalarg_i); + + SET_EXPECT(global_testoptionalarg_i); + parse_script_a("call testOptionalArg(,1,1)"); + CHECK_CALLED(global_testoptionalarg_i); + + SET_EXPECT(global_testoptionalarg_i); + parse_script_a("testOptionalArg 1,,2"); + CHECK_CALLED(global_testoptionalarg_i); + strict_dispid_check = FALSE; SET_EXPECT(testobj_value_i); diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/vbscript/vbscript.h wine-staging-1.7.36~ubuntu12.04.1/dlls/vbscript/vbscript.h --- wine-staging-1.7.35~ubuntu12.04.1/dlls/vbscript/vbscript.h 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/vbscript/vbscript.h 2015-02-08 20:31:28.000000000 +0000 @@ -234,6 +234,7 @@ X(empty, 1, 0, 0) \ X(enumnext, 0, ARG_ADDR, ARG_BSTR) \ X(equal, 1, 0, 0) \ + X(hres, 1, ARG_UINT, 0) \ X(errmode, 1, ARG_INT, 0) \ X(eqv, 1, 0, 0) \ X(exp, 1, 0, 0) \ diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/wined3d/arb_program_shader.c wine-staging-1.7.36~ubuntu12.04.1/dlls/wined3d/arb_program_shader.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/wined3d/arb_program_shader.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/wined3d/arb_program_shader.c 2015-02-08 20:31:28.000000000 +0000 @@ -7255,7 +7255,7 @@ /* The alpha-component contains the palette index */ if(textype == GL_TEXTURE_RECTANGLE_ARB) - shader_addline(&buffer, "TXP index, fragment.texcoord[0], texture[0], RECT;\n"); + shader_addline(&buffer, "TEX index, fragment.texcoord[0], texture[0], RECT;\n"); else shader_addline(&buffer, "TEX index, fragment.texcoord[0], texture[0], 2D;\n"); diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/wined3d/buffer.c wine-staging-1.7.36~ubuntu12.04.1/dlls/wined3d/buffer.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/wined3d/buffer.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/wined3d/buffer.c 2015-02-08 20:31:28.000000000 +0000 @@ -266,7 +266,7 @@ #define WINED3D_BUFFER_FIXUP_XYZRHW 0x02 static BOOL buffer_check_attribute(struct wined3d_buffer *This, const struct wined3d_stream_info *si, - UINT attrib_idx, DWORD fixup_flags, DWORD *stride_this_run) + const struct wined3d_state *state, UINT attrib_idx, DWORD fixup_flags, DWORD *stride_this_run) { const struct wined3d_stream_info_element *attrib = &si->elements[attrib_idx]; enum wined3d_format_id format; @@ -276,7 +276,7 @@ * there, on nonexistent attribs the vbo is 0. */ if (!(si->use_map & (1 << attrib_idx)) - || attrib->data.buffer_object != This->buffer_object) + || state->streams[attrib->stream_idx].buffer != This) return FALSE; format = attrib->format->id; @@ -304,7 +304,7 @@ } static BOOL buffer_find_decl(struct wined3d_buffer *This, const struct wined3d_stream_info *si, - DWORD fixup_flags) + const struct wined3d_state *state, DWORD fixup_flags) { UINT stride_this_run = 0; BOOL ret = FALSE; @@ -378,31 +378,31 @@ * texcoord needs no conversion while a FLOAT4 positiont needs one */ - ret = buffer_check_attribute(This, si, WINED3D_FFP_POSITION, + ret = buffer_check_attribute(This, si, state, WINED3D_FFP_POSITION, fixup_flags, &stride_this_run) || ret; fixup_flags &= ~WINED3D_BUFFER_FIXUP_XYZRHW; - ret = buffer_check_attribute(This, si, WINED3D_FFP_NORMAL, + ret = buffer_check_attribute(This, si, state, WINED3D_FFP_NORMAL, fixup_flags, &stride_this_run) || ret; - ret = buffer_check_attribute(This, si, WINED3D_FFP_DIFFUSE, + ret = buffer_check_attribute(This, si, state, WINED3D_FFP_DIFFUSE, fixup_flags, &stride_this_run) || ret; - ret = buffer_check_attribute(This, si, WINED3D_FFP_SPECULAR, + ret = buffer_check_attribute(This, si, state, WINED3D_FFP_SPECULAR, fixup_flags, &stride_this_run) || ret; - ret = buffer_check_attribute(This, si, WINED3D_FFP_TEXCOORD0, + ret = buffer_check_attribute(This, si, state, WINED3D_FFP_TEXCOORD0, fixup_flags, &stride_this_run) || ret; - ret = buffer_check_attribute(This, si, WINED3D_FFP_TEXCOORD1, + ret = buffer_check_attribute(This, si, state, WINED3D_FFP_TEXCOORD1, fixup_flags, &stride_this_run) || ret; - ret = buffer_check_attribute(This, si, WINED3D_FFP_TEXCOORD2, + ret = buffer_check_attribute(This, si, state, WINED3D_FFP_TEXCOORD2, fixup_flags, &stride_this_run) || ret; - ret = buffer_check_attribute(This, si, WINED3D_FFP_TEXCOORD3, + ret = buffer_check_attribute(This, si, state, WINED3D_FFP_TEXCOORD3, fixup_flags, &stride_this_run) || ret; - ret = buffer_check_attribute(This, si, WINED3D_FFP_TEXCOORD4, + ret = buffer_check_attribute(This, si, state, WINED3D_FFP_TEXCOORD4, fixup_flags, &stride_this_run) || ret; - ret = buffer_check_attribute(This, si, WINED3D_FFP_TEXCOORD5, + ret = buffer_check_attribute(This, si, state, WINED3D_FFP_TEXCOORD5, fixup_flags, &stride_this_run) || ret; - ret = buffer_check_attribute(This, si, WINED3D_FFP_TEXCOORD6, + ret = buffer_check_attribute(This, si, state, WINED3D_FFP_TEXCOORD6, fixup_flags, &stride_this_run) || ret; - ret = buffer_check_attribute(This, si, WINED3D_FFP_TEXCOORD7, + ret = buffer_check_attribute(This, si, state, WINED3D_FFP_TEXCOORD7, fixup_flags, &stride_this_run) || ret; if (!stride_this_run && This->conversion_map) @@ -767,7 +767,7 @@ fixup_flags |= WINED3D_BUFFER_FIXUP_XYZRHW; } - decl_changed = buffer_find_decl(buffer, &context->stream_info, fixup_flags); + decl_changed = buffer_find_decl(buffer, &context->stream_info, state, fixup_flags); buffer->flags |= WINED3D_BUFFER_HASDESC; } diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/wined3d/context.c wine-staging-1.7.36~ubuntu12.04.1/dlls/wined3d/context.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/wined3d/context.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/wined3d/context.c 2015-02-08 20:31:28.000000000 +0000 @@ -504,8 +504,8 @@ { if (gl_info->supported[ARB_OCCLUSION_QUERY]) { - GL_EXTCALL(glGenQueriesARB(1, &query->id)); - checkGLcall("glGenQueriesARB"); + GL_EXTCALL(glGenQueries(1, &query->id)); + checkGLcall("glGenQueries"); TRACE("Allocated occlusion query %u in context %p.\n", query->id, context); } @@ -625,8 +625,8 @@ } else { - GL_EXTCALL(glGenQueriesARB(1, &query->id)); - checkGLcall("glGenQueriesARB"); + GL_EXTCALL(glGenQueries(1, &query->id)); + checkGLcall("glGenQueries"); TRACE("Allocated timestamp query %u in context %p.\n", query->id, context); } @@ -980,14 +980,14 @@ LIST_FOR_EACH_ENTRY(timestamp_query, &context->timestamp_queries, struct wined3d_timestamp_query, entry) { if (context->valid) - GL_EXTCALL(glDeleteQueriesARB(1, ×tamp_query->id)); + GL_EXTCALL(glDeleteQueries(1, ×tamp_query->id)); timestamp_query->context = NULL; } LIST_FOR_EACH_ENTRY(occlusion_query, &context->occlusion_queries, struct wined3d_occlusion_query, entry) { if (context->valid && gl_info->supported[ARB_OCCLUSION_QUERY]) - GL_EXTCALL(glDeleteQueriesARB(1, &occlusion_query->id)); + GL_EXTCALL(glDeleteQueries(1, &occlusion_query->id)); occlusion_query->context = NULL; } @@ -1025,10 +1025,10 @@ } if (gl_info->supported[ARB_TIMER_QUERY]) - GL_EXTCALL(glDeleteQueriesARB(context->free_timestamp_query_count, context->free_timestamp_queries)); + GL_EXTCALL(glDeleteQueries(context->free_timestamp_query_count, context->free_timestamp_queries)); if (gl_info->supported[ARB_OCCLUSION_QUERY]) - GL_EXTCALL(glDeleteQueriesARB(context->free_occlusion_query_count, context->free_occlusion_queries)); + GL_EXTCALL(glDeleteQueries(context->free_occlusion_query_count, context->free_occlusion_queries)); if (gl_info->supported[ARB_SYNC]) { diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/wined3d/device.c wine-staging-1.7.36~ubuntu12.04.1/dlls/wined3d/device.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/wined3d/device.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/wined3d/device.c 2015-02-08 20:31:28.000000000 +0000 @@ -5018,6 +5018,16 @@ device->device_parent->ops->activate(device->device_parent, wparam); } + else if (message == WM_SYSCOMMAND) + { + if (wparam == SC_RESTORE && device->wined3d->flags & WINED3D_HANDLE_RESTORE) + { + if (unicode) + DefWindowProcW(window, message, wparam, lparam); + else + DefWindowProcA(window, message, wparam, lparam); + } + } if (unicode) return CallWindowProcW(proc, window, message, wparam, lparam); diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/wined3d/directx.c wine-staging-1.7.36~ubuntu12.04.1/dlls/wined3d/directx.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/wined3d/directx.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/wined3d/directx.c 2015-02-08 20:31:28.000000000 +0000 @@ -2869,6 +2869,7 @@ /* Newer core functions */ USE_GL_FUNC(glActiveTexture) /* OpenGL 1.3 */ USE_GL_FUNC(glAttachShader) /* OpenGL 2.0 */ + USE_GL_FUNC(glBeginQuery) /* OpenGL 1.5 */ USE_GL_FUNC(glBindAttribLocation) /* OpenGL 2.0 */ USE_GL_FUNC(glBindBuffer) /* OpenGL 1.5 */ USE_GL_FUNC(glBlendColor) /* OpenGL 1.4 */ @@ -2887,13 +2888,16 @@ USE_GL_FUNC(glCreateShader) /* OpenGL 2.0 */ USE_GL_FUNC(glDeleteBuffers) /* OpenGL 1.5 */ USE_GL_FUNC(glDeleteProgram) /* OpenGL 2.0 */ + USE_GL_FUNC(glDeleteQueries) /* OpenGL 1.5 */ USE_GL_FUNC(glDeleteShader) /* OpenGL 2.0 */ USE_GL_FUNC(glDetachShader) /* OpenGL 2.0 */ USE_GL_FUNC(glDisableVertexAttribArray) /* OpenGL 2.0 */ USE_GL_FUNC(glDrawBuffers) /* OpenGL 2.0 */ USE_GL_FUNC(glDrawElementsInstanced) /* OpenGL 3.1 */ USE_GL_FUNC(glEnableVertexAttribArray) /* OpenGL 2.0 */ + USE_GL_FUNC(glEndQuery) /* OpenGL 1.5 */ USE_GL_FUNC(glGenBuffers) /* OpenGL 1.5 */ + USE_GL_FUNC(glGenQueries) /* OpenGL 1.5 */ USE_GL_FUNC(glGetActiveUniform) /* OpenGL 2.0 */ USE_GL_FUNC(glGetAttachedShaders) /* OpenGL 2.0 */ USE_GL_FUNC(glGetAttribLocation) /* OpenGL 2.0 */ @@ -2901,6 +2905,8 @@ USE_GL_FUNC(glGetCompressedTexImage) /* OpenGL 1.3 */ USE_GL_FUNC(glGetProgramInfoLog) /* OpenGL 2.0 */ USE_GL_FUNC(glGetProgramiv) /* OpenGL 2.0 */ + USE_GL_FUNC(glGetQueryiv) /* OpenGL 1.5 */ + USE_GL_FUNC(glGetQueryObjectuiv) /* OpenGL 1.5 */ USE_GL_FUNC(glGetShaderInfoLog) /* OpenGL 2.0 */ USE_GL_FUNC(glGetShaderiv) /* OpenGL 2.0 */ USE_GL_FUNC(glGetShaderSource) /* OpenGL 2.0 */ @@ -2974,6 +2980,7 @@ MAP_GL_FUNCTION(glActiveTexture, glActiveTextureARB); MAP_GL_FUNCTION(glAttachShader, glAttachObjectARB); + MAP_GL_FUNCTION(glBeginQuery, glBeginQueryARB); MAP_GL_FUNCTION(glBindAttribLocation, glBindAttribLocationARB); MAP_GL_FUNCTION(glBindBuffer, glBindBufferARB); MAP_GL_FUNCTION(glBlendColor, glBlendColorEXT); @@ -2992,13 +2999,16 @@ MAP_GL_FUNCTION(glCreateShader, glCreateShaderObjectARB); MAP_GL_FUNCTION(glDeleteBuffers, glDeleteBuffersARB); MAP_GL_FUNCTION(glDeleteProgram, glDeleteObjectARB); + MAP_GL_FUNCTION(glDeleteQueries, glDeleteQueriesARB); MAP_GL_FUNCTION(glDeleteShader, glDeleteObjectARB); MAP_GL_FUNCTION(glDetachShader, glDetachObjectARB); MAP_GL_FUNCTION(glDisableVertexAttribArray, glDisableVertexAttribArrayARB); MAP_GL_FUNCTION(glDrawBuffers, glDrawBuffersARB); MAP_GL_FUNCTION(glDrawElementsInstanced, glDrawElementsInstancedARB); MAP_GL_FUNCTION(glEnableVertexAttribArray, glEnableVertexAttribArrayARB); + MAP_GL_FUNCTION(glEndQuery, glEndQueryARB); MAP_GL_FUNCTION(glGenBuffers, glGenBuffersARB); + MAP_GL_FUNCTION(glGenQueries, glGenQueriesARB); MAP_GL_FUNCTION(glGetActiveUniform, glGetActiveUniformARB); MAP_GL_FUNCTION(glGetAttachedShaders, glGetAttachedObjectsARB); MAP_GL_FUNCTION(glGetAttribLocation, glGetAttribLocationARB); @@ -3006,6 +3016,8 @@ MAP_GL_FUNCTION(glGetCompressedTexImage, glGetCompressedTexImageARB); MAP_GL_FUNCTION(glGetProgramInfoLog, glGetInfoLogARB); MAP_GL_FUNCTION(glGetProgramiv, glGetObjectParameterivARB); + MAP_GL_FUNCTION(glGetQueryiv, glGetQueryivARB); + MAP_GL_FUNCTION(glGetQueryObjectuiv, glGetQueryObjectuivARB); MAP_GL_FUNCTION(glGetShaderInfoLog, glGetInfoLogARB); MAP_GL_FUNCTION(glGetShaderiv, glGetObjectParameterivARB); MAP_GL_FUNCTION(glGetShaderSource, glGetShaderSourceARB); @@ -3492,7 +3504,7 @@ { GLint counter_bits; - GL_EXTCALL(glGetQueryivARB(GL_SAMPLES_PASSED_ARB, GL_QUERY_COUNTER_BITS_ARB, &counter_bits)); + GL_EXTCALL(glGetQueryiv(GL_SAMPLES_PASSED, GL_QUERY_COUNTER_BITS, &counter_bits)); TRACE("Occlusion query counter has %d bits.\n", counter_bits); if (!counter_bits) gl_info->supported[ARB_OCCLUSION_QUERY] = FALSE; @@ -3501,7 +3513,7 @@ { GLint counter_bits; - GL_EXTCALL(glGetQueryivARB(GL_TIMESTAMP, GL_QUERY_COUNTER_BITS_ARB, &counter_bits)); + GL_EXTCALL(glGetQueryiv(GL_TIMESTAMP, GL_QUERY_COUNTER_BITS, &counter_bits)); TRACE("Timestamp query counter has %d bits.\n", counter_bits); if (!counter_bits) gl_info->supported[ARB_TIMER_QUERY] = FALSE; diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/wined3d/query.c wine-staging-1.7.36~ubuntu12.04.1/dlls/wined3d/query.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/wined3d/query.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/wined3d/query.c 2015-02-08 20:31:28.000000000 +0000 @@ -350,16 +350,16 @@ context = context_acquire(query->device, oq->context->current_rt); - GL_EXTCALL(glGetQueryObjectuivARB(oq->id, GL_QUERY_RESULT_AVAILABLE_ARB, &available)); - checkGLcall("glGetQueryObjectuivARB(GL_QUERY_RESULT_AVAILABLE)"); + GL_EXTCALL(glGetQueryObjectuiv(oq->id, GL_QUERY_RESULT_AVAILABLE, &available)); + checkGLcall("glGetQueryObjectuiv(GL_QUERY_RESULT_AVAILABLE)"); TRACE("available %#x.\n", available); if (available) { if (size) { - GL_EXTCALL(glGetQueryObjectuivARB(oq->id, GL_QUERY_RESULT_ARB, &samples)); - checkGLcall("glGetQueryObjectuivARB(GL_QUERY_RESULT)"); + GL_EXTCALL(glGetQueryObjectuiv(oq->id, GL_QUERY_RESULT, &samples)); + checkGLcall("glGetQueryObjectuiv(GL_QUERY_RESULT)"); TRACE("Returning %d samples.\n", samples); fill_query_data(data, size, &samples, sizeof(samples)); } @@ -492,7 +492,7 @@ { context = context_acquire(query->device, oq->context->current_rt); - GL_EXTCALL(glEndQueryARB(GL_SAMPLES_PASSED_ARB)); + GL_EXTCALL(glEndQuery(GL_SAMPLES_PASSED)); checkGLcall("glEndQuery()"); } } @@ -503,7 +503,7 @@ context_alloc_occlusion_query(context, oq); } - GL_EXTCALL(glBeginQueryARB(GL_SAMPLES_PASSED_ARB, oq->id)); + GL_EXTCALL(glBeginQuery(GL_SAMPLES_PASSED, oq->id)); checkGLcall("glBeginQuery()"); context_release(context); @@ -524,7 +524,7 @@ { context = context_acquire(query->device, oq->context->current_rt); - GL_EXTCALL(glEndQueryARB(GL_SAMPLES_PASSED_ARB)); + GL_EXTCALL(glEndQuery(GL_SAMPLES_PASSED)); checkGLcall("glEndQuery()"); context_release(context); @@ -580,16 +580,16 @@ context = context_acquire(query->device, tq->context->current_rt); - GL_EXTCALL(glGetQueryObjectuivARB(tq->id, GL_QUERY_RESULT_AVAILABLE_ARB, &available)); - checkGLcall("glGetQueryObjectuivARB(GL_QUERY_RESULT_AVAILABLE)"); + GL_EXTCALL(glGetQueryObjectuiv(tq->id, GL_QUERY_RESULT_AVAILABLE, &available)); + checkGLcall("glGetQueryObjectuiv(GL_QUERY_RESULT_AVAILABLE)"); TRACE("available %#x.\n", available); if (available) { if (size) { - GL_EXTCALL(glGetQueryObjectui64v(tq->id, GL_QUERY_RESULT_ARB, ×tamp)); - checkGLcall("glGetQueryObjectuivARB(GL_QUERY_RESULT)"); + GL_EXTCALL(glGetQueryObjectui64v(tq->id, GL_QUERY_RESULT, ×tamp)); + checkGLcall("glGetQueryObjectui64v(GL_QUERY_RESULT)"); TRACE("Returning timestamp %s.\n", wine_dbgstr_longlong(timestamp)); fill_query_data(data, size, ×tamp, sizeof(timestamp)); } diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/wined3d/surface.c wine-staging-1.7.36~ubuntu12.04.1/dlls/wined3d/surface.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/wined3d/surface.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/wined3d/surface.c 2015-02-08 20:31:28.000000000 +0000 @@ -3482,7 +3482,7 @@ * other cases pixels that should be masked away have alpha set to 0. */ if (src_surface->resource.format->id == WINED3DFMT_P8_UINT) gl_info->gl_ops.gl.p_glAlphaFunc(GL_NOTEQUAL, - (float)src_surface->container->src_blt_color_key.color_space_low_value / 256.0f); + (float)src_surface->container->src_blt_color_key.color_space_low_value / 255.0f); else gl_info->gl_ops.gl.p_glAlphaFunc(GL_NOTEQUAL, 0.0f); checkGLcall("glAlphaFunc"); diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/winemac.drv/cocoa_app.m wine-staging-1.7.36~ubuntu12.04.1/dlls/winemac.drv/cocoa_app.m --- wine-staging-1.7.35~ubuntu12.04.1/dlls/winemac.drv/cocoa_app.m 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/winemac.drv/cocoa_app.m 2015-02-08 20:31:28.000000000 +0000 @@ -1584,16 +1584,16 @@ { WineWindow* window = (WineWindow*)[theEvent window]; NSEventType type = [theEvent type]; - BOOL broughtWindowForward = FALSE; + WineWindow* windowBroughtForward = nil; + BOOL process = FALSE; if ([window isKindOfClass:[WineWindow class]] && - !window.disabled && !window.noActivate && type == NSLeftMouseDown && (([theEvent modifierFlags] & (NSShiftKeyMask | NSControlKeyMask| NSAlternateKeyMask | NSCommandKeyMask)) != NSCommandKeyMask)) { NSWindowButton windowButton; - broughtWindowForward = TRUE; + windowBroughtForward = window; /* Any left-click on our window anyplace other than the close or minimize buttons will bring it forward. */ @@ -1607,7 +1607,7 @@ NSPoint point = [button convertPoint:[theEvent locationInWindow] fromView:nil]; if ([button mouse:point inRect:[button bounds]]) { - broughtWindowForward = FALSE; + windowBroughtForward = nil; break; } } @@ -1623,7 +1623,6 @@ { BOOL pressed = (type == NSLeftMouseDown || type == NSRightMouseDown || type == NSOtherMouseDown); CGPoint pt = CGEventGetLocation([theEvent CGEvent]); - BOOL process; if (clippingCursor) [self clipCursorLocation:&pt]; @@ -1690,12 +1689,13 @@ macdrv_release_event(event); } - else if (broughtWindowForward) - { - [[window ancestorWineWindow] postBroughtForwardEvent]; - if (![window isKeyWindow]) - [self windowGotFocus:window]; - } + } + + if (!process && windowBroughtForward) + { + [[windowBroughtForward ancestorWineWindow] postBroughtForwardEvent]; + if (![windowBroughtForward isKeyWindow] && !windowBroughtForward.disabled && !windowBroughtForward.noActivate) + [self windowGotFocus:windowBroughtForward]; } // Since mouse button events deliver absolute cursor position, the diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/winemac.drv/cocoa_event.m wine-staging-1.7.36~ubuntu12.04.1/dlls/winemac.drv/cocoa_event.m --- wine-staging-1.7.35~ubuntu12.04.1/dlls/winemac.drv/cocoa_event.m 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/winemac.drv/cocoa_event.m 2015-02-08 20:31:28.000000000 +0000 @@ -470,7 +470,7 @@ NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; NSMutableDictionary* threadDict = [[NSThread currentThread] threadDictionary]; WineEventQueue* queue = [threadDict objectForKey:WineEventQueueThreadDictionaryKey]; - dispatch_semaphore_t semaphore; + dispatch_semaphore_t semaphore = NULL; __block BOOL finished; if (!queue) diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/winemac.drv/cocoa_window.m wine-staging-1.7.36~ubuntu12.04.1/dlls/winemac.drv/cocoa_window.m --- wine-staging-1.7.35~ubuntu12.04.1/dlls/winemac.drv/cocoa_window.m 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/winemac.drv/cocoa_window.m 2015-02-08 20:31:28.000000000 +0000 @@ -265,6 +265,7 @@ context = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort]; CGContextSetBlendMode(context, kCGBlendModeCopy); + CGContextSetInterpolationQuality(context, kCGInterpolationNone); for (i = 0; i < count; i++) { @@ -790,7 +791,7 @@ if (captured) level = CGShieldingWindowLevel() + 1; /* Need +1 or we don't get mouse moves */ else - level = NSMainMenuWindowLevel + 1; + level = NSStatusWindowLevel + 1; if (self.floating) level++; diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/winmm/tests/mci.c wine-staging-1.7.36~ubuntu12.04.1/dlls/winmm/tests/mci.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/winmm/tests/mci.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/winmm/tests/mci.c 2015-02-08 20:31:28.000000000 +0000 @@ -1295,6 +1295,44 @@ ok(0xDEADF00D==intbuf[0] && 0xABADCAFE==intbuf[2],"DWORD buffer corruption\n"); } +static void test_playWaveTypeMpegvideo(void) +{ + MCIERROR err; + MCIDEVICEID wDeviceID; + MCI_PLAY_PARMS play_parm; + MCI_STATUS_PARMS status_parm; + char buf[1024]; + memset(buf, 0, sizeof(buf)); + + err = mciSendStringA("open tempfile.wav type MPEGVideo alias mysound", NULL, 0, NULL); + ok(err==ok_saved,"mci open tempfile.wav type MPEGVideo returned %s\n", dbg_mcierr(err)); + if(err) { + skip("Cannot open tempfile.wav type MPEGVideo for playing (%s), skipping\n", dbg_mcierr(err)); + return; + } + + wDeviceID = mciGetDeviceIDA("mysound"); + ok(wDeviceID == 1, "mciGetDeviceIDA mysound returned %u, expected 1\n", wDeviceID); + + err = mciSendCommandA(wDeviceID, MCI_PLAY, 0, (DWORD_PTR)&play_parm); + ok(!err,"mciCommand play returned %s\n", dbg_mcierr(err)); + + err = mciSendStringA("status mysound mode", buf, sizeof(buf), NULL); + ok(!err,"mci status mode returned %s\n", dbg_mcierr(err)); + ok(!strcmp(buf,"playing"), "mci status mode: %s\n", buf); + + status_parm.dwItem = MCI_STATUS_MODE; + err = mciSendCommandA(wDeviceID, MCI_STATUS, + MCI_STATUS_ITEM, + (DWORD_PTR)&status_parm); + ok(!err,"mciCommand status mode returned %s\n", dbg_mcierr(err)); + ok(status_parm.dwReturn == MCI_MODE_PLAY, + "mciCommand status mode: %u\n", (DWORD)status_parm.dwReturn); + + err = mciSendStringA("close mysound", NULL, 0, NULL); + ok(!err,"mci close returned %s\n", dbg_mcierr(err)); +} + START_TEST(mci) { char curdir[MAX_PATH], tmpdir[MAX_PATH]; @@ -1314,6 +1352,7 @@ test_playWAVE(hwnd); test_asyncWAVE(hwnd); test_AutoOpenWAVE(hwnd); + test_playWaveTypeMpegvideo(); }else skip("No output devices available, skipping all output tests\n"); /* Win9X hangs when exiting with something still open. */ diff -Nru wine-staging-1.7.35~ubuntu12.04.1/dlls/winmm/tests/mixer.c wine-staging-1.7.36~ubuntu12.04.1/dlls/winmm/tests/mixer.c --- wine-staging-1.7.35~ubuntu12.04.1/dlls/winmm/tests/mixer.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/dlls/winmm/tests/mixer.c 2015-02-08 20:31:28.000000000 +0000 @@ -395,6 +395,14 @@ ok(rc==MMSYSERR_NOERROR, "mixerOpen: MMSYSERR_NOERROR expected, got %s\n",mmsys_error(rc)); if (rc==MMSYSERR_NOERROR) { + MIXERCAPSA capsA2; + + rc=mixerGetDevCapsA((UINT_PTR)mix,&capsA2,sizeof(capsA2)); + ok(rc==MMSYSERR_NOERROR, + "mixerGetDevCapsA: MMSYSERR_NOERROR expected, got %s\n", + mmsys_error(rc)); + ok(!strcmp(capsA2.szPname, capsA.szPname), "Got wrong device caps\n"); + for (d=0;ddataflow = flow; if(flow == eRender){ dev->out_caps.wMid = 0xFF; dev->out_caps.wPid = 0xFF; @@ -3749,15 +3751,20 @@ return MMSYSERR_NOERROR; if(uDeviceID >= g_outmmdevices_count + g_inmmdevices_count) + mmdevice = WINMM_GetMixerMMDevice((HMIXEROBJ)uDeviceID, + MIXER_OBJECTF_MIXER, NULL); + else if(uDeviceID < g_outmmdevices_count) + mmdevice = read_map(g_out_map, uDeviceID); + else + mmdevice = read_map(g_in_map, uDeviceID - g_outmmdevices_count); + + if(!mmdevice) return MMSYSERR_BADDEVICEID; - if(uDeviceID < g_outmmdevices_count){ - mmdevice = read_map(g_out_map, uDeviceID); + if(mmdevice->dataflow == eRender) memcpy(caps.szPname, mmdevice->out_caps.szPname, sizeof(caps.szPname)); - }else{ - mmdevice = read_map(g_in_map, uDeviceID - g_outmmdevices_count); + else memcpy(caps.szPname, mmdevice->in_caps.szPname, sizeof(caps.szPname)); - } caps.wMid = 0xFF; caps.wPid = 0xFF; diff -Nru wine-staging-1.7.35~ubuntu12.04.1/include/ddk/hidsdi.h wine-staging-1.7.36~ubuntu12.04.1/include/ddk/hidsdi.h --- wine-staging-1.7.35~ubuntu12.04.1/include/ddk/hidsdi.h 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/include/ddk/hidsdi.h 2015-02-08 20:31:28.000000000 +0000 @@ -19,7 +19,7 @@ #ifndef __WINE_HIDSDI_H #define __WINE_HIDSDI_H -/* FIXME: #include "hidusage.h" */ +#include "hidusage.h" /* FIXME: #include "hidpi.h" */ #ifndef WINE_NTSTATUS_DECLARED diff -Nru wine-staging-1.7.35~ubuntu12.04.1/include/ddk/ntddk.h wine-staging-1.7.36~ubuntu12.04.1/include/ddk/ntddk.h --- wine-staging-1.7.35~ubuntu12.04.1/include/ddk/ntddk.h 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/include/ddk/ntddk.h 2015-02-08 20:31:28.000000000 +0000 @@ -140,6 +140,15 @@ LARGE_INTEGER ValidDataLength; } FILE_VALID_DATA_LENGTH_INFORMATION, *PFILE_VALID_DATA_LENGTH_INFORMATION; +typedef struct _KWAIT_BLOCK { + LIST_ENTRY WaitListEntry; + struct _KTHREAD *RESTRICTED_POINTER Thread; + PVOID Object; + struct _KWAIT_BLOCK *RESTRICTED_POINTER NextWaitBlock; + USHORT WaitKey; + USHORT WaitType; +} KWAIT_BLOCK, *PKWAIT_BLOCK, *RESTRICTED_POINTER PRKWAIT_BLOCK; + typedef VOID (WINAPI *PDRIVER_NOTIFICATION_CALLBACK_ROUTINE)(PVOID,PVOID); typedef VOID (WINAPI *PDRIVER_REINITIALIZE)(PDRIVER_OBJECT,PVOID,ULONG); typedef VOID (WINAPI *PLOAD_IMAGE_NOTIFY_ROUTINE)(PUNICODE_STRING,HANDLE,PIMAGE_INFO); diff -Nru wine-staging-1.7.35~ubuntu12.04.1/include/dsound.h wine-staging-1.7.36~ubuntu12.04.1/include/dsound.h --- wine-staging-1.7.35~ubuntu12.04.1/include/dsound.h 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/include/dsound.h 2015-02-08 20:31:28.000000000 +0000 @@ -110,6 +110,22 @@ DEFINE_GUID(DSDEVID_WinePlayback, 0x40316A1D,0x605B,0xD611,0x87,0xC6,0x00,0x80,0xAD,0x00,0x02,0xFE); +DEFINE_GUID(GUID_DSFX_STANDARD_GARGLE, 0xDAFD8210,0x5711,0x4B91,0x9F,0xE3,0xF7,0x5B,0x7A,0xE2,0x79,0xBF); +DEFINE_GUID(GUID_DSFX_STANDARD_CHORUS, 0xEFE6629C,0x81F7,0x4281,0xBD,0x91,0xC9,0xD6,0x04,0xA9,0x5A,0xF6); +DEFINE_GUID(GUID_DSFX_STANDARD_FLANGER, 0xEFCA3D92,0xDFD8,0x4672,0xA6,0x03,0x74,0x20,0x89,0x4B,0xAD,0x98); +DEFINE_GUID(GUID_DSFX_STANDARD_ECHO, 0xEF3E932C,0xD40B,0x4F51,0x8C,0xCF,0x3F,0x98,0xF1,0xB2,0x9D,0x5D); +DEFINE_GUID(GUID_DSFX_STANDARD_DISTORTION, 0xEF114C90,0xCD1D,0x484E,0x96,0xE5,0x09,0xCF,0xAF,0x91,0x2A,0x21); +DEFINE_GUID(GUID_DSFX_STANDARD_COMPRESSOR, 0xEF011F79,0x4000,0x406D,0x87,0xAF,0xBF,0xFB,0x3F,0xC3,0x9D,0x57); +DEFINE_GUID(GUID_DSFX_STANDARD_PARAMEQ, 0x120CED89,0x3BF4,0x4173,0xA1,0x32,0x3C,0xB4,0x06,0xCF,0x32,0x31); +DEFINE_GUID(GUID_DSFX_STANDARD_I3DL2REVERB, 0xEF985E71,0xD5C7,0x42D4,0xBA,0x4D,0x2D,0x07,0x3E,0x2E,0x96,0xF4); +DEFINE_GUID(GUID_DSFX_WAVES_REVERB, 0x87FC0268,0x9A55,0x4360,0x95,0xAA,0x00,0x4A,0x1D,0x9D,0xE2,0x6C); +DEFINE_GUID(GUID_DSCFX_CLASS_AEC, 0xBF963D80,0xC559,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1); +DEFINE_GUID(GUID_DSCFX_MS_AEC, 0xCDEBB919,0x379A,0x488A,0x87,0x65,0xF5,0x3C,0xFD,0x36,0xDE,0x40); +DEFINE_GUID(GUID_DSCFX_SYSTEM_AEC, 0x1C22C56D,0x9879,0x4F5B,0xA3,0x89,0x27,0x99,0x6D,0xDC,0x28,0x10); +DEFINE_GUID(GUID_DSCFX_CLASS_NS, 0xE07F903F,0x62FD,0x4E60,0x8C,0xDD,0xDE,0xA7,0x23,0x66,0x65,0xB5); +DEFINE_GUID(GUID_DSCFX_MS_NS, 0x11C5C73B,0x66E9,0x4BA1,0xA0,0xBA,0xE8,0x14,0xC6,0xEE,0xD9,0x2D); +DEFINE_GUID(GUID_DSCFX_SYSTEM_NS, 0x5AB0882E,0x7274,0x4516,0x87,0x7D,0x4E,0xEE,0x99,0xBA,0x4F,0xD0); + #define _FACDS 0x878 #define MAKE_DSHRESULT(code) MAKE_HRESULT(1,_FACDS,code) diff -Nru wine-staging-1.7.35~ubuntu12.04.1/include/hidusage.h wine-staging-1.7.36~ubuntu12.04.1/include/hidusage.h --- wine-staging-1.7.35~ubuntu12.04.1/include/hidusage.h 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/include/hidusage.h 2015-02-08 20:31:28.000000000 +0000 @@ -0,0 +1,201 @@ +/* + * Copyright (C) 2015 Austin English + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ +#ifndef __HIDUSAGE_H +#define __HIDUSAGE_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef USHORT USAGE, *PUSAGE; + +#define HID_USAGE_GENERIC_POINTER ((USAGE) 0x01) +#define HID_USAGE_GENERIC_MOUSE ((USAGE) 0x02) +#define HID_USAGE_GENERIC_JOYSTICK ((USAGE) 0x04) +#define HID_USAGE_GENERIC_GAMEPAD ((USAGE) 0x05) +#define HID_USAGE_GENERIC_KEYBOARD ((USAGE) 0x06) +#define HID_USAGE_GENERIC_KEYPAD ((USAGE) 0x07) +#define HID_USAGE_GENERIC_SYSTEM_CTL ((USAGE) 0x80) +#define HID_USAGE_GENERIC_X ((USAGE) 0x30) +#define HID_USAGE_GENERIC_Y ((USAGE) 0x31) +#define HID_USAGE_GENERIC_Z ((USAGE) 0x32) +#define HID_USAGE_GENERIC_RX ((USAGE) 0x33) +#define HID_USAGE_GENERIC_RY ((USAGE) 0x34) +#define HID_USAGE_GENERIC_RZ ((USAGE) 0x35) +#define HID_USAGE_GENERIC_SLIDER ((USAGE) 0x36) +#define HID_USAGE_GENERIC_DIAL ((USAGE) 0x37) +#define HID_USAGE_GENERIC_WHEEL ((USAGE) 0x38) +#define HID_USAGE_GENERIC_HATSWITCH ((USAGE) 0x39) +#define HID_USAGE_GENERIC_COUNTED_BUFFER ((USAGE) 0x3A) +#define HID_USAGE_GENERIC_BYTE_COUNT ((USAGE) 0x3B) +#define HID_USAGE_GENERIC_MOTION_WAKEUP ((USAGE) 0x3C) +#define HID_USAGE_GENERIC_VX ((USAGE) 0x40) +#define HID_USAGE_GENERIC_VY ((USAGE) 0x41) +#define HID_USAGE_GENERIC_VZ ((USAGE) 0x42) +#define HID_USAGE_GENERIC_VBRX ((USAGE) 0x43) +#define HID_USAGE_GENERIC_VBRY ((USAGE) 0x44) +#define HID_USAGE_GENERIC_VBRZ ((USAGE) 0x45) +#define HID_USAGE_GENERIC_VNO ((USAGE) 0x46) +#define HID_USAGE_GENERIC_SYSCTL_POWER ((USAGE) 0x81) +#define HID_USAGE_GENERIC_SYSCTL_SLEEP ((USAGE) 0x82) +#define HID_USAGE_GENERIC_SYSCTL_WAKE ((USAGE) 0x83) +#define HID_USAGE_GENERIC_SYSCTL_CONTEXT_MENU ((USAGE) 0x84) +#define HID_USAGE_GENERIC_SYSCTL_MAIN_MENU ((USAGE) 0x85) +#define HID_USAGE_GENERIC_SYSCTL_APP_MENU ((USAGE) 0x86) +#define HID_USAGE_GENERIC_SYSCTL_HELP_MENU ((USAGE) 0x87) +#define HID_USAGE_GENERIC_SYSCTL_MENU_EXIT ((USAGE) 0x88) +#define HID_USAGE_GENERIC_SYSCTL_MENU_SELECT ((USAGE) 0x89) +#define HID_USAGE_GENERIC_SYSCTL_MENU_RIGHT ((USAGE) 0x8A) +#define HID_USAGE_GENERIC_SYSCTL_MENU_LEFT ((USAGE) 0x8B) +#define HID_USAGE_GENERIC_SYSCTL_MENU_UP ((USAGE) 0x8C) +#define HID_USAGE_GENERIC_SYSCTL_MENU_DOWN ((USAGE) 0x8D) + +#define HID_USAGE_KEYBOARD_NOEVENT ((USAGE) 0x00) +#define HID_USAGE_KEYBOARD_ROLLOVER ((USAGE) 0x01) +#define HID_USAGE_KEYBOARD_POSTFAIL ((USAGE) 0x02) +#define HID_USAGE_KEYBOARD_UNDEFINED ((USAGE) 0x03) +#define HID_USAGE_KEYBOARD_aA ((USAGE) 0x04) +#define HID_USAGE_KEYBOARD_zZ ((USAGE) 0x1D) +#define HID_USAGE_KEYBOARD_ONE ((USAGE) 0x1E) +#define HID_USAGE_KEYBOARD_ZERO ((USAGE) 0x27) +#define HID_USAGE_KEYBOARD_LCTRL ((USAGE) 0xE0) +#define HID_USAGE_KEYBOARD_LSHFT ((USAGE) 0xE1) +#define HID_USAGE_KEYBOARD_LALT ((USAGE) 0xE2) +#define HID_USAGE_KEYBOARD_LGUI ((USAGE) 0xE3) +#define HID_USAGE_KEYBOARD_RCTRL ((USAGE) 0xE4) +#define HID_USAGE_KEYBOARD_RSHFT ((USAGE) 0xE5) +#define HID_USAGE_KEYBOARD_RALT ((USAGE) 0xE6) +#define HID_USAGE_KEYBOARD_RGUI ((USAGE) 0xE7) +#define HID_USAGE_KEYBOARD_SCROLL_LOCK ((USAGE) 0x47) +#define HID_USAGE_KEYBOARD_NUM_LOCK ((USAGE) 0x53) +#define HID_USAGE_KEYBOARD_CAPS_LOCK ((USAGE) 0x39) +#define HID_USAGE_KEYBOARD_F1 ((USAGE) 0x3A) +#define HID_USAGE_KEYBOARD_F12 ((USAGE) 0x45) +#define HID_USAGE_KEYBOARD_RETURN ((USAGE) 0x28) +#define HID_USAGE_KEYBOARD_ESCAPE ((USAGE) 0x29) +#define HID_USAGE_KEYBOARD_DELETE ((USAGE) 0x2A) +#define HID_USAGE_KEYBOARD_PRINT_SCREEN ((USAGE) 0x46) + +#define HID_USAGE_LED_NUM_LOCK ((USAGE) 0x01) +#define HID_USAGE_LED_CAPS_LOCK ((USAGE) 0x02) +#define HID_USAGE_LED_SCROLL_LOCK ((USAGE) 0x03) +#define HID_USAGE_LED_COMPOSE ((USAGE) 0x04) +#define HID_USAGE_LED_KANA ((USAGE) 0x05) +#define HID_USAGE_LED_POWER ((USAGE) 0x06) +#define HID_USAGE_LED_SHIFT ((USAGE) 0x07) +#define HID_USAGE_LED_DO_NOT_DISTURB ((USAGE) 0x08) +#define HID_USAGE_LED_MUTE ((USAGE) 0x09) +#define HID_USAGE_LED_TONE_ENABLE ((USAGE) 0x0A) +#define HID_USAGE_LED_HIGH_CUT_FILTER ((USAGE) 0x0B) +#define HID_USAGE_LED_LOW_CUT_FILTER ((USAGE) 0x0C) +#define HID_USAGE_LED_EQUALIZER_ENABLE ((USAGE) 0x0D) +#define HID_USAGE_LED_SOUND_FIELD_ON ((USAGE) 0x0E) +#define HID_USAGE_LED_SURROUND_FIELD_ON ((USAGE) 0x0F) +#define HID_USAGE_LED_REPEAT ((USAGE) 0x10) +#define HID_USAGE_LED_STEREO ((USAGE) 0x11) +#define HID_USAGE_LED_SAMPLING_RATE_DETECT ((USAGE) 0x12) +#define HID_USAGE_LED_SPINNING ((USAGE) 0x13) +#define HID_USAGE_LED_CAV ((USAGE) 0x14) +#define HID_USAGE_LED_CLV ((USAGE) 0x15) +#define HID_USAGE_LED_RECORDING_FORMAT_DET ((USAGE) 0x16) +#define HID_USAGE_LED_OFF_HOOK ((USAGE) 0x17) +#define HID_USAGE_LED_RING ((USAGE) 0x18) +#define HID_USAGE_LED_MESSAGE_WAITING ((USAGE) 0x19) +#define HID_USAGE_LED_DATA_MODE ((USAGE) 0x1A) +#define HID_USAGE_LED_BATTERY_OPERATION ((USAGE) 0x1B) +#define HID_USAGE_LED_BATTERY_OK ((USAGE) 0x1C) +#define HID_USAGE_LED_BATTERY_LOW ((USAGE) 0x1D) +#define HID_USAGE_LED_SPEAKER ((USAGE) 0x1E) +#define HID_USAGE_LED_HEAD_SET ((USAGE) 0x1F) +#define HID_USAGE_LED_HOLD ((USAGE) 0x20) +#define HID_USAGE_LED_MICROPHONE ((USAGE) 0x21) +#define HID_USAGE_LED_COVERAGE ((USAGE) 0x22) +#define HID_USAGE_LED_NIGHT_MODE ((USAGE) 0x23) +#define HID_USAGE_LED_SEND_CALLS ((USAGE) 0x24) +#define HID_USAGE_LED_CALL_PICKUP ((USAGE) 0x25) +#define HID_USAGE_LED_CONFERENCE ((USAGE) 0x26) +#define HID_USAGE_LED_STAND_BY ((USAGE) 0x27) +#define HID_USAGE_LED_CAMERA_ON ((USAGE) 0x28) +#define HID_USAGE_LED_CAMERA_OFF ((USAGE) 0x29) +#define HID_USAGE_LED_ON_LINE ((USAGE) 0x2A) +#define HID_USAGE_LED_OFF_LINE ((USAGE) 0x2B) +#define HID_USAGE_LED_BUSY ((USAGE) 0x2C) +#define HID_USAGE_LED_READY ((USAGE) 0x2D) +#define HID_USAGE_LED_PAPER_OUT ((USAGE) 0x2E) +#define HID_USAGE_LED_PAPER_JAM ((USAGE) 0x2F) +#define HID_USAGE_LED_REMOTE ((USAGE) 0x30) +#define HID_USAGE_LED_FORWARD ((USAGE) 0x31) +#define HID_USAGE_LED_REVERSE ((USAGE) 0x32) +#define HID_USAGE_LED_STOP ((USAGE) 0x33) +#define HID_USAGE_LED_REWIND ((USAGE) 0x34) +#define HID_USAGE_LED_FAST_FORWARD ((USAGE) 0x35) +#define HID_USAGE_LED_PLAY ((USAGE) 0x36) +#define HID_USAGE_LED_PAUSE ((USAGE) 0x37) +#define HID_USAGE_LED_RECORD ((USAGE) 0x38) +#define HID_USAGE_LED_ERROR ((USAGE) 0x39) +#define HID_USAGE_LED_SELECTED_INDICATOR ((USAGE) 0x3A) +#define HID_USAGE_LED_IN_USE_INDICATOR ((USAGE) 0x3B) +#define HID_USAGE_LED_MULTI_MODE_INDICATOR ((USAGE) 0x3C) +#define HID_USAGE_LED_INDICATOR_ON ((USAGE) 0x3D) +#define HID_USAGE_LED_INDICATOR_FLASH ((USAGE) 0x3E) +#define HID_USAGE_LED_INDICATOR_SLOW_BLINK ((USAGE) 0x3F) +#define HID_USAGE_LED_INDICATOR_FAST_BLINK ((USAGE) 0x40) +#define HID_USAGE_LED_INDICATOR_OFF ((USAGE) 0x41) +#define HID_USAGE_LED_FLASH_ON_TIME ((USAGE) 0x42) +#define HID_USAGE_LED_SLOW_BLINK_ON_TIME ((USAGE) 0x43) +#define HID_USAGE_LED_SLOW_BLINK_OFF_TIME ((USAGE) 0x44) +#define HID_USAGE_LED_FAST_BLINK_ON_TIME ((USAGE) 0x45) +#define HID_USAGE_LED_FAST_BLINK_OFF_TIME ((USAGE) 0x46) +#define HID_USAGE_LED_INDICATOR_COLOR ((USAGE) 0x47) +#define HID_USAGE_LED_RED ((USAGE) 0x48) +#define HID_USAGE_LED_GREEN ((USAGE) 0x49) +#define HID_USAGE_LED_AMBER ((USAGE) 0x4A) +#define HID_USAGE_LED_GENERIC_INDICATOR ((USAGE) 0x3B) + +#define HID_USAGE_PAGE_UNDEFINED ((USAGE) 0x00) +#define HID_USAGE_PAGE_GENERIC ((USAGE) 0x01) +#define HID_USAGE_PAGE_SIMULATION ((USAGE) 0x02) +#define HID_USAGE_PAGE_VR ((USAGE) 0x03) +#define HID_USAGE_PAGE_SPORT ((USAGE) 0x04) +#define HID_USAGE_PAGE_GAME ((USAGE) 0x05) +#define HID_USAGE_PAGE_KEYBOARD ((USAGE) 0x07) +#define HID_USAGE_PAGE_LED ((USAGE) 0x08) +#define HID_USAGE_PAGE_BUTTON ((USAGE) 0x09) +#define HID_USAGE_PAGE_ORDINAL ((USAGE) 0x0A) +#define HID_USAGE_PAGE_TELEPHONY ((USAGE) 0x0B) +#define HID_USAGE_PAGE_CONSUMER ((USAGE) 0x0C) +#define HID_USAGE_PAGE_DIGITIZER ((USAGE) 0x0D) +#define HID_USAGE_PAGE_UNICODE ((USAGE) 0x10) +#define HID_USAGE_PAGE_ALPHANUMERIC ((USAGE) 0x14) + +#define HID_USAGE_TELEPHONY_PHONE ((USAGE) 0x01) +#define HID_USAGE_TELEPHONY_ANSWERING_MACHINE ((USAGE) 0x02) +#define HID_USAGE_TELEPHONY_MESSAGE_CONTROLS ((USAGE) 0x03) +#define HID_USAGE_TELEPHONY_HANDSET ((USAGE) 0x04) +#define HID_USAGE_TELEPHONY_HEADSET ((USAGE) 0x05) +#define HID_USAGE_TELEPHONY_KEYPAD ((USAGE) 0x06) +#define HID_USAGE_TELEPHONY_PROGRAMMABLE_BUTTON ((USAGE) 0x07) + +#define HID_USAGE_SIMULATION_RUDDER ((USAGE) 0xBA) +#define HID_USAGE_SIMULATION_THROTTLE ((USAGE) 0xBB) + +#ifdef __cplusplus +} +#endif + +#endif /* __HIDUSAGE_H */ diff -Nru wine-staging-1.7.35~ubuntu12.04.1/include/Makefile.in wine-staging-1.7.36~ubuntu12.04.1/include/Makefile.in --- wine-staging-1.7.35~ubuntu12.04.1/include/Makefile.in 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/include/Makefile.in 2015-02-08 20:31:28.000000000 +0000 @@ -340,6 +340,7 @@ gdipluspixelformats.h \ gdiplustypes.h \ guiddef.h \ + hidusage.h \ highlevelmonitorconfigurationapi.h \ hlguids.h \ htmlhelp.h \ @@ -471,6 +472,7 @@ ntddndis.h \ ntddscsi.h \ ntddstor.h \ + ntdef.h \ ntdsapi.h \ ntquery.h \ ntsecapi.h \ diff -Nru wine-staging-1.7.35~ubuntu12.04.1/include/msi.h wine-staging-1.7.36~ubuntu12.04.1/include/msi.h --- wine-staging-1.7.35~ubuntu12.04.1/include/msi.h 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/include/msi.h 2015-02-08 20:31:28.000000000 +0000 @@ -463,6 +463,10 @@ UINT WINAPI MsiEnumClientsW(LPCWSTR, DWORD, LPWSTR); #define MsiEnumClients WINELIB_NAME_AW(MsiEnumClients) +UINT WINAPI MsiEnumClientsExA(LPCSTR, LPCSTR, DWORD, DWORD, CHAR*, MSIINSTALLCONTEXT*, LPSTR, LPDWORD); +UINT WINAPI MsiEnumClientsExW(LPCWSTR, LPCWSTR, DWORD, DWORD, WCHAR*, MSIINSTALLCONTEXT*, LPWSTR, LPDWORD); +#define MsiEnumClientsEx WINELIB_NAME_AW(MsiEnumClientsEx) + UINT WINAPI MsiOpenPackageA(LPCSTR, MSIHANDLE*); UINT WINAPI MsiOpenPackageW(LPCWSTR, MSIHANDLE*); #define MsiOpenPackage WINELIB_NAME_AW(MsiOpenPackage) diff -Nru wine-staging-1.7.35~ubuntu12.04.1/include/msvcrt/limits.h wine-staging-1.7.36~ubuntu12.04.1/include/msvcrt/limits.h --- wine-staging-1.7.35~ubuntu12.04.1/include/msvcrt/limits.h 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/include/msvcrt/limits.h 2015-02-08 20:31:28.000000000 +0000 @@ -4,7 +4,7 @@ #include #define CHAR_BIT 8 -#define MB_LEN_MAX 2 +#define MB_LEN_MAX 5 #define SCHAR_MIN (-0x80) #define SCHAR_MAX 0x7f diff -Nru wine-staging-1.7.35~ubuntu12.04.1/include/ntdef.h wine-staging-1.7.36~ubuntu12.04.1/include/ntdef.h --- wine-staging-1.7.35~ubuntu12.04.1/include/ntdef.h 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/include/ntdef.h 2015-02-08 20:31:28.000000000 +0000 @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2015 Austin English + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef _NTDEF_ +#define _NTDEF_ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum _EVENT_TYPE { + NotificationEvent, + SynchronizationEvent +} EVENT_TYPE; + +typedef enum _TIMER_TYPE { + NotificationTimer, + SynchronizationTimer +} TIMER_TYPE; + +typedef enum _WAIT_TYPE { + WaitAll, + WaitAny, + WaitNotification +} WAIT_TYPE; + +#ifdef __cplusplus +} +#endif + +#endif /* _NTDEF_ */ diff -Nru wine-staging-1.7.35~ubuntu12.04.1/include/slerror.h wine-staging-1.7.36~ubuntu12.04.1/include/slerror.h --- wine-staging-1.7.35~ubuntu12.04.1/include/slerror.h 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/include/slerror.h 2015-02-08 20:31:28.000000000 +0000 @@ -19,6 +19,7 @@ #ifndef __WINE_SLERROR_H #define __WINE_SLERROR_H +#define SL_E_VALUE_NOT_FOUND 0xC004F012 #define SL_E_RIGHT_NOT_GRANTED 0xC004F013 #define SL_E_DATATYPE_MISMATCHED 0xC004F01E diff -Nru wine-staging-1.7.35~ubuntu12.04.1/include/winbase.h wine-staging-1.7.36~ubuntu12.04.1/include/winbase.h --- wine-staging-1.7.35~ubuntu12.04.1/include/winbase.h 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/include/winbase.h 2015-02-08 20:31:28.000000000 +0000 @@ -1542,6 +1542,11 @@ } Reason; } REASON_CONTEXT, *PREASON_CONTEXT; +#define RESOURCE_ENUM_LN 0x0001 +#define RESOURCE_ENUM_MUI 0x0002 +#define RESOURCE_ENUM_MUI_SYSTEM 0x0004 +#define RESOURCE_ENUM_VALIDATE 0x0008 + WINBASEAPI BOOL WINAPI ActivateActCtx(HANDLE,ULONG_PTR *); WINADVAPI BOOL WINAPI AddAccessAllowedAce(PACL,DWORD,DWORD,PSID); WINADVAPI BOOL WINAPI AddAccessAllowedAceEx(PACL,DWORD,DWORD,DWORD,PSID); @@ -1749,6 +1754,9 @@ WINBASEAPI BOOL WINAPI EnumResourceLanguagesA(HMODULE,LPCSTR,LPCSTR,ENUMRESLANGPROCA,LONG_PTR); WINBASEAPI BOOL WINAPI EnumResourceLanguagesW(HMODULE,LPCWSTR,LPCWSTR,ENUMRESLANGPROCW,LONG_PTR); #define EnumResourceLanguages WINELIB_NAME_AW(EnumResourceLanguages) +WINBASEAPI BOOL WINAPI EnumResourceLanguagesExA(HMODULE,LPCSTR,LPCSTR,ENUMRESLANGPROCA,LONG_PTR,DWORD,LANGID); +WINBASEAPI BOOL WINAPI EnumResourceLanguagesExW(HMODULE,LPCWSTR,LPCWSTR,ENUMRESLANGPROCW,LONG_PTR,DWORD,LANGID); +#define EnumResourceLanguagesEx WINELIB_NAME_AW(EnumResourceLanguagesEx) WINBASEAPI BOOL WINAPI EnumResourceNamesA(HMODULE,LPCSTR,ENUMRESNAMEPROCA,LONG_PTR); WINBASEAPI BOOL WINAPI EnumResourceNamesW(HMODULE,LPCWSTR,ENUMRESNAMEPROCW,LONG_PTR); #define EnumResourceNames WINELIB_NAME_AW(EnumResourceNames) @@ -2008,6 +2016,7 @@ WINBASEAPI UINT WINAPI GetSystemDirectoryA(LPSTR,UINT); WINBASEAPI UINT WINAPI GetSystemDirectoryW(LPWSTR,UINT); #define GetSystemDirectory WINELIB_NAME_AW(GetSystemDirectory) +WINBASEAPI UINT WINAPI GetSystemFirmwareTable(DWORD,DWORD,PVOID,DWORD); WINBASEAPI VOID WINAPI GetSystemInfo(LPSYSTEM_INFO); WINBASEAPI BOOL WINAPI GetSystemPowerStatus(LPSYSTEM_POWER_STATUS); WINBASEAPI BOOL WINAPI GetSystemRegistryQuota(PDWORD,PDWORD); diff -Nru wine-staging-1.7.35~ubuntu12.04.1/include/wine/wined3d.h wine-staging-1.7.36~ubuntu12.04.1/include/wine/wined3d.h --- wine-staging-1.7.35~ubuntu12.04.1/include/wine/wined3d.h 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/include/wine/wined3d.h 2015-02-08 20:31:28.000000000 +0000 @@ -1243,6 +1243,7 @@ #define WINED3D_PRESENT_CONVERSION 0x00000008 #define WINED3D_RESTORE_MODE_ON_ACTIVATE 0x00000010 #define WINED3D_FOCUS_MESSAGES 0x00000020 +#define WINED3D_HANDLE_RESTORE 0x00000040 #define WINED3D_RESZ_CODE 0x7fa05000 diff -Nru wine-staging-1.7.35~ubuntu12.04.1/include/winnt.h wine-staging-1.7.36~ubuntu12.04.1/include/winnt.h --- wine-staging-1.7.35~ubuntu12.04.1/include/winnt.h 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/include/winnt.h 2015-02-08 20:31:28.000000000 +0000 @@ -2284,7 +2284,7 @@ __asm mov teb, eax; return teb; } -#elif defined(__x86_64__) && defined(__GNUC__) +#elif defined(__x86_64__) && defined(__GNUC__) && !defined(__APPLE__) static FORCEINLINE struct _TEB * WINAPI NtCurrentTeb(void) { struct _TEB *teb; diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/dbghelp-KdHelp/0001-dbghelp-Don-t-fill-KdHelp-structure-for-usermode-app.patch wine-staging-1.7.36~ubuntu12.04.1/patches/dbghelp-KdHelp/0001-dbghelp-Don-t-fill-KdHelp-structure-for-usermode-app.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/dbghelp-KdHelp/0001-dbghelp-Don-t-fill-KdHelp-structure-for-usermode-app.patch 2015-01-24 15:32:20.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/dbghelp-KdHelp/0001-dbghelp-Don-t-fill-KdHelp-structure-for-usermode-app.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,32 +0,0 @@ -From 78ab3400ea9c3c9ae9d85f3ee2952c20c7d68f73 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Mon, 15 Sep 2014 22:55:49 +0200 -Subject: dbghelp: Don't fill KdHelp structure for usermode applications. - ---- - dlls/dbghelp/stack.c | 9 --------- - 1 file changed, 9 deletions(-) - -diff --git a/dlls/dbghelp/stack.c b/dlls/dbghelp/stack.c -index 3e1ff72..21412f6 100644 ---- a/dlls/dbghelp/stack.c -+++ b/dlls/dbghelp/stack.c -@@ -240,15 +240,6 @@ BOOL WINAPI StackWalk64(DWORD MachineType, HANDLE hProcess, HANDLE hThread, - if (!cpu->stack_walk(&csw, frame, ctx)) return FALSE; - - /* we don't handle KdHelp */ -- frame->KdHelp.Thread = 0xC000FADE; -- frame->KdHelp.ThCallbackStack = 0x10; -- frame->KdHelp.ThCallbackBStore = 0; -- frame->KdHelp.NextCallback = 0; -- frame->KdHelp.FramePointer = 0; -- frame->KdHelp.KiCallUserMode = 0xD000DAFE; -- frame->KdHelp.KeUserCallbackDispatcher = 0xE000F000; -- frame->KdHelp.SystemRangeStart = 0xC0000000; -- frame->KdHelp.Reserved[0] /* KiUserExceptionDispatcher */ = 0xE0005000; - - return TRUE; - } --- -2.1.0 - diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/dbghelp-KdHelp/definition wine-staging-1.7.36~ubuntu12.04.1/patches/dbghelp-KdHelp/definition --- wine-staging-1.7.35~ubuntu12.04.1/patches/dbghelp-KdHelp/definition 2015-01-24 15:32:20.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/dbghelp-KdHelp/definition 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -Fixes: [37272] Don't fill KdHelp structure for usermode applications diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/dinput-Events/0001-dinput-Ensure-X11-input-events-are-handled-even-with.patch wine-staging-1.7.36~ubuntu12.04.1/patches/dinput-Events/0001-dinput-Ensure-X11-input-events-are-handled-even-with.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/dinput-Events/0001-dinput-Ensure-X11-input-events-are-handled-even-with.patch 2015-01-24 15:32:20.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/dinput-Events/0001-dinput-Ensure-X11-input-events-are-handled-even-with.patch 2015-02-08 20:46:30.000000000 +0000 @@ -1,8 +1,8 @@ -From 0d67e99a59e4b4378797368545980751d39e0198 Mon Sep 17 00:00:00 2001 +From 6a575f8176ff60cc4703e6299c38e15e5778881d Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Thu, 18 Dec 2014 01:04:34 +0100 Subject: dinput: Ensure X11 input events are handled even without explicit - message loop. + message loop. (try 2) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -25,29 +25,13 @@ this issue, also *RawInput* functions show the same issue - which is the reason why native dinput will still not work (already tested). --- - dlls/dinput/device.c | 5 +++-- dlls/dinput/keyboard.c | 2 ++ + dlls/dinput/mouse.c | 2 ++ dlls/user32/input.c | 14 ++++++++++---- dlls/user32/user32.spec | 1 + include/winuser.h | 1 + - 5 files changed, 17 insertions(+), 6 deletions(-) + 5 files changed, 16 insertions(+), 4 deletions(-) -diff --git a/dlls/dinput/device.c b/dlls/dinput/device.c -index 08ebfd7..064cdbb 100644 ---- a/dlls/dinput/device.c -+++ b/dlls/dinput/device.c -@@ -1631,8 +1631,9 @@ HRESULT WINAPI IDirectInputDevice2WImpl_Poll(LPDIRECTINPUTDEVICE8W iface) - IDirectInputDeviceImpl *This = impl_from_IDirectInputDevice8W(iface); - - if (!This->acquired) return DIERR_NOTACQUIRED; -- /* Because wine devices do not need to be polled, just return DI_NOEFFECT */ -- return DI_NOEFFECT; -+ -+ __wine_check_for_events( QS_ALLINPUT ); -+ return DI_OK; - } - - HRESULT WINAPI IDirectInputDevice2AImpl_Poll(LPDIRECTINPUTDEVICE8A iface) diff --git a/dlls/dinput/keyboard.c b/dlls/dinput/keyboard.c index a5967d7..9e78257 100644 --- a/dlls/dinput/keyboard.c @@ -61,8 +45,21 @@ EnterCriticalSection(&This->base.crit); if (TRACE_ON(dinput)) { +diff --git a/dlls/dinput/mouse.c b/dlls/dinput/mouse.c +index 132efce..44e1d57 100644 +--- a/dlls/dinput/mouse.c ++++ b/dlls/dinput/mouse.c +@@ -552,6 +552,8 @@ static HRESULT WINAPI SysMouseWImpl_GetDeviceState(LPDIRECTINPUTDEVICE8W iface, + + if(This->base.acquired == 0) return DIERR_NOTACQUIRED; + ++ __wine_check_for_events( QS_ALLINPUT ); ++ + TRACE("(this=%p,0x%08x,%p):\n", This, len, ptr); + _dump_mouse_state(&This->m_state); + diff --git a/dlls/user32/input.c b/dlls/user32/input.c -index ec81e60..5791473 100644 +index 1f05f34..23f5da8 100644 --- a/dlls/user32/input.c +++ b/dlls/user32/input.c @@ -353,12 +353,18 @@ HWND WINAPI GetCapture(void) @@ -136,5 +133,5 @@ #endif -- -2.1.3 +2.2.2 diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/gdi32-OSMesaMakeCurrent/0001-gdi32-Fix-arguments-for-OSMesaMakeCurrent-when-using.patch wine-staging-1.7.36~ubuntu12.04.1/patches/gdi32-OSMesaMakeCurrent/0001-gdi32-Fix-arguments-for-OSMesaMakeCurrent-when-using.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/gdi32-OSMesaMakeCurrent/0001-gdi32-Fix-arguments-for-OSMesaMakeCurrent-when-using.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/gdi32-OSMesaMakeCurrent/0001-gdi32-Fix-arguments-for-OSMesaMakeCurrent-when-using.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,38 @@ +From 8593f7d027c48153b038895e8bc0b8fca88fd666 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20M=C3=BCller?= +Date: Tue, 3 Feb 2015 11:07:38 +0100 +Subject: gdi32: Fix arguments for OSMesaMakeCurrent when using 16 bit formats. + +--- + dlls/gdi32/dibdrv/opengl.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/dlls/gdi32/dibdrv/opengl.c b/dlls/gdi32/dibdrv/opengl.c +index 28a03f4..a25da208 100644 +--- a/dlls/gdi32/dibdrv/opengl.c ++++ b/dlls/gdi32/dibdrv/opengl.c +@@ -251,6 +251,7 @@ static BOOL dibdrv_wglMakeCurrent( HDC hdc, struct wgl_context *context ) + HBITMAP bitmap; + BITMAPOBJ *bmp; + dib_info dib; ++ GLenum type; + BOOL ret = FALSE; + + if (!context) +@@ -281,7 +282,12 @@ static BOOL dibdrv_wglMakeCurrent( HDC hdc, struct wgl_context *context ) + + TRACE( "context %p bits %p size %ux%u\n", context, bits, width, height ); + +- ret = pOSMesaMakeCurrent( context->context, bits, GL_UNSIGNED_BYTE, width, height ); ++ if (pixel_formats[context->format - 1].mesa == OSMESA_RGB_565) ++ type = GL_UNSIGNED_SHORT_5_6_5; ++ else ++ type = GL_UNSIGNED_BYTE; ++ ++ ret = pOSMesaMakeCurrent( context->context, bits, type, width, height ); + if (ret) + { + pOSMesaPixelStore( OSMESA_ROW_LENGTH, abs( dib.stride ) * 8 / dib.bit_count ); +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/gdi32-OSMesaMakeCurrent/definition wine-staging-1.7.36~ubuntu12.04.1/patches/gdi32-OSMesaMakeCurrent/definition --- wine-staging-1.7.35~ubuntu12.04.1/patches/gdi32-OSMesaMakeCurrent/definition 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/gdi32-OSMesaMakeCurrent/definition 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1 @@ +Fixes: Fix arguments for OSMesaMakeCurrent when using 16 bit formats diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/kernel32-GetFinalPathNameByHandle/0001-kernel32-Implement-GetFinalPathNameByHandle.patch wine-staging-1.7.36~ubuntu12.04.1/patches/kernel32-GetFinalPathNameByHandle/0001-kernel32-Implement-GetFinalPathNameByHandle.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/kernel32-GetFinalPathNameByHandle/0001-kernel32-Implement-GetFinalPathNameByHandle.patch 2015-01-24 15:32:20.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/kernel32-GetFinalPathNameByHandle/0001-kernel32-Implement-GetFinalPathNameByHandle.patch 2015-02-08 20:46:30.000000000 +0000 @@ -1,4 +1,4 @@ -From 2bde361904bbd2463c8de66941e725add7a239e3 Mon Sep 17 00:00:00 2001 +From ea5ae1b1a3c8654b83f7bcdccfd29fc644e7560e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Tue, 12 Aug 2014 20:24:14 +0200 Subject: kernel32: Implement GetFinalPathNameByHandle. @@ -6,9 +6,9 @@ --- .../api-ms-win-core-file-l1-2-0.spec | 4 +- dlls/kernel32/file.c | 182 +++++++++++++++++++++ - dlls/kernel32/kernel32.spec | 2 + + dlls/kernel32/kernel32.spec | 4 +- include/fileapi.h | 8 + - 4 files changed, 194 insertions(+), 2 deletions(-) + 4 files changed, 194 insertions(+), 4 deletions(-) diff --git a/dlls/api-ms-win-core-file-l1-2-0/api-ms-win-core-file-l1-2-0.spec b/dlls/api-ms-win-core-file-l1-2-0/api-ms-win-core-file-l1-2-0.spec index ebfd52e..cddf112 100644 @@ -217,18 +217,20 @@ +} \ No newline at end of file diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec -index c072780..d6955d3 100644 +index 3719505..a272535 100644 --- a/dlls/kernel32/kernel32.spec +++ b/dlls/kernel32/kernel32.spec -@@ -539,6 +539,8 @@ - @ stdcall GetFileAttributesW(wstr) - @ stdcall GetFileInformationByHandle(long ptr) - @ stdcall GetFileInformationByHandleEx(long long ptr long) -+@ stdcall GetFinalPathNameByHandleA(long ptr long long) -+@ stdcall GetFinalPathNameByHandleW(long ptr long long) - @ stdcall GetFileSize(long ptr) +@@ -682,8 +682,8 @@ @ stdcall GetFileSizeEx(long ptr) @ stdcall GetFileTime(long ptr ptr ptr) + @ stdcall GetFileType(long) +-# @ stub GetFinalPathNameByHandleA +-# @ stub GetFinalPathNameByHandleW ++@ stdcall GetFinalPathNameByHandleA(long ptr long long) ++@ stdcall GetFinalPathNameByHandleW(long ptr long long) + @ stdcall GetFirmwareEnvironmentVariableA(str str ptr long) + @ stdcall GetFirmwareEnvironmentVariableW(wstr wstr ptr long) + @ stdcall GetFullPathNameA(str long ptr ptr) diff --git a/include/fileapi.h b/include/fileapi.h index 02bbbd4..0ccf9e9 100644 --- a/include/fileapi.h @@ -249,5 +251,5 @@ } #endif -- -2.1.3 +2.2.1 diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/kernel32-GetNumaProcessorNode/0001-kernel32-Implement-GetNumaProcessorNode.patch wine-staging-1.7.36~ubuntu12.04.1/patches/kernel32-GetNumaProcessorNode/0001-kernel32-Implement-GetNumaProcessorNode.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/kernel32-GetNumaProcessorNode/0001-kernel32-Implement-GetNumaProcessorNode.patch 2015-01-24 15:32:20.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/kernel32-GetNumaProcessorNode/0001-kernel32-Implement-GetNumaProcessorNode.patch 2015-02-08 20:46:30.000000000 +0000 @@ -1,4 +1,4 @@ -From 2f474554aacbbf9980c1294fe26ac2fd77df85d5 Mon Sep 17 00:00:00 2001 +From 055d712c6ebe86e06c2792d2c33cf5b9c5960cf8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Sat, 18 Oct 2014 05:57:32 +0200 Subject: kernel32: Implement GetNumaProcessorNode. @@ -10,10 +10,11 @@ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/dlls/kernel32/cpu.c b/dlls/kernel32/cpu.c -index 0ebf8f3..c389898 100644 +index f48fcf0..886e415 100644 --- a/dlls/kernel32/cpu.c +++ b/dlls/kernel32/cpu.c -@@ -230,2 +230,30 @@ BOOL WINAPI K32GetPerformanceInfo(PPERFORMANCE_INFORMATION info, DWORD size) +@@ -291,3 +291,31 @@ err: + } return TRUE; } + @@ -45,23 +46,23 @@ + return FALSE; +} diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec -index d08f90c..3de8e57 100644 +index a272535..da05859 100644 --- a/dlls/kernel32/kernel32.spec +++ b/dlls/kernel32/kernel32.spec -@@ -584,7 +584,7 @@ - @ stdcall GetNumaHighestNodeNumber(ptr) +@@ -746,7 +746,7 @@ @ stdcall GetNumaNodeProcessorMask(long ptr) + # @ stub GetNumaNodeProcessorMaskEx # @ stub GetNumaProcessorMap -# @ stub GetNumaProcessorNode +@ stdcall GetNumaProcessorNode(long ptr) - @ stdcall GetNumberFormatA(long long str ptr ptr long) - @ stdcall GetNumberFormatW(long long wstr ptr ptr long) - @ stub GetNumberOfConsoleFonts + # @ stub GetNumaProcessorNodeEx + # @ stub GetNumaProximityNode + # @ stub GetNumaProximityNodeEx diff --git a/include/winbase.h b/include/winbase.h -index edd6ad6..055dd00 100644 +index 0d8cede..28fb5ea 100644 --- a/include/winbase.h +++ b/include/winbase.h -@@ -1939,6 +1939,7 @@ WINBASEAPI BOOL WINAPI GetNamedPipeHandleStateW(HANDLE,LPDWORD,LPDWORD,LP +@@ -1953,6 +1953,7 @@ WINBASEAPI BOOL WINAPI GetNamedPipeHandleStateW(HANDLE,LPDWORD,LPDWORD,LP #define GetNamedPipeHandleState WINELIB_NAME_AW(GetNamedPipeHandleState) WINBASEAPI BOOL WINAPI GetNamedPipeInfo(HANDLE,LPDWORD,LPDWORD,LPDWORD,LPDWORD); WINBASEAPI VOID WINAPI GetNativeSystemInfo(LPSYSTEM_INFO); @@ -70,5 +71,5 @@ WINADVAPI BOOL WINAPI GetOldestEventLogRecord(HANDLE,PDWORD); WINBASEAPI BOOL WINAPI GetOverlappedResult(HANDLE,LPOVERLAPPED,LPDWORD,BOOL); -- -1.9.1 +2.2.1 diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/mmdevapi-AEV_GetVolumeRange/0001-mmdevapi-Improve-AEV_GetVolumeRange-stub.patch wine-staging-1.7.36~ubuntu12.04.1/patches/mmdevapi-AEV_GetVolumeRange/0001-mmdevapi-Improve-AEV_GetVolumeRange-stub.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/mmdevapi-AEV_GetVolumeRange/0001-mmdevapi-Improve-AEV_GetVolumeRange-stub.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/mmdevapi-AEV_GetVolumeRange/0001-mmdevapi-Improve-AEV_GetVolumeRange-stub.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,36 @@ +From e88178f705163d00848d550641734f0e06855509 Mon Sep 17 00:00:00 2001 +From: Christian Costa +Date: Sun, 8 Feb 2015 11:32:55 +0100 +Subject: mmdevapi: Improve AEV_GetVolumeRange stub. + +--- + dlls/mmdevapi/audiovolume.c | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +diff --git a/dlls/mmdevapi/audiovolume.c b/dlls/mmdevapi/audiovolume.c +index 4cc3226..f174f58 100644 +--- a/dlls/mmdevapi/audiovolume.c ++++ b/dlls/mmdevapi/audiovolume.c +@@ -248,11 +248,16 @@ static HRESULT WINAPI AEV_QueryHardwareSupport(IAudioEndpointVolumeEx *iface, DW + + static HRESULT WINAPI AEV_GetVolumeRange(IAudioEndpointVolumeEx *iface, float *mindb, float *maxdb, float *inc) + { +- TRACE("(%p)->(%p,%p,%p)\n", iface, mindb, maxdb, inc); ++ FIXME("(%p)->(%p,%p,%p): stub\n", iface, mindb, maxdb, inc); ++ + if (!mindb || !maxdb || !inc) + return E_POINTER; +- FIXME("stub\n"); +- return E_NOTIMPL; ++ ++ *mindb = 0.0f; ++ *maxdb = 1.0f; ++ *inc = 0.1f; ++ ++ return S_OK; + } + + static HRESULT WINAPI AEV_GetVolumeRangeChannel(IAudioEndpointVolumeEx *iface, UINT chan, float *mindb, float *maxdb, float *inc) +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/mmdevapi-AEV_GetVolumeRange/definition wine-staging-1.7.36~ubuntu12.04.1/patches/mmdevapi-AEV_GetVolumeRange/definition --- wine-staging-1.7.35~ubuntu12.04.1/patches/mmdevapi-AEV_GetVolumeRange/definition 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/mmdevapi-AEV_GetVolumeRange/definition 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1 @@ +Fixes: [35658] Improve stub for AEV_GetVolumeRange diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/ntdll-Junction_Points/0001-ntdll-Add-support-for-junction-point-creation.patch wine-staging-1.7.36~ubuntu12.04.1/patches/ntdll-Junction_Points/0001-ntdll-Add-support-for-junction-point-creation.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/ntdll-Junction_Points/0001-ntdll-Add-support-for-junction-point-creation.patch 2015-01-24 15:32:20.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/ntdll-Junction_Points/0001-ntdll-Add-support-for-junction-point-creation.patch 2015-02-08 20:46:30.000000000 +0000 @@ -1,4 +1,4 @@ -From c67c9f74f97bb78a2bc8e97aab32adb236aff3da Mon Sep 17 00:00:00 2001 +From fcfa5f82a4cbb6b3871fde70e72868b0b017a386 Mon Sep 17 00:00:00 2001 From: "Erich E. Hoover" Date: Thu, 16 Jan 2014 20:56:49 -0700 Subject: ntdll: Add support for junction point creation. @@ -12,7 +12,7 @@ create mode 100644 include/ntifs.h diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c -index 56ea398..444831f 100644 +index 5232027..69e8b52 100644 --- a/dlls/ntdll/file.c +++ b/dlls/ntdll/file.c @@ -89,12 +89,14 @@ @@ -30,7 +30,7 @@ #define SECSPERDAY 86400 #define SECS_1601_TO_1970 ((369 * 365 + 89) * (ULONGLONG)SECSPERDAY) -@@ -1470,6 +1472,76 @@ NTSTATUS WINAPI NtDeviceIoControlFile(HANDLE handle, HANDLE event, +@@ -1515,6 +1517,76 @@ NTSTATUS WINAPI NtDeviceIoControlFile(HANDLE handle, HANDLE event, } @@ -107,7 +107,7 @@ /************************************************************************** * NtFsControlFile [NTDLL.@] * ZwFsControlFile [NTDLL.@] -@@ -1617,6 +1689,23 @@ NTSTATUS WINAPI NtFsControlFile(HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc +@@ -1662,6 +1734,23 @@ NTSTATUS WINAPI NtFsControlFile(HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc } break; } @@ -249,12 +249,12 @@ + test_junction_points(); } diff --git a/include/Makefile.in b/include/Makefile.in -index e8d2379..d81aac0 100644 +index 49ad276..7149ea9 100644 --- a/include/Makefile.in +++ b/include/Makefile.in -@@ -466,6 +466,7 @@ SRCDIR_INCLUDES = \ - ntddscsi.h \ +@@ -473,6 +473,7 @@ SRCDIR_INCLUDES = \ ntddstor.h \ + ntdef.h \ ntdsapi.h \ + ntifs.h \ ntquery.h \ @@ -319,5 +319,5 @@ + +#endif /* __WINE_NTIFS_H */ -- -2.1.3 +2.2.1 diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/ntdll-RtlUnwindEx/0001-ntdll-Fix-check-for-end_frame-in-RtlUnwindEx-on-x86_.patch wine-staging-1.7.36~ubuntu12.04.1/patches/ntdll-RtlUnwindEx/0001-ntdll-Fix-check-for-end_frame-in-RtlUnwindEx-on-x86_.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/ntdll-RtlUnwindEx/0001-ntdll-Fix-check-for-end_frame-in-RtlUnwindEx-on-x86_.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/ntdll-RtlUnwindEx/0001-ntdll-Fix-check-for-end_frame-in-RtlUnwindEx-on-x86_.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,25 @@ +From 7dd7631b611976b237acc63386b26866e5b4b253 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Sun, 25 Jan 2015 15:46:05 +0100 +Subject: ntdll: Fix check for end_frame in RtlUnwindEx on x86_64. + +--- + dlls/ntdll/signal_x86_64.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c +index 05581c2..e739cdb 100644 +--- a/dlls/ntdll/signal_x86_64.c ++++ b/dlls/ntdll/signal_x86_64.c +@@ -3178,7 +3178,7 @@ void WINAPI RtlUnwindEx( PVOID end_frame, PVOID target_ip, EXCEPTION_RECORD *rec + dispatch.EstablisherFrame = new_context.Rsp; + } + +- if (context->Rsp == (ULONG64)end_frame) break; ++ if (dispatch.EstablisherFrame == (ULONG64)end_frame) break; + *context = new_context; + } + +-- +2.2.1 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/ntdll-RtlUnwindEx/definition wine-staging-1.7.36~ubuntu12.04.1/patches/ntdll-RtlUnwindEx/definition --- wine-staging-1.7.35~ubuntu12.04.1/patches/ntdll-RtlUnwindEx/definition 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/ntdll-RtlUnwindEx/definition 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1 @@ +Fixes: [34254] Fix check for end_frame in RtlUnwindEx on x86_64. diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0001-ntdll-Add-threadpool-stub-functions-to-specfile.patch wine-staging-1.7.36~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0001-ntdll-Add-threadpool-stub-functions-to-specfile.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0001-ntdll-Add-threadpool-stub-functions-to-specfile.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0001-ntdll-Add-threadpool-stub-functions-to-specfile.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,81 @@ +From 31df48db7d885ca5679ccc010d954d5df7fba288 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Sat, 31 Jan 2015 02:26:17 +0100 +Subject: ntdll: Add threadpool stub functions to specfile. + +--- + dlls/ntdll/ntdll.spec | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 62 insertions(+) + +diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec +index 51de6e7..771f669 100644 +--- a/dlls/ntdll/ntdll.spec ++++ b/dlls/ntdll/ntdll.spec +@@ -969,2 +969,64 @@ + @ stdcall RtlxUnicodeStringToOemSize(ptr) RtlUnicodeStringToOemSize ++# @ stub TpAllocAlpcCompletion ++# @ stub TpAllocAlpcCompletionEx ++# @ stub TpAllocCleanupGroup ++# @ stub TpAllocIoCompletion ++# @ stub TpAllocJobNotification ++# @ stub TpAllocPool ++# @ stub TpAllocTimer ++# @ stub TpAllocWait ++# @ stub TpAllocWork ++# @ stub TpAlpcRegisterCompletionList ++# @ stub TpAlpcUnregisterCompletionList ++# @ stub TpCallbackDetectedUnrecoverableError ++# @ stub TpCallbackIndependent ++# @ stub TpCallbackLeaveCriticalSectionOnCompletion ++# @ stub TpCallbackMayRunLong ++# @ stub TpCallbackReleaseMutexOnCompletion ++# @ stub TpCallbackReleaseSemaphoreOnCompletion ++# @ stub TpCallbackSendAlpcMessageOnCompletion ++# @ stub TpCallbackSendPendingAlpcMessage ++# @ stub TpCallbackSetEventOnCompletion ++# @ stub TpCallbackUnloadDllOnCompletion ++# @ stub TpCancelAsyncIoOperation ++# @ stub TpCaptureCaller ++# @ stub TpCheckTerminateWorker ++# @ stub TpDbgDumpHeapUsage ++# @ stub TpDbgSetLogRoutine ++# @ stub TpDisablePoolCallbackChecks ++# @ stub TpDisassociateCallback ++# @ stub TpIsTimerSet ++# @ stub TpPostWork ++# @ stub TpQueryPoolStackInformation ++# @ stub TpReleaseAlpcCompletion ++# @ stub TpReleaseCleanupGroup ++# @ stub TpReleaseCleanupGroupMembers ++# @ stub TpReleaseIoCompletion ++# @ stub TpReleaseJobNotification ++# @ stub TpReleasePool ++# @ stub TpReleaseTimer ++# @ stub TpReleaseWait ++# @ stub TpReleaseWork ++# @ stub TpSetDefaultPoolMaxThreads ++# @ stub TpSetDefaultPoolStackInformation ++# @ stub TpSetPoolMaxThreads ++# @ stub TpSetPoolMaxThreadsSoftLimit ++# @ stub TpSetPoolMinThreads ++# @ stub TpSetPoolStackInformation ++# @ stub TpSetPoolThreadBasePriority ++# @ stub TpSetPoolWorkerThreadIdleTimeout ++# @ stub TpSetTimer ++# @ stub TpSetTimerEx ++# @ stub TpSetWait ++# @ stub TpSetWaitEx ++# @ stub TpSimpleTryPost ++# @ stub TpStartAsyncIoOperation ++# @ stub TpTimerOutstandingCallbackCount ++# @ stub TpTrimPools ++# @ stub TpWaitForAlpcCompletion ++# @ stub TpWaitForIoCompletion ++# @ stub TpWaitForJobNotification ++# @ stub TpWaitForTimer ++# @ stub TpWaitForWait ++# @ stub TpWaitForWork + @ stdcall -ret64 VerSetConditionMask(int64 long long) +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0002-ntdll-Implement-threadpool-cleanup-group-and-callbac.patch wine-staging-1.7.36~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0002-ntdll-Implement-threadpool-cleanup-group-and-callbac.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0002-ntdll-Implement-threadpool-cleanup-group-and-callbac.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0002-ntdll-Implement-threadpool-cleanup-group-and-callbac.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,1092 @@ +From 45bd5d08b3663253eb51f167176f94111aa389bb Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Sun, 1 Feb 2015 17:38:16 +0100 +Subject: ntdll: Implement threadpool, cleanup group and callback instance + functions. (rev 2) + +Changes in try 2: + * Make sure that always at least one worker thread is present. + * Merge a fix for a race condition between tp_object_{submit,shutdown}. +--- + dlls/ntdll/Makefile.in | 1 + + dlls/ntdll/ntdll.spec | 30 +- + dlls/ntdll/threadpool2.c | 978 +++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 994 insertions(+), 15 deletions(-) + create mode 100644 dlls/ntdll/threadpool2.c + +diff --git a/dlls/ntdll/Makefile.in b/dlls/ntdll/Makefile.in +index ed4bb94..2cecac6 100644 +--- a/dlls/ntdll/Makefile.in ++++ b/dlls/ntdll/Makefile.in +@@ -47,6 +47,7 @@ C_SRCS = \ + tape.c \ + thread.c \ + threadpool.c \ ++ threadpool2.c \ + time.c \ + version.c \ + virtual.c \ +diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec +index 771f669..256ec6d 100644 +--- a/dlls/ntdll/ntdll.spec ++++ b/dlls/ntdll/ntdll.spec +@@ -969,10 +969,10 @@ + @ stdcall RtlxUnicodeStringToOemSize(ptr) RtlUnicodeStringToOemSize + # @ stub TpAllocAlpcCompletion + # @ stub TpAllocAlpcCompletionEx +-# @ stub TpAllocCleanupGroup ++@ stdcall TpAllocCleanupGroup(ptr) + # @ stub TpAllocIoCompletion + # @ stub TpAllocJobNotification +-# @ stub TpAllocPool ++@ stdcall TpAllocPool(ptr ptr) + # @ stub TpAllocTimer + # @ stub TpAllocWait + # @ stub TpAllocWork +@@ -980,38 +980,38 @@ + # @ stub TpAlpcUnregisterCompletionList + # @ stub TpCallbackDetectedUnrecoverableError + # @ stub TpCallbackIndependent +-# @ stub TpCallbackLeaveCriticalSectionOnCompletion +-# @ stub TpCallbackMayRunLong +-# @ stub TpCallbackReleaseMutexOnCompletion +-# @ stub TpCallbackReleaseSemaphoreOnCompletion ++@ stdcall TpCallbackLeaveCriticalSectionOnCompletion(ptr ptr) ++@ stdcall TpCallbackMayRunLong(ptr) ++@ stdcall TpCallbackReleaseMutexOnCompletion(ptr long) ++@ stdcall TpCallbackReleaseSemaphoreOnCompletion(ptr long long) + # @ stub TpCallbackSendAlpcMessageOnCompletion + # @ stub TpCallbackSendPendingAlpcMessage +-# @ stub TpCallbackSetEventOnCompletion +-# @ stub TpCallbackUnloadDllOnCompletion ++@ stdcall TpCallbackSetEventOnCompletion(ptr long) ++@ stdcall TpCallbackUnloadDllOnCompletion(ptr long) + # @ stub TpCancelAsyncIoOperation + # @ stub TpCaptureCaller + # @ stub TpCheckTerminateWorker + # @ stub TpDbgDumpHeapUsage + # @ stub TpDbgSetLogRoutine + # @ stub TpDisablePoolCallbackChecks +-# @ stub TpDisassociateCallback ++@ stdcall TpDisassociateCallback(ptr) + # @ stub TpIsTimerSet + # @ stub TpPostWork + # @ stub TpQueryPoolStackInformation + # @ stub TpReleaseAlpcCompletion +-# @ stub TpReleaseCleanupGroup +-# @ stub TpReleaseCleanupGroupMembers ++@ stdcall TpReleaseCleanupGroup(ptr) ++@ stdcall TpReleaseCleanupGroupMembers(ptr long ptr) + # @ stub TpReleaseIoCompletion + # @ stub TpReleaseJobNotification +-# @ stub TpReleasePool ++@ stdcall TpReleasePool(ptr) + # @ stub TpReleaseTimer + # @ stub TpReleaseWait + # @ stub TpReleaseWork + # @ stub TpSetDefaultPoolMaxThreads + # @ stub TpSetDefaultPoolStackInformation +-# @ stub TpSetPoolMaxThreads ++@ stdcall TpSetPoolMaxThreads(ptr long) + # @ stub TpSetPoolMaxThreadsSoftLimit +-# @ stub TpSetPoolMinThreads ++@ stdcall TpSetPoolMinThreads(ptr long) + # @ stub TpSetPoolStackInformation + # @ stub TpSetPoolThreadBasePriority + # @ stub TpSetPoolWorkerThreadIdleTimeout +@@ -1019,7 +1019,7 @@ + # @ stub TpSetTimerEx + # @ stub TpSetWait + # @ stub TpSetWaitEx +-# @ stub TpSimpleTryPost ++@ stdcall TpSimpleTryPost(ptr ptr ptr) + # @ stub TpStartAsyncIoOperation + # @ stub TpTimerOutstandingCallbackCount + # @ stub TpTrimPools +diff --git a/dlls/ntdll/threadpool2.c b/dlls/ntdll/threadpool2.c +new file mode 100644 +index 0000000..c4e2d21 +--- /dev/null ++++ b/dlls/ntdll/threadpool2.c +@@ -0,0 +1,978 @@ ++/* ++ * Vista Threadpool implementation ++ * ++ * Copyright 2014-2015 Sebastian Lackner ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with this library; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#include "config.h" ++#include "wine/port.h" ++ ++#include ++#include ++#include ++ ++#define NONAMELESSUNION ++#include "ntstatus.h" ++#define WIN32_NO_STATUS ++#include "winternl.h" ++ ++#include "wine/debug.h" ++#include "wine/list.h" ++ ++#include "ntdll_misc.h" ++ ++WINE_DEFAULT_DEBUG_CHANNEL(threadpool); ++ ++/* Besides winetests the following resources were used to implement some ++ * internal details of the threadpool implementation: ++ * ++ * [1] Concurrent Programming on Windows, by Joe Duffy ++ */ ++ ++static inline LONG interlocked_inc( PLONG dest ) ++{ ++ return interlocked_xchg_add( dest, 1 ) + 1; ++} ++ ++static inline LONG interlocked_dec( PLONG dest ) ++{ ++ return interlocked_xchg_add( dest, -1 ) - 1; ++} ++ ++#define THREADPOOL_WORKER_TIMEOUT 5000 ++ ++/* allocated on the stack while a callback is running */ ++struct threadpool_instance ++{ ++ struct threadpool_object *object; ++ DWORD threadid; ++ LONG disassociated; ++ LONG may_run_long; ++ ++ /* cleanup actions */ ++ struct ++ { ++ CRITICAL_SECTION *critical_section; ++ HANDLE mutex; ++ HANDLE semaphore; ++ LONG semaphore_count; ++ HANDLE event; ++ HMODULE library; ++ } cleanup; ++}; ++ ++/* internal threadpool representation */ ++struct threadpool ++{ ++ LONG refcount; ++ BOOL shutdown; ++ CRITICAL_SECTION cs; ++ ++ /* user-defined preferences for number of works */ ++ int max_workers; ++ int min_workers; ++ ++ /* pool of work items, locked via .cs */ ++ struct list pool; ++ RTL_CONDITION_VARIABLE update_event; ++ ++ /* information about worker threads, locked via .cs */ ++ int num_workers; ++ int num_busy_workers; ++}; ++ ++/* internal threadpool object representation */ ++struct threadpool_object ++{ ++ LONG refcount; ++ BOOL shutdown; ++ ++ /* read-only information */ ++ struct threadpool *pool; ++ struct threadpool_group *group; ++ PVOID userdata; ++ PTP_CLEANUP_GROUP_CANCEL_CALLBACK group_cancel_callback; ++ PTP_SIMPLE_CALLBACK finalization_callback; ++ LONG may_run_long; ++ HMODULE race_dll; ++ ++ /* information about the group, locked via .group->cs */ ++ struct list group_entry; /* only used when .group != NULL */ ++ ++ /* information about the pool, locked via .pool->cs */ ++ struct list pool_entry; /* only used when .num_pending_callbacks != 0 */ ++ LONG num_pending_callbacks; ++ LONG num_running_callbacks; ++ RTL_CONDITION_VARIABLE finished_event; ++ ++ /* type of this object */ ++ enum ++ { ++ TP_OBJECT_TYPE_UNDEFINED, ++ TP_OBJECT_TYPE_SIMPLE ++ } type; ++ ++ /* arguments for callback */ ++ union ++ { ++ /* simple callback */ ++ struct ++ { ++ PTP_SIMPLE_CALLBACK callback; ++ } simple; ++ } u; ++}; ++ ++/* internal threadpool group representation */ ++struct threadpool_group ++{ ++ LONG refcount; ++ BOOL shutdown; ++ CRITICAL_SECTION cs; ++ ++ /* locked via .cs */ ++ struct list members; ++}; ++ ++static inline struct threadpool *impl_from_TP_POOL( TP_POOL *pool ) ++{ ++ return (struct threadpool *)pool; ++} ++ ++static inline struct threadpool_group *impl_from_TP_CLEANUP_GROUP( TP_CLEANUP_GROUP *group ) ++{ ++ return (struct threadpool_group *)group; ++} ++ ++static inline struct threadpool_instance *impl_from_TP_CALLBACK_INSTANCE( TP_CALLBACK_INSTANCE *instance ) ++{ ++ return (struct threadpool_instance *)instance; ++} ++ ++static void CALLBACK threadpool_worker_proc( void *param ); ++ ++static NTSTATUS tp_threadpool_alloc( struct threadpool **out ); ++static BOOL tp_threadpool_release( struct threadpool *pool ); ++static void tp_threadpool_shutdown( struct threadpool *pool ); ++ ++static void tp_object_submit( struct threadpool_object *object ); ++static BOOL tp_object_release( struct threadpool_object *object ); ++static void tp_object_shutdown( struct threadpool_object *object ); ++ ++static BOOL tp_group_release( struct threadpool_group *group ); ++ ++/*********************************************************************** ++ * THREADPOOL INSTANCE IMPLEMENTATION ++ ***********************************************************************/ ++ ++static void tp_instance_initialize( struct threadpool_instance *instance, struct threadpool_object *object ) ++{ ++ instance->object = object; ++ instance->threadid = GetCurrentThreadId(); ++ instance->disassociated = FALSE; ++ instance->may_run_long = object->may_run_long; ++ instance->cleanup.critical_section = NULL; ++ instance->cleanup.mutex = NULL; ++ instance->cleanup.semaphore = NULL; ++ instance->cleanup.semaphore_count = 0; ++ instance->cleanup.event = NULL; ++ instance->cleanup.library = NULL; ++} ++ ++static NTSTATUS tp_instance_cleanup( struct threadpool_instance *instance ) ++{ ++ NTSTATUS status; ++ ++ /* According to [1] subsequent functions are not executed if one of the ++ * cleanup steps fails. The order is also based on the description in [1]. */ ++ if (instance->cleanup.critical_section) ++ { ++ RtlLeaveCriticalSection( instance->cleanup.critical_section ); ++ } ++ if (instance->cleanup.mutex) ++ { ++ status = NtReleaseMutant( instance->cleanup.mutex, NULL ); ++ if (status != STATUS_SUCCESS) ++ return status; ++ } ++ if (instance->cleanup.semaphore) ++ { ++ status = NtReleaseSemaphore( instance->cleanup.semaphore, instance->cleanup.semaphore_count, NULL ); ++ if (status != STATUS_SUCCESS) ++ return status; ++ } ++ if (instance->cleanup.event) ++ { ++ status = NtSetEvent( instance->cleanup.event, NULL ); ++ if (status != STATUS_SUCCESS) ++ return status; ++ } ++ if (instance->cleanup.library) ++ { ++ status = LdrUnloadDll( instance->cleanup.library ); ++ if (status != STATUS_SUCCESS) ++ return status; ++ } ++ ++ return STATUS_SUCCESS; ++} ++ ++static void tp_instance_disassociate_thread( struct threadpool_instance *instance ) ++{ ++ struct threadpool_object *object; ++ struct threadpool *pool; ++ ++ if (instance->threadid != GetCurrentThreadId()) ++ { ++ ERR("called from wrong thread, ignoring\n"); ++ return; ++ } ++ if (instance->disassociated) ++ return; ++ ++ object = instance->object; ++ pool = object->pool; ++ RtlEnterCriticalSection( &pool->cs ); ++ ++ object->num_running_callbacks--; ++ if (!object->num_pending_callbacks && !object->num_running_callbacks) ++ RtlWakeAllConditionVariable( &object->finished_event ); ++ ++ RtlLeaveCriticalSection( &pool->cs ); ++ instance->disassociated = TRUE; ++} ++ ++static BOOL tp_instance_may_run_long( struct threadpool_instance *instance ) ++{ ++ struct threadpool_object *object; ++ struct threadpool *pool; ++ NTSTATUS status = STATUS_SUCCESS; ++ ++ if (instance->threadid != GetCurrentThreadId()) ++ { ++ ERR("called from wrong thread, ignoring\n"); ++ return FALSE; ++ } ++ if (instance->may_run_long) ++ return TRUE; ++ ++ object = instance->object; ++ pool = object->pool; ++ RtlEnterCriticalSection( &pool->cs ); ++ ++ if (pool->num_busy_workers >= pool->num_workers && pool->num_workers < pool->max_workers) ++ { ++ HANDLE thread; ++ status = RtlCreateUserThread( GetCurrentProcess(), NULL, FALSE, NULL, 0, 0, ++ threadpool_worker_proc, pool, &thread, NULL ); ++ if (status == STATUS_SUCCESS) ++ { ++ interlocked_inc( &pool->refcount ); ++ pool->num_workers++; ++ NtClose( thread ); ++ } ++ } ++ ++ RtlLeaveCriticalSection( &pool->cs ); ++ instance->may_run_long = TRUE; ++ return !status; ++} ++ ++/*********************************************************************** ++ * THREADPOOL IMPLEMENTATION ++ ***********************************************************************/ ++ ++static struct threadpool *default_threadpool = NULL; ++static struct threadpool *get_default_threadpool( void ) ++{ ++ if (!default_threadpool) ++ { ++ struct threadpool *pool; ++ ++ if (tp_threadpool_alloc( &pool ) != STATUS_SUCCESS) ++ return NULL; ++ ++ if (interlocked_cmpxchg_ptr( (void *)&default_threadpool, pool, NULL ) != NULL) ++ { ++ tp_threadpool_shutdown( pool ); ++ tp_threadpool_release( pool ); ++ } ++ } ++ return default_threadpool; ++} ++ ++static NTSTATUS tp_threadpool_alloc( struct threadpool **out ) ++{ ++ struct threadpool *pool; ++ NTSTATUS status; ++ HANDLE thread; ++ ++ pool = RtlAllocateHeap( GetProcessHeap(), 0, sizeof(*pool) ); ++ if (!pool) ++ return STATUS_NO_MEMORY; ++ ++ pool->refcount = 2; /* this thread + worker proc */ ++ pool->shutdown = FALSE; ++ ++ RtlInitializeCriticalSection( &pool->cs ); ++ pool->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": threadpool.cs"); ++ ++ list_init( &pool->pool ); ++ RtlInitializeConditionVariable( &pool->update_event ); ++ ++ pool->max_workers = 500; ++ pool->min_workers = 1; ++ ++ pool->num_workers = 1; ++ pool->num_busy_workers = 0; ++ ++ status = RtlCreateUserThread( GetCurrentProcess(), NULL, FALSE, NULL, 0, 0, ++ threadpool_worker_proc, pool, &thread, NULL ); ++ if (status != STATUS_SUCCESS) ++ { ++ pool->cs.DebugInfo->Spare[0] = 0; ++ RtlDeleteCriticalSection( &pool->cs ); ++ RtlFreeHeap( GetProcessHeap(), 0, pool ); ++ return status; ++ } ++ NtClose( thread ); ++ ++ TRACE("allocated threadpool %p\n", pool); ++ ++ *out = pool; ++ return STATUS_SUCCESS; ++} ++ ++static BOOL tp_threadpool_release( struct threadpool *pool ) ++{ ++ if (interlocked_dec( &pool->refcount )) ++ return FALSE; ++ ++ TRACE("destroying threadpool %p\n", pool); ++ ++ assert( pool != default_threadpool ); ++ assert( pool->shutdown ); ++ assert( list_empty( &pool->pool ) ); ++ ++ pool->cs.DebugInfo->Spare[0] = 0; ++ RtlDeleteCriticalSection( &pool->cs ); ++ ++ RtlFreeHeap( GetProcessHeap(), 0, pool ); ++ return TRUE; ++} ++ ++static void tp_threadpool_shutdown( struct threadpool *pool ) ++{ ++ assert( pool != default_threadpool ); ++ ++ pool->shutdown = TRUE; ++ RtlWakeAllConditionVariable( &pool->update_event ); ++} ++ ++static void CALLBACK threadpool_worker_proc( void *param ) ++{ ++ struct threadpool *pool = param; ++ LARGE_INTEGER timeout; ++ struct list *ptr; ++ ++ RtlEnterCriticalSection( &pool->cs ); ++ for (;;) ++ { ++ while ((ptr = list_head( &pool->pool ))) ++ { ++ struct threadpool_object *object = LIST_ENTRY( ptr, struct threadpool_object, pool_entry ); ++ struct threadpool_instance instance; ++ assert( object->num_pending_callbacks > 0 ); ++ ++ /* If further pending callbacks are queued, move the work item to ++ * the end of the pool list. Otherwise remove it from the pool. */ ++ list_remove( &object->pool_entry ); ++ if (--object->num_pending_callbacks) ++ list_add_tail( &pool->pool, &object->pool_entry ); ++ object->num_running_callbacks++; ++ ++ /* Leave critical section and do the actual callback. */ ++ pool->num_busy_workers++; ++ RtlLeaveCriticalSection( &pool->cs ); ++ tp_instance_initialize( &instance, object ); ++ ++ /* Execute regular worker callback */ ++ switch (object->type) ++ { ++ case TP_OBJECT_TYPE_SIMPLE: ++ { ++ TP_CALLBACK_INSTANCE *cb_instance = (TP_CALLBACK_INSTANCE *)&instance; ++ TRACE( "executing callback %p(%p, %p)\n", ++ object->u.simple.callback, cb_instance, object->userdata ); ++ object->u.simple.callback( cb_instance, object->userdata ); ++ TRACE( "callback %p returned\n", object->u.simple.callback ); ++ break; ++ } ++ ++ default: ++ FIXME( "callback type %u not implemented\n", object->type ); ++ break; ++ } ++ ++ /* Execute finalization callback */ ++ if (object->finalization_callback) ++ { ++ TP_CALLBACK_INSTANCE *cb_instance = (TP_CALLBACK_INSTANCE *)&instance; ++ TRACE( "executing finalization callback %p(%p, %p)\n", ++ object->finalization_callback, cb_instance, object->userdata ); ++ object->finalization_callback( cb_instance, object->userdata ); ++ TRACE( "finalization callback %p returned\n", object->finalization_callback ); ++ } ++ ++ /* Clean up any other resources */ ++ tp_instance_cleanup( &instance ); ++ RtlEnterCriticalSection( &pool->cs ); ++ pool->num_busy_workers--; ++ ++ /* If instance was not disassociated, then wake up waiting objects. */ ++ if (!instance.disassociated) ++ { ++ object->num_running_callbacks--; ++ if (!object->num_pending_callbacks && !object->num_running_callbacks) ++ RtlWakeAllConditionVariable( &object->finished_event ); ++ } ++ ++ tp_object_release( object ); ++ } ++ ++ /* Shutdown worker thread if requested. */ ++ if (pool->shutdown) ++ break; ++ ++ /* Wait for new tasks or until timeout expires. Never terminate the last worker. */ ++ timeout.QuadPart = (ULONGLONG)THREADPOOL_WORKER_TIMEOUT * -10000; ++ if (RtlSleepConditionVariableCS( &pool->update_event, &pool->cs, ++ &timeout ) == STATUS_TIMEOUT && !list_head( &pool->pool ) && pool->num_workers > 1) ++ { ++ break; ++ } ++ } ++ pool->num_workers--; ++ RtlLeaveCriticalSection( &pool->cs ); ++ tp_threadpool_release( pool ); ++} ++ ++/*********************************************************************** ++ * THREADPOOL OBJECT IMPLEMENTATION ++ ***********************************************************************/ ++ ++static void tp_object_initialize( struct threadpool_object *object, struct threadpool *pool, ++ PVOID userdata, TP_CALLBACK_ENVIRON *environment, BOOL submit_and_release ) ++{ ++ object->refcount = 1; ++ object->shutdown = FALSE; ++ ++ /* Read-only information */ ++ object->pool = pool; ++ object->group = NULL; ++ object->userdata = userdata; ++ object->group_cancel_callback = NULL; ++ object->finalization_callback = NULL; ++ object->may_run_long = 0; ++ object->race_dll = NULL; ++ ++ /* Information about the group */ ++ memset( &object->group_entry, 0, sizeof(object->group_entry) ); ++ ++ /* Information about the pool */ ++ memset( &object->pool_entry, 0, sizeof(object->pool_entry) ); ++ object->num_pending_callbacks = 0; ++ object->num_running_callbacks = 0; ++ RtlInitializeConditionVariable( &object->finished_event ); ++ ++ /* Set properties according to environment, if given */ ++ if (environment) ++ { ++ ++ /* Windows doesn't abort when the version field contains garbage */ ++ if (environment->Version != 1) ++ FIXME("unsupported environment version %d\n", environment->Version); ++ ++ /* object->pool was already set */ ++ object->group = impl_from_TP_CLEANUP_GROUP( environment->CleanupGroup ); ++ object->group_cancel_callback = environment->CleanupGroupCancelCallback; ++ object->finalization_callback = environment->FinalizationCallback; ++ object->may_run_long = environment->u.s.LongFunction != 0; ++ object->race_dll = environment->RaceDll; ++ ++ if (environment->ActivationContext) ++ FIXME("activation context not supported yet\n"); ++ ++ if (environment->u.s.Persistent) ++ FIXME("persistent thread support not supported yet\n"); ++ } ++ ++ /* Increase dll refcount */ ++ if (object->race_dll) ++ LdrAddRefDll( 0, object->race_dll ); ++ ++ /* Increase reference-count on the pool */ ++ interlocked_inc( &pool->refcount ); ++ ++ TRACE("allocated object %p of type %u\n", object, object->type); ++ ++ /* For simple callbacks we have to run tp_object_submit before adding this object ++ * to the cleanup group. As soon as the cleanup group members are released ->shutdown ++ * will be set, and tp_object_submit would fail with an assertion. */ ++ if (submit_and_release) ++ tp_object_submit( object ); ++ ++ /* Assign this object to a specific group. Please note that this has to be done ++ * as the last step before returning a pointer to the application, otherwise ++ * there is a risk of having race-conditions. */ ++ if (object->group) ++ { ++ struct threadpool_group *group = object->group; ++ interlocked_inc( &group->refcount ); ++ ++ RtlEnterCriticalSection( &group->cs ); ++ list_add_tail( &group->members, &object->group_entry ); ++ RtlLeaveCriticalSection( &group->cs ); ++ } ++ ++ if (submit_and_release) ++ { ++ tp_object_shutdown( object ); ++ tp_object_release( object ); ++ } ++} ++ ++static NTSTATUS tp_object_submit_simple( PTP_SIMPLE_CALLBACK callback, PVOID userdata, ++ TP_CALLBACK_ENVIRON *environment ) ++{ ++ struct threadpool_object *object; ++ struct threadpool *pool; ++ ++ /* determine threadpool */ ++ pool = environment ? (struct threadpool *)environment->Pool : NULL; ++ if (!pool) pool = get_default_threadpool(); ++ if (!pool) return STATUS_NO_MEMORY; ++ ++ object = RtlAllocateHeap( GetProcessHeap(), 0, sizeof(*object) ); ++ if (!object) ++ return STATUS_NO_MEMORY; ++ ++ object->type = TP_OBJECT_TYPE_SIMPLE; ++ object->u.simple.callback = callback; ++ tp_object_initialize( object, pool, userdata, environment, TRUE ); ++ ++ return STATUS_SUCCESS; ++} ++ ++static BOOL tp_object_release( struct threadpool_object *object ) ++{ ++ struct threadpool_group *group; ++ ++ if (interlocked_dec( &object->refcount )) ++ return FALSE; ++ ++ TRACE("destroying object %p of type %u\n", object, object->type); ++ ++ assert( object->shutdown ); ++ assert( !object->num_pending_callbacks ); ++ assert( !object->num_running_callbacks ); ++ ++ /* release reference on the group */ ++ if ((group = object->group)) ++ { ++ RtlEnterCriticalSection( &group->cs ); ++ list_remove( &object->group_entry ); ++ RtlLeaveCriticalSection( &group->cs ); ++ tp_group_release( group ); ++ } ++ ++ /* release reference to library */ ++ if (object->race_dll) ++ LdrUnloadDll( object->race_dll ); ++ ++ /* release reference to threadpool */ ++ tp_threadpool_release( object->pool ); ++ ++ RtlFreeHeap( GetProcessHeap(), 0, object ); ++ return TRUE; ++} ++ ++static void tp_object_shutdown( struct threadpool_object *object ) ++{ ++ object->shutdown = TRUE; ++} ++ ++static void tp_object_cancel( struct threadpool_object *object, BOOL group_cancel, PVOID userdata ) ++{ ++ struct threadpool *pool = object->pool; ++ LONG pending_callbacks = 0; ++ ++ /* Remove the pending callbacks from the pool */ ++ RtlEnterCriticalSection( &pool->cs ); ++ if (object->num_pending_callbacks) ++ { ++ pending_callbacks = object->num_pending_callbacks; ++ list_remove( &object->pool_entry ); ++ object->num_pending_callbacks = 0; ++ } ++ RtlLeaveCriticalSection( &pool->cs ); ++ ++ /* Execute group cancellation callback if defined, and if this was actually a group cancel. */ ++ if (pending_callbacks && group_cancel && object->group_cancel_callback) ++ { ++ TRACE( "executing group cancel callback %p(%p, %p)\n", object->group_cancel_callback, object, userdata ); ++ object->group_cancel_callback( object, userdata ); ++ TRACE( "group cancel callback %p returned\n", object->group_cancel_callback ); ++ } ++ ++ /* remove references for removed pending callbacks */ ++ while (pending_callbacks--) ++ tp_object_release( object ); ++} ++ ++static void tp_object_wait( struct threadpool_object *object ) ++{ ++ struct threadpool *pool = object->pool; ++ RtlEnterCriticalSection( &pool->cs ); ++ ++ while (object->num_pending_callbacks || object->num_running_callbacks) ++ RtlSleepConditionVariableCS( &object->finished_event, &pool->cs, NULL ); ++ ++ RtlLeaveCriticalSection( &pool->cs ); ++} ++ ++static void tp_object_submit( struct threadpool_object *object ) ++{ ++ struct threadpool *pool = object->pool; ++ ++ assert( !object->shutdown ); ++ assert( !pool->shutdown ); ++ ++ RtlEnterCriticalSection( &pool->cs ); ++ ++ /* Start new worker threads if required (and allowed) */ ++ if (pool->num_busy_workers >= pool->num_workers && pool->num_workers < pool->max_workers) ++ { ++ NTSTATUS status; ++ HANDLE thread; ++ ++ status = RtlCreateUserThread( GetCurrentProcess(), NULL, FALSE, NULL, 0, 0, ++ threadpool_worker_proc, pool, &thread, NULL ); ++ if (status == STATUS_SUCCESS) ++ { ++ interlocked_inc( &pool->refcount ); ++ pool->num_workers++; ++ NtClose( thread ); ++ } ++ else ++ { ++ assert( pool->num_workers > 0 ); ++ RtlWakeConditionVariable( &pool->update_event ); ++ } ++ } ++ else RtlWakeConditionVariable( &pool->update_event ); ++ ++ /* Queue work item into pool and increment refcount */ ++ if (!object->num_pending_callbacks++) ++ list_add_tail( &pool->pool, &object->pool_entry ); ++ ++ interlocked_inc( &object->refcount ); ++ ++ RtlLeaveCriticalSection( &pool->cs ); ++} ++ ++/*********************************************************************** ++ * THREADPOOL GROUP IMPLEMENTATION ++ ***********************************************************************/ ++ ++static NTSTATUS tp_group_alloc( struct threadpool_group **out ) ++{ ++ struct threadpool_group *group; ++ ++ group = RtlAllocateHeap( GetProcessHeap(), 0, sizeof(*group) ); ++ if (!group) ++ return STATUS_NO_MEMORY; ++ ++ group->refcount = 1; ++ group->shutdown = FALSE; ++ ++ RtlInitializeCriticalSection( &group->cs ); ++ group->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": threadpool_group.cs"); ++ ++ list_init( &group->members ); ++ ++ TRACE("allocated group %p\n", group); ++ ++ *out = group; ++ return STATUS_SUCCESS; ++} ++ ++static BOOL tp_group_release( struct threadpool_group *group ) ++{ ++ if (interlocked_dec( &group->refcount )) ++ return FALSE; ++ ++ TRACE("destroying group %p\n", group); ++ ++ assert( group->shutdown ); ++ assert( list_empty( &group->members ) ); ++ ++ group->cs.DebugInfo->Spare[0] = 0; ++ RtlDeleteCriticalSection( &group->cs ); ++ ++ RtlFreeHeap( GetProcessHeap(), 0, group ); ++ return TRUE; ++} ++ ++static void tp_group_shutdown( struct threadpool_group *group ) ++{ ++ group->shutdown = TRUE; ++} ++ ++static void tp_group_release_members( struct threadpool_group *group, BOOL cancel_pending, PVOID userdata ) ++{ ++ struct threadpool_object *object, *next; ++ struct list members; ++ ++ /* We cannot keep the group locked until all tasks have finished. ++ * Create a temporary list containing all tasks which were member of the group. */ ++ ++ RtlEnterCriticalSection( &group->cs ); ++ LIST_FOR_EACH_ENTRY( object, &group->members, struct threadpool_object, group_entry ) ++ { ++ /* reset the group - objects do no longer to remove manually from the group on destruction. */ ++ assert( object->group == group ); ++ object->group = NULL; ++ ++ /* Simple callbacks are very special. The user doesn't hold any reference, so ++ * they would be released too early. Add one additional temporary reference. */ ++ if (object->type == TP_OBJECT_TYPE_SIMPLE) ++ interlocked_inc(&object->refcount); ++ ++ /* Do not allow to submit new tasks for this object. */ ++ tp_object_shutdown( object ); ++ } ++ ++ list_init( &members ); ++ list_move_tail( &members, &group->members ); ++ RtlLeaveCriticalSection( &group->cs ); ++ ++ /* Cancel pending tasks, execute the group cancel callback. */ ++ if (cancel_pending) ++ { ++ LIST_FOR_EACH_ENTRY( object, &members, struct threadpool_object, group_entry ) ++ tp_object_cancel( object, TRUE, userdata ); ++ } ++ ++ LIST_FOR_EACH_ENTRY_SAFE( object, next, &members, struct threadpool_object, group_entry ) ++ { ++ /* Wait for tasks to finish, afterwards release one reference. This could destroy ++ * the object, so we use LIST_FOR_EACH_ENTRY_SAFE. If the object is not destroyed, ++ * then ->group_entry contains garbage, but that doesn't matter. It will not be ++ * used anymore because ->group == NULL. */ ++ tp_object_wait( object ); ++ tp_object_release( object ); ++ ++ /* Manually release the group reference */ ++ tp_group_release( group ); ++ } ++} ++ ++ ++ ++/*********************************************************************** ++ * TpAllocCleanupGroup (NTDLL.@) ++ */ ++NTSTATUS WINAPI TpAllocCleanupGroup( TP_CLEANUP_GROUP **out ) ++{ ++ TRACE("%p\n", out); ++ if (!out) return STATUS_ACCESS_VIOLATION; ++ return tp_group_alloc( (struct threadpool_group **)out ); ++} ++ ++/*********************************************************************** ++ * TpAllocPool (NTDLL.@) ++ */ ++NTSTATUS WINAPI TpAllocPool( TP_POOL **out, PVOID reserved ) ++{ ++ TRACE("%p %p\n", out, reserved); ++ if (reserved) FIXME("reserved argument is nonzero (%p)", reserved); ++ if (!out) return STATUS_ACCESS_VIOLATION; ++ return tp_threadpool_alloc( (struct threadpool **)out ); ++} ++ ++/*********************************************************************** ++ * TpCallbackLeaveCriticalSectionOnCompletion (NTDLL.@) ++ */ ++VOID WINAPI TpCallbackLeaveCriticalSectionOnCompletion( TP_CALLBACK_INSTANCE *instance, CRITICAL_SECTION *crit ) ++{ ++ struct threadpool_instance *this = impl_from_TP_CALLBACK_INSTANCE( instance ); ++ TRACE("%p %p\n", instance, crit); ++ if (!this) return; ++ if (this->cleanup.critical_section) ++ FIXME("attempt to set multiple cleanup critical sections\n"); ++ else ++ this->cleanup.critical_section = crit; ++} ++ ++/*********************************************************************** ++ * TpCallbackMayRunLong (NTDLL.@) ++ */ ++NTSTATUS WINAPI TpCallbackMayRunLong( TP_CALLBACK_INSTANCE *instance ) ++{ ++ struct threadpool_instance *this = impl_from_TP_CALLBACK_INSTANCE( instance ); ++ TRACE("%p\n", instance); ++ if (!this) return STATUS_ACCESS_VIOLATION; ++ return tp_instance_may_run_long( this ); ++} ++ ++/*********************************************************************** ++ * TpCallbackReleaseMutexOnCompletion (NTDLL.@) ++ */ ++VOID WINAPI TpCallbackReleaseMutexOnCompletion( TP_CALLBACK_INSTANCE *instance, HANDLE mutex ) ++{ ++ struct threadpool_instance *this = impl_from_TP_CALLBACK_INSTANCE( instance ); ++ TRACE("%p %p\n", instance, mutex); ++ if (!this) return; ++ if (this->cleanup.mutex) ++ FIXME("attempt to set multiple cleanup mutexes\n"); ++ else ++ this->cleanup.mutex = mutex; ++} ++ ++/*********************************************************************** ++ * TpCallbackReleaseSemaphoreOnCompletion (NTDLL.@) ++ */ ++VOID WINAPI TpCallbackReleaseSemaphoreOnCompletion( TP_CALLBACK_INSTANCE *instance, HANDLE semaphore, DWORD count ) ++{ ++ struct threadpool_instance *this = impl_from_TP_CALLBACK_INSTANCE( instance ); ++ TRACE("%p %p %u\n", instance, semaphore, count); ++ if (!this) return; ++ if (this->cleanup.semaphore) ++ FIXME("attempt to set multiple cleanup semaphores\n"); ++ else ++ { ++ this->cleanup.semaphore = semaphore; ++ this->cleanup.semaphore_count = count; ++ } ++} ++ ++/*********************************************************************** ++ * TpCallbackSetEventOnCompletion (NTDLL.@) ++ */ ++VOID WINAPI TpCallbackSetEventOnCompletion( TP_CALLBACK_INSTANCE *instance, HANDLE event ) ++{ ++ struct threadpool_instance *this = impl_from_TP_CALLBACK_INSTANCE( instance ); ++ TRACE("%p %p\n", instance, event); ++ if (!this) return; ++ if (this->cleanup.event) ++ FIXME("attempt to set multiple cleanup events\n"); ++ else ++ this->cleanup.event = event; ++} ++ ++/*********************************************************************** ++ * TpCallbackUnloadDllOnCompletion (NTDLL.@) ++ */ ++VOID WINAPI TpCallbackUnloadDllOnCompletion( TP_CALLBACK_INSTANCE *instance, HMODULE module ) ++{ ++ struct threadpool_instance *this = impl_from_TP_CALLBACK_INSTANCE( instance ); ++ TRACE("%p %p\n", instance, module); ++ if (!this) return; ++ if (this->cleanup.library) ++ FIXME("attempt to set multiple cleanup libraries\n"); ++ else ++ this->cleanup.library = module; ++} ++ ++/*********************************************************************** ++ * TpDisassociateCallback (NTDLL.@) ++ */ ++VOID WINAPI TpDisassociateCallback( TP_CALLBACK_INSTANCE *instance ) ++{ ++ struct threadpool_instance *this = impl_from_TP_CALLBACK_INSTANCE( instance ); ++ TRACE("%p\n", instance); ++ if (this) tp_instance_disassociate_thread( this ); ++} ++ ++/*********************************************************************** ++ * TpReleaseCleanupGroup (NTDLL.@) ++ */ ++VOID WINAPI TpReleaseCleanupGroup( TP_CLEANUP_GROUP *group ) ++{ ++ struct threadpool_group *this = impl_from_TP_CLEANUP_GROUP( group ); ++ TRACE("%p\n", group); ++ if (this) ++ { ++ tp_group_shutdown( this ); ++ tp_group_release( this ); ++ } ++} ++ ++/*********************************************************************** ++ * TpReleaseCleanupGroupMembers (NTDLL.@) ++ */ ++VOID WINAPI TpReleaseCleanupGroupMembers( TP_CLEANUP_GROUP *group, BOOL cancel_pending, PVOID userdata ) ++{ ++ struct threadpool_group *this = impl_from_TP_CLEANUP_GROUP( group ); ++ TRACE("%p %d %p\n", group, cancel_pending, userdata); ++ if (this) tp_group_release_members( this, cancel_pending, userdata ); ++} ++ ++/*********************************************************************** ++ * TpReleasePool (NTDLL.@) ++ */ ++VOID WINAPI TpReleasePool( TP_POOL *pool ) ++{ ++ struct threadpool *this = impl_from_TP_POOL( pool ); ++ TRACE("%p\n", pool); ++ if (this) ++ { ++ tp_threadpool_shutdown( this ); ++ tp_threadpool_release( this ); ++ } ++} ++ ++/*********************************************************************** ++ * TpSetPoolMaxThreads (NTDLL.@) ++ */ ++VOID WINAPI TpSetPoolMaxThreads( TP_POOL *pool, DWORD maximum ) ++{ ++ struct threadpool *this = impl_from_TP_POOL( pool ); ++ TRACE("%p %d\n", pool, maximum); ++ if (this) this->max_workers = max(maximum, 1); ++} ++ ++/*********************************************************************** ++ * TpSetPoolMinThreads (NTDLL.@) ++ */ ++BOOL WINAPI TpSetPoolMinThreads( TP_POOL *pool, DWORD minimum ) ++{ ++ struct threadpool *this = impl_from_TP_POOL( pool ); ++ FIXME("%p %d: semi-stub\n", pool, minimum); ++ if (this) this->min_workers = max(minimum, 1); ++ return TRUE; ++} ++ ++/*********************************************************************** ++ * TpSimpleTryPost (NTDLL.@) ++ */ ++NTSTATUS WINAPI TpSimpleTryPost( PTP_SIMPLE_CALLBACK callback, PVOID userdata, TP_CALLBACK_ENVIRON *environment ) ++{ ++ TRACE("%p %p %p\n", callback, userdata, environment); ++ return tp_object_submit_simple( callback, userdata, environment ); ++} +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0003-ntdll-Implement-additional-threadpool-work-item-func.patch wine-staging-1.7.36~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0003-ntdll-Implement-additional-threadpool-work-item-func.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0003-ntdll-Implement-additional-threadpool-work-item-func.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0003-ntdll-Implement-additional-threadpool-work-item-func.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,210 @@ +From f0c8d1f64679e4777439ffc1b9d74d47287d72eb Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Sun, 1 Feb 2015 18:06:08 +0100 +Subject: ntdll: Implement additional threadpool work item functions. + +--- + dlls/ntdll/ntdll.spec | 8 ++-- + dlls/ntdll/threadpool2.c | 97 +++++++++++++++++++++++++++++++++++++++++++++++- + 2 files changed, 100 insertions(+), 5 deletions(-) + +diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec +index 256ec6d..bf9e795 100644 +--- a/dlls/ntdll/ntdll.spec ++++ b/dlls/ntdll/ntdll.spec +@@ -975,7 +975,7 @@ + @ stdcall TpAllocPool(ptr ptr) + # @ stub TpAllocTimer + # @ stub TpAllocWait +-# @ stub TpAllocWork ++@ stdcall TpAllocWork(ptr ptr ptr ptr) + # @ stub TpAlpcRegisterCompletionList + # @ stub TpAlpcUnregisterCompletionList + # @ stub TpCallbackDetectedUnrecoverableError +@@ -996,7 +996,7 @@ + # @ stub TpDisablePoolCallbackChecks + @ stdcall TpDisassociateCallback(ptr) + # @ stub TpIsTimerSet +-# @ stub TpPostWork ++@ stdcall TpPostWork(ptr) + # @ stub TpQueryPoolStackInformation + # @ stub TpReleaseAlpcCompletion + @ stdcall TpReleaseCleanupGroup(ptr) +@@ -1006,7 +1006,7 @@ + @ stdcall TpReleasePool(ptr) + # @ stub TpReleaseTimer + # @ stub TpReleaseWait +-# @ stub TpReleaseWork ++@ stdcall TpReleaseWork(ptr) + # @ stub TpSetDefaultPoolMaxThreads + # @ stub TpSetDefaultPoolStackInformation + @ stdcall TpSetPoolMaxThreads(ptr long) +@@ -1030,3 +1030,3 @@ + # @ stub TpWaitForWait +-# @ stub TpWaitForWork ++@ stdcall TpWaitForWork(ptr long) + @ stdcall -ret64 VerSetConditionMask(int64 long long) +diff --git a/dlls/ntdll/threadpool2.c b/dlls/ntdll/threadpool2.c +index c4e2d21..a6fd141 100644 +--- a/dlls/ntdll/threadpool2.c ++++ b/dlls/ntdll/threadpool2.c +@@ -123,7 +123,8 @@ struct threadpool_object + enum + { + TP_OBJECT_TYPE_UNDEFINED, +- TP_OBJECT_TYPE_SIMPLE ++ TP_OBJECT_TYPE_SIMPLE, ++ TP_OBJECT_TYPE_WORK + } type; + + /* arguments for callback */ +@@ -134,6 +135,11 @@ struct threadpool_object + { + PTP_SIMPLE_CALLBACK callback; + } simple; ++ /* work callback */ ++ struct ++ { ++ PTP_WORK_CALLBACK callback; ++ } work; + } u; + }; + +@@ -153,6 +159,13 @@ static inline struct threadpool *impl_from_TP_POOL( TP_POOL *pool ) + return (struct threadpool *)pool; + } + ++static inline struct threadpool_object *impl_from_TP_WORK( TP_WORK *work ) ++{ ++ struct threadpool_object *object = (struct threadpool_object *)work; ++ assert( !object || object->type == TP_OBJECT_TYPE_WORK ); ++ return object; ++} ++ + static inline struct threadpool_group *impl_from_TP_CLEANUP_GROUP( TP_CLEANUP_GROUP *group ) + { + return (struct threadpool_group *)group; +@@ -423,6 +436,16 @@ static void CALLBACK threadpool_worker_proc( void *param ) + break; + } + ++ case TP_OBJECT_TYPE_WORK: ++ { ++ TP_CALLBACK_INSTANCE *cb_instance = (TP_CALLBACK_INSTANCE *)&instance; ++ TRACE( "executing callback %p(%p, %p, %p)\n", ++ object->u.work.callback, cb_instance, object->userdata, object ); ++ object->u.work.callback( cb_instance, object->userdata, (TP_WORK *)object ); ++ TRACE( "callback %p returned\n", object->u.work.callback ); ++ break; ++ } ++ + default: + FIXME( "callback type %u not implemented\n", object->type ); + break; +@@ -578,6 +601,29 @@ static NTSTATUS tp_object_submit_simple( PTP_SIMPLE_CALLBACK callback, PVOID use + return STATUS_SUCCESS; + } + ++static NTSTATUS tp_object_alloc_work( struct threadpool_object **out, PTP_WORK_CALLBACK callback, ++ PVOID userdata, TP_CALLBACK_ENVIRON *environment ) ++{ ++ struct threadpool_object *object; ++ struct threadpool *pool; ++ ++ /* determine threadpool */ ++ pool = environment ? (struct threadpool *)environment->Pool : NULL; ++ if (!pool) pool = get_default_threadpool(); ++ if (!pool) return STATUS_NO_MEMORY; ++ ++ object = RtlAllocateHeap( GetProcessHeap(), 0, sizeof(*object) ); ++ if (!object) ++ return STATUS_NO_MEMORY; ++ ++ object->type = TP_OBJECT_TYPE_WORK; ++ object->u.work.callback = callback; ++ tp_object_initialize( object, pool, userdata, environment, FALSE ); ++ ++ *out = object; ++ return STATUS_SUCCESS; ++} ++ + static BOOL tp_object_release( struct threadpool_object *object ) + { + struct threadpool_group *group; +@@ -816,6 +862,16 @@ NTSTATUS WINAPI TpAllocPool( TP_POOL **out, PVOID reserved ) + } + + /*********************************************************************** ++ * TpAllocWork (NTDLL.@) ++ */ ++NTSTATUS WINAPI TpAllocWork( TP_WORK **out, PTP_WORK_CALLBACK callback, PVOID userdata, ++ TP_CALLBACK_ENVIRON *environment ) ++{ ++ TRACE("%p %p %p %p\n", out, callback, userdata, environment); ++ return tp_object_alloc_work( (struct threadpool_object **)out, callback, userdata, environment ); ++} ++ ++/*********************************************************************** + * TpCallbackLeaveCriticalSectionOnCompletion (NTDLL.@) + */ + VOID WINAPI TpCallbackLeaveCriticalSectionOnCompletion( TP_CALLBACK_INSTANCE *instance, CRITICAL_SECTION *crit ) +@@ -910,6 +966,16 @@ VOID WINAPI TpDisassociateCallback( TP_CALLBACK_INSTANCE *instance ) + } + + /*********************************************************************** ++ * TpPostWork (NTDLL.@) ++ */ ++VOID WINAPI TpPostWork( TP_WORK *work ) ++{ ++ struct threadpool_object *this = impl_from_TP_WORK( work ); ++ TRACE("%p\n", work); ++ if (this) tp_object_submit( this ); ++} ++ ++/*********************************************************************** + * TpReleaseCleanupGroup (NTDLL.@) + */ + VOID WINAPI TpReleaseCleanupGroup( TP_CLEANUP_GROUP *group ) +@@ -948,6 +1014,20 @@ VOID WINAPI TpReleasePool( TP_POOL *pool ) + } + + /*********************************************************************** ++ * TpReleaseWork (NTDLL.@) ++ */ ++VOID WINAPI TpReleaseWork( TP_WORK *work ) ++{ ++ struct threadpool_object *this = impl_from_TP_WORK( work ); ++ TRACE("%p\n", work); ++ if (this) ++ { ++ tp_object_shutdown( this ); ++ tp_object_release( this ); ++ } ++} ++ ++/*********************************************************************** + * TpSetPoolMaxThreads (NTDLL.@) + */ + VOID WINAPI TpSetPoolMaxThreads( TP_POOL *pool, DWORD maximum ) +@@ -976,3 +1056,18 @@ NTSTATUS WINAPI TpSimpleTryPost( PTP_SIMPLE_CALLBACK callback, PVOID userdata, T + TRACE("%p %p %p\n", callback, userdata, environment); + return tp_object_submit_simple( callback, userdata, environment ); + } ++ ++/*********************************************************************** ++ * TpWaitForWork (NTDLL.@) ++ */ ++VOID WINAPI TpWaitForWork( TP_WORK *work, BOOL cancel_pending ) ++{ ++ struct threadpool_object *this = impl_from_TP_WORK( work ); ++ TRACE("%p %d\n", work, cancel_pending); ++ if (this) ++ { ++ if (cancel_pending) ++ tp_object_cancel( this, FALSE, NULL ); ++ tp_object_wait( this ); ++ } ++} +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0004-ntdll-Implement-threadpool-timer-functions.-rev-2.patch wine-staging-1.7.36~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0004-ntdll-Implement-threadpool-timer-functions.-rev-2.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0004-ntdll-Implement-threadpool-timer-functions.-rev-2.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0004-ntdll-Implement-threadpool-timer-functions.-rev-2.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,563 @@ +From e494481628d87eab64df7e8cb04047d2330c2847 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Sun, 1 Feb 2015 18:21:28 +0100 +Subject: ntdll: Implement threadpool timer functions. (rev 2) + +--- + dlls/ntdll/ntdll.spec | 10 +- + dlls/ntdll/threadpool2.c | 399 ++++++++++++++++++++++++++++++++++++++++++++++- + 2 files changed, 403 insertions(+), 6 deletions(-) + +diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec +index bf9e795..f4328a9 100644 +--- a/dlls/ntdll/ntdll.spec ++++ b/dlls/ntdll/ntdll.spec +@@ -973,7 +973,7 @@ + # @ stub TpAllocIoCompletion + # @ stub TpAllocJobNotification + @ stdcall TpAllocPool(ptr ptr) +-# @ stub TpAllocTimer ++@ stdcall TpAllocTimer(ptr ptr ptr) + # @ stub TpAllocWait + @ stdcall TpAllocWork(ptr ptr ptr ptr) + # @ stub TpAlpcRegisterCompletionList +@@ -995,7 +995,7 @@ + # @ stub TpDbgSetLogRoutine + # @ stub TpDisablePoolCallbackChecks + @ stdcall TpDisassociateCallback(ptr) +-# @ stub TpIsTimerSet ++@ stdcall TpIsTimerSet(ptr) + @ stdcall TpPostWork(ptr) + # @ stub TpQueryPoolStackInformation + # @ stub TpReleaseAlpcCompletion +@@ -1004,7 +1004,7 @@ + # @ stub TpReleaseIoCompletion + # @ stub TpReleaseJobNotification + @ stdcall TpReleasePool(ptr) +-# @ stub TpReleaseTimer ++@ stdcall TpReleaseTimer(ptr) + # @ stub TpReleaseWait + @ stdcall TpReleaseWork(ptr) + # @ stub TpSetDefaultPoolMaxThreads +@@ -1015,7 +1015,7 @@ + # @ stub TpSetPoolStackInformation + # @ stub TpSetPoolThreadBasePriority + # @ stub TpSetPoolWorkerThreadIdleTimeout +-# @ stub TpSetTimer ++@ stdcall TpSetTimer(ptr ptr long long) + # @ stub TpSetTimerEx + # @ stub TpSetWait + # @ stub TpSetWaitEx +@@ -1026,7 +1026,7 @@ + # @ stub TpWaitForAlpcCompletion + # @ stub TpWaitForIoCompletion + # @ stub TpWaitForJobNotification +-# @ stub TpWaitForTimer ++@ stdcall TpWaitForTimer(ptr long) + # @ stub TpWaitForWait + @ stdcall TpWaitForWork(ptr long) + @ stdcall -ret64 VerSetConditionMask(int64 long long) +diff --git a/dlls/ntdll/threadpool2.c b/dlls/ntdll/threadpool2.c +index a6fd141..19096a0 100644 +--- a/dlls/ntdll/threadpool2.c ++++ b/dlls/ntdll/threadpool2.c +@@ -124,7 +124,8 @@ struct threadpool_object + { + TP_OBJECT_TYPE_UNDEFINED, + TP_OBJECT_TYPE_SIMPLE, +- TP_OBJECT_TYPE_WORK ++ TP_OBJECT_TYPE_WORK, ++ TP_OBJECT_TYPE_TIMER + } type; + + /* arguments for callback */ +@@ -140,6 +141,21 @@ struct threadpool_object + { + PTP_WORK_CALLBACK callback; + } work; ++ /* timer callback */ ++ struct ++ { ++ PTP_TIMER_CALLBACK callback; ++ ++ /* information about the timer, locked via timerqueue.cs */ ++ BOOL timer_initialized; ++ BOOL timer_pending; ++ struct list timer_entry; ++ ++ BOOL timer_set; ++ ULONGLONG timeout; ++ LONG period; ++ LONG window_length; ++ } timer; + } u; + }; + +@@ -154,6 +170,35 @@ struct threadpool_group + struct list members; + }; + ++/* global timerqueue object */ ++static RTL_CRITICAL_SECTION_DEBUG timerqueue_debug; ++static struct ++{ ++ CRITICAL_SECTION cs; ++ ++ /* number of timer objects total */ ++ BOOL thread_running; ++ LONG num_timers; ++ ++ /* list of pending timers */ ++ struct list pending_timers; ++ RTL_CONDITION_VARIABLE update_event; ++} ++timerqueue = ++{ ++ { &timerqueue_debug, -1, 0, 0, 0, 0 }, ++ FALSE, ++ 0, ++ LIST_INIT( timerqueue.pending_timers ), ++ RTL_CONDITION_VARIABLE_INIT ++}; ++static RTL_CRITICAL_SECTION_DEBUG timerqueue_debug = ++{ ++ 0, 0, &timerqueue.cs, ++ { &timerqueue_debug.ProcessLocksList, &timerqueue_debug.ProcessLocksList }, ++ 0, 0, { (DWORD_PTR)(__FILE__ ": timerqueue.cs") } ++}; ++ + static inline struct threadpool *impl_from_TP_POOL( TP_POOL *pool ) + { + return (struct threadpool *)pool; +@@ -166,6 +211,13 @@ static inline struct threadpool_object *impl_from_TP_WORK( TP_WORK *work ) + return object; + } + ++static inline struct threadpool_object *impl_from_TP_TIMER( TP_TIMER *timer ) ++{ ++ struct threadpool_object *object = (struct threadpool_object *)timer; ++ assert( !object || object->type == TP_OBJECT_TYPE_TIMER ); ++ return object; ++} ++ + static inline struct threadpool_group *impl_from_TP_CLEANUP_GROUP( TP_CLEANUP_GROUP *group ) + { + return (struct threadpool_group *)group; +@@ -177,6 +229,7 @@ static inline struct threadpool_instance *impl_from_TP_CALLBACK_INSTANCE( TP_CAL + } + + static void CALLBACK threadpool_worker_proc( void *param ); ++static void CALLBACK timerqueue_thread_proc( void *param ); + + static NTSTATUS tp_threadpool_alloc( struct threadpool **out ); + static BOOL tp_threadpool_release( struct threadpool *pool ); +@@ -189,6 +242,243 @@ static void tp_object_shutdown( struct threadpool_object *object ); + static BOOL tp_group_release( struct threadpool_group *group ); + + /*********************************************************************** ++ * TIMERQUEUE IMPLEMENTATION ++ *********************************************************************** ++ * ++ * Based on [1] there is only one (persistent) thread which handles ++ * timer events. There is a similar implementation in ntdll/ ++ * threadpool.c, but its not directly possible to merge them because of ++ * specific implementation differences, like handling several events at ++ * once using a windowlength parameter. */ ++ ++static NTSTATUS tp_timerqueue_acquire( struct threadpool_object *timer ) ++{ ++ NTSTATUS status = STATUS_SUCCESS; ++ assert( timer->type == TP_OBJECT_TYPE_TIMER ); ++ ++ timer->u.timer.timer_initialized = TRUE; ++ timer->u.timer.timer_pending = FALSE; ++ memset( &timer->u.timer.timer_entry, 0, sizeof(timer->u.timer.timer_entry) ); ++ ++ timer->u.timer.timer_set = FALSE; ++ timer->u.timer.timeout = 0; ++ timer->u.timer.period = 0; ++ timer->u.timer.window_length = 0; ++ ++ RtlEnterCriticalSection( &timerqueue.cs ); ++ ++ if (!timerqueue.thread_running) ++ { ++ HANDLE thread; ++ status = RtlCreateUserThread( GetCurrentProcess(), NULL, FALSE, NULL, 0, 0, ++ timerqueue_thread_proc, NULL, &thread, NULL ); ++ if (status == STATUS_SUCCESS) ++ { ++ NtClose( thread ); ++ timerqueue.thread_running = TRUE; ++ } ++ } ++ ++ if (!status) timerqueue.num_timers++; ++ RtlLeaveCriticalSection( &timerqueue.cs ); ++ return status; ++} ++ ++static void tp_timerqueue_release( struct threadpool_object *timer ) ++{ ++ assert( timer->type == TP_OBJECT_TYPE_TIMER ); ++ RtlEnterCriticalSection( &timerqueue.cs ); ++ ++ if (timer->u.timer.timer_initialized) ++ { ++ if (timer->u.timer.timer_pending) ++ { ++ list_remove( &timer->u.timer.timer_entry ); ++ timer->u.timer.timer_pending = FALSE; ++ } ++ ++ if (!--timerqueue.num_timers) ++ { ++ assert( list_empty( &timerqueue.pending_timers ) ); ++ RtlWakeAllConditionVariable( &timerqueue.update_event ); ++ } ++ ++ timer->u.timer.timer_initialized = FALSE; ++ } ++ ++ RtlLeaveCriticalSection( &timerqueue.cs ); ++} ++ ++static void tp_timerqueue_update_timer( struct threadpool_object *new_timer, LARGE_INTEGER *timeout, ++ LONG period, LONG window_length ) ++{ ++ BOOL submit_timer = FALSE; ++ struct threadpool_object *timer; ++ ULONGLONG when; ++ ++ assert( new_timer->type == TP_OBJECT_TYPE_TIMER ); ++ RtlEnterCriticalSection( &timerqueue.cs ); ++ assert( new_timer->u.timer.timer_initialized ); ++ ++ /* Remember if the timer is set or unset */ ++ new_timer->u.timer.timer_set = timeout != NULL; ++ ++ if (timeout) ++ { ++ when = timeout->QuadPart; ++ ++ /* A timeout of zero means that the timer should be submitted immediately */ ++ if (when == 0) ++ { ++ submit_timer = TRUE; ++ if (!period) ++ { ++ timeout = NULL; ++ goto update_timer; ++ } ++ when = (ULONGLONG)period * -10000; ++ } ++ ++ /* Convert relative timeout to absolute */ ++ if ((LONGLONG)when < 0) ++ { ++ LARGE_INTEGER now; ++ NtQuerySystemTime( &now ); ++ when = now.QuadPart - when; ++ } ++ } ++ ++update_timer: ++ ++ /* If timer is still pending, then remove the old one */ ++ if (new_timer->u.timer.timer_pending) ++ { ++ list_remove( &new_timer->u.timer.timer_entry ); ++ memset( &new_timer->u.timer.timer_entry, 0, sizeof(new_timer->u.timer.timer_entry) ); ++ new_timer->u.timer.timer_pending = FALSE; ++ } ++ ++ /* Timer should be enabled again, add it to the queue */ ++ if (timeout) ++ { ++ new_timer->u.timer.timeout = when; ++ new_timer->u.timer.period = period; ++ new_timer->u.timer.window_length = window_length; ++ ++ /* insert new_timer into the timer queue */ ++ LIST_FOR_EACH_ENTRY( timer, &timerqueue.pending_timers, struct threadpool_object, u.timer.timer_entry ) ++ { ++ assert( timer->type == TP_OBJECT_TYPE_TIMER ); ++ if (new_timer->u.timer.timeout < timer->u.timer.timeout) ++ break; ++ } ++ list_add_before( &timer->u.timer.timer_entry, &new_timer->u.timer.timer_entry ); ++ ++ /* wake up thread if it should expire earlier than before */ ++ if (list_head( &timerqueue.pending_timers ) == &new_timer->u.timer.timer_entry ) ++ RtlWakeAllConditionVariable( &timerqueue.update_event ); ++ ++ new_timer->u.timer.timer_pending = TRUE; ++ } ++ ++ RtlLeaveCriticalSection( &timerqueue.cs ); ++ ++ if (submit_timer) ++ tp_object_submit( new_timer ); ++} ++ ++static void CALLBACK timerqueue_thread_proc( void *param ) ++{ ++ LARGE_INTEGER now, timeout; ++ ULONGLONG timeout_lower, timeout_upper; ++ struct threadpool_object *other_timer; ++ struct list *ptr; ++ ++ RtlEnterCriticalSection( &timerqueue.cs ); ++ ++ for (;;) ++ { ++ NtQuerySystemTime( &now ); ++ ++ while ((ptr = list_head( &timerqueue.pending_timers ))) ++ { ++ struct threadpool_object *timer = LIST_ENTRY( ptr, struct threadpool_object, u.timer.timer_entry ); ++ assert( timer->type == TP_OBJECT_TYPE_TIMER ); ++ ++ /* Timeout didn't expire yet, nothing to do */ ++ if (timer->u.timer.timeout > now.QuadPart) ++ break; ++ ++ /* Queue a new callback in one of the worker threads */ ++ list_remove( &timer->u.timer.timer_entry ); ++ tp_object_submit( timer ); ++ ++ /* Requeue the timer, except its marked for shutdown */ ++ if (!timer->shutdown && timer->u.timer.period) ++ { ++ /* Update the timeout, make sure its at least the current time (to avoid too many work items) */ ++ timer->u.timer.timeout += (ULONGLONG)timer->u.timer.period * 10000; ++ if (timer->u.timer.timeout <= now.QuadPart) ++ timer->u.timer.timeout = now.QuadPart + 1; ++ ++ /* Insert timer back into the timer queue */ ++ LIST_FOR_EACH_ENTRY( other_timer, &timerqueue.pending_timers, struct threadpool_object, u.timer.timer_entry ) ++ { ++ assert( other_timer->type == TP_OBJECT_TYPE_TIMER ); ++ if (timer->u.timer.timeout < other_timer->u.timer.timeout) ++ break; ++ } ++ list_add_before( &other_timer->u.timer.timer_entry, &timer->u.timer.timer_entry ); ++ } ++ else ++ { ++ /* The element is no longer queued */ ++ timer->u.timer.timer_pending = FALSE; ++ } ++ } ++ ++ /* Determine next timeout - we use the window_length arguments to optimize wakeup times */ ++ timeout_lower = timeout_upper = TIMEOUT_INFINITE; ++ LIST_FOR_EACH_ENTRY( other_timer, &timerqueue.pending_timers, struct threadpool_object, u.timer.timer_entry ) ++ { ++ ULONGLONG new_timeout_upper; ++ assert( other_timer->type == TP_OBJECT_TYPE_TIMER ); ++ if (other_timer->u.timer.timeout >= timeout_upper) ++ break; ++ ++ timeout_lower = other_timer->u.timer.timeout; ++ new_timeout_upper = timeout_lower + (ULONGLONG)other_timer->u.timer.window_length * 10000; ++ ++ if (timeout_upper > new_timeout_upper) ++ timeout_upper = new_timeout_upper; ++ } ++ ++ ++ if (!timerqueue.num_timers) ++ { ++ /* All timers have been destroyed, if no new timers are created within some amount of ++ * time, then we can shutdown this thread. */ ++ timeout.QuadPart = (ULONGLONG)THREADPOOL_WORKER_TIMEOUT * -10000; ++ if (RtlSleepConditionVariableCS( &timerqueue.update_event, ++ &timerqueue.cs, &timeout ) == STATUS_TIMEOUT && !timerqueue.num_timers) ++ { ++ break; ++ } ++ } ++ else ++ { ++ /* Wait for timer update events or until the next timer expires. */ ++ timeout.QuadPart = timeout_lower; ++ RtlSleepConditionVariableCS( &timerqueue.update_event, &timerqueue.cs, &timeout ); ++ } ++ } ++ ++ timerqueue.thread_running = FALSE; ++ RtlLeaveCriticalSection( &timerqueue.cs ); ++} ++ ++ ++/*********************************************************************** + * THREADPOOL INSTANCE IMPLEMENTATION + ***********************************************************************/ + +@@ -446,6 +736,16 @@ static void CALLBACK threadpool_worker_proc( void *param ) + break; + } + ++ case TP_OBJECT_TYPE_TIMER: ++ { ++ TP_CALLBACK_INSTANCE *cb_instance = (TP_CALLBACK_INSTANCE *)&instance; ++ TRACE( "executing callback %p(%p, %p, %p)\n", ++ object->u.timer.callback, cb_instance, object->userdata, object ); ++ object->u.timer.callback( cb_instance, object->userdata, (TP_TIMER *)object ); ++ TRACE( "callback %p returned\n", object->u.timer.callback ); ++ break; ++ } ++ + default: + FIXME( "callback type %u not implemented\n", object->type ); + break; +@@ -624,6 +924,38 @@ static NTSTATUS tp_object_alloc_work( struct threadpool_object **out, PTP_WORK_C + return STATUS_SUCCESS; + } + ++static NTSTATUS tp_object_alloc_timer( struct threadpool_object **out, PTP_TIMER_CALLBACK callback, ++ PVOID userdata, TP_CALLBACK_ENVIRON *environment ) ++{ ++ struct threadpool_object *object; ++ struct threadpool *pool; ++ NTSTATUS status; ++ ++ /* determine threadpool */ ++ pool = environment ? (struct threadpool *)environment->Pool : NULL; ++ if (!pool) pool = get_default_threadpool(); ++ if (!pool) return STATUS_NO_MEMORY; ++ ++ object = RtlAllocateHeap( GetProcessHeap(), 0, sizeof(*object) ); ++ if (!object) ++ return STATUS_NO_MEMORY; ++ ++ object->type = TP_OBJECT_TYPE_TIMER; ++ object->u.timer.callback = callback; ++ ++ status = tp_timerqueue_acquire( object ); ++ if (status) ++ { ++ RtlFreeHeap( GetProcessHeap(), 0, object ); ++ return status; ++ } ++ ++ tp_object_initialize( object, pool, userdata, environment, FALSE ); ++ ++ *out = object; ++ return STATUS_SUCCESS; ++} ++ + static BOOL tp_object_release( struct threadpool_object *object ) + { + struct threadpool_group *group; +@@ -659,6 +991,12 @@ static BOOL tp_object_release( struct threadpool_object *object ) + + static void tp_object_shutdown( struct threadpool_object *object ) + { ++ if (object->type == TP_OBJECT_TYPE_TIMER) ++ { ++ /* release reference on the timerqueue */ ++ tp_timerqueue_release( object ); ++ } ++ + object->shutdown = TRUE; + } + +@@ -862,6 +1200,16 @@ NTSTATUS WINAPI TpAllocPool( TP_POOL **out, PVOID reserved ) + } + + /*********************************************************************** ++ * TpAllocTimer (NTDLL.@) ++ */ ++NTSTATUS WINAPI TpAllocTimer( TP_TIMER **out, PTP_TIMER_CALLBACK callback, PVOID userdata, ++ TP_CALLBACK_ENVIRON *environment ) ++{ ++ TRACE("%p %p %p %p\n", out, callback, userdata, environment); ++ return tp_object_alloc_timer( (struct threadpool_object **)out, callback, userdata, environment ); ++} ++ ++/*********************************************************************** + * TpAllocWork (NTDLL.@) + */ + NTSTATUS WINAPI TpAllocWork( TP_WORK **out, PTP_WORK_CALLBACK callback, PVOID userdata, +@@ -966,6 +1314,16 @@ VOID WINAPI TpDisassociateCallback( TP_CALLBACK_INSTANCE *instance ) + } + + /*********************************************************************** ++ * TpIsTimerSet (NTDLL.@) ++ */ ++BOOL WINAPI TpIsTimerSet( TP_TIMER *timer ) ++{ ++ struct threadpool_object *this = impl_from_TP_TIMER( timer ); ++ TRACE("%p\n", timer); ++ return this ? this->u.timer.timer_set : FALSE; ++} ++ ++/*********************************************************************** + * TpPostWork (NTDLL.@) + */ + VOID WINAPI TpPostWork( TP_WORK *work ) +@@ -1014,6 +1372,20 @@ VOID WINAPI TpReleasePool( TP_POOL *pool ) + } + + /*********************************************************************** ++ * TpReleaseTimer (NTDLL.@) ++ */ ++VOID WINAPI TpReleaseTimer( TP_TIMER *timer ) ++{ ++ struct threadpool_object *this = impl_from_TP_TIMER( timer ); ++ TRACE("%p\n", timer); ++ if (this) ++ { ++ tp_object_shutdown( this ); ++ tp_object_release( this ); ++ } ++} ++ ++/*********************************************************************** + * TpReleaseWork (NTDLL.@) + */ + VOID WINAPI TpReleaseWork( TP_WORK *work ) +@@ -1049,6 +1421,16 @@ BOOL WINAPI TpSetPoolMinThreads( TP_POOL *pool, DWORD minimum ) + } + + /*********************************************************************** ++ * TpSetTimer (NTDLL.@) ++ */ ++VOID WINAPI TpSetTimer( TP_TIMER *timer, LARGE_INTEGER *timeout, LONG period, LONG window_length ) ++{ ++ struct threadpool_object *this = impl_from_TP_TIMER( timer ); ++ TRACE("%p %p %u %u\n", timer, timeout, period, window_length); ++ if (this) tp_timerqueue_update_timer( this, timeout, period, window_length ); ++} ++ ++/*********************************************************************** + * TpSimpleTryPost (NTDLL.@) + */ + NTSTATUS WINAPI TpSimpleTryPost( PTP_SIMPLE_CALLBACK callback, PVOID userdata, TP_CALLBACK_ENVIRON *environment ) +@@ -1058,6 +1440,21 @@ NTSTATUS WINAPI TpSimpleTryPost( PTP_SIMPLE_CALLBACK callback, PVOID userdata, T + } + + /*********************************************************************** ++ * TpWaitForTimer (NTDLL.@) ++ */ ++VOID WINAPI TpWaitForTimer( TP_TIMER *timer, BOOL cancel_pending ) ++{ ++ struct threadpool_object *this = impl_from_TP_TIMER( timer ); ++ TRACE("%p %d\n", timer, cancel_pending); ++ if (this) ++ { ++ if (cancel_pending) ++ tp_object_cancel( this, FALSE, NULL ); ++ tp_object_wait( this ); ++ } ++} ++ ++/*********************************************************************** + * TpWaitForWork (NTDLL.@) + */ + VOID WINAPI TpWaitForWork( TP_WORK *work, BOOL cancel_pending ) +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0005-ntdll-tests-Add-tests-for-Tp-threadpool-functions.patch wine-staging-1.7.36~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0005-ntdll-tests-Add-tests-for-Tp-threadpool-functions.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0005-ntdll-tests-Add-tests-for-Tp-threadpool-functions.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0005-ntdll-tests-Add-tests-for-Tp-threadpool-functions.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,810 @@ +From b2606e85a68efcaf3e3b3a0011c44900c5641359 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Sun, 1 Feb 2015 18:14:09 +0100 +Subject: ntdll/tests: Add tests for Tp* threadpool functions. + +--- + dlls/ntdll/tests/Makefile.in | 1 + + dlls/ntdll/tests/threadpool.c | 780 ++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 781 insertions(+) + create mode 100644 dlls/ntdll/tests/threadpool.c + +diff --git a/dlls/ntdll/tests/Makefile.in b/dlls/ntdll/tests/Makefile.in +index 81b4466..fc352dd 100644 +--- a/dlls/ntdll/tests/Makefile.in ++++ b/dlls/ntdll/tests/Makefile.in +@@ -21,4 +21,5 @@ C_SRCS = \ + rtlbitmap.c \ + rtlstr.c \ + string.c \ ++ threadpool.c \ + time.c +diff --git a/dlls/ntdll/tests/threadpool.c b/dlls/ntdll/tests/threadpool.c +new file mode 100644 +index 0000000..61f72ec +--- /dev/null ++++ b/dlls/ntdll/tests/threadpool.c +@@ -0,0 +1,780 @@ ++/* Unit test suite for Threadpool functions ++ * ++ * Copyright 2015 Sebastian Lackner ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with this library; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#include "ntdll_test.h" ++ ++static HMODULE hntdll = 0; ++static NTSTATUS (WINAPI *pTpAllocCleanupGroup)(TP_CLEANUP_GROUP **); ++static NTSTATUS (WINAPI *pTpAllocIoCompletion)(TP_IO **,HANDLE,PTP_WIN32_IO_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *); ++static NTSTATUS (WINAPI *pTpAllocPool)(TP_POOL **,PVOID); ++static NTSTATUS (WINAPI *pTpAllocTimer)(TP_TIMER **,PTP_TIMER_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *); ++static NTSTATUS (WINAPI *pTpAllocWait)(TP_WAIT **,PTP_WAIT_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *); ++static NTSTATUS (WINAPI *pTpAllocWork)(TP_WORK **,PTP_WORK_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *); ++static VOID (WINAPI *pTpCallbackLeaveCriticalSectionOnCompletion)(TP_CALLBACK_INSTANCE *,CRITICAL_SECTION *); ++static NTSTATUS (WINAPI *pTpCallbackMayRunLong)(TP_CALLBACK_INSTANCE *); ++static VOID (WINAPI *pTpCallbackReleaseMutexOnCompletion)(TP_CALLBACK_INSTANCE *,HANDLE); ++static VOID (WINAPI *pTpCallbackReleaseSemaphoreOnCompletion)(TP_CALLBACK_INSTANCE *,HANDLE,DWORD); ++static VOID (WINAPI *pTpCallbackSetEventOnCompletion)(TP_CALLBACK_INSTANCE *,HANDLE); ++static VOID (WINAPI *pTpCallbackUnloadDllOnCompletion)(TP_CALLBACK_INSTANCE *,HMODULE); ++static VOID (WINAPI *pTpCancelAsyncIoOperation)(TP_IO *); ++static VOID (WINAPI *pTpDisassociateCallback)(TP_CALLBACK_INSTANCE *); ++static BOOL (WINAPI *pTpIsTimerSet)(TP_TIMER *); ++static VOID (WINAPI *pTpPostWork)(TP_WORK *); ++static VOID (WINAPI *pTpReleaseCleanupGroup)(TP_CLEANUP_GROUP *); ++static VOID (WINAPI *pTpReleaseCleanupGroupMembers)(TP_CLEANUP_GROUP *,BOOL,PVOID); ++static VOID (WINAPI *pTpReleaseIoCompletion)(TP_IO *); ++static VOID (WINAPI *pTpReleasePool)(TP_POOL *); ++static VOID (WINAPI *pTpReleaseTimer)(TP_TIMER *); ++static VOID (WINAPI *pTpReleaseWait)(TP_WAIT *); ++static VOID (WINAPI *pTpReleaseWork)(TP_WORK *); ++static VOID (WINAPI *pTpSetPoolMaxThreads)(TP_POOL *,DWORD); ++static BOOL (WINAPI *pTpSetPoolMinThreads)(TP_POOL *,DWORD); ++static VOID (WINAPI *pTpSetTimer)(TP_TIMER *,LARGE_INTEGER *,LONG,LONG); ++static VOID (WINAPI *pTpSetWait)(TP_WAIT *,HANDLE,LARGE_INTEGER *); ++static NTSTATUS (WINAPI *pTpSimpleTryPost)(PTP_SIMPLE_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *); ++static VOID (WINAPI *pTpStartAsyncIoOperation)(TP_IO *); ++static VOID (WINAPI *pTpWaitForIoCompletion)(TP_IO *,BOOL); ++static VOID (WINAPI *pTpWaitForTimer)(TP_TIMER *,BOOL); ++static VOID (WINAPI *pTpWaitForWait)(TP_WAIT *,BOOL); ++static VOID (WINAPI *pTpWaitForWork)(TP_WORK *,BOOL); ++ ++#define NTDLL_GET_PROC(func) \ ++ do \ ++ { \ ++ p ## func = (void *)GetProcAddress(hntdll, #func); \ ++ if (!p ## func) trace("Failed to get address for %s\n", #func); \ ++ } \ ++ while (0) ++ ++static BOOL init_threadpool(void) ++{ ++ hntdll = GetModuleHandleA("ntdll"); ++ if (!hntdll) ++ { ++ win_skip("Could not load ntdll\n"); ++ return FALSE; ++ } ++ ++ NTDLL_GET_PROC(TpAllocCleanupGroup); ++ NTDLL_GET_PROC(TpAllocIoCompletion); ++ NTDLL_GET_PROC(TpAllocPool); ++ NTDLL_GET_PROC(TpAllocTimer); ++ NTDLL_GET_PROC(TpAllocWait); ++ NTDLL_GET_PROC(TpAllocWork); ++ NTDLL_GET_PROC(TpCallbackLeaveCriticalSectionOnCompletion); ++ NTDLL_GET_PROC(TpCallbackMayRunLong); ++ NTDLL_GET_PROC(TpCallbackReleaseMutexOnCompletion); ++ NTDLL_GET_PROC(TpCallbackReleaseSemaphoreOnCompletion); ++ NTDLL_GET_PROC(TpCallbackSetEventOnCompletion); ++ NTDLL_GET_PROC(TpCallbackUnloadDllOnCompletion); ++ NTDLL_GET_PROC(TpCancelAsyncIoOperation); ++ NTDLL_GET_PROC(TpDisassociateCallback); ++ NTDLL_GET_PROC(TpIsTimerSet); ++ NTDLL_GET_PROC(TpPostWork); ++ NTDLL_GET_PROC(TpReleaseCleanupGroup); ++ NTDLL_GET_PROC(TpReleaseCleanupGroupMembers); ++ NTDLL_GET_PROC(TpReleaseIoCompletion); ++ NTDLL_GET_PROC(TpReleasePool); ++ NTDLL_GET_PROC(TpReleaseTimer); ++ NTDLL_GET_PROC(TpReleaseWait); ++ NTDLL_GET_PROC(TpReleaseWork); ++ NTDLL_GET_PROC(TpSetPoolMaxThreads); ++ NTDLL_GET_PROC(TpSetPoolMinThreads); ++ NTDLL_GET_PROC(TpSetTimer); ++ NTDLL_GET_PROC(TpSetWait); ++ NTDLL_GET_PROC(TpSimpleTryPost); ++ NTDLL_GET_PROC(TpStartAsyncIoOperation); ++ NTDLL_GET_PROC(TpWaitForIoCompletion); ++ NTDLL_GET_PROC(TpWaitForTimer); ++ NTDLL_GET_PROC(TpWaitForWait); ++ NTDLL_GET_PROC(TpWaitForWork); ++ ++ if (!pTpAllocPool) ++ { ++ win_skip("Threadpool functions not supported, skipping tests\n"); ++ return FALSE; ++ } ++ ++ return TRUE; ++} ++ ++#undef NTDLL_GET_PROC ++ ++ ++static void CALLBACK simple_cb(TP_CALLBACK_INSTANCE *instance, void *userdata) ++{ ++ trace("Running simple callback\n"); ++ Sleep(100); ++ InterlockedIncrement( (LONG *)userdata ); ++} ++ ++static void test_default_threadpool(void) ++{ ++ TP_CALLBACK_ENVIRON environment; ++ NTSTATUS status; ++ LONG userdata; ++ ++ /* Post the callback and manually wait until it has finished */ ++ userdata = 0; ++ memset(&environment, 0, sizeof(environment)); ++ environment.Version = 1; ++ status = pTpSimpleTryPost(simple_cb, &userdata, &environment); ++ ok(!status, "TpSimpleTryPost failed with status %x\n", status); ++ while (userdata == 0) Sleep(10); ++ ok(userdata == 1, "expected userdata = 1, got %u\n", userdata); ++} ++ ++static void test_tp_simple(void) ++{ ++ TP_CALLBACK_ENVIRON environment; ++ TP_CLEANUP_GROUP *group; ++ TP_POOL *pool; ++ NTSTATUS status; ++ LONG userdata; ++ int i; ++ ++ /* Allocate new threadpool */ ++ pool = NULL; ++ status = pTpAllocPool(&pool, NULL); ++ ok(!status, "TpAllocPool failed with status %x\n", status); ++ ok(pool != NULL, "expected pool != NULL\n"); ++ ++ /* Post the callback and manually wait until it has finished */ ++ userdata = 0; ++ memset(&environment, 0, sizeof(environment)); ++ environment.Version = 1; ++ environment.Pool = pool; ++ status = pTpSimpleTryPost(simple_cb, &userdata, &environment); ++ ok(!status, "TpSimpleTryPost failed with status %x\n", status); ++ while (userdata == 0) Sleep(10); ++ ok(userdata == 1, "expected userdata = 1, got %u\n", userdata); ++ ++ /* Test with invalid version number */ ++ userdata = 0; ++ memset(&environment, 0, sizeof(environment)); ++ environment.Version = 9999; ++ environment.Pool = pool; ++ status = pTpSimpleTryPost(simple_cb, &userdata, &environment); ++ ok(!status, "TpSimpleTryPost failed with status %x\n", status); ++ while (userdata == 0) Sleep(10); ++ ok(userdata == 1, "expected userdata = 1, got %u\n", userdata); ++ ++ /* Allocate a cleanup group for synchronization */ ++ group = NULL; ++ status = pTpAllocCleanupGroup(&group); ++ ok(!status, "TpAllocCleanupGroup failed with status %x\n", status); ++ ok(group != NULL, "expected pool != NULL\n"); ++ ++ userdata = 0; ++ memset(&environment, 0, sizeof(environment)); ++ environment.Version = 1; ++ environment.Pool = pool; ++ environment.CleanupGroup = group; ++ status = pTpSimpleTryPost(simple_cb, &userdata, &environment); ++ ok(!status, "TpSimpleTryPost failed with status %x\n", status); ++ ++ pTpReleaseCleanupGroupMembers(group, FALSE, NULL); ++ ok(userdata == 1, "expected userdata = 1, got %u\n", userdata); ++ ++ /* Test cancellation of pending simple callbacks. */ ++ userdata = 0; ++ memset(&environment, 0, sizeof(environment)); ++ environment.Version = 1; ++ environment.Pool = pool; ++ environment.CleanupGroup = group; ++ for (i = 0; i < 100; i++) ++ { ++ status = pTpSimpleTryPost(simple_cb, &userdata, &environment); ++ ok(!status, "TpSimpleTryPost failed with status %x\n", status); ++ } ++ ++ pTpReleaseCleanupGroupMembers(group, TRUE, NULL); ++ ok(userdata < 100, "expected userdata < 100, got %u\n", userdata); ++ ++ /* Cleanup */ ++ pTpReleaseCleanupGroup(group); ++ pTpReleasePool(pool); ++} ++ ++static void CALLBACK work_cb(TP_CALLBACK_INSTANCE *instance, void *userdata, TP_WORK *work) ++{ ++ trace("Running work callback\n"); ++ Sleep(10); ++ InterlockedIncrement( (LONG *)userdata ); ++} ++ ++static void CALLBACK work2_cb(TP_CALLBACK_INSTANCE *instance, void *userdata, TP_WORK *work) ++{ ++ trace("Running work2 callback\n"); ++ Sleep(10); ++ InterlockedExchangeAdd( (LONG *)userdata, 0x10000 ); ++} ++ ++static void test_tp_work(void) ++{ ++ TP_CALLBACK_ENVIRON environment; ++ TP_WORK *work; ++ TP_POOL *pool; ++ NTSTATUS status; ++ LONG userdata; ++ int i; ++ ++ /* Allocate new threadpool */ ++ pool = NULL; ++ status = pTpAllocPool(&pool, NULL); ++ ok(!status, "TpAllocPool failed with status %x\n", status); ++ ok(pool != NULL, "expected pool != NULL\n"); ++ ++ /* Allocate new work item */ ++ work = NULL; ++ memset(&environment, 0, sizeof(environment)); ++ environment.Version = 1; ++ environment.Pool = pool; ++ status = pTpAllocWork(&work, work_cb, &userdata, &environment); ++ ok(!status, "TpAllocWork failed with status %x\n", status); ++ ok(work != NULL, "expected work != NULL\n"); ++ ++ /* Post 10 identical work items at once */ ++ userdata = 0; ++ for (i = 0; i < 10; i++) ++ pTpPostWork(work); ++ pTpWaitForWork(work, FALSE); ++ ok(userdata == 10, "expected userdata = 10, got %u\n", userdata); ++ ++ /* Add more tasks and cancel them immediately */ ++ userdata = 0; ++ for (i = 0; i < 10; i++) ++ pTpPostWork(work); ++ pTpWaitForWork(work, TRUE); ++ ok(userdata < 10, "expected userdata < 10, got %u\n", userdata); ++ ++ /* Cleanup */ ++ pTpReleaseWork(work); ++ pTpReleasePool(pool); ++} ++ ++static void test_tp_work_scheduler(void) ++{ ++ TP_CALLBACK_ENVIRON environment; ++ TP_CLEANUP_GROUP *group; ++ TP_WORK *work, *work2; ++ TP_POOL *pool; ++ NTSTATUS status; ++ LONG userdata; ++ int i; ++ ++ /* Allocate new threadpool */ ++ pool = NULL; ++ status = pTpAllocPool(&pool, NULL); ++ ok(!status, "TpAllocPool failed with status %x\n", status); ++ ok(pool != NULL, "expected pool != NULL\n"); ++ ++ /* We limit the pool to a single thread */ ++ pTpSetPoolMaxThreads(pool, 1); ++ ++ /* Create a cleanup group */ ++ group = NULL; ++ status = pTpAllocCleanupGroup(&group); ++ ok(!status, "TpAllocCleanupGroup failed with status %x\n", status); ++ ok(group != NULL, "expected pool != NULL\n"); ++ ++ /* The first work item has no cleanup group associated */ ++ work = NULL; ++ memset(&environment, 0, sizeof(environment)); ++ environment.Version = 1; ++ environment.Pool = pool; ++ status = pTpAllocWork(&work, work_cb, &userdata, &environment); ++ ok(!status, "TpAllocWork failed with status %x\n", status); ++ ok(work != NULL, "expected work != NULL\n"); ++ ++ /* Allocate a second work item with a cleanup group */ ++ work2 = NULL; ++ memset(&environment, 0, sizeof(environment)); ++ environment.Version = 1; ++ environment.Pool = pool; ++ environment.CleanupGroup = group; ++ status = pTpAllocWork(&work2, work2_cb, &userdata, &environment); ++ ok(!status, "TpAllocWork failed with status %x\n", status); ++ ok(work2 != NULL, "expected work2 != NULL\n"); ++ ++ /* The 'work' callbacks are not blocking execution of work2 callbacks */ ++ userdata = 0; ++ for (i = 0; i < 10; i++) ++ pTpPostWork(work); ++ for (i = 0; i < 10; i++) ++ pTpPostWork(work2); ++ Sleep(30); ++ pTpWaitForWork(work, TRUE); ++ pTpWaitForWork(work2, TRUE); ++ ok(userdata & 0xffff, "expected userdata & 0xffff != 0, got %u\n", userdata & 0xffff); ++ ok(userdata >> 16, "expected userdata >> 16 != 0, got %u\n", userdata >> 16); ++ ++ /* Test ReleaseCleanupGroupMembers on a work item */ ++ userdata = 0; ++ for (i = 0; i < 100; i++) ++ pTpPostWork(work); ++ for (i = 0; i < 10; i++) ++ pTpPostWork(work2); ++ pTpReleaseCleanupGroupMembers(group, FALSE, NULL); ++ pTpWaitForWork(work, TRUE); ++ ok((userdata & 0xffff) < 100, "expected userdata & 0xffff < 100, got %u\n", userdata & 0xffff); ++ ok(userdata >> 16 == 10, "expected userdata >> 16 == 10, got %u\n", userdata >> 16); ++ ++ /* Cleanup */ ++ pTpReleaseWork(work); ++ pTpReleaseCleanupGroup(group); ++ pTpReleasePool(pool); ++} ++ ++static void CALLBACK instance_cb(TP_CALLBACK_INSTANCE *instance, void *userdata) ++{ ++ trace("Running instance callback\n"); ++ pTpCallbackMayRunLong(instance); ++ Sleep(100); ++ InterlockedIncrement( (LONG *)userdata ); ++} ++ ++static void CALLBACK instance2_cb(TP_CALLBACK_INSTANCE *instance, void *userdata) ++{ ++ trace("Running instance2 callback\n"); ++ ok(*(LONG *)userdata == 1, "expected *userdata = 1, got %u\n", *(LONG *)userdata); ++ InterlockedIncrement( (LONG *)userdata ); ++} ++ ++static void CALLBACK instance3_cb(TP_CALLBACK_INSTANCE *instance, void *userdata) ++{ ++ trace("Running instance3 callback\n"); ++ pTpDisassociateCallback(instance); ++ Sleep(100); ++ InterlockedIncrement( (LONG *)userdata ); ++} ++ ++static void CALLBACK instance4_cb(TP_CALLBACK_INSTANCE *instance, void *userdata) ++{ ++ trace("Running instance4 callback\n"); ++ pTpCallbackReleaseSemaphoreOnCompletion(instance, userdata, 1); ++} ++ ++static HANDLE instance_finalization_semaphore; ++ ++static void CALLBACK instance_finalization_cb(TP_CALLBACK_INSTANCE *instance, void *userdata) ++{ ++ DWORD ret; ++ trace("Running instance finalization callback\n"); ++ ok(*(LONG *)userdata == 1, "expected *userdata = 1, got %u\n", *(LONG *)userdata); ++ ++ /* Make sure that this callback is called before the regular instance cleanup tasks */ ++ ret = WaitForSingleObject(instance_finalization_semaphore, 100); ++ ok(ret == WAIT_TIMEOUT, "expected ret = WAIT_TIMEOUT, got %u\n", ret); ++ ++ InterlockedIncrement( (LONG *)userdata ); ++} ++ ++static void CALLBACK instance5_cb(TP_CALLBACK_INSTANCE *instance, void *userdata) ++{ ++ trace("Running instance5 callback\n"); ++ pTpCallbackReleaseSemaphoreOnCompletion(instance, instance_finalization_semaphore, 1); ++ InterlockedIncrement( (LONG *)userdata ); ++} ++ ++ ++static void test_tp_instance(void) ++{ ++ TP_CALLBACK_ENVIRON environment; ++ TP_CLEANUP_GROUP *group; ++ TP_POOL *pool; ++ NTSTATUS status; ++ LONG userdata; ++ HANDLE semaphore; ++ DWORD ret; ++ ++ /* Allocate new threadpool */ ++ pool = NULL; ++ status = pTpAllocPool(&pool, NULL); ++ ok(!status, "TpAllocPool failed with status %x\n", status); ++ ok(pool != NULL, "expected pool != NULL\n"); ++ ++ /* We limit the pool to a single thread */ ++ pTpSetPoolMaxThreads(pool, 1); ++ ++ /* Test behaviour of TpCallbackMayRunLong when the max number of threads is reached */ ++ userdata = 0; ++ memset(&environment, 0, sizeof(environment)); ++ environment.Version = 1; ++ environment.Pool = pool; ++ status = pTpSimpleTryPost(instance_cb, &userdata, &environment); ++ ok(!status, "TpSimpleTryPost failed with status %x\n", status); ++ status = pTpSimpleTryPost(instance2_cb, &userdata, &environment); ++ ok(!status, "TpSimpleTryPost failed with status %x\n", status); ++ while (userdata != 2) Sleep(10); ++ ++ /* Test behaviour of TpDisassociateCallback on wait functions */ ++ group = NULL; ++ status = pTpAllocCleanupGroup(&group); ++ ok(!status, "TpAllocCleanupGroup failed with status %x\n", status); ++ ok(group != NULL, "expected pool != NULL\n"); ++ ++ userdata = 0; ++ memset(&environment, 0, sizeof(environment)); ++ environment.Version = 1; ++ environment.Pool = pool; ++ environment.CleanupGroup = group; ++ status = pTpSimpleTryPost(instance3_cb, &userdata, &environment); ++ ok(!status, "TpSimpleTryPost failed with status %x\n", status); ++ ++ pTpReleaseCleanupGroupMembers(group, FALSE, NULL); ++ todo_wine /* behaviour contradicts the MSDN description? */ ++ ok(userdata == 1, "expected userdata = 1, got %u\n", userdata); ++ while (userdata == 0) Sleep(10); ++ ++ pTpReleaseCleanupGroup(group); ++ ++ /* Test for TpCallbackReleaseSemaphoreOnCompletion */ ++ semaphore = CreateSemaphoreW(NULL, 0, 1, NULL); ++ ok(semaphore != NULL, "failed to create semaphore\n"); ++ memset(&environment, 0, sizeof(environment)); ++ environment.Version = 1; ++ environment.Pool = pool; ++ status = pTpSimpleTryPost(instance4_cb, semaphore, &environment); ++ ok(!status, "TpSimpleTryPost failed with status %x\n", status); ++ ret = WaitForSingleObject(semaphore, 1000); ++ ok(ret == WAIT_OBJECT_0, "expected ret = WAIT_OBJECT_0, got %u\n", ret); ++ ++ /* Test for finalization callback */ ++ userdata = 0; ++ instance_finalization_semaphore = semaphore; ++ memset(&environment, 0, sizeof(environment)); ++ environment.Version = 1; ++ environment.Pool = pool; ++ environment.FinalizationCallback = instance_finalization_cb; ++ status = pTpSimpleTryPost(instance5_cb, &userdata, &environment); ++ ok(!status, "TpSimpleTryPost failed with status %x\n", status); ++ ret = WaitForSingleObject(semaphore, 1000); ++ ok(ret == WAIT_OBJECT_0, "expected ret = WAIT_OBJECT_0, got %u\n", ret); ++ while (userdata != 2) Sleep(10); ++ ++ CloseHandle(semaphore); ++ ++ /* Cleanup */ ++ pTpReleasePool(pool); ++} ++ ++static DWORD group_cancel_tid; ++ ++static void CALLBACK group_cancel_cleanup_cb(void *object, void *userdata) ++{ ++ trace("Running group cancel cleanup callback\n"); ++ InterlockedIncrement( (LONG *)userdata ); ++ group_cancel_tid = GetCurrentThreadId(); ++} ++ ++static void CALLBACK group_cancel_cb(TP_CALLBACK_INSTANCE *instance, void *userdata) ++{ ++ trace("Running group cancel callback\n"); ++ pTpCallbackMayRunLong(instance); ++ Sleep(100); ++ ok(*(LONG *)userdata == 1, "expected *userdata = 1, got %u\n", *(LONG *)userdata); ++ InterlockedIncrement( (LONG *)userdata ); ++} ++ ++static void CALLBACK dummy_cb(TP_CALLBACK_INSTANCE *instance, void *userdata) ++{ ++ ok(0, "Unexpected call to dummy_cb function\n"); ++} ++ ++static void test_tp_group_cancel(void) ++{ ++ TP_CALLBACK_ENVIRON environment; ++ TP_CLEANUP_GROUP *group; ++ TP_WORK *work; ++ TP_POOL *pool; ++ NTSTATUS status; ++ LONG userdata, userdata2; ++ int i; ++ ++ /* Allocate new threadpool */ ++ pool = NULL; ++ status = pTpAllocPool(&pool, NULL); ++ ok(!status, "TpAllocPool failed with status %x\n", status); ++ ok(pool != NULL, "expected pool != NULL\n"); ++ ++ /* We limit the pool to a single thread */ ++ pTpSetPoolMaxThreads(pool, 1); ++ ++ /* Allocate a cleanup group */ ++ group = NULL; ++ status = pTpAllocCleanupGroup(&group); ++ ok(!status, "TpAllocCleanupGroup failed with status %x\n", status); ++ ok(group != NULL, "expected pool != NULL\n"); ++ ++ /* Test execution of cancellation callback */ ++ userdata = 0; ++ memset(&environment, 0, sizeof(environment)); ++ environment.Version = 1; ++ environment.Pool = pool; ++ status = pTpSimpleTryPost(group_cancel_cb, &userdata, &environment); ++ ok(!status, "TpSimpleTryPost failed with status %x\n", status); ++ ++ memset(&environment, 0, sizeof(environment)); ++ environment.Version = 1; ++ environment.Pool = pool; ++ environment.CleanupGroup = group; ++ environment.CleanupGroupCancelCallback = group_cancel_cleanup_cb; ++ status = pTpSimpleTryPost(dummy_cb, NULL, &environment); ++ ok(!status, "TpSimpleTryPost failed with status %x\n", status); ++ ++ group_cancel_tid = 0; ++ pTpReleaseCleanupGroupMembers(group, TRUE, &userdata); ++ ok(userdata == 1, "expected userdata = 1, got %u\n", userdata); ++ ok(group_cancel_tid == GetCurrentThreadId(), "expected tid %x, got %x\n", ++ GetCurrentThreadId(), group_cancel_tid); ++ while (userdata != 2) Sleep(10); ++ ++ /* Test cancellation callback for elements with multiple instances */ ++ /* Allocate new work item */ ++ work = NULL; ++ memset(&environment, 0, sizeof(environment)); ++ environment.Version = 1; ++ environment.Pool = pool; ++ environment.CleanupGroup = group; ++ environment.CleanupGroupCancelCallback = group_cancel_cleanup_cb; ++ status = pTpAllocWork(&work, work_cb, &userdata, &environment); ++ ok(!status, "TpAllocWork failed with status %x\n", status); ++ ok(work != NULL, "expected work != NULL\n"); ++ ++ /* Post 10 identical work items at once */ ++ userdata = userdata2 = 0; ++ for (i = 0; i < 10; i++) ++ pTpPostWork(work); ++ ++ /* Check if we get multiple cancellation callbacks */ ++ group_cancel_tid = 0; ++ pTpReleaseCleanupGroupMembers(group, TRUE, &userdata2); ++ ok(userdata < 10, "expected userdata < 10, got %u\n", userdata); ++ ok(userdata2 == 1, "expected only one cancellation callback, got %u\n", userdata2); ++ ok(group_cancel_tid == GetCurrentThreadId(), "expected tid %x, got %x\n", ++ GetCurrentThreadId(), group_cancel_tid); ++ ++ /* Cleanup */ ++ pTpReleaseCleanupGroup(group); ++ pTpReleasePool(pool); ++} ++ ++static void CALLBACK timer_cb(TP_CALLBACK_INSTANCE *instance, void *userdata, TP_TIMER *timer) ++{ ++ trace("Running timer callback\n"); ++ InterlockedIncrement( (LONG *)userdata ); ++} ++ ++static void test_tp_timer(void) ++{ ++ TP_CALLBACK_ENVIRON environment; ++ TP_TIMER *timer; ++ TP_POOL *pool; ++ NTSTATUS status; ++ LONG userdata; ++ BOOL success; ++ LARGE_INTEGER when; ++ DWORD ticks; ++ ++ /* Allocate new threadpool */ ++ pool = NULL; ++ status = pTpAllocPool(&pool, NULL); ++ ok(!status, "TpAllocPool failed with status %x\n", status); ++ ok(pool != NULL, "expected pool != NULL\n"); ++ ++ /* Allocate new timer item */ ++ timer = NULL; ++ memset(&environment, 0, sizeof(environment)); ++ environment.Version = 1; ++ environment.Pool = pool; ++ status = pTpAllocTimer(&timer, timer_cb, &userdata, &environment); ++ ok(!status, "TpAllocTimer failed with status %x\n", status); ++ ok(timer != NULL, "expected timer != NULL\n"); ++ ++ success = pTpIsTimerSet(timer); ++ ok(!success, "expected TpIsTimerSet(...) = FALSE\n"); ++ ++ /* Set a relative timeout */ ++ userdata = 0; ++ when.QuadPart = (ULONGLONG)500 * -10000; ++ pTpSetTimer(timer, &when, 0, 0); ++ success = pTpIsTimerSet(timer); ++ ok(success, "expected TpIsTimerSet(...) = TRUE\n"); ++ ++ /* Wait until timer has triggered */ ++ pTpWaitForTimer(timer, FALSE); ++ Sleep(250); ++ ok(userdata == 0, "expected userdata = 0, got %u\n", userdata); ++ while (userdata == 0) Sleep(10); ++ ok(userdata == 1, "expected userdata = 1, got %u\n", userdata); ++ success = pTpIsTimerSet(timer); ++ ok(success, "expected TpIsTimerSet(...) = TRUE\n"); ++ ++ /* Set an absolute timeout */ ++ userdata = 0; ++ NtQuerySystemTime( &when ); ++ when.QuadPart += (ULONGLONG)500 * 10000; ++ pTpSetTimer(timer, &when, 0, 0); ++ success = pTpIsTimerSet(timer); ++ ok(success, "expected TpIsTimerSet(...) = TRUE\n"); ++ ++ /* Wait until timer has triggered */ ++ pTpWaitForTimer(timer, FALSE); ++ Sleep(250); ++ ok(userdata == 0, "expected userdata = 0, got %u\n", userdata); ++ while (userdata == 0) Sleep(10); ++ ok(userdata == 1, "expected userdata = 1, got %u\n", userdata); ++ success = pTpIsTimerSet(timer); ++ ok(success, "expected TpIsTimerSet(...) = TRUE\n"); ++ ++ /* Test a relative timeout repeated periodically */ ++ userdata = 0; ++ when.QuadPart = (ULONGLONG)50 * -10000; ++ pTpSetTimer(timer, &when, 50, 0); ++ success = pTpIsTimerSet(timer); ++ ok(success, "expected TpIsTimerSet(...) = TRUE\n"); ++ ++ /* Wait until the timer was triggered a couple of times */ ++ ticks = GetTickCount(); ++ while (userdata < 100) Sleep(10); ++ ticks = GetTickCount() - ticks; ++ pTpSetTimer(timer, NULL, 0, 0); ++ pTpWaitForTimer(timer, TRUE); ++ ok(ticks >= 4500 && ticks <= 5500, "expected approximately 5000 ticks, got %u\n", ticks); ++ success = pTpIsTimerSet(timer); ++ ok(!success, "expected TpIsTimerSet(...) = FALSE\n"); ++ ++ /* Test with zero timeout, we expect a call immediately */ ++ userdata = 0; ++ when.QuadPart = 0; ++ pTpSetTimer(timer, &when, 0, 0); ++ success = pTpIsTimerSet(timer); ++ ok(success, "expected TpIsTimerSet(...) = TRUE\n"); ++ ++ /* Wait until timer has triggered */ ++ pTpWaitForTimer(timer, FALSE); ++ ok(userdata == 1 || broken(userdata == 0) /* Win 8 */, ++ "expected userdata = 1, got %u\n", userdata); ++ while (userdata == 0) Sleep(10); ++ success = pTpIsTimerSet(timer); ++ ok(success, "expected TpIsTimerSet(...) = TRUE\n"); ++ ++ /* Unset the timer again */ ++ pTpSetTimer(timer, NULL, 0, 0); ++ success = pTpIsTimerSet(timer); ++ ok(!success, "expected TpIsTimerSet(...) = FALSE\n"); ++ ++ /* Cleanup */ ++ pTpReleaseTimer(timer); ++ pTpReleasePool(pool); ++} ++ ++static void CALLBACK window_length_cb(TP_CALLBACK_INSTANCE *instance, void *userdata, TP_TIMER *timer) ++{ ++ trace("Running window length callback\n"); ++ (*(DWORD *)userdata) = GetTickCount(); ++} ++ ++static void test_tp_window_length(void) ++{ ++ TP_CALLBACK_ENVIRON environment; ++ TP_TIMER *timer, *timer2; ++ DWORD ticks, ticks2; ++ TP_POOL *pool; ++ NTSTATUS status; ++ LARGE_INTEGER when; ++ ++ /* Allocate new threadpool */ ++ pool = NULL; ++ status = pTpAllocPool(&pool, NULL); ++ ok(!status, "TpAllocPool failed with status %x\n", status); ++ ok(pool != NULL, "expected pool != NULL\n"); ++ ++ /* Allocate two identical timers */ ++ timer = NULL; ++ memset(&environment, 0, sizeof(environment)); ++ environment.Version = 1; ++ environment.Pool = pool; ++ status = pTpAllocTimer(&timer, window_length_cb, &ticks, &environment); ++ ok(!status, "TpAllocTimer failed with status %x\n", status); ++ ok(timer != NULL, "expected timer != NULL\n"); ++ ++ timer2 = NULL; ++ status = pTpAllocTimer(&timer2, window_length_cb, &ticks2, &environment); ++ ok(!status, "TpAllocTimer failed with status %x\n", status); ++ ok(timer2 != NULL, "expected timer2 != NULL\n"); ++ ++ /* Choose parameters so that timers are not merged */ ++ ticks = ticks2 = 0; ++ NtQuerySystemTime( &when ); ++ when.QuadPart += (ULONGLONG)500 * 10000; ++ pTpSetTimer(timer2, &when, 0, 0); ++ Sleep(50); ++ when.QuadPart -= (ULONGLONG)400 * 10000; ++ pTpSetTimer(timer, &when, 0, 200); ++ while (!ticks || !ticks2) Sleep(10); ++ ok(ticks2 >= ticks + 150, "expected that timers are not merged\n"); ++ ++ /* On Windows the timers also get merged in this case */ ++ ticks = ticks2 = 0; ++ NtQuerySystemTime( &when ); ++ when.QuadPart += (ULONGLONG)100 * 10000; ++ pTpSetTimer(timer, &when, 0, 450); ++ Sleep(50); ++ when.QuadPart += (ULONGLONG)400 * 10000; ++ pTpSetTimer(timer2, &when, 0, 0); ++ while (!ticks || !ticks2) Sleep(10); ++ todo_wine ++ ok(ticks2 >= ticks - 50 && ticks2 <= ticks + 50, "expected that timers are merged\n"); ++ ++ /* Timers will be merged */ ++ ticks = ticks2 = 0; ++ NtQuerySystemTime( &when ); ++ when.QuadPart += (ULONGLONG)500 * 10000; ++ pTpSetTimer(timer2, &when, 0, 0); ++ Sleep(50); ++ when.QuadPart -= (ULONGLONG)400 * 10000; ++ pTpSetTimer(timer, &when, 0, 450); ++ while (!ticks || !ticks2) Sleep(10); ++ ok(ticks2 >= ticks - 50 && ticks2 <= ticks + 50, "expected that timers are merged\n"); ++ ++ /* Cleanup */ ++ pTpReleaseTimer(timer); ++ pTpReleaseTimer(timer2); ++ pTpReleasePool(pool); ++} ++ ++START_TEST(threadpool) ++{ ++ if(!init_threadpool()) ++ return; ++ ++ test_default_threadpool(); ++ test_tp_simple(); ++ test_tp_work(); ++ test_tp_work_scheduler(); ++ test_tp_instance(); ++ test_tp_group_cancel(); ++ test_tp_timer(); ++ test_tp_window_length(); ++ ++ /* FIXME: Make sure worker threads have terminated before. */ ++ Sleep(100); ++} +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0006-kernel32-Forward-various-threadpool-functions-to-ntd.patch wine-staging-1.7.36~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0006-kernel32-Forward-various-threadpool-functions-to-ntd.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0006-kernel32-Forward-various-threadpool-functions-to-ntd.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0006-kernel32-Forward-various-threadpool-functions-to-ntd.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,342 @@ +From 9775c66000942a2ae9e52abe0d27dcca20a24470 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Sun, 1 Feb 2015 19:41:13 +0100 +Subject: kernel32: Forward various threadpool functions to ntdll. + +--- + dlls/kernel32/kernel32.spec | 48 ++++++++++---------- + dlls/kernel32/tests/thread.c | 6 +-- + dlls/kernel32/thread.c | 101 +++++++++++++++++++++++++++++++++++++++++++ + include/winternl.h | 27 ++++++++++++ + 4 files changed, 155 insertions(+), 27 deletions(-) + +diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec +index 3719505..4d170d5 100644 +--- a/dlls/kernel32/kernel32.spec ++++ b/dlls/kernel32/kernel32.spec +@@ -204,7 +204,7 @@ + @ stdcall BuildCommDCBAndTimeoutsA(str ptr ptr) + @ stdcall BuildCommDCBAndTimeoutsW(wstr ptr ptr) + @ stdcall BuildCommDCBW(wstr ptr) +-# @ stub CallbackMayRunLong ++@ stdcall CallbackMayRunLong(ptr) ntdll.TpCallbackMayRunLong + @ stdcall CallNamedPipeA(str ptr long ptr long ptr long) + @ stdcall CallNamedPipeW(wstr ptr long ptr long ptr long) + @ stub CancelDeviceWakeupRequest +@@ -228,13 +228,13 @@ + # @ stub ClosePrivateNamespace + @ stdcall CloseProfileUserMapping() + @ stub CloseSystemHandle +-# @ stub CloseThreadpool +-# @ stub CloseThreadpoolCleanupGroup +-# @ stub CloseThreadpoolCleanupGroupMembers ++@ stdcall CloseThreadpool(ptr) ntdll.TpReleasePool ++@ stdcall CloseThreadpoolCleanupGroup(ptr) ntdll.TpReleaseCleanupGroup ++@ stdcall CloseThreadpoolCleanupGroupMembers(ptr long ptr) ntdll.TpReleaseCleanupGroupMembers + # @ stub CloseThreadpoolIo +-# @ stub CloseThreadpoolTimer ++@ stdcall CloseThreadpoolTimer(ptr) ntdll.TpReleaseTimer + # @ stub CloseThreadpoolWait +-# @ stub CloseThreadpoolWork ++@ stdcall CloseThreadpoolWork(ptr) ntdll.TpReleaseWork + @ stdcall CmdBatNotification(long) + @ stdcall CommConfigDialogA(str long ptr) + @ stdcall CommConfigDialogW(wstr long ptr) +@@ -331,12 +331,12 @@ + @ stdcall CreateSymbolicLinkW(wstr wstr long) + @ stdcall CreateTapePartition(long long long long) + @ stdcall CreateThread(ptr long ptr long long ptr) +-# @ stub CreateThreadpool +-# @ stub CreateThreadpoolCleanupGroup ++@ stdcall CreateThreadpool(ptr) ++@ stdcall CreateThreadpoolCleanupGroup() + # @ stub CreateThreadpoolIo +-# @ stub CreateThreadpoolTimer ++@ stdcall CreateThreadpoolTimer(ptr ptr ptr) + # @ stub CreateThreadpoolWait +-# @ stub CreateThreadpoolWork ++@ stdcall CreateThreadpoolWork(ptr ptr ptr) + @ stdcall CreateTimerQueue () + @ stdcall CreateTimerQueueTimer(ptr long ptr ptr long long long) + @ stdcall CreateToolhelp32Snapshot(long long) +@@ -369,7 +369,7 @@ + @ stdcall DeleteFileW(wstr) + # @ stub DeleteProcThreadAttributeList + # @ stub DisableThreadProfiling +-# @ stub DisassociateCurrentThreadFromCallback ++@ stdcall DisassociateCurrentThreadFromCallback(ptr) ntdll.TpDisassociateCallback + @ stdcall DeleteTimerQueue(long) + @ stdcall DeleteTimerQueueEx (long long) + @ stdcall DeleteTimerQueueTimer(long long long) +@@ -495,7 +495,6 @@ + @ stdcall FindFirstVolumeMountPointA(str ptr long) + @ stdcall FindFirstVolumeMountPointW(wstr ptr long) + @ stdcall FindFirstVolumeW(ptr long) +-# @ stub FreeLibraryWhenCallbackReturns + @ stdcall FindNextChangeNotification(long) + @ stdcall FindNextFileA(long ptr) + # @ stub FindNextFileNameW +@@ -533,6 +532,7 @@ + @ stub -i386 FreeLSCallback + @ stdcall FreeLibrary(long) + @ stdcall FreeLibraryAndExitThread(long long) ++@ stdcall FreeLibraryWhenCallbackReturns(ptr ptr) ntdll.TpCallbackUnloadDllOnCompletion + @ stdcall FreeResource(long) + @ stdcall -i386 -private FreeSLCallback(long) krnl386.exe16.FreeSLCallback + @ stub FreeUserPhysicalPages +@@ -980,7 +980,7 @@ + @ stub -i386 IsSLCallback + @ stdcall IsSystemResumeAutomatic() + @ stdcall IsThreadAFiber() +-# @ stub IsThreadpoolTimerSet ++@ stdcall IsThreadpoolTimerSet(ptr) ntdll.TpIsTimerSet + # @ stub IsTimeZoneRedirectionEnabled + # @ stub IsValidCalDateTime + @ stdcall IsValidCodePage(long) +@@ -1034,7 +1034,7 @@ + @ stdcall LZSeek(long long long) + @ stdcall LZStart() + @ stdcall LeaveCriticalSection(ptr) ntdll.RtlLeaveCriticalSection +-# @ stub LeaveCriticalSectionWhenCallbackReturns ++@ stdcall LeaveCriticalSectionWhenCallbackReturns(ptr ptr) ntdll.TpCallbackLeaveCriticalSectionOnCompletion + # @ stub LoadAppInitDlls + @ stdcall LoadLibraryA(str) + @ stdcall LoadLibraryExA( str long long) +@@ -1251,9 +1251,9 @@ + @ stdcall ReinitializeCriticalSection(ptr) + @ stdcall ReleaseActCtx(ptr) + @ stdcall ReleaseMutex(long) +-# @ stub ReleaseMutexWhenCallbackReturns ++@ stdcall ReleaseMutexWhenCallbackReturns(ptr long) ntdll.TpCallbackReleaseMutexOnCompletion + @ stdcall ReleaseSemaphore(long long ptr) +-# @ stub ReleaseSemaphoreWhenCallbackReturns ++@ stdcall ReleaseSemaphoreWhenCallbackReturns(ptr long long) ntdll.TpCallbackReleaseSemaphoreOnCompletion + @ stdcall ReleaseSRWLockExclusive(ptr) ntdll.RtlReleaseSRWLockExclusive + @ stdcall ReleaseSRWLockShared(ptr) ntdll.RtlReleaseSRWLockShared + @ stdcall RemoveDirectoryA(str) +@@ -1384,7 +1384,7 @@ + @ stdcall SetEnvironmentVariableW(wstr wstr) + @ stdcall SetErrorMode(long) + @ stdcall SetEvent(long) +-# @ stub SetEventWhenCallbackReturns ++@ stdcall SetEventWhenCallbackReturns(ptr long) ntdll.TpCallbackSetEventOnCompletion + @ stdcall SetFileApisToANSI() + @ stdcall SetFileApisToOEM() + @ stdcall SetFileAttributesA(str long) +@@ -1453,9 +1453,9 @@ + # @ stub SetThreadToken + @ stdcall SetThreadUILanguage(long) + # @ stub SetThreadpoolStackInformation +-# @ stub SetThreadpoolThreadMaximum +-# @ stub SetThreadpoolThreadMinimum +-# @ stub SetThreadpoolTimer ++@ stdcall SetThreadpoolThreadMaximum(ptr long) ntdll.TpSetPoolMaxThreads ++@ stdcall SetThreadpoolThreadMinimum(ptr long) ntdll.TpSetPoolMinThreads ++@ stdcall SetThreadpoolTimer(ptr ptr long long) + # @ stub SetThreadpoolWait + @ stdcall SetTimeZoneInformation(ptr) + @ stub SetTimerQueueTimer +@@ -1481,7 +1481,7 @@ + # @ stub SortCloseHandle + # @ stub SortGetHandle + # @ stub StartThreadpoolIo +-# @ stub SubmitThreadpoolWork ++@ stdcall SubmitThreadpoolWork(ptr) ntdll.TpPostWork + @ stdcall SuspendThread(long) + @ stdcall SwitchToFiber(ptr) + @ stdcall SwitchToThread() +@@ -1508,7 +1508,7 @@ + @ stdcall TryAcquireSRWLockExclusive(ptr) ntdll.RtlTryAcquireSRWLockExclusive + @ stdcall TryAcquireSRWLockShared(ptr) ntdll.RtlTryAcquireSRWLockShared + @ stdcall TryEnterCriticalSection(ptr) ntdll.RtlTryEnterCriticalSection +-# @ stub TrySubmitThreadpoolCallback ++@ stdcall TrySubmitThreadpoolCallback(ptr ptr ptr) ntdll.TpSimpleTryPost + @ stdcall TzSpecificLocalTimeToSystemTime(ptr ptr ptr) + # @ stub TzSpecificLocalTimeToSystemTimeEx + # @ stub -arch=x86_64 uaw_lstrcmpW +@@ -1570,9 +1570,9 @@ + @ stdcall WaitForSingleObject(long long) + @ stdcall WaitForSingleObjectEx(long long long) + # @ stub WaitForThreadpoolIoCallbacks +-# @ stub WaitForThreadpoolTimerCallbacks ++@ stdcall WaitForThreadpoolTimerCallbacks(ptr long) ntdll.TpWaitForTimer + # @ stub WaitForThreadpoolWaitCallbacks +-# @ stub WaitForThreadpoolWorkCallbacks ++@ stdcall WaitForThreadpoolWorkCallbacks(ptr long) ntdll.TpWaitForWork + @ stdcall WaitNamedPipeA (str long) + @ stdcall WaitNamedPipeW (wstr long) + @ stdcall WakeAllConditionVariable(ptr) ntdll.RtlWakeAllConditionVariable +diff --git a/dlls/kernel32/tests/thread.c b/dlls/kernel32/tests/thread.c +index d3ecd2a..25801b2 100644 +--- a/dlls/kernel32/tests/thread.c ++++ b/dlls/kernel32/tests/thread.c +@@ -1627,8 +1627,8 @@ static void test_threadpool(void) + int workcalled = 0; + + if (!pCreateThreadpool) { +- todo_wine win_skip("thread pool apis not supported.\n"); +- return; ++ win_skip("thread pool apis not supported.\n"); ++ return; + } + + work = pCreateThreadpoolWork(threadpool_workcallback, &workcalled, NULL); +@@ -1640,7 +1640,7 @@ static void test_threadpool(void) + ok (workcalled == 1, "expected work to be called once, got %d\n", workcalled); + + pool = pCreateThreadpool(NULL); +- todo_wine ok (pool != NULL, "CreateThreadpool failed\n"); ++ ok (pool != NULL, "CreateThreadpool failed\n"); + } + + static void test_reserved_tls(void) +diff --git a/dlls/kernel32/thread.c b/dlls/kernel32/thread.c +index 0abfdf1..085b011 100644 +--- a/dlls/kernel32/thread.c ++++ b/dlls/kernel32/thread.c +@@ -831,3 +831,104 @@ BOOL WINAPI GetThreadPreferredUILanguages( DWORD flags, PULONG count, PCZZWSTR b + *buffersize = 0; + return TRUE; + } ++ ++/*********************************************************************** ++ * CreateThreadpool (KERNEL32.@) ++ */ ++PTP_POOL WINAPI CreateThreadpool( PVOID reserved ) ++{ ++ TP_POOL *pool; ++ NTSTATUS status; ++ ++ TRACE( "%p\n", reserved ); ++ ++ status = TpAllocPool( &pool, reserved ); ++ if (status) ++ { ++ SetLastError( RtlNtStatusToDosError(status) ); ++ return NULL; ++ } ++ ++ return pool; ++} ++ ++/*********************************************************************** ++ * CreateThreadpoolCleanupGroup (KERNEL32.@) ++ */ ++PTP_CLEANUP_GROUP WINAPI CreateThreadpoolCleanupGroup( void ) ++{ ++ TP_CLEANUP_GROUP *group; ++ NTSTATUS status; ++ ++ TRACE( "\n" ); ++ ++ status = TpAllocCleanupGroup( &group ); ++ if (status) ++ { ++ SetLastError( RtlNtStatusToDosError(status) ); ++ return NULL; ++ } ++ ++ return group; ++} ++ ++/*********************************************************************** ++ * CreateThreadpoolTimer (KERNEL32.@) ++ */ ++PTP_TIMER WINAPI CreateThreadpoolTimer( PTP_TIMER_CALLBACK callback, PVOID userdata, ++ TP_CALLBACK_ENVIRON *environment ) ++{ ++ TP_TIMER *timer; ++ NTSTATUS status; ++ ++ TRACE( "%p, %p, %p\n", callback, userdata, environment ); ++ ++ status = TpAllocTimer( &timer, callback, userdata, environment ); ++ if (status) ++ { ++ SetLastError( RtlNtStatusToDosError(status) ); ++ return NULL; ++ } ++ ++ return timer; ++} ++ ++/*********************************************************************** ++ * CreateThreadpoolWork (KERNEL32.@) ++ */ ++PTP_WORK WINAPI CreateThreadpoolWork( PTP_WORK_CALLBACK callback, PVOID userdata, ++ TP_CALLBACK_ENVIRON *environment ) ++{ ++ TP_WORK *work; ++ NTSTATUS status; ++ ++ TRACE( "%p, %p, %p\n", callback, userdata, environment ); ++ ++ status = TpAllocWork( &work, callback, userdata, environment ); ++ if (status) ++ { ++ SetLastError( RtlNtStatusToDosError(status) ); ++ return NULL; ++ } ++ ++ return work; ++} ++ ++/*********************************************************************** ++ * SetThreadpoolTimer (KERNEL32.@) ++ */ ++VOID WINAPI SetThreadpoolTimer( TP_TIMER *timer, FILETIME *due_time, ++ DWORD period, DWORD window_length ) ++{ ++ LARGE_INTEGER timeout; ++ ++ TRACE( "%p, %p, %u, %u\n", timer, due_time, period, window_length ); ++ ++ if (due_time) ++ { ++ timeout.u.LowPart = due_time->dwLowDateTime; ++ timeout.u.HighPart = due_time->dwHighDateTime; ++ } ++ ++ TpSetTimer( timer, due_time ? &timeout : NULL, period, window_length ); ++} +diff --git a/include/winternl.h b/include/winternl.h +index 1a694da..a534bd1 100644 +--- a/include/winternl.h ++++ b/include/winternl.h +@@ -2599,6 +2599,33 @@ NTSYSAPI LONGLONG WINAPI RtlLargeIntegerSubtract(LONGLONG,LONGLONG); + NTSYSAPI NTSTATUS WINAPI RtlLargeIntegerToChar(const ULONGLONG *,ULONG,ULONG,PCHAR); + #endif + ++/* Threadpool functions */ ++ ++NTSYSAPI NTSTATUS WINAPI TpAllocCleanupGroup(TP_CLEANUP_GROUP **); ++NTSYSAPI NTSTATUS WINAPI TpAllocPool(TP_POOL **,PVOID); ++NTSYSAPI NTSTATUS WINAPI TpAllocTimer(TP_TIMER **,PTP_TIMER_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *); ++NTSYSAPI NTSTATUS WINAPI TpAllocWork(TP_WORK **,PTP_WORK_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *); ++NTSYSAPI void WINAPI TpCallbackLeaveCriticalSectionOnCompletion(TP_CALLBACK_INSTANCE *,RTL_CRITICAL_SECTION *); ++NTSYSAPI NTSTATUS WINAPI TpCallbackMayRunLong(TP_CALLBACK_INSTANCE *); ++NTSYSAPI void WINAPI TpCallbackReleaseMutexOnCompletion(TP_CALLBACK_INSTANCE *,HANDLE); ++NTSYSAPI void WINAPI TpCallbackReleaseSemaphoreOnCompletion(TP_CALLBACK_INSTANCE *,HANDLE,DWORD); ++NTSYSAPI void WINAPI TpCallbackSetEventOnCompletion(TP_CALLBACK_INSTANCE *,HANDLE); ++NTSYSAPI void WINAPI TpCallbackUnloadDllOnCompletion(TP_CALLBACK_INSTANCE *,HMODULE); ++NTSYSAPI void WINAPI TpDisassociateCallback(TP_CALLBACK_INSTANCE *); ++NTSYSAPI BOOL WINAPI TpIsTimerSet(TP_TIMER *); ++NTSYSAPI void WINAPI TpPostWork(TP_WORK *); ++NTSYSAPI void WINAPI TpReleaseCleanupGroup(TP_CLEANUP_GROUP *); ++NTSYSAPI void WINAPI TpReleaseCleanupGroupMembers(TP_CLEANUP_GROUP *,BOOL,PVOID); ++NTSYSAPI void WINAPI TpReleasePool(TP_POOL *); ++NTSYSAPI void WINAPI TpReleaseTimer(TP_TIMER *); ++NTSYSAPI void WINAPI TpReleaseWork(TP_WORK *); ++NTSYSAPI void WINAPI TpSetPoolMaxThreads(TP_POOL *,DWORD); ++NTSYSAPI BOOL WINAPI TpSetPoolMinThreads(TP_POOL *,DWORD); ++NTSYSAPI void WINAPI TpSetTimer(TP_TIMER *, LARGE_INTEGER *,LONG,LONG); ++NTSYSAPI NTSTATUS WINAPI TpSimpleTryPost(PTP_SIMPLE_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *); ++NTSYSAPI void WINAPI TpWaitForTimer(TP_TIMER *,BOOL); ++NTSYSAPI void WINAPI TpWaitForWork(TP_WORK *,BOOL); ++ + /* Wine internal functions */ + + NTSYSAPI NTSTATUS CDECL wine_nt_to_unix_file_name( const UNICODE_STRING *nameW, ANSI_STRING *unix_name_ret, +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0007-ntdll-Implement-threadpool-wait-objects.patch wine-staging-1.7.36~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0007-ntdll-Implement-threadpool-wait-objects.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0007-ntdll-Implement-threadpool-wait-objects.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0007-ntdll-Implement-threadpool-wait-objects.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,717 @@ +From 9c751685e15f98981a26275d2102b839fbee3472 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Fri, 6 Feb 2015 00:32:26 +0100 +Subject: ntdll: Implement threadpool wait objects. + +--- + dlls/ntdll/ntdll.spec | 8 +- + dlls/ntdll/threadpool2.c | 490 ++++++++++++++++++++++++++++++++++++++++++++++- + 2 files changed, 487 insertions(+), 11 deletions(-) + +diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec +index f4328a9..17c71bc 100644 +--- a/dlls/ntdll/ntdll.spec ++++ b/dlls/ntdll/ntdll.spec +@@ -974,7 +974,7 @@ + # @ stub TpAllocJobNotification + @ stdcall TpAllocPool(ptr ptr) + @ stdcall TpAllocTimer(ptr ptr ptr) +-# @ stub TpAllocWait ++@ stdcall TpAllocWait(ptr ptr ptr ptr) + @ stdcall TpAllocWork(ptr ptr ptr ptr) + # @ stub TpAlpcRegisterCompletionList + # @ stub TpAlpcUnregisterCompletionList +@@ -1005,7 +1005,7 @@ + # @ stub TpReleaseJobNotification + @ stdcall TpReleasePool(ptr) + @ stdcall TpReleaseTimer(ptr) +-# @ stub TpReleaseWait ++@ stdcall TpReleaseWait(ptr) + @ stdcall TpReleaseWork(ptr) + # @ stub TpSetDefaultPoolMaxThreads + # @ stub TpSetDefaultPoolStackInformation +@@ -1017,7 +1017,7 @@ + # @ stub TpSetPoolWorkerThreadIdleTimeout + @ stdcall TpSetTimer(ptr ptr long long) + # @ stub TpSetTimerEx +-# @ stub TpSetWait ++@ stdcall TpSetWait(ptr long ptr) + # @ stub TpSetWaitEx + @ stdcall TpSimpleTryPost(ptr ptr ptr) + # @ stub TpStartAsyncIoOperation +@@ -1028,5 +1028,5 @@ + # @ stub TpWaitForJobNotification + @ stdcall TpWaitForTimer(ptr long) +-# @ stub TpWaitForWait ++@ stdcall TpWaitForWait(ptr long) + @ stdcall TpWaitForWork(ptr long) + @ stdcall -ret64 VerSetConditionMask(int64 long long) +diff --git a/dlls/ntdll/threadpool2.c b/dlls/ntdll/threadpool2.c +index 19096a0..ae98d7a 100644 +--- a/dlls/ntdll/threadpool2.c ++++ b/dlls/ntdll/threadpool2.c +@@ -54,6 +54,7 @@ static inline LONG interlocked_dec( PLONG dest ) + } + + #define THREADPOOL_WORKER_TIMEOUT 5000 ++#define MAXIMUM_WAITQUEUE_OBJECTS (MAXIMUM_WAIT_OBJECTS - 1) + + /* allocated on the stack while a callback is running */ + struct threadpool_instance +@@ -125,7 +126,8 @@ struct threadpool_object + TP_OBJECT_TYPE_UNDEFINED, + TP_OBJECT_TYPE_SIMPLE, + TP_OBJECT_TYPE_WORK, +- TP_OBJECT_TYPE_TIMER ++ TP_OBJECT_TYPE_TIMER, ++ TP_OBJECT_TYPE_WAIT + } type; + + /* arguments for callback */ +@@ -156,6 +158,20 @@ struct threadpool_object + LONG period; + LONG window_length; + } timer; ++ /* wait callback */ ++ struct ++ { ++ PTP_WAIT_CALLBACK callback; ++ LONG signaled; ++ ++ /* information about the wait, locked via waitqueue.cs */ ++ struct waitqueue_bucket *bucket; ++ BOOL wait_pending; ++ struct list wait_entry; ++ ++ ULONGLONG timeout; ++ HANDLE handle; ++ } wait; + } u; + }; + +@@ -199,6 +215,40 @@ static RTL_CRITICAL_SECTION_DEBUG timerqueue_debug = + 0, 0, { (DWORD_PTR)(__FILE__ ": timerqueue.cs") } + }; + ++struct waitqueue_bucket ++{ ++ struct list bucket_entry; ++ ++ /* list of reserved slots / pending waits */ ++ LONG num_waits; ++ struct list reserved; ++ struct list waits; ++ HANDLE update_event; ++}; ++ ++/* global waitqueue object */ ++static RTL_CRITICAL_SECTION_DEBUG waitqueue_debug; ++static struct ++{ ++ CRITICAL_SECTION cs; ++ ++ /* list of buckets */ ++ LONG num_buckets; ++ struct list buckets; ++} ++waitqueue = ++{ ++ { &waitqueue_debug, -1, 0, 0, 0, 0 }, ++ 0, ++ LIST_INIT( waitqueue.buckets ) ++}; ++static RTL_CRITICAL_SECTION_DEBUG waitqueue_debug = ++{ ++ 0, 0, &waitqueue.cs, ++ { &waitqueue_debug.ProcessLocksList, &waitqueue_debug.ProcessLocksList }, ++ 0, 0, { (DWORD_PTR)(__FILE__ ": waitqueue.cs") } ++}; ++ + static inline struct threadpool *impl_from_TP_POOL( TP_POOL *pool ) + { + return (struct threadpool *)pool; +@@ -218,6 +268,13 @@ static inline struct threadpool_object *impl_from_TP_TIMER( TP_TIMER *timer ) + return object; + } + ++static inline struct threadpool_object *impl_from_TP_WAIT( TP_WAIT *wait ) ++{ ++ struct threadpool_object *object = (struct threadpool_object *)wait; ++ assert( !object || object->type == TP_OBJECT_TYPE_WAIT ); ++ return object; ++} ++ + static inline struct threadpool_group *impl_from_TP_CLEANUP_GROUP( TP_CLEANUP_GROUP *group ) + { + return (struct threadpool_group *)group; +@@ -230,12 +287,13 @@ static inline struct threadpool_instance *impl_from_TP_CALLBACK_INSTANCE( TP_CAL + + static void CALLBACK threadpool_worker_proc( void *param ); + static void CALLBACK timerqueue_thread_proc( void *param ); ++static void CALLBACK waitqueue_thread_proc( void *param ); + + static NTSTATUS tp_threadpool_alloc( struct threadpool **out ); + static BOOL tp_threadpool_release( struct threadpool *pool ); + static void tp_threadpool_shutdown( struct threadpool *pool ); + +-static void tp_object_submit( struct threadpool_object *object ); ++static void tp_object_submit( struct threadpool_object *object, BOOL success ); + static BOOL tp_object_release( struct threadpool_object *object ); + static void tp_object_shutdown( struct threadpool_object *object ); + +@@ -384,7 +442,7 @@ update_timer: + RtlLeaveCriticalSection( &timerqueue.cs ); + + if (submit_timer) +- tp_object_submit( new_timer ); ++ tp_object_submit( new_timer, FALSE ); + } + + static void CALLBACK timerqueue_thread_proc( void *param ) +@@ -411,7 +469,7 @@ static void CALLBACK timerqueue_thread_proc( void *param ) + + /* Queue a new callback in one of the worker threads */ + list_remove( &timer->u.timer.timer_entry ); +- tp_object_submit( timer ); ++ tp_object_submit( timer, FALSE ); + + /* Requeue the timer, except its marked for shutdown */ + if (!timer->shutdown && timer->u.timer.period) +@@ -477,6 +535,306 @@ static void CALLBACK timerqueue_thread_proc( void *param ) + RtlLeaveCriticalSection( &timerqueue.cs ); + } + ++/*********************************************************************** ++ * WAITQUEUE IMPLEMENTATION ++ ***********************************************************************/ ++ ++static NTSTATUS tp_waitqueue_acquire( struct threadpool_object *wait ) ++{ ++ struct waitqueue_bucket *bucket; ++ NTSTATUS status; ++ HANDLE thread; ++ assert( wait->type = TP_OBJECT_TYPE_WAIT ); ++ ++ wait->u.wait.signaled = 0; ++ ++ wait->u.wait.bucket = NULL; ++ wait->u.wait.wait_pending = FALSE; ++ memset( &wait->u.wait.wait_entry, 0, sizeof(wait->u.wait.wait_entry) ); ++ ++ wait->u.wait.timeout = 0; ++ wait->u.wait.handle = INVALID_HANDLE_VALUE; ++ ++ RtlEnterCriticalSection( &waitqueue.cs ); ++ ++ LIST_FOR_EACH_ENTRY( bucket, &waitqueue.buckets, struct waitqueue_bucket, bucket_entry ) ++ { ++ if (bucket->num_waits < MAXIMUM_WAITQUEUE_OBJECTS) ++ { ++ bucket->num_waits++; ++ wait->u.wait.bucket = bucket; ++ list_add_tail( &bucket->reserved, &wait->u.wait.wait_entry ); ++ ++ status = STATUS_SUCCESS; ++ goto out; ++ } ++ } ++ ++ bucket = RtlAllocateHeap( GetProcessHeap(), 0, sizeof(*bucket) ); ++ if (!bucket) ++ { ++ status = STATUS_NO_MEMORY; ++ goto out; ++ } ++ ++ bucket->num_waits = 1; ++ list_init( &bucket->reserved ); ++ list_init( &bucket->waits ); ++ ++ status = NtCreateEvent( &bucket->update_event, EVENT_ALL_ACCESS, NULL, SynchronizationEvent, FALSE ); ++ if (status) ++ { ++ RtlFreeHeap( GetProcessHeap(), 0, bucket ); ++ goto out; ++ } ++ ++ status = RtlCreateUserThread( GetCurrentProcess(), NULL, FALSE, NULL, 0, 0, ++ waitqueue_thread_proc, bucket, &thread, NULL ); ++ if (status == STATUS_SUCCESS) ++ { ++ waitqueue.num_buckets++; ++ list_add_tail( &waitqueue.buckets, &bucket->bucket_entry ); ++ ++ wait->u.wait.bucket = bucket; ++ list_add_tail( &bucket->reserved, &wait->u.wait.wait_entry ); ++ ++ NtClose( thread ); ++ } ++ else ++ { ++ NtClose( bucket->update_event ); ++ RtlFreeHeap( GetProcessHeap(), 0, bucket ); ++ } ++ ++out: ++ RtlLeaveCriticalSection( &waitqueue.cs ); ++ return status; ++} ++ ++/* Decrement the refcount of a timer queue. */ ++static void tp_waitqueue_release( struct threadpool_object *wait ) ++{ ++ assert( wait->type == TP_OBJECT_TYPE_WAIT ); ++ RtlEnterCriticalSection( &waitqueue.cs ); ++ ++ if (wait->u.wait.bucket) ++ { ++ struct waitqueue_bucket *bucket = wait->u.wait.bucket; ++ assert( bucket->num_waits > 0 ); ++ ++ bucket->num_waits--; ++ list_remove( &wait->u.wait.wait_entry ); ++ NtSetEvent( bucket->update_event, NULL ); ++ ++ wait->u.wait.bucket = NULL; ++ } ++ ++ RtlLeaveCriticalSection( &waitqueue.cs ); ++} ++ ++static void tp_waitqueue_update_wait( struct threadpool_object *new_wait, HANDLE handle, LARGE_INTEGER *timeout ) ++{ ++ BOOL submit_wait = FALSE; ++ ++ assert( new_wait->type == TP_OBJECT_TYPE_WAIT ); ++ RtlEnterCriticalSection( &waitqueue.cs ); ++ assert( new_wait->u.wait.bucket ); ++ ++ /* update wait handle */ ++ new_wait->u.wait.handle = handle; ++ ++ /* for performance reasons we only wake up when something has changed */ ++ if (handle || new_wait->u.wait.wait_pending) ++ { ++ struct waitqueue_bucket *bucket = new_wait->u.wait.bucket; ++ list_remove( &new_wait->u.wait.wait_entry ); ++ ++ if (handle) ++ { ++ ULONGLONG when = TIMEOUT_INFINITE; ++ ++ if (timeout) ++ { ++ when = timeout->QuadPart; ++ ++ /* A timeout of zero means that the wait should be submitted immediately */ ++ if (when == 0) ++ { ++ submit_wait = TRUE; ++ goto remove_wait; ++ } ++ ++ /* Convert relative timeout to absolute */ ++ if ((LONGLONG)when < 0) ++ { ++ LARGE_INTEGER now; ++ NtQuerySystemTime( &now ); ++ when = now.QuadPart - when; ++ } ++ } ++ ++ list_add_tail( &bucket->waits, &new_wait->u.wait.wait_entry ); ++ new_wait->u.wait.wait_pending = TRUE; ++ new_wait->u.wait.timeout = when; ++ } ++ else ++ { ++remove_wait: ++ list_add_tail( &bucket->reserved, &new_wait->u.wait.wait_entry ); ++ new_wait->u.wait.wait_pending = FALSE; ++ } ++ ++ NtSetEvent( bucket->update_event, NULL ); ++ } ++ ++ RtlLeaveCriticalSection( &waitqueue.cs ); ++ ++ if (submit_wait) ++ tp_object_submit( new_wait, FALSE ); ++} ++ ++static void CALLBACK waitqueue_thread_proc( void *param ) ++{ ++ HANDLE handles[MAXIMUM_WAITQUEUE_OBJECTS + 1]; ++ struct threadpool_object *objects[MAXIMUM_WAITQUEUE_OBJECTS]; ++ struct waitqueue_bucket *bucket = param; ++ LARGE_INTEGER now, timeout; ++ struct threadpool_object *wait, *next; ++ DWORD num_handles; ++ NTSTATUS status; ++ ++ RtlEnterCriticalSection( &waitqueue.cs ); ++ ++ for (;;) ++ { ++ NtQuerySystemTime( &now ); ++ timeout.QuadPart = TIMEOUT_INFINITE; ++ num_handles = 0; ++ ++ LIST_FOR_EACH_ENTRY_SAFE( wait, next, &bucket->waits, struct threadpool_object, u.wait.wait_entry ) ++ { ++ assert( wait->type == TP_OBJECT_TYPE_WAIT ); ++ ++ /* Timeout expired or object was signaled */ ++ if (wait->u.wait.timeout <= now.QuadPart) ++ { ++ list_remove( &wait->u.wait.wait_entry ); ++ list_add_tail( &bucket->reserved, &wait->u.wait.wait_entry ); ++ tp_object_submit( wait, FALSE ); ++ } ++ else ++ { ++ if (wait->u.wait.timeout < timeout.QuadPart) ++ timeout.QuadPart = wait->u.wait.timeout; ++ ++ /* We will have to wait for this object - keep a reference to make sure it doesn't get destroyed */ ++ assert( num_handles < MAXIMUM_WAITQUEUE_OBJECTS ); ++ interlocked_inc( &wait->refcount ); ++ objects[num_handles] = wait; ++ handles[num_handles] = wait->u.wait.handle; ++ num_handles++; ++ } ++ } ++ ++ if (!bucket->num_waits) ++ { ++ assert( num_handles == 0 ); ++ ++ /* All wait objects have been destroyed, if there are no new wait objects within some ++ * amount of time, then we can shutdown this thread. */ ++ RtlLeaveCriticalSection( &waitqueue.cs ); ++ timeout.QuadPart = (ULONGLONG)THREADPOOL_WORKER_TIMEOUT * -10000; ++ status = NtWaitForMultipleObjects( 1, &bucket->update_event, TRUE, FALSE, &timeout ); ++ RtlEnterCriticalSection( &waitqueue.cs ); ++ ++ if (status == STATUS_TIMEOUT && !bucket->num_waits) ++ break; ++ } ++ else ++ { ++ handles[num_handles] = bucket->update_event; ++ ++ /* Wait for a wait queue update event or until an event is triggered */ ++ RtlLeaveCriticalSection( &waitqueue.cs ); ++ status = NtWaitForMultipleObjects( num_handles + 1, handles, TRUE, FALSE, &timeout ); ++ RtlEnterCriticalSection( &waitqueue.cs ); ++ ++ if (status >= STATUS_WAIT_0 && status < STATUS_WAIT_0 + num_handles) ++ { ++ wait = objects[status - STATUS_WAIT_0]; ++ assert( wait->type == TP_OBJECT_TYPE_WAIT ); ++ ++ if (wait->u.wait.bucket) ++ { ++ assert( wait->u.wait.bucket == bucket ); ++ list_remove( &wait->u.wait.wait_entry ); ++ list_add_tail( &bucket->reserved, &wait->u.wait.wait_entry ); ++ tp_object_submit( wait, TRUE ); ++ } ++ else ++ FIXME("Wait object triggered while object was destroyed, race-condition.\n"); ++ } ++ ++ while (num_handles) ++ { ++ wait = objects[--num_handles]; ++ assert( wait->type == TP_OBJECT_TYPE_WAIT ); ++ tp_object_release( wait ); ++ } ++ } ++ ++ /* Try to merge with other buckets */ ++ if (waitqueue.num_buckets > 1 && bucket->num_waits && bucket->num_waits < MAXIMUM_WAITQUEUE_OBJECTS / 2) ++ { ++ struct waitqueue_bucket *other_bucket; ++ LIST_FOR_EACH_ENTRY( other_bucket, &waitqueue.buckets, struct waitqueue_bucket, bucket_entry ) ++ { ++ if (other_bucket != bucket && other_bucket->num_waits && ++ other_bucket->num_waits + bucket->num_waits <= MAXIMUM_WAITQUEUE_OBJECTS) ++ { ++ other_bucket->num_waits += bucket->num_waits; ++ bucket->num_waits = 0; ++ ++ LIST_FOR_EACH_ENTRY( wait, &bucket->reserved, struct threadpool_object, u.wait.wait_entry ) ++ { ++ assert( wait->type == TP_OBJECT_TYPE_WAIT ); ++ wait->u.wait.bucket = other_bucket; ++ } ++ list_move_tail( &other_bucket->reserved, &bucket->reserved ); ++ ++ LIST_FOR_EACH_ENTRY( wait, &bucket->waits, struct threadpool_object, u.wait.wait_entry ) ++ { ++ assert( wait->type == TP_OBJECT_TYPE_WAIT ); ++ wait->u.wait.bucket = other_bucket; ++ } ++ list_move_tail( &other_bucket->waits, &bucket->waits ); ++ ++ /* we will not terminate immediately, but instead after a timeout. Make sure that this ++ * bucket appears as the last one in the list, otherwise there is a high risk that ++ * elements will be added again. */ ++ list_remove( &bucket->bucket_entry ); ++ list_add_tail( &waitqueue.buckets, &bucket->bucket_entry ); ++ ++ NtSetEvent( other_bucket->update_event, NULL ); ++ break; ++ } ++ } ++ } ++ } ++ ++ waitqueue.num_buckets--; ++ list_remove( &bucket->bucket_entry ); ++ if (!waitqueue.num_buckets) ++ assert( list_empty( &waitqueue.buckets ) ); ++ RtlLeaveCriticalSection( &waitqueue.cs ); ++ ++ assert( bucket->num_waits == 0 ); ++ assert( list_empty( &bucket->reserved ) ); ++ assert( list_empty( &bucket->waits ) ); ++ ++ NtClose( bucket->update_event ); ++ RtlFreeHeap( GetProcessHeap(), 0, bucket ); ++} + + /*********************************************************************** + * THREADPOOL INSTANCE IMPLEMENTATION +@@ -689,6 +1047,7 @@ static void tp_threadpool_shutdown( struct threadpool *pool ) + static void CALLBACK threadpool_worker_proc( void *param ) + { + struct threadpool *pool = param; ++ TP_WAIT_RESULT wait_result; + LARGE_INTEGER timeout; + struct list *ptr; + +@@ -708,6 +1067,18 @@ static void CALLBACK threadpool_worker_proc( void *param ) + list_add_tail( &pool->pool, &object->pool_entry ); + object->num_running_callbacks++; + ++ /* for wait objects, determine if the object was signaled or if this ++ * is a timeout. */ ++ if (object->type == TP_OBJECT_TYPE_WAIT) ++ { ++ if (object->u.wait.signaled > 0) ++ { ++ wait_result = WAIT_OBJECT_0; ++ object->u.wait.signaled--; ++ } ++ else wait_result = WAIT_TIMEOUT; ++ } ++ + /* Leave critical section and do the actual callback. */ + pool->num_busy_workers++; + RtlLeaveCriticalSection( &pool->cs ); +@@ -746,6 +1117,16 @@ static void CALLBACK threadpool_worker_proc( void *param ) + break; + } + ++ case TP_OBJECT_TYPE_WAIT: ++ { ++ TP_CALLBACK_INSTANCE *cb_instance = (TP_CALLBACK_INSTANCE *)&instance; ++ TRACE( "executing callback %p(%p, %p, %p, %u)\n", ++ object->u.wait.callback, cb_instance, object->userdata, object, wait_result ); ++ object->u.wait.callback( cb_instance, object->userdata, (TP_WAIT *)object, wait_result ); ++ TRACE( "callback %p returned\n", object->u.wait.callback ); ++ break; ++ } ++ + default: + FIXME( "callback type %u not implemented\n", object->type ); + break; +@@ -857,7 +1238,7 @@ static void tp_object_initialize( struct threadpool_object *object, struct threa + * to the cleanup group. As soon as the cleanup group members are released ->shutdown + * will be set, and tp_object_submit would fail with an assertion. */ + if (submit_and_release) +- tp_object_submit( object ); ++ tp_object_submit( object, FALSE ); + + /* Assign this object to a specific group. Please note that this has to be done + * as the last step before returning a pointer to the application, otherwise +@@ -956,6 +1337,38 @@ static NTSTATUS tp_object_alloc_timer( struct threadpool_object **out, PTP_TIMER + return STATUS_SUCCESS; + } + ++static NTSTATUS tp_object_alloc_wait( struct threadpool_object **out, PTP_WAIT_CALLBACK callback, ++ PVOID userdata, TP_CALLBACK_ENVIRON *environment ) ++{ ++ struct threadpool_object *object; ++ struct threadpool *pool; ++ NTSTATUS status; ++ ++ /* determine threadpool */ ++ pool = environment ? (struct threadpool *)environment->Pool : NULL; ++ if (!pool) pool = get_default_threadpool(); ++ if (!pool) return STATUS_NO_MEMORY; ++ ++ object = RtlAllocateHeap( GetProcessHeap(), 0, sizeof(*object) ); ++ if (!object) ++ return STATUS_NO_MEMORY; ++ ++ object->type = TP_OBJECT_TYPE_WAIT; ++ object->u.wait.callback = callback; ++ ++ status = tp_waitqueue_acquire( object ); ++ if (status) ++ { ++ RtlFreeHeap( GetProcessHeap(), 0, object ); ++ return status; ++ } ++ ++ tp_object_initialize( object, pool, userdata, environment, FALSE ); ++ ++ *out = object; ++ return STATUS_SUCCESS; ++} ++ + static BOOL tp_object_release( struct threadpool_object *object ) + { + struct threadpool_group *group; +@@ -996,6 +1409,11 @@ static void tp_object_shutdown( struct threadpool_object *object ) + /* release reference on the timerqueue */ + tp_timerqueue_release( object ); + } ++ else if (object->type == TP_OBJECT_TYPE_WAIT) ++ { ++ /* release reference to the waitqueue */ ++ tp_waitqueue_release( object ); ++ } + + object->shutdown = TRUE; + } +@@ -1007,12 +1425,17 @@ static void tp_object_cancel( struct threadpool_object *object, BOOL group_cance + + /* Remove the pending callbacks from the pool */ + RtlEnterCriticalSection( &pool->cs ); ++ + if (object->num_pending_callbacks) + { + pending_callbacks = object->num_pending_callbacks; + list_remove( &object->pool_entry ); + object->num_pending_callbacks = 0; + } ++ ++ if (object->type == TP_OBJECT_TYPE_WAIT) ++ object->u.wait.signaled = 0; ++ + RtlLeaveCriticalSection( &pool->cs ); + + /* Execute group cancellation callback if defined, and if this was actually a group cancel. */ +@@ -1039,7 +1462,7 @@ static void tp_object_wait( struct threadpool_object *object ) + RtlLeaveCriticalSection( &pool->cs ); + } + +-static void tp_object_submit( struct threadpool_object *object ) ++static void tp_object_submit( struct threadpool_object *object, BOOL success ) + { + struct threadpool *pool = object->pool; + +@@ -1076,6 +1499,10 @@ static void tp_object_submit( struct threadpool_object *object ) + + interlocked_inc( &object->refcount ); + ++ /* increment success counter by one */ ++ if (object->type == TP_OBJECT_TYPE_WAIT && success) ++ object->u.wait.signaled++; ++ + RtlLeaveCriticalSection( &pool->cs ); + } + +@@ -1210,6 +1637,16 @@ NTSTATUS WINAPI TpAllocTimer( TP_TIMER **out, PTP_TIMER_CALLBACK callback, PVOID + } + + /*********************************************************************** ++ * TpAllocWait (NTDLL.@) ++ */ ++NTSTATUS WINAPI TpAllocWait( TP_WAIT **out, PTP_WAIT_CALLBACK callback, PVOID userdata, ++ TP_CALLBACK_ENVIRON *environment ) ++{ ++ TRACE("%p %p %p %p\n", out, callback, userdata, environment); ++ return tp_object_alloc_wait( (struct threadpool_object **)out, callback, userdata, environment ); ++} ++ ++/*********************************************************************** + * TpAllocWork (NTDLL.@) + */ + NTSTATUS WINAPI TpAllocWork( TP_WORK **out, PTP_WORK_CALLBACK callback, PVOID userdata, +@@ -1330,7 +1767,7 @@ VOID WINAPI TpPostWork( TP_WORK *work ) + { + struct threadpool_object *this = impl_from_TP_WORK( work ); + TRACE("%p\n", work); +- if (this) tp_object_submit( this ); ++ if (this) tp_object_submit( this, FALSE ); + } + + /*********************************************************************** +@@ -1386,6 +1823,20 @@ VOID WINAPI TpReleaseTimer( TP_TIMER *timer ) + } + + /*********************************************************************** ++ * TpReleaseWait (NTDLL.@) ++ */ ++VOID WINAPI TpReleaseWait( TP_WAIT *wait ) ++{ ++ struct threadpool_object *this = impl_from_TP_WAIT( wait ); ++ TRACE("%p\n", wait); ++ if (this) ++ { ++ tp_object_shutdown( this ); ++ tp_object_release( this ); ++ } ++} ++ ++/*********************************************************************** + * TpReleaseWork (NTDLL.@) + */ + VOID WINAPI TpReleaseWork( TP_WORK *work ) +@@ -1431,6 +1882,16 @@ VOID WINAPI TpSetTimer( TP_TIMER *timer, LARGE_INTEGER *timeout, LONG period, LO + } + + /*********************************************************************** ++ * TpSetWait (KERNEL32.@) ++ */ ++VOID WINAPI TpSetWait( TP_WAIT *wait, HANDLE handle, LARGE_INTEGER *timeout ) ++{ ++ struct threadpool_object *this = impl_from_TP_WAIT( wait ); ++ TRACE("%p %p %p\n", wait, handle, timeout); ++ if (this) tp_waitqueue_update_wait( this, handle, timeout ); ++} ++ ++/*********************************************************************** + * TpSimpleTryPost (NTDLL.@) + */ + NTSTATUS WINAPI TpSimpleTryPost( PTP_SIMPLE_CALLBACK callback, PVOID userdata, TP_CALLBACK_ENVIRON *environment ) +@@ -1455,6 +1916,21 @@ VOID WINAPI TpWaitForTimer( TP_TIMER *timer, BOOL cancel_pending ) + } + + /*********************************************************************** ++ * TpWaitForWait (KERNEL32.@) ++ */ ++VOID WINAPI TpWaitForWait( TP_WAIT *wait, BOOL cancel_pending ) ++{ ++ struct threadpool_object *this = impl_from_TP_WAIT( wait ); ++ TRACE("%p %d\n", wait, cancel_pending); ++ if (this) ++ { ++ if (cancel_pending) ++ tp_object_cancel( this, FALSE, NULL ); ++ tp_object_wait( this ); ++ } ++} ++ ++/*********************************************************************** + * TpWaitForWork (NTDLL.@) + */ + VOID WINAPI TpWaitForWork( TP_WORK *work, BOOL cancel_pending ) +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0008-ntdll-tests-Add-tests-for-threadpool-wait-objects.patch wine-staging-1.7.36~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0008-ntdll-tests-Add-tests-for-threadpool-wait-objects.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0008-ntdll-tests-Add-tests-for-threadpool-wait-objects.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0008-ntdll-tests-Add-tests-for-threadpool-wait-objects.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,317 @@ +From eabc190f60fddb8d6e454da9686a403ae8391939 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Fri, 6 Feb 2015 20:09:41 +0100 +Subject: ntdll/tests: Add tests for threadpool wait objects. + +--- + dlls/ntdll/tests/threadpool.c | 287 ++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 287 insertions(+) + +diff --git a/dlls/ntdll/tests/threadpool.c b/dlls/ntdll/tests/threadpool.c +index 61f72ec..424fde2 100644 +--- a/dlls/ntdll/tests/threadpool.c ++++ b/dlls/ntdll/tests/threadpool.c +@@ -761,6 +761,291 @@ static void test_tp_window_length(void) + pTpReleasePool(pool); + } + ++static void CALLBACK wait_cb(TP_CALLBACK_INSTANCE *instance, void *userdata, TP_WAIT *wait, TP_WAIT_RESULT result) ++{ ++ trace("Running wait callback\n"); ++ ++ if (result == WAIT_OBJECT_0) ++ InterlockedIncrement((LONG *)userdata); ++ else if (result == WAIT_TIMEOUT) ++ InterlockedExchangeAdd((LONG *)userdata, 0x10000); ++ else ++ ok(0, "unexpected result %u\n", result); ++} ++ ++static void test_tp_wait(void) ++{ ++ TP_CALLBACK_ENVIRON environment; ++ HANDLE semaphore; ++ TP_WAIT *wait, *wait2; ++ TP_POOL *pool; ++ NTSTATUS status; ++ LONG userdata; ++ LARGE_INTEGER when; ++ DWORD ret; ++ ++ /* Allocate new threadpool */ ++ pool = NULL; ++ status = pTpAllocPool(&pool, NULL); ++ ok(!status, "TpAllocPool failed with status %x\n", status); ++ ok(pool != NULL, "expected pool != NULL\n"); ++ ++ /* Allocate new wait items */ ++ wait = NULL; ++ memset(&environment, 0, sizeof(environment)); ++ environment.Version = 1; ++ environment.Pool = pool; ++ status = pTpAllocWait(&wait, wait_cb, &userdata, &environment); ++ ok(!status, "TpAllocWait failed with status %x\n", status); ++ ok(wait != NULL, "expected wait != NULL\n"); ++ ++ wait2 = NULL; ++ status = pTpAllocWait(&wait2, wait_cb, &userdata, &environment); ++ ok(!status, "TpAllocWait failed with status %x\n", status); ++ ok(wait != NULL, "expected wait != NULL\n"); ++ ++ semaphore = CreateSemaphoreW(NULL, 0, 1, NULL); ++ ok(semaphore != NULL, "failed to create semaphore\n"); ++ ++ /* Infinite timeout, signal the semaphore immediately */ ++ userdata = 0; ++ pTpSetWait(wait, semaphore, NULL); ++ ReleaseSemaphore(semaphore, 1, NULL); ++ Sleep(50); ++ ok(userdata == 1, "expected userdata = 1, got %u\n", userdata); ++ ++ /* Relative timeout, no event */ ++ userdata = 0; ++ when.QuadPart = (ULONGLONG)50 * -10000; ++ pTpSetWait(wait, semaphore, &when); ++ Sleep(100); ++ pTpWaitForWait(wait, FALSE); ++ ok(userdata == 0x10000, "expected userdata = 0x10000, got %u\n", userdata); ++ ret = WaitForSingleObject(semaphore, 50); ++ ok(ret == WAIT_TIMEOUT, "expected ret = WAIT_TIMEOUT, got %u\n", ret); ++ ++ /* Relative timeout, with event */ ++ userdata = 0; ++ when.QuadPart = (ULONGLONG)500 * -10000; ++ pTpSetWait(wait, semaphore, &when); ++ pTpWaitForWait(wait, TRUE); ++ Sleep(250); ++ ReleaseSemaphore(semaphore, 1, NULL); ++ Sleep(50); ++ pTpWaitForWait(wait, FALSE); ++ ok(userdata == 1, "expected userdata = 1, got %u\n", userdata); ++ ret = WaitForSingleObject(semaphore, 50); ++ ok(ret == WAIT_TIMEOUT, "expected ret = WAIT_TIMEOUT, got %u\n", ret); ++ ++ /* Absolute timeout, no event */ ++ userdata = 0; ++ NtQuerySystemTime( &when ); ++ when.QuadPart += (ULONGLONG)50 * 10000; ++ pTpSetWait(wait, semaphore, &when); ++ Sleep(100); ++ pTpWaitForWait(wait, FALSE); ++ ok(userdata == 0x10000, "expected userdata = 0x10000, got %u\n", userdata); ++ ret = WaitForSingleObject(semaphore, 50); ++ ok(ret == WAIT_TIMEOUT, "expected ret = WAIT_TIMEOUT, got %u\n", ret); ++ ++ /* Absolute timeout, with event */ ++ userdata = 0; ++ NtQuerySystemTime( &when ); ++ when.QuadPart += (ULONGLONG)500 * 10000; ++ pTpSetWait(wait, semaphore, &when); ++ pTpWaitForWait(wait, TRUE); ++ Sleep(250); ++ ReleaseSemaphore(semaphore, 1, NULL); ++ Sleep(50); ++ pTpWaitForWait(wait, FALSE); ++ ok(userdata == 1, "expected userdata = 1, got %u\n", userdata); ++ ret = WaitForSingleObject(semaphore, 50); ++ ok(ret == WAIT_TIMEOUT, "expected ret = WAIT_TIMEOUT, got %u\n", ret); ++ ++ /* Trigger event immediately */ ++ userdata = 0; ++ when.QuadPart = 0; ++ pTpSetWait(wait, semaphore, &when); ++ pTpWaitForWait(wait, FALSE); ++ ok(userdata == 0x10000, "expected userdata = 0x10000, got %u\n", userdata); ++ ret = WaitForSingleObject(semaphore, 50); ++ ok(ret == WAIT_TIMEOUT, "expected ret = WAIT_TIMEOUT, got %u\n", ret); ++ ++ /* Cancel a pending wait */ ++ userdata = 0; ++ when.QuadPart = (ULONGLONG)500 * -10000; ++ pTpSetWait(wait, semaphore, &when); ++ pTpWaitForWait(wait, TRUE); ++ Sleep(250); ++ pTpSetWait(wait, NULL, (void *)0xdeadbeef); ++ Sleep(50); ++ ReleaseSemaphore(semaphore, 1, NULL); ++ Sleep(50); ++ ok(userdata == 0, "expected userdata = 0, got %u\n", userdata); ++ ret = WaitForSingleObject(semaphore, 1000); ++ ok(ret == WAIT_OBJECT_0, "expected ret = WAIT_OBJECT_0, got %u\n", ret); ++ ++ /* Test with INVALID_HANDLE_VALUE */ ++ userdata = 0; ++ when.QuadPart = 0; ++ pTpSetWait(wait, INVALID_HANDLE_VALUE, &when); ++ Sleep(50); ++ ok(userdata == 0x10000, "expected userdata = 0x10000, got %u\n", userdata); ++ ++ /* Cancel a pending wait with INVALID_HANDLE_VALUE */ ++ userdata = 0; ++ when.QuadPart = (ULONGLONG)500 * -10000; ++ pTpSetWait(wait, semaphore, &when); ++ pTpWaitForWait(wait, TRUE); ++ Sleep(250); ++ when.QuadPart = (ULONGLONG)100 * -10000; ++ pTpSetWait(wait, INVALID_HANDLE_VALUE, &when); ++ Sleep(250); ++ ok(userdata == 0x10000, "expected userdata = 0x10000, got %u\n", userdata); ++ ++ /* Add two objects with the same semaphore */ ++ userdata = 0; ++ pTpSetWait(wait, semaphore, NULL); ++ pTpSetWait(wait2, semaphore, NULL); ++ ok(userdata == 0, "expected userdata = 0, got %u\n", userdata); ++ ReleaseSemaphore(semaphore, 1, NULL); ++ Sleep(10); ++ pTpWaitForWait(wait, FALSE); ++ pTpWaitForWait(wait2, FALSE); ++ ok(userdata == 1, "expected userdata = 1, got %u\n", userdata); ++ ret = WaitForSingleObject(semaphore, 50); ++ ok(ret == WAIT_TIMEOUT, "expected ret = WAIT_TIMEOUT, got %u\n", ret); ++ ++ CloseHandle(semaphore); ++ semaphore = CreateSemaphoreW(NULL, 0, 2, NULL); ++ ok(semaphore != NULL, "failed to create semaphore\n"); ++ ++ /* Repeat test above, but with a semaphore of count 2 */ ++ userdata = 0; ++ pTpSetWait(wait, semaphore, NULL); ++ pTpSetWait(wait2, semaphore, NULL); ++ ok(userdata == 0, "expected userdata = 0, got %u\n", userdata); ++ ReleaseSemaphore(semaphore, 2, NULL); ++ Sleep(10); ++ pTpWaitForWait(wait, FALSE); ++ pTpWaitForWait(wait2, FALSE); ++ ok(userdata == 2, "expected userdata = 2, got %u\n", userdata); ++ ret = WaitForSingleObject(semaphore, 50); ++ ok(ret == WAIT_TIMEOUT, "expected ret = WAIT_TIMEOUT, got %u\n", ret); ++ ++ CloseHandle(semaphore); ++ ++ /* Cleanup */ ++ pTpReleaseWait(wait2); ++ pTpReleaseWait(wait); ++ pTpReleasePool(pool); ++} ++ ++static LONG multi_wait_callbacks; ++static DWORD multi_wait_result; ++ ++static void CALLBACK multi_wait_cb(TP_CALLBACK_INSTANCE *instance, void *userdata, TP_WAIT *wait, TP_WAIT_RESULT result) ++{ ++ DWORD index = (DWORD)(DWORD_PTR)userdata; ++ InterlockedIncrement(&multi_wait_callbacks); ++ ++ if (result == WAIT_OBJECT_0) ++ multi_wait_result = index; ++ else if (result == WAIT_TIMEOUT) ++ multi_wait_result = 0x10000 | index; ++ else ++ ok(0, "unexpected result %u\n", result); ++} ++ ++static void test_tp_multi_wait(void) ++{ ++ TP_CALLBACK_ENVIRON environment; ++ HANDLE semaphores[512]; ++ TP_WAIT *waits[512]; ++ TP_POOL *pool; ++ NTSTATUS status; ++ LARGE_INTEGER when; ++ int i; ++ ++ /* Allocate new threadpool */ ++ pool = NULL; ++ status = pTpAllocPool(&pool, NULL); ++ ok(!status, "TpAllocPool failed with status %x\n", status); ++ ok(pool != NULL, "expected pool != NULL\n"); ++ ++ memset(&environment, 0, sizeof(environment)); ++ environment.Version = 1; ++ environment.Pool = pool; ++ ++ /* Create semaphores, wait objects and enable them */ ++ for (i = 0; i < sizeof(semaphores)/sizeof(semaphores[0]); i++) ++ { ++ semaphores[i] = CreateSemaphoreW(NULL, 0, 1, NULL); ++ ok(semaphores[i] != NULL, "failed to create semaphores[%d]\n", i); ++ ++ waits[i] = NULL; ++ status = pTpAllocWait(&waits[i], multi_wait_cb, (void *)i, &environment); ++ ok(!status, "TpAllocWait failed with status %x\n", status); ++ ok(waits[i] != NULL, "expected waits[%d] != NULL\n", i); ++ ++ pTpSetWait(waits[i], semaphores[i], NULL); ++ } ++ ++ /* Now test releasing the semaphores */ ++ for (i = 0; i < sizeof(semaphores)/sizeof(semaphores[0]); i++) ++ { ++ multi_wait_callbacks = 0; ++ multi_wait_result = 0; ++ ++ ReleaseSemaphore(semaphores[i], 1, NULL); ++ while (multi_wait_callbacks == 0) Sleep(10); ++ ok(multi_wait_callbacks == 1, "expected multi_wait_callbacks = 1, got %u\n", multi_wait_callbacks); ++ ok(multi_wait_result == i, "expected multi_wait_result = %u, got %u\n", multi_wait_result, i); ++ ++ pTpSetWait(waits[i], semaphores[i], NULL); ++ } ++ ++ /* Now again in the reversed order */ ++ for (i = sizeof(semaphores)/sizeof(semaphores[0]) - 1; i >= 0; i--) ++ { ++ multi_wait_callbacks = 0; ++ multi_wait_result = 0; ++ ++ ReleaseSemaphore(semaphores[i], 1, NULL); ++ while (multi_wait_callbacks == 0) Sleep(10); ++ ok(multi_wait_callbacks == 1, "expected multi_wait_callbacks = 1, got %u\n", multi_wait_callbacks); ++ ok(multi_wait_result == i, "expected multi_wait_result = %u, got %u\n", multi_wait_result, i); ++ ++ pTpSetWait(waits[i], semaphores[i], NULL); ++ } ++ ++ /* Now test with a timeout */ ++ multi_wait_callbacks = 0; ++ multi_wait_result = 0; ++ for (i = 0; i < sizeof(semaphores)/sizeof(semaphores[0]); i++) ++ { ++ when.QuadPart = 0; ++ pTpSetWait(waits[i], semaphores[i], &when); ++ } ++ Sleep(50); ++ ok(multi_wait_callbacks == sizeof(semaphores)/sizeof(semaphores[0]), ++ "got wrong multi_wait_callbacks %u\n", multi_wait_callbacks); ++ ok(multi_wait_result >> 16, "expected multi_wait_result >> 16 != 0\n"); ++ ++ /* Add them all again, we want that the wait is pending while destroying it */ ++ for (i = 0; i < sizeof(semaphores)/sizeof(semaphores[0]); i++) ++ pTpSetWait(waits[i], semaphores[i], NULL); ++ ++ /* Destroy the objects and semaphores */ ++ for (i = 0; i < sizeof(semaphores)/sizeof(semaphores[0]); i++) ++ { ++ pTpReleaseWait(waits[i]); ++ NtClose(semaphores[i]); ++ } ++ ++ pTpReleasePool(pool); ++} ++ + START_TEST(threadpool) + { + if(!init_threadpool()) +@@ -774,6 +1059,8 @@ START_TEST(threadpool) + test_tp_group_cancel(); + test_tp_timer(); + test_tp_window_length(); ++ test_tp_wait(); ++ test_tp_multi_wait(); + + /* FIXME: Make sure worker threads have terminated before. */ + Sleep(100); +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0009-kernel32-Forward-threadpool-wait-functions-to-ntdll.patch wine-staging-1.7.36~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0009-kernel32-Forward-threadpool-wait-functions-to-ntdll.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0009-kernel32-Forward-threadpool-wait-functions-to-ntdll.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/0009-kernel32-Forward-threadpool-wait-functions-to-ntdll.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,140 @@ +From 67ad3c12465ea23c508534d7dc660a3d03a69caf Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Fri, 6 Feb 2015 20:24:27 +0100 +Subject: kernel32: Forward threadpool wait functions to ntdll. + +--- + dlls/kernel32/kernel32.spec | 8 ++++---- + dlls/kernel32/thread.c | 43 +++++++++++++++++++++++++++++++++++++++++++ + include/winternl.h | 4 ++++ + 3 files changed, 51 insertions(+), 4 deletions(-) + +diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec +index 4d170d5..b4af160 100644 +--- a/dlls/kernel32/kernel32.spec ++++ b/dlls/kernel32/kernel32.spec +@@ -233,7 +233,7 @@ + @ stdcall CloseThreadpoolCleanupGroupMembers(ptr long ptr) ntdll.TpReleaseCleanupGroupMembers + # @ stub CloseThreadpoolIo + @ stdcall CloseThreadpoolTimer(ptr) ntdll.TpReleaseTimer +-# @ stub CloseThreadpoolWait ++@ stdcall CloseThreadpoolWait(ptr) ntdll.TpReleaseWait + @ stdcall CloseThreadpoolWork(ptr) ntdll.TpReleaseWork + @ stdcall CmdBatNotification(long) + @ stdcall CommConfigDialogA(str long ptr) +@@ -335,7 +335,7 @@ + @ stdcall CreateThreadpoolCleanupGroup() + # @ stub CreateThreadpoolIo + @ stdcall CreateThreadpoolTimer(ptr ptr ptr) +-# @ stub CreateThreadpoolWait ++@ stdcall CreateThreadpoolWait(ptr ptr ptr) + @ stdcall CreateThreadpoolWork(ptr ptr ptr) + @ stdcall CreateTimerQueue () + @ stdcall CreateTimerQueueTimer(ptr long ptr ptr long long long) +@@ -1456,7 +1456,7 @@ + @ stdcall SetThreadpoolThreadMaximum(ptr long) ntdll.TpSetPoolMaxThreads + @ stdcall SetThreadpoolThreadMinimum(ptr long) ntdll.TpSetPoolMinThreads + @ stdcall SetThreadpoolTimer(ptr ptr long long) +-# @ stub SetThreadpoolWait ++@ stdcall SetThreadpoolWait(ptr long ptr) + @ stdcall SetTimeZoneInformation(ptr) + @ stub SetTimerQueueTimer + # @ stub -arch=x86_64 SetUmsThreadInformation +@@ -1571,7 +1571,7 @@ + @ stdcall WaitForSingleObjectEx(long long long) + # @ stub WaitForThreadpoolIoCallbacks + @ stdcall WaitForThreadpoolTimerCallbacks(ptr long) ntdll.TpWaitForTimer +-# @ stub WaitForThreadpoolWaitCallbacks ++@ stdcall WaitForThreadpoolWaitCallbacks(ptr long) ntdll.TpWaitForWait + @ stdcall WaitForThreadpoolWorkCallbacks(ptr long) ntdll.TpWaitForWork + @ stdcall WaitNamedPipeA (str long) + @ stdcall WaitNamedPipeW (wstr long) +diff --git a/dlls/kernel32/thread.c b/dlls/kernel32/thread.c +index 085b011..77037ef 100644 +--- a/dlls/kernel32/thread.c ++++ b/dlls/kernel32/thread.c +@@ -894,6 +894,27 @@ PTP_TIMER WINAPI CreateThreadpoolTimer( PTP_TIMER_CALLBACK callback, PVOID userd + } + + /*********************************************************************** ++ * CreateThreadpoolWait (KERNEL32.@) ++ */ ++PTP_WAIT WINAPI CreateThreadpoolWait( PTP_WAIT_CALLBACK callback, PVOID userdata, ++ TP_CALLBACK_ENVIRON *environment ) ++{ ++ TP_WAIT *wait; ++ NTSTATUS status; ++ ++ TRACE( "%p, %p, %p\n", callback, userdata, environment ); ++ ++ status = TpAllocWait( &wait, callback, userdata, environment ); ++ if (status) ++ { ++ SetLastError( RtlNtStatusToDosError(status) ); ++ return NULL; ++ } ++ ++ return wait; ++} ++ ++/*********************************************************************** + * CreateThreadpoolWork (KERNEL32.@) + */ + PTP_WORK WINAPI CreateThreadpoolWork( PTP_WORK_CALLBACK callback, PVOID userdata, +@@ -932,3 +953,25 @@ VOID WINAPI SetThreadpoolTimer( TP_TIMER *timer, FILETIME *due_time, + + TpSetTimer( timer, due_time ? &timeout : NULL, period, window_length ); + } ++ ++/*********************************************************************** ++ * SetThreadpoolWait (KERNEL32.@) ++ */ ++VOID WINAPI SetThreadpoolWait( TP_WAIT *wait, HANDLE handle, FILETIME *due_time ) ++{ ++ LARGE_INTEGER timeout; ++ ++ TRACE( "%p, %p, %p\n", wait, handle, due_time ); ++ ++ if (!handle) ++ { ++ due_time = NULL; ++ } ++ else if (due_time) ++ { ++ timeout.u.LowPart = due_time->dwLowDateTime; ++ timeout.u.HighPart = due_time->dwHighDateTime; ++ } ++ ++ TpSetWait( wait, handle, due_time ? &timeout : NULL ); ++} +diff --git a/include/winternl.h b/include/winternl.h +index a534bd1..c93931b 100644 +--- a/include/winternl.h ++++ b/include/winternl.h +@@ -2604,6 +2604,7 @@ NTSYSAPI NTSTATUS WINAPI RtlLargeIntegerToChar(const ULONGLONG *,ULONG,ULONG,PC + NTSYSAPI NTSTATUS WINAPI TpAllocCleanupGroup(TP_CLEANUP_GROUP **); + NTSYSAPI NTSTATUS WINAPI TpAllocPool(TP_POOL **,PVOID); + NTSYSAPI NTSTATUS WINAPI TpAllocTimer(TP_TIMER **,PTP_TIMER_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *); ++NTSYSAPI NTSTATUS WINAPI TpAllocWait(TP_WAIT **,PTP_WAIT_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *); + NTSYSAPI NTSTATUS WINAPI TpAllocWork(TP_WORK **,PTP_WORK_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *); + NTSYSAPI void WINAPI TpCallbackLeaveCriticalSectionOnCompletion(TP_CALLBACK_INSTANCE *,RTL_CRITICAL_SECTION *); + NTSYSAPI NTSTATUS WINAPI TpCallbackMayRunLong(TP_CALLBACK_INSTANCE *); +@@ -2618,12 +2619,15 @@ NTSYSAPI void WINAPI TpReleaseCleanupGroup(TP_CLEANUP_GROUP *); + NTSYSAPI void WINAPI TpReleaseCleanupGroupMembers(TP_CLEANUP_GROUP *,BOOL,PVOID); + NTSYSAPI void WINAPI TpReleasePool(TP_POOL *); + NTSYSAPI void WINAPI TpReleaseTimer(TP_TIMER *); ++NTSYSAPI void WINAPI TpReleaseWait(TP_WAIT *); + NTSYSAPI void WINAPI TpReleaseWork(TP_WORK *); + NTSYSAPI void WINAPI TpSetPoolMaxThreads(TP_POOL *,DWORD); + NTSYSAPI BOOL WINAPI TpSetPoolMinThreads(TP_POOL *,DWORD); + NTSYSAPI void WINAPI TpSetTimer(TP_TIMER *, LARGE_INTEGER *,LONG,LONG); ++NTSYSAPI void WINAPI TpSetWait(TP_WAIT *,HANDLE,LARGE_INTEGER *); + NTSYSAPI NTSTATUS WINAPI TpSimpleTryPost(PTP_SIMPLE_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *); + NTSYSAPI void WINAPI TpWaitForTimer(TP_TIMER *,BOOL); ++NTSYSAPI void WINAPI TpWaitForWait(TP_WAIT *,BOOL); + NTSYSAPI void WINAPI TpWaitForWork(TP_WORK *,BOOL); + + /* Wine internal functions */ +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/definition wine-staging-1.7.36~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/definition --- wine-staging-1.7.35~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/definition 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/ntdll-Vista_Threadpool/definition 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,4 @@ +Fixes: [35192] Add implementation for CreateThreadpool +Fixes: [32531] Implement threadpool work items +Fixes: [37306] Implement threadpool timers +Fixes: Implement threadpool wait objects diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/ntdll-WinSqm/0001-ntdll-Add-stubs-for-WinSqmStartSession-WinSqmEndSess.patch wine-staging-1.7.36~ubuntu12.04.1/patches/ntdll-WinSqm/0001-ntdll-Add-stubs-for-WinSqmStartSession-WinSqmEndSess.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/ntdll-WinSqm/0001-ntdll-Add-stubs-for-WinSqmStartSession-WinSqmEndSess.patch 2015-01-24 15:32:20.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/ntdll-WinSqm/0001-ntdll-Add-stubs-for-WinSqmStartSession-WinSqmEndSess.patch 2015-02-08 20:46:30.000000000 +0000 @@ -14,15 +14,11 @@ index 51de6e7..44dfc22 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec -@@ -968,6 +968,8 @@ - @ stdcall RtlxUnicodeStringToAnsiSize(ptr) RtlUnicodeStringToAnsiSize - @ stdcall RtlxUnicodeStringToOemSize(ptr) RtlUnicodeStringToOemSize +@@ -970,2 +970,4 @@ @ stdcall -ret64 VerSetConditionMask(int64 long long) +@ stdcall WinSqmEndSession(ptr) +@ stdcall WinSqmStartSession(ptr long long) @ stdcall ZwAcceptConnectPort(ptr long ptr long long ptr) NtAcceptConnectPort - @ stdcall ZwAccessCheck(ptr long long ptr ptr ptr ptr ptr) NtAccessCheck - @ stdcall ZwAccessCheckAndAuditAlarm(ptr long ptr ptr ptr long ptr long ptr ptr ptr) NtAccessCheckAndAuditAlarm diff --git a/dlls/ntdll/rtl.c b/dlls/ntdll/rtl.c index 8f6f386..2e87beb 100644 --- a/dlls/ntdll/rtl.c diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/ntdll-WRITECOPY/0003-ntdll-Setup-a-temporary-signal-handler-during-proces.patch wine-staging-1.7.36~ubuntu12.04.1/patches/ntdll-WRITECOPY/0003-ntdll-Setup-a-temporary-signal-handler-during-proces.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/ntdll-WRITECOPY/0003-ntdll-Setup-a-temporary-signal-handler-during-proces.patch 2015-01-24 15:32:20.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/ntdll-WRITECOPY/0003-ntdll-Setup-a-temporary-signal-handler-during-proces.patch 2015-02-08 20:46:30.000000000 +0000 @@ -1,4 +1,4 @@ -From 91cdcf5f955d3cbd7a22531054448dc01c171e66 Mon Sep 17 00:00:00 2001 +From 987e4f22d9f0647bf6d68b9be95e79ee578094dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Sat, 4 Oct 2014 02:53:22 +0200 Subject: ntdll: Setup a temporary signal handler during process startup to @@ -15,10 +15,10 @@ 7 files changed, 73 insertions(+) diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h -index e56e78b..a33f7a0 100644 +index afd1980..e344c31 100644 --- a/dlls/ntdll/ntdll_misc.h +++ b/dlls/ntdll/ntdll_misc.h -@@ -67,6 +67,7 @@ extern NTSTATUS signal_alloc_thread( TEB **teb ) DECLSPEC_HIDDEN; +@@ -68,6 +68,7 @@ extern NTSTATUS signal_alloc_thread( TEB **teb ) DECLSPEC_HIDDEN; extern void signal_free_thread( TEB *teb ) DECLSPEC_HIDDEN; extern void signal_init_thread( TEB *teb ) DECLSPEC_HIDDEN; extern void signal_init_process(void) DECLSPEC_HIDDEN; @@ -143,10 +143,10 @@ /********************************************************************** * __wine_enter_vm86 (NTDLL.@) diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c -index 05581c2..22da5d6 100644 +index c71069d..07a0f6e 100644 --- a/dlls/ntdll/signal_x86_64.c +++ b/dlls/ntdll/signal_x86_64.c -@@ -2576,6 +2576,12 @@ void signal_init_process(void) +@@ -2623,6 +2623,12 @@ void signal_init_process(void) exit(1); } @@ -160,11 +160,11 @@ /********************************************************************** * RtlAddFunctionTable (NTDLL.@) diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c -index c8461b0..a2937c2 100644 +index 3696c8e..a5d10e5 100644 --- a/dlls/ntdll/thread.c +++ b/dlls/ntdll/thread.c -@@ -221,6 +221,7 @@ HANDLE thread_init(void) - static struct debug_info debug_info; /* debug info for initial thread */ +@@ -224,6 +224,7 @@ HANDLE thread_init(void) + #endif virtual_init(); + signal_init_early(); @@ -172,5 +172,5 @@ /* reserve space for shared user data */ -- -2.2.1 +2.2.2 diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/ntoskrnl-KeWaitForMultipleObjects/0001-ntoskrnl.exe-add-KeWaitForMultipleObjects-stub.patch wine-staging-1.7.36~ubuntu12.04.1/patches/ntoskrnl-KeWaitForMultipleObjects/0001-ntoskrnl.exe-add-KeWaitForMultipleObjects-stub.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/ntoskrnl-KeWaitForMultipleObjects/0001-ntoskrnl.exe-add-KeWaitForMultipleObjects-stub.patch 2015-01-24 15:32:20.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/ntoskrnl-KeWaitForMultipleObjects/0001-ntoskrnl.exe-add-KeWaitForMultipleObjects-stub.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,79 +0,0 @@ -From 0fa1a31ae872769dc2ccf069184d36117b767435 Mon Sep 17 00:00:00 2001 -From: Austin English -Date: Wed, 24 Dec 2014 15:35:23 -0600 -Subject: ntoskrnl.exe: add KeWaitForMultipleObjects stub - ---- - dlls/ntoskrnl.exe/ntoskrnl.c | 13 +++++++++++++ - dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 2 +- - include/ddk/ntddk.h | 17 +++++++++++++++++ - 3 files changed, 31 insertions(+), 1 deletion(-) - -diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c -index af1626d..97e09a7 100644 ---- a/dlls/ntoskrnl.exe/ntoskrnl.c -+++ b/dlls/ntoskrnl.exe/ntoskrnl.c -@@ -1480,6 +1480,19 @@ NTSTATUS WINAPI KeWaitForSingleObject(PVOID Object, - } - - /*********************************************************************** -+ * KeWaitForMultipleObjects (NTOSKRNL.EXE.@) -+ */ -+NTSTATUS WINAPI KeWaitForMultipleObjects(ULONG Count, PVOID Object[], WAIT_TYPE WaitType, -+ KWAIT_REASON WaitReason, KPROCESSOR_MODE WaitMode, -+ BOOLEAN Alertable, PLARGE_INTEGER Timeout, -+ PKWAIT_BLOCK WaitBlockArray) -+{ -+ FIXME( "stub: %u, %p, %d, %d, %d, %d, %p, %p\n", Count, Object, WaitType, WaitReason, WaitMode, -+ Alertable, Timeout, WaitBlockArray ); -+ return STATUS_NOT_IMPLEMENTED; -+} -+ -+/*********************************************************************** - * IoRegisterFileSystem (NTOSKRNL.EXE.@) - */ - VOID WINAPI IoRegisterFileSystem(PDEVICE_OBJECT DeviceObject) -diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec -index b824250..720ce3e 100644 ---- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec -+++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec -@@ -627,7 +627,7 @@ - @ stub KeUpdateRunTime - @ stub KeUpdateSystemTime - @ stub KeUserModeCallback --@ stub KeWaitForMultipleObjects -+@ stdcall KeWaitForMultipleObjects(long ptr long long long long ptr ptr) - @ stdcall KeWaitForMutexObject(ptr long long long ptr) - @ stdcall KeWaitForSingleObject(ptr long long long ptr) - @ stub KiBugCheckData -diff --git a/include/ddk/ntddk.h b/include/ddk/ntddk.h -index 56f2f35..ac6484f 100644 ---- a/include/ddk/ntddk.h -+++ b/include/ddk/ntddk.h -@@ -140,6 +140,23 @@ typedef struct _FILE_VALID_DATA_LENGTH_INFORMATION - LARGE_INTEGER ValidDataLength; - } FILE_VALID_DATA_LENGTH_INFORMATION, *PFILE_VALID_DATA_LENGTH_INFORMATION; - -+typedef struct _KWAIT_BLOCK -+{ -+ LIST_ENTRY WaitListEntry; -+ PKTHREAD Thread; -+ PVOID Object; -+ struct _KWAIT_BLOCK *NextWaitBlock; -+ USHORT WaitKey; -+ USHORT WaitType; -+} KWAIT_BLOCK, *PKWAIT_BLOCK; -+ -+/* FIXME: belongs in ntdef.h */ -+typedef enum _WAIT_TYPE -+{ -+ WaitAll, -+ WaitAny -+} WAIT_TYPE; -+ - typedef VOID (WINAPI *PDRIVER_NOTIFICATION_CALLBACK_ROUTINE)(PVOID,PVOID); - typedef VOID (WINAPI *PDRIVER_REINITIALIZE)(PDRIVER_OBJECT,PVOID,ULONG); - typedef VOID (WINAPI *PLOAD_IMAGE_NOTIFY_ROUTINE)(PUNICODE_STRING,HANDLE,PIMAGE_INFO); --- -1.9.1 - diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/ntoskrnl-KeWaitForMultipleObjects/definition wine-staging-1.7.36~ubuntu12.04.1/patches/ntoskrnl-KeWaitForMultipleObjects/definition --- wine-staging-1.7.35~ubuntu12.04.1/patches/ntoskrnl-KeWaitForMultipleObjects/definition 2015-01-24 15:32:20.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/ntoskrnl-KeWaitForMultipleObjects/definition 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -Fixes: Add stub for KeWaitForMultipleObjects diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/ntoskrnl-Stubs/0001-include-Remove-several-duplicate-definitions-from-nt.patch wine-staging-1.7.36~ubuntu12.04.1/patches/ntoskrnl-Stubs/0001-include-Remove-several-duplicate-definitions-from-nt.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/ntoskrnl-Stubs/0001-include-Remove-several-duplicate-definitions-from-nt.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/ntoskrnl-Stubs/0001-include-Remove-several-duplicate-definitions-from-nt.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,35 @@ +From 0257e41671d17f7875cab2cdb0ae9fc3e7b071a8 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Tue, 27 Jan 2015 14:50:34 +0100 +Subject: include: Remove several duplicate definitions from ntdef.h. + +FIXME: Should they removed from winternl.h instead? Whats the proper way +to use both include files at the same time? +--- + include/ntdef.h | 10 ---------- + 1 file changed, 10 deletions(-) + +diff --git a/include/ntdef.h b/include/ntdef.h +index 83ecffd..8b35cef 100644 +--- a/include/ntdef.h ++++ b/include/ntdef.h +@@ -23,16 +23,6 @@ + extern "C" { + #endif + +-typedef enum _EVENT_TYPE { +- NotificationEvent, +- SynchronizationEvent +-} EVENT_TYPE; +- +-typedef enum _TIMER_TYPE { +- NotificationTimer, +- SynchronizationTimer +-} TIMER_TYPE; +- + typedef enum _WAIT_TYPE { + WaitAll, + WaitAny, +-- +2.2.1 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/ntoskrnl-Stubs/0002-ntoskrnl.exe-add-KeWaitForMultipleObjects-stub.patch wine-staging-1.7.36~ubuntu12.04.1/patches/ntoskrnl-Stubs/0002-ntoskrnl.exe-add-KeWaitForMultipleObjects-stub.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/ntoskrnl-Stubs/0002-ntoskrnl.exe-add-KeWaitForMultipleObjects-stub.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/ntoskrnl-Stubs/0002-ntoskrnl.exe-add-KeWaitForMultipleObjects-stub.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,58 @@ +From b3df25d2fc4e83fbd018c56c95f627a29a777429 Mon Sep 17 00:00:00 2001 +From: Austin English +Date: Wed, 24 Dec 2014 15:35:23 -0600 +Subject: ntoskrnl.exe: add KeWaitForMultipleObjects stub + +--- + dlls/ntoskrnl.exe/ntoskrnl.c | 14 ++++++++++++++ + dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 2 +- + 2 files changed, 15 insertions(+), 1 deletion(-) + +diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c +index af1626d..807a172 100644 +--- a/dlls/ntoskrnl.exe/ntoskrnl.c ++++ b/dlls/ntoskrnl.exe/ntoskrnl.c +@@ -29,6 +29,7 @@ + + #include "ntstatus.h" + #define WIN32_NO_STATUS ++#include "ntdef.h" + #include "windef.h" + #include "winternl.h" + #include "excpt.h" +@@ -1480,6 +1481,19 @@ NTSTATUS WINAPI KeWaitForSingleObject(PVOID Object, + } + + /*********************************************************************** ++ * KeWaitForMultipleObjects (NTOSKRNL.EXE.@) ++ */ ++NTSTATUS WINAPI KeWaitForMultipleObjects(ULONG Count, PVOID Object[], WAIT_TYPE WaitType, ++ KWAIT_REASON WaitReason, KPROCESSOR_MODE WaitMode, ++ BOOLEAN Alertable, PLARGE_INTEGER Timeout, ++ PKWAIT_BLOCK WaitBlockArray) ++{ ++ FIXME( "stub: %u, %p, %d, %d, %d, %d, %p, %p\n", Count, Object, WaitType, WaitReason, WaitMode, ++ Alertable, Timeout, WaitBlockArray ); ++ return STATUS_NOT_IMPLEMENTED; ++} ++ ++/*********************************************************************** + * IoRegisterFileSystem (NTOSKRNL.EXE.@) + */ + VOID WINAPI IoRegisterFileSystem(PDEVICE_OBJECT DeviceObject) +diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec +index b824250..720ce3e 100644 +--- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec ++++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec +@@ -627,7 +627,7 @@ + @ stub KeUpdateRunTime + @ stub KeUpdateSystemTime + @ stub KeUserModeCallback +-@ stub KeWaitForMultipleObjects ++@ stdcall KeWaitForMultipleObjects(long ptr long long long long ptr ptr) + @ stdcall KeWaitForMutexObject(ptr long long long ptr) + @ stdcall KeWaitForSingleObject(ptr long long long ptr) + @ stub KiBugCheckData +-- +2.2.1 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/ntoskrnl-Stubs/0003-ntoskrnl.exe-Add-stub-for-IoGetAttachedDeviceReferen.patch wine-staging-1.7.36~ubuntu12.04.1/patches/ntoskrnl-Stubs/0003-ntoskrnl.exe-Add-stub-for-IoGetAttachedDeviceReferen.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/ntoskrnl-Stubs/0003-ntoskrnl.exe-Add-stub-for-IoGetAttachedDeviceReferen.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/ntoskrnl-Stubs/0003-ntoskrnl.exe-Add-stub-for-IoGetAttachedDeviceReferen.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,59 @@ +From d7911933e870e44358ae93c81f13020af49fecf4 Mon Sep 17 00:00:00 2001 +From: Alexander Morozov +Date: Thu, 29 Jan 2015 23:23:13 +0100 +Subject: ntoskrnl.exe: Add stub for IoGetAttachedDeviceReference. + +--- + dlls/ntoskrnl.exe/ntoskrnl.c | 9 +++++++++ + dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 2 +- + include/ddk/wdm.h | 1 + + 3 files changed, 11 insertions(+), 1 deletion(-) + +diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c +index cdc5305..edd83de 100644 +--- a/dlls/ntoskrnl.exe/ntoskrnl.c ++++ b/dlls/ntoskrnl.exe/ntoskrnl.c +@@ -837,6 +837,15 @@ NTSTATUS WINAPI IofCallDriver( DEVICE_OBJECT *device, IRP *irp ) + return IoCallDriver( device, irp ); + } + ++/*********************************************************************** ++ * IoGetAttachedDeviceReference (NTOSKRNL.EXE.@) ++ */ ++PDEVICE_OBJECT WINAPI IoGetAttachedDeviceReference(PDEVICE_OBJECT obj) ++{ ++ FIXME("(%p): stub\n", obj); ++ ++ return obj; ++} + + /*********************************************************************** + * IoGetRelatedDeviceObject (NTOSKRNL.EXE.@) +diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec +index 11d1c62..52c7fbf 100644 +--- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec ++++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec +@@ -374,7 +374,7 @@ + @ stdcall IoFreeMdl(ptr) + @ stub IoFreeWorkItem + @ stdcall IoGetAttachedDevice(ptr) +-@ stub IoGetAttachedDeviceReference ++@ stdcall IoGetAttachedDeviceReference(ptr) + @ stub IoGetBaseFileSystemDeviceObject + @ stub IoGetBootDiskInformation + @ stdcall IoGetConfigurationInformation() +diff --git a/include/ddk/wdm.h b/include/ddk/wdm.h +index e4f693a..121ca45 100644 +--- a/include/ddk/wdm.h ++++ b/include/ddk/wdm.h +@@ -1208,6 +1208,7 @@ void WINAPI IoDeleteDevice(DEVICE_OBJECT*); + void WINAPI IoDeleteDriver(DRIVER_OBJECT*); + NTSTATUS WINAPI IoDeleteSymbolicLink(UNICODE_STRING*); + void WINAPI IoFreeIrp(IRP*); ++PDEVICE_OBJECT WINAPI IoGetAttachedDeviceReference(PDEVICE_OBJECT); + PEPROCESS WINAPI IoGetCurrentProcess(void); + NTSTATUS WINAPI IoGetDeviceInterfaces(const GUID*,PDEVICE_OBJECT,ULONG,PWSTR*); + NTSTATUS WINAPI IoGetDeviceObjectPointer(UNICODE_STRING*,ACCESS_MASK,PFILE_OBJECT*,PDEVICE_OBJECT*); +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/ntoskrnl-Stubs/0004-ntoskrnl.exe-Add-stubs-for-ExAcquireFastMutexUnsafe-.patch wine-staging-1.7.36~ubuntu12.04.1/patches/ntoskrnl-Stubs/0004-ntoskrnl.exe-Add-stubs-for-ExAcquireFastMutexUnsafe-.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/ntoskrnl-Stubs/0004-ntoskrnl.exe-Add-stubs-for-ExAcquireFastMutexUnsafe-.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/ntoskrnl-Stubs/0004-ntoskrnl.exe-Add-stubs-for-ExAcquireFastMutexUnsafe-.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,72 @@ +From f52a9242c2cbe9e0efe49d1d3e17d37ceedf9557 Mon Sep 17 00:00:00 2001 +From: Alexander Morozov +Date: Thu, 29 Jan 2015 23:39:18 +0100 +Subject: ntoskrnl.exe: Add stubs for ExAcquireFastMutexUnsafe and + ExReleaseFastMutexUnsafe. + +--- + dlls/ntoskrnl.exe/ntoskrnl.c | 28 ++++++++++++++++++++++++++++ + dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 4 ++-- + 2 files changed, 30 insertions(+), 2 deletions(-) + +diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c +index edd83de..d33fe6f 100644 +--- a/dlls/ntoskrnl.exe/ntoskrnl.c ++++ b/dlls/ntoskrnl.exe/ntoskrnl.c +@@ -293,6 +293,34 @@ NTSTATUS CDECL wine_ntoskrnl_main_loop( HANDLE stop_event ) + + + /*********************************************************************** ++ * ExAcquireFastMutexUnsafe (NTOSKRNL.EXE.@) ++ */ ++#ifdef DEFINE_FASTCALL1_ENTRYPOINT ++DEFINE_FASTCALL1_ENTRYPOINT(ExAcquireFastMutexUnsafe) ++void WINAPI __regs_ExAcquireFastMutexUnsafe(PFAST_MUTEX FastMutex) ++#else ++void WINAPI ExAcquireFastMutexUnsafe(PFAST_MUTEX FastMutex) ++#endif ++{ ++ FIXME("(%p): stub\n", FastMutex); ++} ++ ++ ++/*********************************************************************** ++ * ExReleaseFastMutexUnsafe (NTOSKRNL.EXE.@) ++ */ ++#ifdef DEFINE_FASTCALL1_ENTRYPOINT ++DEFINE_FASTCALL1_ENTRYPOINT(ExReleaseFastMutexUnsafe) ++void WINAPI __regs_ExReleaseFastMutexUnsafe(PFAST_MUTEX FastMutex) ++#else ++void WINAPI ExReleaseFastMutexUnsafe(PFAST_MUTEX FastMutex) ++#endif ++{ ++ FIXME("(%p): stub\n", FastMutex); ++} ++ ++ ++/*********************************************************************** + * IoAcquireCancelSpinLock (NTOSKRNL.EXE.@) + */ + void WINAPI IoAcquireCancelSpinLock(PKIRQL irql) +diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec +index 52c7fbf..2f08945 100644 +--- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec ++++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec +@@ -1,4 +1,4 @@ +-@ stub ExAcquireFastMutexUnsafe ++@ stdcall -norelay ExAcquireFastMutexUnsafe(ptr) + @ stub ExAcquireRundownProtection + @ stub ExAcquireRundownProtectionEx + @ stub ExInitializeRundownProtection +@@ -8,7 +8,7 @@ + @ stub ExInterlockedPopEntrySList + @ stub ExInterlockedPushEntrySList + @ stub ExReInitializeRundownProtection +-@ stub ExReleaseFastMutexUnsafe ++@ stdcall -norelay ExReleaseFastMutexUnsafe(ptr) + @ stub ExReleaseResourceLite + @ stub ExReleaseRundownProtection + @ stub ExReleaseRundownProtectionEx +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/ntoskrnl-Stubs/0005-ntoskrnl.exe-Add-stubs-for-ObReferenceObjectByPointe.patch wine-staging-1.7.36~ubuntu12.04.1/patches/ntoskrnl-Stubs/0005-ntoskrnl.exe-Add-stubs-for-ObReferenceObjectByPointe.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/ntoskrnl-Stubs/0005-ntoskrnl.exe-Add-stubs-for-ObReferenceObjectByPointe.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/ntoskrnl-Stubs/0005-ntoskrnl.exe-Add-stubs-for-ObReferenceObjectByPointe.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,94 @@ +From 787df5f7b3137d116141bbe4fdba664a06a9c5af Mon Sep 17 00:00:00 2001 +From: Alexander Morozov +Date: Fri, 30 Jan 2015 00:01:37 +0100 +Subject: ntoskrnl.exe: Add stubs for ObReferenceObjectByPointer and + ObDereferenceObject. + +--- + dlls/ntoskrnl.exe/ntoskrnl.c | 25 ++++++++++++++++++++++++- + dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 4 ++-- + include/ddk/wdm.h | 2 ++ + 3 files changed, 28 insertions(+), 3 deletions(-) + +diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c +index d33fe6f..0d6f730 100644 +--- a/dlls/ntoskrnl.exe/ntoskrnl.c ++++ b/dlls/ntoskrnl.exe/ntoskrnl.c +@@ -1720,6 +1720,29 @@ NTSTATUS WINAPI ObReferenceObjectByName( UNICODE_STRING *ObjectName, + return STATUS_NOT_IMPLEMENTED; + } + ++ ++/*********************************************************************** ++ * ObReferenceObjectByPointer (NTOSKRNL.EXE.@) ++ */ ++NTSTATUS WINAPI ObReferenceObjectByPointer(VOID *obj, ACCESS_MASK access, ++ POBJECT_TYPE type, ++ KPROCESSOR_MODE mode) ++{ ++ FIXME("(%p, %x, %p, %d): stub\n", obj, access, type, mode); ++ ++ return STATUS_NOT_IMPLEMENTED; ++} ++ ++ ++/*********************************************************************** ++ * ObDereferenceObject (NTOSKRNL.EXE.@) ++ */ ++void WINAPI ObDereferenceObject(VOID *obj) ++{ ++ FIXME("(%p): stub\n", obj); ++} ++ ++ + /*********************************************************************** + * ObfDereferenceObject (NTOSKRNL.EXE.@) + */ +@@ -1730,7 +1753,7 @@ void WINAPI __regs_ObfDereferenceObject( VOID *obj ) + void WINAPI ObfDereferenceObject( VOID *obj ) + #endif + { +- FIXME( "stub: %p\n", obj ); ++ ObDereferenceObject( obj ); + } + + +diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec +index 2f08945..25624a6 100644 +--- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec ++++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec +@@ -798,7 +798,7 @@ + @ stub ObCloseHandle + @ stub ObCreateObject + @ stub ObCreateObjectType +-@ stub ObDereferenceObject ++@ stdcall ObDereferenceObject(ptr) + @ stub ObDereferenceSecurityDescriptor + @ stub ObFindHandleForObject + @ stub ObGetObjectSecurity +@@ -811,7 +811,7 @@ + @ stub ObQueryObjectAuditingByHandle + @ stdcall ObReferenceObjectByHandle(long long ptr long ptr ptr) + @ stdcall ObReferenceObjectByName(ptr long ptr long ptr long ptr ptr) +-@ stub ObReferenceObjectByPointer ++@ stdcall ObReferenceObjectByPointer(ptr long ptr long) + @ stub ObReferenceSecurityDescriptor + @ stub ObReleaseObjectSecurity + @ stub ObSetHandleAttributes +diff --git a/include/ddk/wdm.h b/include/ddk/wdm.h +index 121ca45..f2eb6a5 100644 +--- a/include/ddk/wdm.h ++++ b/include/ddk/wdm.h +@@ -1235,7 +1235,9 @@ PMDL WINAPI MmAllocatePagesForMdl(PHYSICAL_ADDRESS,PHYSICAL_ADDRESS,PHYSICA + void WINAPI MmFreeNonCachedMemory(PVOID,SIZE_T); + MM_SYSTEMSIZE WINAPI MmQuerySystemSize(void); + ++void WINAPI ObDereferenceObject(VOID*); + NTSTATUS WINAPI ObReferenceObjectByHandle(HANDLE,ACCESS_MASK,POBJECT_TYPE,KPROCESSOR_MODE,PVOID*,POBJECT_HANDLE_INFORMATION); ++NTSTATUS WINAPI ObReferenceObjectByPointer(VOID*,ACCESS_MASK,POBJECT_TYPE,KPROCESSOR_MODE); + + POWER_STATE WINAPI PoSetPowerState(PDEVICE_OBJECT,POWER_STATE_TYPE,POWER_STATE); + NTSTATUS WINAPI PsCreateSystemThread(PHANDLE,ULONG,POBJECT_ATTRIBUTES,HANDLE,PCLIENT_ID,PKSTART_ROUTINE,PVOID); +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/ntoskrnl-Stubs/0006-ntoskrnl.exe-Add-stub-for-KeDelayExecutionThread.patch wine-staging-1.7.36~ubuntu12.04.1/patches/ntoskrnl-Stubs/0006-ntoskrnl.exe-Add-stub-for-KeDelayExecutionThread.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/ntoskrnl-Stubs/0006-ntoskrnl.exe-Add-stub-for-KeDelayExecutionThread.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/ntoskrnl-Stubs/0006-ntoskrnl.exe-Add-stub-for-KeDelayExecutionThread.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,63 @@ +From ce5aa07ac893aa38e72bb82c3e6dd2496ef4e1f5 Mon Sep 17 00:00:00 2001 +From: Alexander Morozov +Date: Sat, 31 Jan 2015 12:17:54 +0100 +Subject: ntoskrnl.exe: Add stub for KeDelayExecutionThread. + +--- + dlls/ntoskrnl.exe/ntoskrnl.c | 13 +++++++++++++ + dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 2 +- + include/ddk/wdm.h | 1 + + 3 files changed, 15 insertions(+), 1 deletion(-) + +diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c +index 0d6f730..c90b351 100644 +--- a/dlls/ntoskrnl.exe/ntoskrnl.c ++++ b/dlls/ntoskrnl.exe/ntoskrnl.c +@@ -1308,6 +1308,19 @@ PRKTHREAD WINAPI KeGetCurrentThread(void) + return NULL; + } + ++ ++/*********************************************************************** ++ * KeDelayExecutionThread (NTOSKRNL.EXE.@) ++ */ ++NTSTATUS WINAPI KeDelayExecutionThread(KPROCESSOR_MODE WaitMode, BOOLEAN Alertable, ++ PLARGE_INTEGER Interval) ++{ ++ FIXME("(%d, %d, %p): stub\n", WaitMode, Alertable, Interval); ++ ++ return STATUS_SUCCESS; ++} ++ ++ + /*********************************************************************** + * KeInitializeEvent (NTOSKRNL.EXE.@) + */ +diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec +index 25624a6..bae3678 100644 +--- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec ++++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec +@@ -518,7 +518,7 @@ + @ stub KeClearEvent + @ stub KeConnectInterrupt + @ stub KeDcacheFlushCount +-@ stub KeDelayExecutionThread ++@ stdcall KeDelayExecutionThread(long long ptr) + @ stub KeDeregisterBugCheckCallback + @ stub KeDeregisterBugCheckReasonCallback + @ stub KeDetachProcess +diff --git a/include/ddk/wdm.h b/include/ddk/wdm.h +index f2eb6a5..0d13337 100644 +--- a/include/ddk/wdm.h ++++ b/include/ddk/wdm.h +@@ -1219,6 +1219,7 @@ void WINAPI IoInitializeIrp(IRP*,USHORT,CCHAR); + VOID WINAPI IoInitializeRemoveLockEx(PIO_REMOVE_LOCK,ULONG,ULONG,ULONG,ULONG); + NTSTATUS WINAPI IoWMIRegistrationControl(PDEVICE_OBJECT,ULONG); + ++NTSTATUS WINAPI KeDelayExecutionThread(KPROCESSOR_MODE,BOOLEAN,PLARGE_INTEGER); + PKTHREAD WINAPI KeGetCurrentThread(void); + void WINAPI KeQuerySystemTime(LARGE_INTEGER*); + void WINAPI KeQueryTickCount(LARGE_INTEGER*); +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/ntoskrnl-Stubs/0007-ntoskrnl.exe-Improve-KeReleaseMutex-stub.patch wine-staging-1.7.36~ubuntu12.04.1/patches/ntoskrnl-Stubs/0007-ntoskrnl.exe-Improve-KeReleaseMutex-stub.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/ntoskrnl-Stubs/0007-ntoskrnl.exe-Improve-KeReleaseMutex-stub.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/ntoskrnl-Stubs/0007-ntoskrnl.exe-Improve-KeReleaseMutex-stub.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,25 @@ +From 0d4bc7ee9451dbd89bec8b76ef0608b78582cf25 Mon Sep 17 00:00:00 2001 +From: Alexander Morozov +Date: Fri, 30 Jan 2015 00:30:45 +0100 +Subject: ntoskrnl.exe: Improve KeReleaseMutex stub. + +--- + dlls/ntoskrnl.exe/ntoskrnl.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c +index c90b351..7bc716c 100644 +--- a/dlls/ntoskrnl.exe/ntoskrnl.c ++++ b/dlls/ntoskrnl.exe/ntoskrnl.c +@@ -1356,7 +1356,7 @@ NTSTATUS WINAPI KeWaitForMutexObject(PRKMUTEX Mutex, KWAIT_REASON WaitReason, KP + LONG WINAPI KeReleaseMutex(PRKMUTEX Mutex, BOOLEAN Wait) + { + FIXME( "stub: %p, %d\n", Mutex, Wait ); +- return STATUS_NOT_IMPLEMENTED; ++ return STATUS_SUCCESS; + } + + +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/ntoskrnl-Stubs/0008-ntoskrnl.exe-Improve-KeInitializeSemaphore-stub.patch wine-staging-1.7.36~ubuntu12.04.1/patches/ntoskrnl-Stubs/0008-ntoskrnl.exe-Improve-KeInitializeSemaphore-stub.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/ntoskrnl-Stubs/0008-ntoskrnl.exe-Improve-KeInitializeSemaphore-stub.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/ntoskrnl-Stubs/0008-ntoskrnl.exe-Improve-KeInitializeSemaphore-stub.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,26 @@ +From 1826c593593f1b66ec4f4704299fdb1485a9b432 Mon Sep 17 00:00:00 2001 +From: Alexander Morozov +Date: Fri, 30 Jan 2015 00:32:38 +0100 +Subject: ntoskrnl.exe: Improve KeInitializeSemaphore stub. + +--- + dlls/ntoskrnl.exe/ntoskrnl.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c +index 7bc716c..36331a1 100644 +--- a/dlls/ntoskrnl.exe/ntoskrnl.c ++++ b/dlls/ntoskrnl.exe/ntoskrnl.c +@@ -1366,6 +1366,9 @@ LONG WINAPI KeReleaseMutex(PRKMUTEX Mutex, BOOLEAN Wait) + void WINAPI KeInitializeSemaphore( PRKSEMAPHORE Semaphore, LONG Count, LONG Limit ) + { + FIXME( "(%p %d %d) stub\n", Semaphore , Count, Limit ); ++ ++ RtlZeroMemory(Semaphore, sizeof(KSEMAPHORE)); ++ Semaphore->Header.Type = 5; + } + + +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/ntoskrnl-Stubs/0009-ntoskrnl.exe-Improve-KeInitializeTimerEx-stub.patch wine-staging-1.7.36~ubuntu12.04.1/patches/ntoskrnl-Stubs/0009-ntoskrnl.exe-Improve-KeInitializeTimerEx-stub.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/ntoskrnl-Stubs/0009-ntoskrnl.exe-Improve-KeInitializeTimerEx-stub.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/ntoskrnl-Stubs/0009-ntoskrnl.exe-Improve-KeInitializeTimerEx-stub.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,26 @@ +From 9d314bb031e123beffa43f5b5f47ce6deda25cf4 Mon Sep 17 00:00:00 2001 +From: Alexander Morozov +Date: Fri, 30 Jan 2015 00:33:55 +0100 +Subject: ntoskrnl.exe: Improve KeInitializeTimerEx stub. + +--- + dlls/ntoskrnl.exe/ntoskrnl.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c +index 36331a1..c3a7e2a 100644 +--- a/dlls/ntoskrnl.exe/ntoskrnl.c ++++ b/dlls/ntoskrnl.exe/ntoskrnl.c +@@ -1387,6 +1387,9 @@ void WINAPI KeInitializeSpinLock( PKSPIN_LOCK SpinLock ) + void WINAPI KeInitializeTimerEx( PKTIMER Timer, TIMER_TYPE Type ) + { + FIXME( "stub: %p %d\n", Timer, Type ); ++ ++ RtlZeroMemory(Timer, sizeof(KTIMER)); ++ Timer->Header.Type = Type ? 9 : 8; + } + + +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/ntoskrnl-Stubs/0010-ntoskrnl.exe-Fix-IoReleaseCancelSpinLock-argument.patch wine-staging-1.7.36~ubuntu12.04.1/patches/ntoskrnl-Stubs/0010-ntoskrnl.exe-Fix-IoReleaseCancelSpinLock-argument.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/ntoskrnl-Stubs/0010-ntoskrnl.exe-Fix-IoReleaseCancelSpinLock-argument.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/ntoskrnl-Stubs/0010-ntoskrnl.exe-Fix-IoReleaseCancelSpinLock-argument.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,42 @@ +From 4dd6a88936cd579a5a293ef63d65e73fffb0dce6 Mon Sep 17 00:00:00 2001 +From: Christian Costa +Date: Fri, 30 Jan 2015 00:10:53 +0100 +Subject: ntoskrnl.exe: Fix IoReleaseCancelSpinLock argument. + +--- + dlls/ntoskrnl.exe/ntoskrnl.c | 4 ++-- + dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c +index c3a7e2a..85cbf01 100644 +--- a/dlls/ntoskrnl.exe/ntoskrnl.c ++++ b/dlls/ntoskrnl.exe/ntoskrnl.c +@@ -332,9 +332,9 @@ void WINAPI IoAcquireCancelSpinLock(PKIRQL irql) + /*********************************************************************** + * IoReleaseCancelSpinLock (NTOSKRNL.EXE.@) + */ +-void WINAPI IoReleaseCancelSpinLock(PKIRQL irql) ++void WINAPI IoReleaseCancelSpinLock(KIRQL irql) + { +- FIXME("(%p): stub\n", irql); ++ FIXME("(%u): stub\n", irql); + } + + +diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec +index bae3678..8ece531 100644 +--- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec ++++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec +@@ -432,7 +432,7 @@ + @ stub IoRegisterLastChanceShutdownNotification + @ stdcall IoRegisterPlugPlayNotification(long long ptr ptr ptr ptr ptr) + @ stdcall IoRegisterShutdownNotification(ptr) +-@ stdcall IoReleaseCancelSpinLock(ptr) ++@ stdcall IoReleaseCancelSpinLock(long) + @ stub IoReleaseRemoveLockAndWaitEx + @ stub IoReleaseRemoveLockEx + @ stub IoReleaseVpbSpinLock +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/ntoskrnl-Stubs/definition wine-staging-1.7.36~ubuntu12.04.1/patches/ntoskrnl-Stubs/definition --- wine-staging-1.7.35~ubuntu12.04.1/patches/ntoskrnl-Stubs/definition 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/ntoskrnl-Stubs/definition 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,6 @@ +Fixes: Add stub for ntoskrnl.KeWaitForMultipleObjects +Fixes: Implement stub for ntoskrnl.IoGetAttachedDeviceReference +Fixes: Implement stubs for ntoskrnl.Ex{Acquire,Release}FastMutexUnsafe +Fixes: Implement stubs for ntoskrnl.ObReferenceObjectByPointer and ntoskrnl.ObDereferenceObject +Fixes: Implement stub for ntoskrnl.KeDelayExecutionThread. +Fixes: Fix wrong defition of ntoskrnl.IoReleaseCancelSpinLock function. diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/nvapi-Stub_DLL/definition wine-staging-1.7.36~ubuntu12.04.1/patches/nvapi-Stub_DLL/definition --- wine-staging-1.7.35~ubuntu12.04.1/patches/nvapi-Stub_DLL/definition 2015-01-24 15:32:20.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/nvapi-Stub_DLL/definition 2015-02-08 20:46:30.000000000 +0000 @@ -1,2 +1,3 @@ Fixes: Add nvapi stubs required for GPU PhysX support +Fixes: [35062] Fix graphical corruption in FarCry 3 with NVIDIA drivers Depends: nvcuda-CUDA_Support diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/nvcuda-CUDA_Support/0008-nvcuda-Add-support-for-CUDA-7.0.patch wine-staging-1.7.36~ubuntu12.04.1/patches/nvcuda-CUDA_Support/0008-nvcuda-Add-support-for-CUDA-7.0.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/nvcuda-CUDA_Support/0008-nvcuda-Add-support-for-CUDA-7.0.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/nvcuda-CUDA_Support/0008-nvcuda-Add-support-for-CUDA-7.0.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,806 @@ +From 27a3b2fa2ac54c9baa7acbc9dd3f51c2b796159c Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Sat, 7 Feb 2015 22:52:26 +0100 +Subject: nvcuda: Add support for CUDA 7.0. + +--- + dlls/nvcuda/nvcuda.c | 623 +++++++++++++++++++++++++++++++++++++++++++++--- + dlls/nvcuda/nvcuda.spec | 61 +++++ + 2 files changed, 645 insertions(+), 39 deletions(-) + +diff --git a/dlls/nvcuda/nvcuda.c b/dlls/nvcuda/nvcuda.c +index 8b356fd..3262afd 100644 +--- a/dlls/nvcuda/nvcuda.c ++++ b/dlls/nvcuda/nvcuda.c +@@ -338,6 +338,74 @@ static CUresult (*pcuOccupancyMaxPotentialBlockSize)(int *minGridSize, int *bloc + void *blockSizeToDynamicSMemSize, size_t dynamicSMemSize, int blockSizeLimit); + */ + ++/* CUDA 7.0 */ ++static CUresult (*pcuCtxGetFlags)(unsigned int *flags); ++static CUresult (*pcuDevicePrimaryCtxGetState)(CUdevice dev, unsigned int *flags, int *active); ++static CUresult (*pcuDevicePrimaryCtxRelease)(CUdevice dev); ++static CUresult (*pcuDevicePrimaryCtxReset)(CUdevice dev); ++static CUresult (*pcuDevicePrimaryCtxRetain)(CUcontext *pctx, CUdevice dev); ++static CUresult (*pcuDevicePrimaryCtxSetFlags)(CUdevice dev, unsigned int flags); ++static CUresult (*pcuEventRecord_ptsz)(CUevent hEvent, CUstream hStream); ++static CUresult (*pcuGLMapBufferObjectAsync_v2_ptsz)(CUdeviceptr *dptr, size_t *size, GLuint buffer, CUstream hStream); ++static CUresult (*pcuGLMapBufferObject_v2_ptds)(CUdeviceptr *dptr, size_t *size, GLuint buffer); ++static CUresult (*pcuGraphicsMapResources_ptsz)(unsigned int count, CUgraphicsResource *resources, CUstream hStream); ++static CUresult (*pcuGraphicsUnmapResources_ptsz)(unsigned int count, CUgraphicsResource *resources, CUstream hStream); ++static CUresult (*pcuLaunchKernel_ptsz)(CUfunction f, unsigned int gridDimX, unsigned int gridDimY, unsigned int gridDimZ, ++ unsigned int blockDimX, unsigned int blockDimY, unsigned int blockDimZ, ++ unsigned int sharedMemBytes, CUstream hStream, void **kernelParams, void **extra); ++static CUresult (*pcuMemcpy2DAsync_v2_ptsz)(const CUDA_MEMCPY2D *pCopy, CUstream hStream); ++static CUresult (*pcuMemcpy2DUnaligned_v2_ptds)(const CUDA_MEMCPY2D *pCopy); ++static CUresult (*pcuMemcpy2D_v2_ptds)(const CUDA_MEMCPY2D *pCopy); ++static CUresult (*pcuMemcpy3DAsync_v2_ptsz)(const CUDA_MEMCPY3D *pCopy, CUstream hStream); ++static CUresult (*pcuMemcpy3DPeerAsync_ptsz)(const CUDA_MEMCPY3D_PEER *pCopy, CUstream hStream); ++static CUresult (*pcuMemcpy3DPeer_ptds)(const CUDA_MEMCPY3D_PEER *pCopy); ++static CUresult (*pcuMemcpy3D_v2_ptds)(const CUDA_MEMCPY3D *pCopy); ++static CUresult (*pcuMemcpyAsync_ptsz)(CUdeviceptr dst, CUdeviceptr src, size_t ByteCount, CUstream hStream); ++static CUresult (*pcuMemcpyAtoA_v2_ptds)(CUarray dstArray, size_t dstOffset, CUarray srcArray, size_t srcOffset, size_t ByteCount); ++static CUresult (*pcuMemcpyAtoD_v2_ptds)(CUdeviceptr dstDevice, CUarray srcArray, size_t srcOffset, size_t ByteCount); ++static CUresult (*pcuMemcpyAtoHAsync_v2_ptsz)(void *dstHost, CUarray srcArray, size_t srcOffset, size_t ByteCount, CUstream hStream); ++static CUresult (*pcuMemcpyAtoH_v2_ptds)(void *dstHost, CUarray srcArray, size_t srcOffset, size_t ByteCount); ++static CUresult (*pcuMemcpyDtoA_v2_ptds)(CUarray dstArray, size_t dstOffset, CUdeviceptr srcDevice, size_t ByteCount); ++static CUresult (*pcuMemcpyDtoDAsync_v2_ptsz)(CUdeviceptr dstDevice, CUdeviceptr srcDevice, unsigned int ByteCount, CUstream hStream); ++static CUresult (*pcuMemcpyDtoD_v2_ptds)(CUdeviceptr dstDevice, CUdeviceptr srcDevice, unsigned int ByteCount); ++static CUresult (*pcuMemcpyDtoHAsync_v2_ptsz)(void *dstHost, CUdeviceptr srcDevice, unsigned int ByteCount, CUstream hStream); ++static CUresult (*pcuMemcpyDtoH_v2_ptds)(void *dstHost, CUdeviceptr srcDevice, unsigned int ByteCount); ++static CUresult (*pcuMemcpyHtoAAsync_v2_ptsz)(CUarray dstArray, size_t dstOffset, const void *srcHost, size_t ByteCount, CUstream hStream); ++static CUresult (*pcuMemcpyHtoA_v2_ptds)(CUarray dstArray, size_t dstOffset, const void *srcHost, size_t ByteCount); ++static CUresult (*pcuMemcpyHtoDAsync_v2_ptsz)(CUdeviceptr dstDevice, const void *srcHost, size_t ByteCount, CUstream hStream); ++static CUresult (*pcuMemcpyHtoD_v2_ptds)(CUdeviceptr dstDevice, const void *srcHost, size_t ByteCount); ++static CUresult (*pcuMemcpyPeerAsync_ptsz)(CUdeviceptr dstDevice, CUcontext dstContext, CUdeviceptr srcDevice, ++ CUcontext srcContext, size_t ByteCount, CUstream hStream); ++static CUresult (*pcuMemcpyPeer_ptds)(CUdeviceptr dstDevice, CUcontext dstContext, CUdeviceptr srcDevice, CUcontext srcContext, size_t ByteCount); ++static CUresult (*pcuMemcpy_ptds)(CUdeviceptr dst, CUdeviceptr src, size_t ByteCount); ++static CUresult (*pcuMemsetD16Async_ptsz)(CUdeviceptr dstDevice, unsigned short us, size_t N, CUstream hStream); ++static CUresult (*pcuMemsetD16_v2_ptds)(CUdeviceptr dstDevice, unsigned short us, size_t N); ++static CUresult (*pcuMemsetD2D16Async_ptsz)(CUdeviceptr dstDevice, size_t dstPitch, unsigned short us, size_t Width, size_t Height, CUstream hStream); ++static CUresult (*pcuMemsetD2D16_v2_ptds)(CUdeviceptr dstDevice, size_t dstPitch, unsigned short us, size_t Width, size_t Height); ++static CUresult (*pcuMemsetD2D32Async_ptsz)(CUdeviceptr dstDevice, size_t dstPitch, unsigned int ui, size_t Width, size_t Height, CUstream hStream); ++static CUresult (*pcuMemsetD2D32_v2_ptds)(CUdeviceptr dstDevice, size_t dstPitch, unsigned int ui, size_t Width, size_t Height); ++static CUresult (*pcuMemsetD2D8Async_ptsz)(CUdeviceptr dstDevice, size_t dstPitch, unsigned char uc, size_t Width, size_t Height, CUstream hStream); ++static CUresult (*pcuMemsetD2D8_v2_ptds)(CUdeviceptr dstDevice, unsigned int dstPitch, unsigned char uc, unsigned int Width, unsigned int Height); ++static CUresult (*pcuMemsetD32Async_ptsz)(CUdeviceptr dstDevice, unsigned int ui, size_t N, CUstream hStream); ++static CUresult (*pcuMemsetD32_v2_ptds)(CUdeviceptr dstDevice, unsigned int ui, size_t N); ++static CUresult (*pcuMemsetD8Async_ptsz)(CUdeviceptr dstDevice, unsigned char uc, size_t N, CUstream hStream); ++static CUresult (*pcuMemsetD8_v2_ptds)(CUdeviceptr dstDevice, unsigned char uc, unsigned int N); ++static CUresult (*pcuOccupancyMaxActiveBlocksPerMultiprocessorWithFlags)(int *numBlocks, CUfunction func, int blockSize, ++ size_t dynamicSMemSize, unsigned int flags); ++/* ++static CUresult (*pcuOccupancyMaxPotentialBlockSizeWithFlags)(int *minGridSize, int *blockSize, CUfunction func, void *blockSizeToDynamicSMemSize, ++ size_t dynamicSMemSize, int blockSizeLimit, unsigned int flags); ++*/ ++static CUresult (*pcuPointerGetAttributes)(unsigned int numAttributes, CUpointer_attribute *attributes, void **data, CUdeviceptr ptr); ++static CUresult (*pcuStreamAddCallback_ptsz)(CUstream hStream, void *callback, void *userData, unsigned int flags); ++static CUresult (*pcuStreamAttachMemAsync_ptsz)(CUstream hStream, CUdeviceptr dptr, size_t length, unsigned int flags); ++static CUresult (*pcuStreamGetFlags_ptsz)(CUstream hStream, unsigned int *flags); ++static CUresult (*pcuStreamGetPriority_ptsz)(CUstream hStream, int *priority); ++static CUresult (*pcuStreamQuery_ptsz)(CUstream hStream); ++static CUresult (*pcuStreamSynchronize_ptsz)(CUstream hStream); ++static CUresult (*pcuStreamWaitEvent_ptsz)(CUstream hStream, CUevent hEvent, unsigned int Flags); ++ ++ + static void *cuda_handle = NULL; + + static BOOL load_functions(void) +@@ -609,6 +677,65 @@ static BOOL load_functions(void) + TRY_LOAD_FUNCPTR(cuOccupancyMaxActiveBlocksPerMultiprocessor); + /* TRY_LOAD_FUNCPTR(cuOccupancyMaxPotentialBlockSize); */ + ++ /* CUDA 7.0 */ ++ TRY_LOAD_FUNCPTR(cuCtxGetFlags); ++ TRY_LOAD_FUNCPTR(cuDevicePrimaryCtxGetState); ++ TRY_LOAD_FUNCPTR(cuDevicePrimaryCtxRelease); ++ TRY_LOAD_FUNCPTR(cuDevicePrimaryCtxReset); ++ TRY_LOAD_FUNCPTR(cuDevicePrimaryCtxRetain); ++ TRY_LOAD_FUNCPTR(cuDevicePrimaryCtxSetFlags); ++ TRY_LOAD_FUNCPTR(cuEventRecord_ptsz); ++ TRY_LOAD_FUNCPTR(cuGLMapBufferObjectAsync_v2_ptsz); ++ TRY_LOAD_FUNCPTR(cuGLMapBufferObject_v2_ptds); ++ TRY_LOAD_FUNCPTR(cuGraphicsMapResources_ptsz); ++ TRY_LOAD_FUNCPTR(cuGraphicsUnmapResources_ptsz); ++ TRY_LOAD_FUNCPTR(cuLaunchKernel_ptsz); ++ TRY_LOAD_FUNCPTR(cuMemcpy2DAsync_v2_ptsz); ++ TRY_LOAD_FUNCPTR(cuMemcpy2DUnaligned_v2_ptds); ++ TRY_LOAD_FUNCPTR(cuMemcpy2D_v2_ptds); ++ TRY_LOAD_FUNCPTR(cuMemcpy3DAsync_v2_ptsz); ++ TRY_LOAD_FUNCPTR(cuMemcpy3DPeerAsync_ptsz); ++ TRY_LOAD_FUNCPTR(cuMemcpy3DPeer_ptds); ++ TRY_LOAD_FUNCPTR(cuMemcpy3D_v2_ptds); ++ TRY_LOAD_FUNCPTR(cuMemcpyAsync_ptsz); ++ TRY_LOAD_FUNCPTR(cuMemcpyAtoA_v2_ptds); ++ TRY_LOAD_FUNCPTR(cuMemcpyAtoD_v2_ptds); ++ TRY_LOAD_FUNCPTR(cuMemcpyAtoHAsync_v2_ptsz); ++ TRY_LOAD_FUNCPTR(cuMemcpyAtoH_v2_ptds); ++ TRY_LOAD_FUNCPTR(cuMemcpyDtoA_v2_ptds); ++ TRY_LOAD_FUNCPTR(cuMemcpyDtoDAsync_v2_ptsz); ++ TRY_LOAD_FUNCPTR(cuMemcpyDtoD_v2_ptds); ++ TRY_LOAD_FUNCPTR(cuMemcpyDtoHAsync_v2_ptsz); ++ TRY_LOAD_FUNCPTR(cuMemcpyDtoH_v2_ptds); ++ TRY_LOAD_FUNCPTR(cuMemcpyHtoAAsync_v2_ptsz); ++ TRY_LOAD_FUNCPTR(cuMemcpyHtoA_v2_ptds); ++ TRY_LOAD_FUNCPTR(cuMemcpyHtoDAsync_v2_ptsz); ++ TRY_LOAD_FUNCPTR(cuMemcpyHtoD_v2_ptds); ++ TRY_LOAD_FUNCPTR(cuMemcpyPeerAsync_ptsz); ++ TRY_LOAD_FUNCPTR(cuMemcpyPeer_ptds); ++ TRY_LOAD_FUNCPTR(cuMemcpy_ptds); ++ TRY_LOAD_FUNCPTR(cuMemsetD16Async_ptsz); ++ TRY_LOAD_FUNCPTR(cuMemsetD16_v2_ptds); ++ TRY_LOAD_FUNCPTR(cuMemsetD2D16Async_ptsz); ++ TRY_LOAD_FUNCPTR(cuMemsetD2D16_v2_ptds); ++ TRY_LOAD_FUNCPTR(cuMemsetD2D32Async_ptsz); ++ TRY_LOAD_FUNCPTR(cuMemsetD2D32_v2_ptds); ++ TRY_LOAD_FUNCPTR(cuMemsetD2D8Async_ptsz); ++ TRY_LOAD_FUNCPTR(cuMemsetD2D8_v2_ptds); ++ TRY_LOAD_FUNCPTR(cuMemsetD32Async_ptsz); ++ TRY_LOAD_FUNCPTR(cuMemsetD32_v2_ptds); ++ TRY_LOAD_FUNCPTR(cuMemsetD8Async_ptsz); ++ TRY_LOAD_FUNCPTR(cuMemsetD8_v2_ptds); ++ TRY_LOAD_FUNCPTR(cuOccupancyMaxActiveBlocksPerMultiprocessorWithFlags); ++ /* TRY_LOAD_FUNCPTR(cuOccupancyMaxPotentialBlockSizeWithFlags); */ ++ TRY_LOAD_FUNCPTR(cuPointerGetAttributes); ++ TRY_LOAD_FUNCPTR(cuStreamAddCallback_ptsz); ++ TRY_LOAD_FUNCPTR(cuStreamAttachMemAsync_ptsz); ++ TRY_LOAD_FUNCPTR(cuStreamGetFlags_ptsz); ++ TRY_LOAD_FUNCPTR(cuStreamGetPriority_ptsz); ++ TRY_LOAD_FUNCPTR(cuStreamQuery_ptsz); ++ TRY_LOAD_FUNCPTR(cuStreamSynchronize_ptsz); ++ TRY_LOAD_FUNCPTR(cuStreamWaitEvent_ptsz); + + #undef LOAD_FUNCPTR + #undef TRY_LOAD_FUNCPTR +@@ -1888,13 +2015,12 @@ static void stream_callback_wrapper(CUstream hStream, CUresult status, void *use + free(wrapper); + } + +-CUresult WINAPI wine_cuStreamAddCallback(CUstream hStream, void *callback, void *userData, unsigned int flags) ++static CUresult stream_add_callback(CUresult (*func)(CUstream, void *, void *, unsigned int), ++ CUstream hStream, void *callback, void *userData, unsigned int flags) + { + struct stream_callback_entry *wrapper; + CUresult ret; + +- TRACE("(%p, %p, %p, %u)\n", hStream, callback, userData, flags); +- + wrapper = malloc(sizeof(*wrapper)); + if (!wrapper) + return CUDA_ERROR_OUT_OF_MEMORY; +@@ -1917,7 +2043,7 @@ CUresult WINAPI wine_cuStreamAddCallback(CUstream hStream, void *callback, void + } + pthread_mutex_unlock(&stream_callback_mutex); + +- ret = pcuStreamAddCallback(hStream, stream_callback_wrapper, wrapper, flags); ++ ret = func(hStream, stream_callback_wrapper, wrapper, flags); + if (ret) + { + pthread_mutex_lock(&stream_callback_mutex); +@@ -1936,6 +2062,12 @@ CUresult WINAPI wine_cuStreamAddCallback(CUstream hStream, void *callback, void + return ret; + } + ++CUresult WINAPI wine_cuStreamAddCallback(CUstream hStream, void *callback, void *userData, unsigned int flags) ++{ ++ TRACE("(%p, %p, %p, %u)\n", hStream, callback, userData, flags); ++ return stream_add_callback(pcuStreamAddCallback, hStream, callback, userData, flags); ++} ++ + CUresult WINAPI wine_cuStreamAttachMemAsync(CUstream hStream, CUdeviceptr dptr, size_t length, unsigned int flags) + { + TRACE("(%p, " DEV_PTR ", %lu, %u)\n", hStream, dptr, (SIZE_T)length, flags); +@@ -2234,6 +2366,17 @@ CUresult WINAPI wine_cuTexRefSetMipmappedArray(CUtexref hTexRef, CUmipmappedArra + return pcuTexRefSetMipmappedArray(hTexRef, hMipmappedArray, Flags); + } + ++#define CHECK_FUNCPTR(f) \ ++ do \ ++ { \ ++ if (p##f == NULL) \ ++ { \ ++ FIXME("not supported\n"); \ ++ return CUDA_ERROR_NOT_SUPPORTED; \ ++ } \ ++ } \ ++ while (0) ++ + /* + * Additions in CUDA 6.5 + */ +@@ -2242,22 +2385,14 @@ CUresult WINAPI wine_cuGLGetDevices_v2(unsigned int *pCudaDeviceCount, CUdevice + unsigned int cudaDeviceCount, CUGLDeviceList deviceList) + { + TRACE("(%p, %p, %u, %d)\n", pCudaDeviceCount, pCudaDevices, cudaDeviceCount, deviceList); +- if (!pcuGLGetDevices_v2) +- { +- FIXME("not supported\n"); +- return CUDA_ERROR_NOT_SUPPORTED; +- } ++ CHECK_FUNCPTR(cuGLGetDevices_v2); + return pcuGLGetDevices_v2(pCudaDeviceCount, pCudaDevices, cudaDeviceCount, deviceList); + } + + CUresult WINAPI wine_cuGraphicsResourceSetMapFlags_v2(CUgraphicsResource resource, unsigned int flags) + { + TRACE("(%p, %u)\n", resource, flags); +- if (!pcuGraphicsResourceSetMapFlags_v2) +- { +- FIXME("not supported\n"); +- return CUDA_ERROR_NOT_SUPPORTED; +- } ++ CHECK_FUNCPTR(cuGraphicsResourceSetMapFlags_v2); + return pcuGraphicsResourceSetMapFlags_v2(resource, flags); + } + +@@ -2265,11 +2400,7 @@ CUresult WINAPI wine_cuLinkAddData_v2(CUlinkState state, CUjitInputType type, vo + unsigned int numOptions, CUjit_option *options, void **optionValues) + { + TRACE("(%p, %d, %p, %lu, %s, %u, %p, %p)\n", state, type, data, (SIZE_T)size, name, numOptions, options, optionValues); +- if (!pcuLinkAddData_v2) +- { +- FIXME("not supported\n"); +- return CUDA_ERROR_NOT_SUPPORTED; +- } ++ CHECK_FUNCPTR(cuLinkAddData_v2); + return pcuLinkAddData_v2(state, type, data, size, name, numOptions, options, optionValues); + } + +@@ -2277,33 +2408,21 @@ CUresult WINAPI wine_cuLinkCreate_v2(unsigned int numOptions, CUjit_option *opti + void **optionValues, CUlinkState *stateOut) + { + TRACE("(%u, %p, %p, %p)\n", numOptions, options, optionValues, stateOut); +- if (!pcuLinkCreate_v2) +- { +- FIXME("not supported\n"); +- return CUDA_ERROR_NOT_SUPPORTED; +- } ++ CHECK_FUNCPTR(cuLinkCreate_v2); + return pcuLinkCreate_v2(numOptions, options, optionValues, stateOut); + } + + CUresult WINAPI wine_cuMemHostRegister_v2(void *p, size_t bytesize, unsigned int Flags) + { + TRACE("(%p, %lu, %u)\n", p, (SIZE_T)bytesize, Flags); +- if (!pcuMemHostRegister_v2) +- { +- FIXME("not supported\n"); +- return CUDA_ERROR_NOT_SUPPORTED; +- } ++ CHECK_FUNCPTR(cuMemHostRegister_v2); + return pcuMemHostRegister_v2(p, bytesize, Flags); + } + + CUresult WINAPI wine_cuOccupancyMaxActiveBlocksPerMultiprocessor(int *numBlocks, CUfunction func, int blockSize, size_t dynamicSMemSize) + { + TRACE("(%p, %p, %d, %lu)\n", numBlocks, func, blockSize, (SIZE_T)dynamicSMemSize); +- if (!pcuOccupancyMaxActiveBlocksPerMultiprocessor) +- { +- FIXME("not supported\n"); +- return CUDA_ERROR_NOT_SUPPORTED; +- } ++ CHECK_FUNCPTR(cuOccupancyMaxActiveBlocksPerMultiprocessor); + return pcuOccupancyMaxActiveBlocksPerMultiprocessor(numBlocks, func, blockSize, dynamicSMemSize); + } + +@@ -2312,16 +2431,442 @@ CUresult WINAPI wine_cuOccupancyMaxPotentialBlockSize(int *minGridSize, int *blo + void *blockSizeToDynamicSMemSize, size_t dynamicSMemSize, int blockSizeLimit) + { + TRACE("(%p, %p, %p, %p, %lu, %d)\n", minGridSize, blockSize, func, blockSizeToDynamicSMemSize, (SIZE_T)dynamicSMemSize, blockSizeLimit); +- if (!pcuOccupancyMaxPotentialBlockSize) +- { +- FIXME("not supported\n"); +- return CUDA_ERROR_NOT_SUPPORTED; +- } ++ CHECK_FUNCPTR(cuOccupancyMaxPotentialBlockSize); + return pcuOccupancyMaxPotentialBlockSize(minGridSize, blockSize, func, blockSizeToDynamicSMemSize, dynamicSMemSize, blockSizeLimit); + } + */ + + /* ++ * Additions in CUDA 7.0 ++ */ ++ ++CUresult WINAPI wine_cuCtxGetFlags(unsigned int *flags) ++{ ++ TRACE("(%p)\n", flags); ++ CHECK_FUNCPTR(cuCtxGetFlags); ++ return pcuCtxGetFlags(flags); ++} ++ ++CUresult WINAPI wine_cuDevicePrimaryCtxGetState(CUdevice dev, unsigned int *flags, int *active) ++{ ++ TRACE("(%u, %p, %p)\n", dev, flags, active); ++ CHECK_FUNCPTR(cuDevicePrimaryCtxGetState); ++ return pcuDevicePrimaryCtxGetState(dev, flags, active); ++} ++ ++CUresult WINAPI wine_cuDevicePrimaryCtxRelease(CUdevice dev) ++{ ++ TRACE("(%u)\n", dev); ++ CHECK_FUNCPTR(cuDevicePrimaryCtxRelease); ++ return pcuDevicePrimaryCtxRelease(dev); ++} ++ ++CUresult WINAPI wine_cuDevicePrimaryCtxReset(CUdevice dev) ++{ ++ TRACE("(%u)\n", dev); ++ CHECK_FUNCPTR(cuDevicePrimaryCtxReset); ++ return pcuDevicePrimaryCtxReset(dev); ++} ++ ++CUresult WINAPI wine_cuDevicePrimaryCtxRetain(CUcontext *pctx, CUdevice dev) ++{ ++ TRACE("(%p, %u)\n", pctx, dev); ++ CHECK_FUNCPTR(cuDevicePrimaryCtxRetain); ++ return pcuDevicePrimaryCtxRetain(pctx, dev); ++} ++ ++CUresult WINAPI wine_cuDevicePrimaryCtxSetFlags(CUdevice dev, unsigned int flags) ++{ ++ TRACE("(%u, %u)\n", dev, flags); ++ CHECK_FUNCPTR(cuDevicePrimaryCtxSetFlags); ++ return pcuDevicePrimaryCtxSetFlags(dev, flags); ++} ++ ++CUresult WINAPI wine_cuEventRecord_ptsz(CUevent hEvent, CUstream hStream) ++{ ++ TRACE("(%p, %p)\n", hEvent, hStream); ++ CHECK_FUNCPTR(cuEventRecord_ptsz); ++ return pcuEventRecord_ptsz(hEvent, hStream); ++} ++ ++CUresult WINAPI wine_cuGLMapBufferObjectAsync_v2_ptsz(CUdeviceptr *dptr, size_t *size, GLuint buffer, CUstream hStream) ++{ ++ TRACE("(%p, %p, %u, %p)\n", dptr, size, buffer, hStream); ++ CHECK_FUNCPTR(cuGLMapBufferObjectAsync_v2_ptsz); ++ return pcuGLMapBufferObjectAsync_v2_ptsz(dptr, size, buffer, hStream); ++} ++ ++CUresult WINAPI wine_cuGLMapBufferObject_v2_ptds(CUdeviceptr *dptr, size_t *size, GLuint buffer) ++{ ++ TRACE("(%p, %p, %u)\n", dptr, size, buffer); ++ CHECK_FUNCPTR(cuGLMapBufferObject_v2_ptds); ++ return pcuGLMapBufferObject_v2_ptds(dptr, size, buffer); ++} ++ ++CUresult WINAPI wine_cuGraphicsMapResources_ptsz(unsigned int count, CUgraphicsResource *resources, CUstream hStream) ++{ ++ TRACE("(%u, %p, %p)\n", count, resources, hStream); ++ CHECK_FUNCPTR(cuGraphicsMapResources_ptsz); ++ return pcuGraphicsMapResources_ptsz(count, resources, hStream); ++} ++ ++CUresult WINAPI wine_cuGraphicsUnmapResources_ptsz(unsigned int count, CUgraphicsResource *resources, CUstream hStream) ++{ ++ TRACE("(%u, %p, %p)\n", count, resources, hStream); ++ CHECK_FUNCPTR(cuGraphicsUnmapResources_ptsz); ++ return pcuGraphicsUnmapResources_ptsz(count, resources, hStream); ++} ++ ++CUresult WINAPI wine_cuLaunchKernel_ptsz(CUfunction f, unsigned int gridDimX, unsigned int gridDimY, unsigned int gridDimZ, ++ unsigned int blockDimX, unsigned int blockDimY, unsigned int blockDimZ, ++ unsigned int sharedMemBytes, CUstream hStream, void **kernelParams, void **extra) ++{ ++ TRACE("(%p, %u, %u, %u, %u, %u, %u, %u, %p, %p, %p),\n", f, gridDimX, gridDimY, gridDimZ, blockDimX, ++ blockDimY, blockDimZ, sharedMemBytes, hStream, kernelParams, extra); ++ CHECK_FUNCPTR(cuLaunchKernel_ptsz); ++ return pcuLaunchKernel_ptsz(f, gridDimX, gridDimY, gridDimZ, blockDimX, blockDimY, blockDimZ, sharedMemBytes, ++ hStream, kernelParams, extra); ++} ++ ++CUresult WINAPI wine_cuMemcpy2DAsync_v2_ptsz(const CUDA_MEMCPY2D *pCopy, CUstream hStream) ++{ ++ TRACE("(%p, %p)\n", pCopy, hStream); ++ CHECK_FUNCPTR(cuMemcpy2DAsync_v2_ptsz); ++ return pcuMemcpy2DAsync_v2_ptsz(pCopy, hStream); ++} ++ ++CUresult WINAPI wine_cuMemcpy2DUnaligned_v2_ptds(const CUDA_MEMCPY2D *pCopy) ++{ ++ TRACE("(%p)\n", pCopy); ++ CHECK_FUNCPTR(cuMemcpy2DUnaligned_v2_ptds); ++ return pcuMemcpy2DUnaligned_v2_ptds(pCopy); ++} ++ ++CUresult WINAPI wine_cuMemcpy2D_v2_ptds(const CUDA_MEMCPY2D *pCopy) ++{ ++ TRACE("(%p)\n", pCopy); ++ CHECK_FUNCPTR(cuMemcpy2D_v2_ptds); ++ return pcuMemcpy2D_v2_ptds(pCopy); ++} ++ ++CUresult WINAPI wine_cuMemcpy3DAsync_v2_ptsz(const CUDA_MEMCPY3D *pCopy, CUstream hStream) ++{ ++ TRACE("(%p, %p)\n", pCopy, hStream); ++ CHECK_FUNCPTR(cuMemcpy3DAsync_v2_ptsz); ++ return pcuMemcpy3DAsync_v2_ptsz(pCopy, hStream); ++} ++ ++CUresult WINAPI wine_cuMemcpy3DPeerAsync_ptsz(const CUDA_MEMCPY3D_PEER *pCopy, CUstream hStream) ++{ ++ TRACE("(%p, %p)\n", pCopy, hStream); ++ CHECK_FUNCPTR(cuMemcpy3DPeerAsync_ptsz); ++ return pcuMemcpy3DPeerAsync_ptsz(pCopy, hStream); ++} ++ ++CUresult WINAPI wine_cuMemcpy3DPeer_ptds(const CUDA_MEMCPY3D_PEER *pCopy) ++{ ++ TRACE("(%p)\n", pCopy); ++ CHECK_FUNCPTR(cuMemcpy3DPeer_ptds); ++ return pcuMemcpy3DPeer_ptds(pCopy); ++} ++ ++CUresult WINAPI wine_cuMemcpy3D_v2_ptds(const CUDA_MEMCPY3D *pCopy) ++{ ++ TRACE("(%p)\n", pCopy); ++ CHECK_FUNCPTR(cuMemcpy3D_v2_ptds); ++ return pcuMemcpy3D_v2_ptds(pCopy); ++} ++ ++CUresult WINAPI wine_cuMemcpyAsync_ptsz(CUdeviceptr dst, CUdeviceptr src, size_t ByteCount, CUstream hStream) ++{ ++ TRACE("(" DEV_PTR ", " DEV_PTR ", %lu, %p)\n", dst, src, (SIZE_T)ByteCount, hStream); ++ CHECK_FUNCPTR(cuMemcpyAsync_ptsz); ++ return pcuMemcpyAsync_ptsz(dst, src, ByteCount, hStream); ++} ++ ++CUresult WINAPI wine_cuMemcpyAtoA_v2_ptds(CUarray dstArray, size_t dstOffset, CUarray srcArray, ++ size_t srcOffset, size_t ByteCount) ++{ ++ TRACE("(%p, %lu, %p, %lu, %lu)\n", dstArray, (SIZE_T)dstOffset, srcArray, (SIZE_T)srcOffset, (SIZE_T)ByteCount); ++ CHECK_FUNCPTR(cuMemcpyAtoA_v2_ptds); ++ return pcuMemcpyAtoA_v2_ptds(dstArray, dstOffset, srcArray, srcOffset, ByteCount); ++} ++ ++CUresult WINAPI wine_cuMemcpyAtoD_v2_ptds(CUdeviceptr dstDevice, CUarray srcArray, size_t srcOffset, size_t ByteCount) ++{ ++ TRACE("(" DEV_PTR ", %p, %lu, %lu)\n", dstDevice, srcArray, (SIZE_T)srcOffset, (SIZE_T)ByteCount); ++ CHECK_FUNCPTR(cuMemcpyAtoD_v2_ptds); ++ return pcuMemcpyAtoD_v2_ptds(dstDevice, srcArray, srcOffset, ByteCount); ++} ++ ++CUresult WINAPI wine_cuMemcpyAtoHAsync_v2_ptsz(void *dstHost, CUarray srcArray, size_t srcOffset, size_t ByteCount, CUstream hStream) ++{ ++ TRACE("(%p, %p, %lu, %lu, %p)\n", dstHost, srcArray, (SIZE_T)srcOffset, (SIZE_T)ByteCount, hStream); ++ CHECK_FUNCPTR(cuMemcpyAtoHAsync_v2_ptsz); ++ return pcuMemcpyAtoHAsync_v2_ptsz(dstHost, srcArray, srcOffset, ByteCount, hStream); ++} ++ ++CUresult WINAPI wine_cuMemcpyAtoH_v2_ptds(void *dstHost, CUarray srcArray, size_t srcOffset, size_t ByteCount) ++{ ++ TRACE("(%p, %p, %lu, %lu)\n", dstHost, srcArray, (SIZE_T)srcOffset, (SIZE_T)ByteCount); ++ CHECK_FUNCPTR(cuMemcpyAtoH_v2_ptds); ++ return pcuMemcpyAtoH_v2_ptds(dstHost, srcArray, srcOffset, ByteCount); ++} ++ ++CUresult WINAPI wine_cuMemcpyDtoA_v2_ptds(CUarray dstArray, size_t dstOffset, CUdeviceptr srcDevice, size_t ByteCount) ++{ ++ TRACE("(%p, %lu, " DEV_PTR ", %lu)\n", dstArray, (SIZE_T)dstOffset, srcDevice, (SIZE_T)ByteCount); ++ CHECK_FUNCPTR(cuMemcpyDtoA_v2_ptds); ++ return pcuMemcpyDtoA_v2_ptds(dstArray, dstOffset, srcDevice, ByteCount); ++} ++ ++CUresult WINAPI wine_cuMemcpyDtoDAsync_v2_ptsz(CUdeviceptr dstDevice, CUdeviceptr srcDevice, ++ unsigned int ByteCount, CUstream hStream) ++{ ++ TRACE("(" DEV_PTR ", " DEV_PTR ", %u, %p)\n", dstDevice, srcDevice, ByteCount, hStream); ++ CHECK_FUNCPTR(cuMemcpyDtoDAsync_v2_ptsz); ++ return pcuMemcpyDtoDAsync_v2_ptsz(dstDevice, srcDevice, ByteCount, hStream); ++} ++ ++CUresult WINAPI wine_cuMemcpyDtoD_v2_ptds(CUdeviceptr dstDevice, CUdeviceptr srcDevice, unsigned int ByteCount) ++{ ++ TRACE("(" DEV_PTR ", " DEV_PTR ", %u)\n", dstDevice, srcDevice, ByteCount); ++ CHECK_FUNCPTR(cuMemcpyDtoD_v2_ptds); ++ return pcuMemcpyDtoD_v2_ptds(dstDevice, srcDevice, ByteCount); ++} ++ ++CUresult WINAPI wine_cuMemcpyDtoHAsync_v2_ptsz(void *dstHost, CUdeviceptr srcDevice, unsigned int ByteCount, CUstream hStream) ++{ ++ TRACE("(%p, " DEV_PTR ", %u, %p)\n", dstHost, srcDevice, ByteCount, hStream); ++ CHECK_FUNCPTR(cuMemcpyDtoHAsync_v2_ptsz); ++ return pcuMemcpyDtoHAsync_v2_ptsz(dstHost, srcDevice, ByteCount, hStream); ++} ++ ++CUresult WINAPI wine_cuMemcpyDtoH_v2_ptds(void *dstHost, CUdeviceptr srcDevice, unsigned int ByteCount) ++{ ++ TRACE("(%p, " DEV_PTR ", %u)\n", dstHost, srcDevice, ByteCount); ++ CHECK_FUNCPTR(cuMemcpyDtoH_v2_ptds); ++ return pcuMemcpyDtoH_v2_ptds(dstHost, srcDevice, ByteCount); ++} ++ ++CUresult WINAPI wine_cuMemcpyHtoAAsync_v2_ptsz(CUarray dstArray, size_t dstOffset, const void *srcHost, ++ size_t ByteCount, CUstream hStream) ++{ ++ TRACE("(%p, %lu, %p, %lu, %p)\n", dstArray, (SIZE_T)dstOffset, srcHost, (SIZE_T)ByteCount, hStream); ++ CHECK_FUNCPTR(cuMemcpyHtoAAsync_v2_ptsz); ++ return pcuMemcpyHtoAAsync_v2_ptsz(dstArray, dstOffset, srcHost, ByteCount, hStream); ++} ++ ++CUresult WINAPI wine_cuMemcpyHtoA_v2_ptds(CUarray dstArray, size_t dstOffset, const void *srcHost, size_t ByteCount) ++{ ++ TRACE("(%p, %lu, %p, %lu)\n", dstArray, (SIZE_T)dstOffset, srcHost, (SIZE_T)ByteCount); ++ CHECK_FUNCPTR(cuMemcpyHtoA_v2_ptds); ++ return pcuMemcpyHtoA_v2_ptds(dstArray, dstOffset, srcHost, ByteCount); ++} ++ ++CUresult WINAPI wine_cuMemcpyHtoDAsync_v2_ptsz(CUdeviceptr dstDevice, const void *srcHost, size_t ByteCount, CUstream hStream) ++{ ++ TRACE("(" DEV_PTR ", %p, %lu, %p)\n", dstDevice, srcHost, (SIZE_T)ByteCount, hStream); ++ CHECK_FUNCPTR(cuMemcpyHtoDAsync_v2_ptsz); ++ return pcuMemcpyHtoDAsync_v2_ptsz(dstDevice, srcHost, ByteCount, hStream); ++} ++ ++CUresult WINAPI wine_cuMemcpyHtoD_v2_ptds(CUdeviceptr dstDevice, const void *srcHost, size_t ByteCount) ++{ ++ TRACE("(" DEV_PTR ", %p, %lu)\n", dstDevice, srcHost, (SIZE_T)ByteCount); ++ CHECK_FUNCPTR(cuMemcpyHtoD_v2_ptds); ++ return pcuMemcpyHtoD_v2_ptds(dstDevice, srcHost, ByteCount); ++} ++ ++CUresult WINAPI wine_cuMemcpyPeerAsync_ptsz(CUdeviceptr dstDevice, CUcontext dstContext, CUdeviceptr srcDevice, ++ CUcontext srcContext, size_t ByteCount, CUstream hStream) ++{ ++ TRACE("(" DEV_PTR ", %p, " DEV_PTR ", %p, %lu, %p)\n", dstDevice, dstContext, srcDevice, srcContext, (SIZE_T)ByteCount, hStream); ++ CHECK_FUNCPTR(cuMemcpyPeerAsync_ptsz); ++ return pcuMemcpyPeerAsync_ptsz(dstDevice, dstContext, srcDevice, srcContext, ByteCount, hStream); ++} ++ ++CUresult WINAPI wine_cuMemcpyPeer_ptds(CUdeviceptr dstDevice, CUcontext dstContext, CUdeviceptr srcDevice, ++ CUcontext srcContext, size_t ByteCount) ++{ ++ TRACE("(" DEV_PTR ", %p, " DEV_PTR ", %p, %lu)\n", dstDevice, dstContext, srcDevice, srcContext, (SIZE_T)ByteCount); ++ CHECK_FUNCPTR(cuMemcpyPeer_ptds); ++ return pcuMemcpyPeer_ptds(dstDevice, dstContext, srcDevice, srcContext, ByteCount); ++} ++ ++CUresult WINAPI wine_cuMemcpy_ptds(CUdeviceptr dst, CUdeviceptr src, size_t ByteCount) ++{ ++ TRACE("(" DEV_PTR ", " DEV_PTR ", %lu)\n", dst, src, (SIZE_T)ByteCount); ++ CHECK_FUNCPTR(cuMemcpy_ptds); ++ return pcuMemcpy_ptds(dst, src, ByteCount); ++} ++ ++CUresult WINAPI wine_cuMemsetD16Async_ptsz(CUdeviceptr dstDevice, unsigned short us, size_t N, CUstream hStream) ++{ ++ TRACE("(" DEV_PTR ", %u, %lu, %p)\n", dstDevice, us, (SIZE_T)N, hStream); ++ CHECK_FUNCPTR(cuMemsetD16Async_ptsz); ++ return pcuMemsetD16Async_ptsz(dstDevice, us, N, hStream); ++} ++ ++CUresult WINAPI wine_cuMemsetD16_v2_ptds(CUdeviceptr dstDevice, unsigned short us, size_t N) ++{ ++ TRACE("(" DEV_PTR ", %u, %lu)\n", dstDevice, us, (SIZE_T)N); ++ CHECK_FUNCPTR(cuMemsetD16_v2_ptds); ++ return pcuMemsetD16_v2_ptds(dstDevice, us, N); ++} ++ ++CUresult WINAPI wine_cuMemsetD2D16Async_ptsz(CUdeviceptr dstDevice, size_t dstPitch, unsigned short us, ++ size_t Width, size_t Height, CUstream hStream) ++{ ++ TRACE("(" DEV_PTR ", %lu, %u, %lu, %lu, %p)\n", dstDevice, (SIZE_T)dstPitch, us, (SIZE_T)Width, (SIZE_T)Height, hStream); ++ CHECK_FUNCPTR(cuMemsetD2D16Async_ptsz); ++ return pcuMemsetD2D16Async_ptsz(dstDevice, dstPitch, us, Width, Height, hStream); ++} ++ ++CUresult WINAPI wine_cuMemsetD2D16_v2_ptds(CUdeviceptr dstDevice, size_t dstPitch, unsigned short us, size_t Width, size_t Height) ++{ ++ TRACE("(" DEV_PTR ", %lu, %u, %lu, %lu)\n", dstDevice, (SIZE_T)dstPitch, us, (SIZE_T)Width, (SIZE_T)Height); ++ CHECK_FUNCPTR(cuMemsetD2D16_v2_ptds); ++ return pcuMemsetD2D16_v2_ptds(dstDevice, dstPitch, us, Width, Height); ++} ++ ++CUresult WINAPI wine_cuMemsetD2D32Async_ptsz(CUdeviceptr dstDevice, size_t dstPitch, unsigned int ui, ++ size_t Width, size_t Height, CUstream hStream) ++{ ++ TRACE("(" DEV_PTR ", %lu, %u, %lu, %lu, %p)\n", dstDevice, (SIZE_T)dstPitch, ui, (SIZE_T)Width, (SIZE_T)Height, hStream); ++ CHECK_FUNCPTR(cuMemsetD2D32Async_ptsz); ++ return pcuMemsetD2D32Async_ptsz(dstDevice, dstPitch, ui, Width, Height, hStream); ++} ++ ++CUresult WINAPI wine_cuMemsetD2D32_v2_ptds(CUdeviceptr dstDevice, size_t dstPitch, unsigned int ui, size_t Width, size_t Height) ++{ ++ TRACE("(" DEV_PTR ", %lu, %u, %lu, %lu)\n", dstDevice, (SIZE_T)dstPitch, ui, (SIZE_T)Width, (SIZE_T)Height); ++ CHECK_FUNCPTR(cuMemsetD2D32_v2_ptds); ++ return pcuMemsetD2D32_v2_ptds(dstDevice, dstPitch, ui, Width, Height); ++} ++ ++CUresult WINAPI wine_cuMemsetD2D8Async_ptsz(CUdeviceptr dstDevice, size_t dstPitch, unsigned char uc, ++ size_t Width, size_t Height, CUstream hStream) ++{ ++ TRACE("(" DEV_PTR ", %lu, %u, %lu, %lu, %p)\n", dstDevice, (SIZE_T)dstPitch, uc, (SIZE_T)Width, (SIZE_T)Height, hStream); ++ CHECK_FUNCPTR(cuMemsetD2D8Async_ptsz); ++ return pcuMemsetD2D8Async_ptsz(dstDevice, dstPitch, uc, Width, Height, hStream); ++} ++ ++CUresult WINAPI wine_cuMemsetD2D8_v2_ptds(CUdeviceptr dstDevice, unsigned int dstPitch, unsigned char uc, ++ unsigned int Width, unsigned int Height) ++{ ++ TRACE("(" DEV_PTR ", %u, %x, %u, %u)\n", dstDevice, dstPitch, uc, Width, Height); ++ CHECK_FUNCPTR(cuMemsetD2D8_v2_ptds); ++ return pcuMemsetD2D8_v2_ptds(dstDevice, dstPitch, uc, Width, Height); ++} ++ ++CUresult WINAPI wine_cuMemsetD32Async_ptsz(CUdeviceptr dstDevice, unsigned int ui, size_t N, CUstream hStream) ++{ ++ TRACE("(" DEV_PTR ", %u, %lu, %p)\n", dstDevice, ui, (SIZE_T)N, hStream); ++ CHECK_FUNCPTR(cuMemsetD32Async_ptsz); ++ return pcuMemsetD32Async_ptsz(dstDevice, ui, N, hStream); ++} ++ ++CUresult WINAPI wine_cuMemsetD32_v2_ptds(CUdeviceptr dstDevice, unsigned int ui, size_t N) ++{ ++ TRACE("(" DEV_PTR ", %u, %lu)\n", dstDevice, ui, (SIZE_T)N); ++ CHECK_FUNCPTR(cuMemsetD32_v2_ptds); ++ return pcuMemsetD32_v2_ptds(dstDevice, ui, N); ++} ++ ++CUresult WINAPI wine_cuMemsetD8Async_ptsz(CUdeviceptr dstDevice, unsigned char uc, size_t N, CUstream hStream) ++{ ++ TRACE("(" DEV_PTR ", %x, %lu, %p)\n", dstDevice, uc, (SIZE_T)N, hStream); ++ CHECK_FUNCPTR(cuMemsetD8Async_ptsz); ++ return pcuMemsetD8Async_ptsz(dstDevice, uc, N, hStream); ++} ++ ++CUresult WINAPI wine_cuMemsetD8_v2_ptds(CUdeviceptr dstDevice, unsigned char uc, unsigned int N) ++{ ++ TRACE("(" DEV_PTR ", %x, %u)\n", dstDevice, uc, N); ++ CHECK_FUNCPTR(cuMemsetD8_v2_ptds); ++ return pcuMemsetD8_v2_ptds(dstDevice, uc, N); ++} ++ ++CUresult WINAPI wine_cuOccupancyMaxActiveBlocksPerMultiprocessorWithFlags(int *numBlocks, CUfunction func, int blockSize, ++ size_t dynamicSMemSize, unsigned int flags) ++{ ++ TRACE("(%p, %p, %d, %lu, %u)\n", numBlocks, func, blockSize, (SIZE_T)dynamicSMemSize, flags); ++ CHECK_FUNCPTR(cuOccupancyMaxActiveBlocksPerMultiprocessorWithFlags); ++ return pcuOccupancyMaxActiveBlocksPerMultiprocessorWithFlags(numBlocks, func, blockSize, dynamicSMemSize, flags); ++} ++ ++/* ++CUresult WINAPI wine_cuOccupancyMaxPotentialBlockSizeWithFlags(int *minGridSize, int *blockSize, CUfunction func, void *blockSizeToDynamicSMemSize, ++ size_t dynamicSMemSize, int blockSizeLimit, unsigned int flags) ++{ ++ TRACE("(%p, %p, %p, %p, %lu, %d, %u)\n", minGridSize, blockSize, func, blockSizeToDynamicSMemSize, (SIZE_T)dynamicSMemSize, blockSizeLimit, flags); ++ CHECK_FUNCPTR(cuOccupancyMaxPotentialBlockSizeWithFlags); ++ return pcuOccupancyMaxPotentialBlockSizeWithFlags(minGridSize, blockSize, func, blockSizeToDynamicSMemSize, ++ dynamicSMemSize, blockSizeLimit, flags); ++} ++*/ ++ ++CUresult WINAPI wine_cuPointerGetAttributes(unsigned int numAttributes, CUpointer_attribute *attributes, void **data, CUdeviceptr ptr) ++{ ++ TRACE("(%u, %p, %p, " DEV_PTR ")\n", numAttributes, attributes, data, ptr); ++ CHECK_FUNCPTR(cuPointerGetAttributes); ++ return pcuPointerGetAttributes(numAttributes, attributes, data, ptr); ++} ++ ++CUresult WINAPI wine_cuStreamAddCallback_ptsz(CUstream hStream, void *callback, void *userData, unsigned int flags) ++{ ++ TRACE("(%p, %p, %p, %u)\n", hStream, callback, userData, flags); ++ CHECK_FUNCPTR(cuStreamAddCallback_ptsz); ++ return stream_add_callback(pcuStreamAddCallback_ptsz, hStream, callback, userData, flags); ++} ++ ++CUresult WINAPI wine_cuStreamAttachMemAsync_ptsz(CUstream hStream, CUdeviceptr dptr, size_t length, unsigned int flags) ++{ ++ TRACE("(%p, " DEV_PTR ", %lu, %u)\n", hStream, dptr, (SIZE_T)length, flags); ++ CHECK_FUNCPTR(cuStreamAttachMemAsync_ptsz); ++ return pcuStreamAttachMemAsync_ptsz(hStream, dptr, length, flags); ++} ++ ++CUresult WINAPI wine_cuStreamGetFlags_ptsz(CUstream hStream, unsigned int *flags) ++{ ++ TRACE("(%p, %p)\n", hStream, flags); ++ CHECK_FUNCPTR(cuStreamGetFlags_ptsz); ++ return pcuStreamGetFlags_ptsz(hStream, flags); ++} ++ ++CUresult WINAPI wine_cuStreamGetPriority_ptsz(CUstream hStream, int *priority) ++{ ++ TRACE("(%p, %p)\n", hStream, priority); ++ CHECK_FUNCPTR(cuStreamGetPriority_ptsz); ++ return pcuStreamGetPriority_ptsz(hStream, priority); ++} ++ ++CUresult WINAPI wine_cuStreamQuery_ptsz(CUstream hStream) ++{ ++ TRACE("(%p)\n", hStream); ++ CHECK_FUNCPTR(cuStreamQuery_ptsz); ++ return pcuStreamQuery_ptsz(hStream); ++} ++ ++CUresult WINAPI wine_cuStreamSynchronize_ptsz(CUstream hStream) ++{ ++ TRACE("(%p)\n", hStream); ++ CHECK_FUNCPTR(cuStreamSynchronize_ptsz); ++ return pcuStreamSynchronize_ptsz(hStream); ++} ++ ++CUresult WINAPI wine_cuStreamWaitEvent_ptsz(CUstream hStream, CUevent hEvent, unsigned int Flags) ++{ ++ TRACE("(%p, %p, %u)\n", hStream, hEvent, Flags); ++ CHECK_FUNCPTR(cuStreamWaitEvent_ptsz); ++ return pcuStreamWaitEvent_ptsz(hStream, hEvent, Flags); ++} ++ ++#undef CHECK_FUNCPTR ++ ++/* + * Direct3D emulated functions + */ + +diff --git a/dlls/nvcuda/nvcuda.spec b/dlls/nvcuda/nvcuda.spec +index 5ca921e..84b5fcd 100644 +--- a/dlls/nvcuda/nvcuda.spec ++++ b/dlls/nvcuda/nvcuda.spec +@@ -317,3 +317,64 @@ + @ stdcall cuOccupancyMaxActiveBlocksPerMultiprocessor(ptr ptr long long) wine_cuOccupancyMaxActiveBlocksPerMultiprocessor + @ stub cuOccupancyMaxPotentialBlockSize + #@ stdcall cuOccupancyMaxPotentialBlockSize(ptr ptr ptr ptr long long) wine_cuOccupancyMaxPotentialBlockSize ++ ++# CUDA 7.0 ++@ stdcall cuCtxGetFlags(ptr) wine_cuCtxGetFlags ++@ stdcall cuDevicePrimaryCtxGetState(long ptr ptr) wine_cuDevicePrimaryCtxGetState ++@ stdcall cuDevicePrimaryCtxRelease(long) wine_cuDevicePrimaryCtxRelease ++@ stdcall cuDevicePrimaryCtxReset(long) wine_cuDevicePrimaryCtxReset ++@ stdcall cuDevicePrimaryCtxRetain(ptr long) wine_cuDevicePrimaryCtxRetain ++@ stdcall cuDevicePrimaryCtxSetFlags(long long) wine_cuDevicePrimaryCtxSetFlags ++@ stdcall cuEventRecord_ptsz(ptr ptr) wine_cuEventRecord_ptsz ++@ stdcall cuGLMapBufferObjectAsync_v2_ptsz(ptr ptr long ptr) wine_cuGLMapBufferObjectAsync_v2_ptsz ++@ stdcall cuGLMapBufferObject_v2_ptds(ptr ptr long) wine_cuGLMapBufferObject_v2_ptds ++@ stdcall cuGraphicsMapResources_ptsz(long ptr ptr) wine_cuGraphicsMapResources_ptsz ++@ stdcall cuGraphicsUnmapResources_ptsz(long ptr ptr) wine_cuGraphicsUnmapResources_ptsz ++@ stdcall cuLaunchKernel_ptsz(ptr long long long long long long long ptr ptr ptr) wine_cuLaunchKernel_ptsz ++@ stdcall cuMemcpy2DAsync_v2_ptsz(ptr ptr) wine_cuMemcpy2DAsync_v2_ptsz ++@ stdcall cuMemcpy2DUnaligned_v2_ptds(ptr) wine_cuMemcpy2DUnaligned_v2_ptds ++@ stdcall cuMemcpy2D_v2_ptds(ptr) wine_cuMemcpy2D_v2_ptds ++@ stdcall cuMemcpy3DAsync_v2_ptsz(ptr ptr) wine_cuMemcpy3DAsync_v2_ptsz ++@ stdcall cuMemcpy3DPeerAsync_ptsz(ptr ptr) wine_cuMemcpy3DPeerAsync_ptsz ++@ stdcall cuMemcpy3DPeer_ptds(ptr) wine_cuMemcpy3DPeer_ptds ++@ stdcall cuMemcpy3D_v2_ptds(ptr) wine_cuMemcpy3D_v2_ptds ++@ stdcall cuMemcpyAsync_ptsz(long long long ptr) wine_cuMemcpyAsync_ptsz ++@ stdcall cuMemcpyAtoA_v2_ptds(ptr long ptr long long) wine_cuMemcpyAtoA_v2_ptds ++@ stdcall cuMemcpyAtoD_v2_ptds(long ptr long long) wine_cuMemcpyAtoD_v2_ptds ++@ stdcall cuMemcpyAtoHAsync_v2_ptsz(ptr ptr long long ptr) wine_cuMemcpyAtoHAsync_v2_ptsz ++@ stdcall cuMemcpyAtoH_v2_ptds(ptr ptr long long) wine_cuMemcpyAtoH_v2_ptds ++@ stdcall cuMemcpyDtoA_v2_ptds(ptr long long long) wine_cuMemcpyDtoA_v2_ptds ++@ stdcall cuMemcpyDtoDAsync_v2_ptsz(long long long ptr) wine_cuMemcpyDtoDAsync_v2_ptsz ++@ stdcall cuMemcpyDtoD_v2_ptds(long long long) wine_cuMemcpyDtoD_v2_ptds ++@ stdcall cuMemcpyDtoHAsync_v2_ptsz(ptr long long ptr) wine_cuMemcpyDtoHAsync_v2_ptsz ++@ stdcall cuMemcpyDtoH_v2_ptds(ptr long long) wine_cuMemcpyDtoH_v2_ptds ++@ stdcall cuMemcpyHtoAAsync_v2_ptsz(ptr long ptr long ptr) wine_cuMemcpyHtoAAsync_v2_ptsz ++@ stdcall cuMemcpyHtoA_v2_ptds(ptr long ptr long) wine_cuMemcpyHtoA_v2_ptds ++@ stdcall cuMemcpyHtoDAsync_v2_ptsz(long ptr long ptr) wine_cuMemcpyHtoDAsync_v2_ptsz ++@ stdcall cuMemcpyHtoD_v2_ptds(long ptr long) wine_cuMemcpyHtoD_v2_ptds ++@ stdcall cuMemcpyPeerAsync_ptsz(long ptr long ptr long ptr) wine_cuMemcpyPeerAsync_ptsz ++@ stdcall cuMemcpyPeer_ptds(long ptr long ptr long) wine_cuMemcpyPeer_ptds ++@ stdcall cuMemcpy_ptds(long long long) wine_cuMemcpy_ptds ++@ stdcall cuMemsetD16Async_ptsz(long long long ptr) wine_cuMemsetD16Async_ptsz ++@ stdcall cuMemsetD16_v2_ptds(long long long) wine_cuMemsetD16_v2_ptds ++@ stdcall cuMemsetD2D16Async_ptsz(long long long long long ptr) wine_cuMemsetD2D16Async_ptsz ++@ stdcall cuMemsetD2D16_v2_ptds(long long long long long) wine_cuMemsetD2D16_v2_ptds ++@ stdcall cuMemsetD2D32Async_ptsz(long long long long long ptr) wine_cuMemsetD2D32Async_ptsz ++@ stdcall cuMemsetD2D32_v2_ptds(long long long long long) wine_cuMemsetD2D32_v2_ptds ++@ stdcall cuMemsetD2D8Async_ptsz(long long long long long ptr) wine_cuMemsetD2D8Async_ptsz ++@ stdcall cuMemsetD2D8_v2_ptds(long long long long long) wine_cuMemsetD2D8_v2_ptds ++@ stdcall cuMemsetD32Async_ptsz(long long long ptr) wine_cuMemsetD32Async_ptsz ++@ stdcall cuMemsetD32_v2_ptds(long long long) wine_cuMemsetD32_v2_ptds ++@ stdcall cuMemsetD8Async_ptsz(long long long ptr) wine_cuMemsetD8Async_ptsz ++@ stdcall cuMemsetD8_v2_ptds(long long long) wine_cuMemsetD8_v2_ptds ++@ stdcall cuOccupancyMaxActiveBlocksPerMultiprocessorWithFlags(ptr ptr long long long) wine_cuOccupancyMaxActiveBlocksPerMultiprocessorWithFlags ++@ stub cuOccupancyMaxPotentialBlockSizeWithFlags ++#@ stdcall cuOccupancyMaxPotentialBlockSizeWithFlags(ptr ptr ptr ptr long long long) wine_cuOccupancyMaxPotentialBlockSizeWithFlags ++@ stdcall cuPointerGetAttributes(long ptr ptr long) wine_cuPointerGetAttributes ++@ stdcall cuStreamAddCallback_ptsz(ptr ptr ptr long) wine_cuStreamAddCallback_ptsz ++@ stdcall cuStreamAttachMemAsync_ptsz(ptr long long long) wine_cuStreamAttachMemAsync_ptsz ++@ stdcall cuStreamGetFlags_ptsz(ptr ptr) wine_cuStreamGetFlags_ptsz ++@ stdcall cuStreamGetPriority_ptsz(ptr ptr) wine_cuStreamGetPriority_ptsz ++@ stdcall cuStreamQuery_ptsz(ptr) wine_cuStreamQuery_ptsz ++@ stdcall cuStreamSynchronize_ptsz(ptr) wine_cuStreamSynchronize_ptsz ++@ stdcall cuStreamWaitEvent_ptsz(ptr ptr long) wine_cuStreamWaitEvent_ptsz +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/nvcuda-CUDA_Support/definition wine-staging-1.7.36~ubuntu12.04.1/patches/nvcuda-CUDA_Support/definition --- wine-staging-1.7.35~ubuntu12.04.1/patches/nvcuda-CUDA_Support/definition 2015-01-24 15:32:20.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/nvcuda-CUDA_Support/definition 2015-02-08 20:46:30.000000000 +0000 @@ -1 +1,2 @@ Fixes: Basic support for CUDA +Fixes: [37664] MediaCoder needs CUDA for video encoding diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/nvcuvid-CUDA_Video_Support/0001-nvcuvid-First-implementation.patch wine-staging-1.7.36~ubuntu12.04.1/patches/nvcuvid-CUDA_Video_Support/0001-nvcuvid-First-implementation.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/nvcuvid-CUDA_Video_Support/0001-nvcuvid-First-implementation.patch 2015-01-24 15:32:20.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/nvcuvid-CUDA_Video_Support/0001-nvcuvid-First-implementation.patch 2015-02-08 20:46:30.000000000 +0000 @@ -1,4 +1,4 @@ -From 914b532851757f246d3e2a28a3cd64a00c94b10c Mon Sep 17 00:00:00 2001 +From 28bc6fd227108131066523f8a3b1ade86f8d3ef8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Tue, 6 Jan 2015 05:16:36 +0100 Subject: nvcuvid: First implementation. (rev 2) @@ -12,8 +12,8 @@ dlls/nvcuvid/nvcuvid.spec | 24 +++ include/Makefile.in | 2 + include/cuviddec.h | 99 +++++++++ - include/nvcuvid.h | 80 +++++++ - 7 files changed, 747 insertions(+) + include/nvcuvid.h | 79 +++++++ + 7 files changed, 746 insertions(+) create mode 100644 dlls/nvcuvid/Makefile.in create mode 100644 dlls/nvcuvid/nvcuvid.c create mode 100644 dlls/nvcuvid/nvcuvid.spec @@ -21,10 +21,10 @@ create mode 100644 include/nvcuvid.h diff --git a/configure.ac b/configure.ac -index 3918ab1..937b431 100644 +index d019e26..559cde4 100644 --- a/configure.ac +++ b/configure.ac -@@ -3137,6 +3137,7 @@ WINE_CONFIG_TEST(dlls/nvapi/tests) +@@ -3140,6 +3140,7 @@ WINE_CONFIG_TEST(dlls/nvapi/tests) WINE_CONFIG_DLL(nvapi64,enable_win64) WINE_CONFIG_DLL(nvcuda) WINE_CONFIG_TEST(dlls/nvcuda/tests) @@ -742,10 +742,10 @@ +#endif /* __WINE_CUVIDDEC_H */ diff --git a/include/nvcuvid.h b/include/nvcuvid.h new file mode 100644 -index 0000000..216499f +index 0000000..a192ef6 --- /dev/null +++ b/include/nvcuvid.h -@@ -0,0 +1,80 @@ +@@ -0,0 +1,79 @@ +/* + * Copyright (C) 2015 Michael Müller + * @@ -781,7 +781,6 @@ +typedef struct _CUVIDEOFORMATEX CUVIDEOFORMATEX; +typedef struct _CUVIDPARSERDISPINFO CUVIDPARSERDISPINFO; +typedef struct _CUVIDPICPARAMS CUVIDPICPARAMS; -+typedef struct _CUVIDSOURCEDATAPACKET CUVIDSOURCEDATAPACKET; + +typedef struct _CUVIDPARSERPARAMS +{ diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/nvencodeapi-Video_Encoder/0001-nvencodeapi-First-implementation.patch wine-staging-1.7.36~ubuntu12.04.1/patches/nvencodeapi-Video_Encoder/0001-nvencodeapi-First-implementation.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/nvencodeapi-Video_Encoder/0001-nvencodeapi-First-implementation.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/nvencodeapi-Video_Encoder/0001-nvencodeapi-First-implementation.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,748 @@ +From e8580b7171ce93196fd703d6ed36387f133f8a85 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20M=C3=BCller?= +Date: Sun, 8 Feb 2015 06:10:26 +0100 +Subject: nvencodeapi: First implementation. + +--- + configure.ac | 2 + + dlls/nvencodeapi/Makefile.in | 4 + + dlls/nvencodeapi/nvencodeapi.c | 370 ++++++++++++++++++++++++++++++++++ + dlls/nvencodeapi/nvencodeapi.spec | 1 + + dlls/nvencodeapi64/Makefile.in | 5 + + dlls/nvencodeapi64/nvencodeapi64.spec | 1 + + include/Makefile.in | 1 + + include/nvencodeapi.h | 281 ++++++++++++++++++++++++++ + 8 files changed, 665 insertions(+) + create mode 100644 dlls/nvencodeapi/Makefile.in + create mode 100644 dlls/nvencodeapi/nvencodeapi.c + create mode 100644 dlls/nvencodeapi/nvencodeapi.spec + create mode 100644 dlls/nvencodeapi64/Makefile.in + create mode 100644 dlls/nvencodeapi64/nvencodeapi64.spec + create mode 100644 include/nvencodeapi.h + +diff --git a/configure.ac b/configure.ac +index 89b8d58..fcd6bc4 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3153,6 +3153,8 @@ WINE_CONFIG_DLL(nvapi64,enable_win64) + WINE_CONFIG_DLL(nvcuda) + WINE_CONFIG_TEST(dlls/nvcuda/tests) + WINE_CONFIG_DLL(nvcuvid) ++WINE_CONFIG_DLL(nvencodeapi,enable_win32) ++WINE_CONFIG_DLL(nvencodeapi64,enable_win64) + WINE_CONFIG_DLL(objsel,,[clean]) + WINE_CONFIG_DLL(odbc32,,[implib]) + WINE_CONFIG_DLL(odbccp32,,[implib]) +diff --git a/dlls/nvencodeapi/Makefile.in b/dlls/nvencodeapi/Makefile.in +new file mode 100644 +index 0000000..a2e58ac +--- /dev/null ++++ b/dlls/nvencodeapi/Makefile.in +@@ -0,0 +1,4 @@ ++MODULE = nvencodeapi.dll ++ ++C_SRCS = \ ++ nvencodeapi.c +diff --git a/dlls/nvencodeapi/nvencodeapi.c b/dlls/nvencodeapi/nvencodeapi.c +new file mode 100644 +index 0000000..7a0f531 +--- /dev/null ++++ b/dlls/nvencodeapi/nvencodeapi.c +@@ -0,0 +1,370 @@ ++/* ++ * Copyright (C) 2015 Michael Müller ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with this library; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#include "config.h" ++#include "wine/port.h" ++ ++#include ++ ++#include "windef.h" ++#include "winbase.h" ++#include "wine/debug.h" ++#include "wine/library.h" ++ ++#include "nvencodeapi.h" ++ ++WINE_DEFAULT_DEBUG_CHANNEL(nvencodeapi); ++ ++static void *libnvidia_encode_handle = NULL; ++static LINUX_NV_ENCODE_API_FUNCTION_LIST origFunctions; ++ ++static NVENCSTATUS (*pNvEncodeAPICreateInstance)(LINUX_NV_ENCODE_API_FUNCTION_LIST *functionList); ++ ++static NVENCSTATUS WINAPI NvEncOpenEncodeSession(void *device, uint32_t deviceType, void **encoder) ++{ ++ TRACE("(%p, %u, %p)\n", device, deviceType, encoder); ++ return origFunctions.nvEncOpenEncodeSession(device, deviceType, encoder); ++} ++ ++static NVENCSTATUS WINAPI NvEncGetEncodeGUIDCount(void *encoder, uint32_t *encodeGUIDCount) ++{ ++ TRACE("(%p, %p)\n", encoder, encodeGUIDCount); ++ return origFunctions.nvEncGetEncodeGUIDCount(encoder, encodeGUIDCount); ++} ++ ++static NVENCSTATUS WINAPI NvEncGetEncodeGUIDs(void *encoder, GUID *GUIDs, uint32_t guidArraySize, uint32_t *GUIDCount) ++{ ++ TRACE("(%p, %p, %u, %p)\n", encoder, GUIDs, guidArraySize, GUIDCount); ++ return origFunctions.nvEncGetEncodeGUIDs(encoder, GUIDs, guidArraySize, GUIDCount); ++} ++ ++static NVENCSTATUS WINAPI NvEncGetEncodeProfileGUIDCount(void *encoder, GUID encodeGUID, uint32_t *encodeProfileGUIDCount) ++{ ++ TRACE("(%p, %s, %p)\n", encoder, debugstr_guid(&encodeGUID), encodeProfileGUIDCount); ++ return origFunctions.nvEncGetEncodeProfileGUIDCount(encoder, encodeGUID, encodeProfileGUIDCount); ++} ++ ++static NVENCSTATUS WINAPI NvEncGetEncodeProfileGUIDs(void *encoder, GUID encodeGUID, GUID *profileGUIDs, ++ uint32_t guidArraySize, uint32_t *GUIDCount) ++{ ++ TRACE("(%p, %s, %p, %u, %p)\n", encoder, debugstr_guid(&encodeGUID), profileGUIDs, guidArraySize, GUIDCount); ++ return origFunctions.nvEncGetEncodeProfileGUIDs(encoder, encodeGUID, profileGUIDs, guidArraySize, GUIDCount); ++} ++ ++static NVENCSTATUS WINAPI NvEncGetInputFormatCount(void *encoder, GUID encodeGUID, uint32_t *inputFmtCount) ++{ ++ TRACE("(%p, %s, %p)\n", encoder, debugstr_guid(&encodeGUID), inputFmtCount); ++ return origFunctions.nvEncGetInputFormatCount(encoder, encodeGUID, inputFmtCount); ++} ++ ++static NVENCSTATUS WINAPI NvEncGetInputFormats(void *encoder, GUID encodeGUID, NV_ENC_BUFFER_FORMAT *inputFmts, ++ uint32_t inputFmtArraySize, uint32_t *inputFmtCount) ++{ ++ TRACE("(%p, %s, %p)\n", encoder, debugstr_guid(&encodeGUID), inputFmtCount); ++ return origFunctions.nvEncGetInputFormatCount(encoder, encodeGUID, inputFmtCount); ++} ++ ++static NVENCSTATUS WINAPI NvEncGetEncodeCaps(void *encoder, GUID encodeGUID, NV_ENC_CAPS_PARAM *capsParam, int *capsVal) ++{ ++ TRACE("(%p, %s, %p, %p)\n", encoder, debugstr_guid(&encodeGUID), capsParam, capsVal); ++ return origFunctions.nvEncGetEncodeCaps(encoder, encodeGUID, capsParam, capsVal); ++} ++ ++static NVENCSTATUS WINAPI NvEncGetEncodePresetCount(void *encoder, GUID encodeGUID, uint32_t *encodePresetGUIDCount) ++{ ++ TRACE("(%p, %s, %p)\n", encoder, debugstr_guid(&encodeGUID), encodePresetGUIDCount); ++ return origFunctions.nvEncGetEncodePresetCount(encoder, encodeGUID, encodePresetGUIDCount); ++} ++ ++static NVENCSTATUS WINAPI NvEncGetEncodePresetGUIDs(void *encoder, GUID encodeGUID, GUID *presetGUIDs, uint32_t guidArraySize, ++ uint32_t *encodePresetGUIDCount) ++{ ++ TRACE("(%p, %s, %p, %u, %p)\n", encoder, debugstr_guid(&encodeGUID), presetGUIDs, guidArraySize, encodePresetGUIDCount); ++ return origFunctions.nvEncGetEncodePresetGUIDs(encoder, encodeGUID, presetGUIDs, guidArraySize, encodePresetGUIDCount); ++} ++ ++static NVENCSTATUS WINAPI NvEncGetEncodePresetConfig(void *encoder, GUID encodeGUID, GUID presetGUID, NV_ENC_PRESET_CONFIG *presetConfig) ++{ ++ TRACE("(%p, %s, %s, %p)\n", encoder, debugstr_guid(&encodeGUID), debugstr_guid(&presetGUID), presetConfig); ++ return origFunctions.nvEncGetEncodePresetConfig(encoder, encodeGUID, presetGUID, presetConfig); ++} ++ ++static NVENCSTATUS WINAPI NvEncInitializeEncoder(void *encoder, NV_ENC_INITIALIZE_PARAMS *createEncodeParams) ++{ ++ NV_ENC_INITIALIZE_PARAMS linux_encode_params; ++ ++ TRACE("(%p, %p)\n", encoder, createEncodeParams); ++ ++ if (!createEncodeParams) ++ return NV_ENC_ERR_INVALID_PTR; ++ ++ if (createEncodeParams->enableEncodeAsync) ++ { ++ FIXME("Async encoding is not supported by the linux NVIDIA driver.\n"); ++ FIXME("Trying to emulate async mode, but this might not work for all applications.\n"); ++ ++ /* Forward modified information to the linux library. */ ++ linux_encode_params = *createEncodeParams; ++ createEncodeParams = &linux_encode_params; ++ linux_encode_params.enableEncodeAsync = 0; ++ } ++ ++ return origFunctions.nvEncInitializeEncoder(encoder, createEncodeParams); ++} ++ ++static NVENCSTATUS WINAPI NvEncCreateInputBuffer(void *encoder, NV_ENC_CREATE_INPUT_BUFFER *createInputBufferParams) ++{ ++ TRACE("(%p, %p)\n", encoder, createInputBufferParams); ++ return origFunctions.nvEncCreateInputBuffer(encoder, createInputBufferParams); ++} ++ ++static NVENCSTATUS WINAPI NvEncDestroyInputBuffer(void *encoder, NV_ENC_INPUT_PTR inputBuffer) ++{ ++ TRACE("(%p, %p)\n", encoder, inputBuffer); ++ return origFunctions.nvEncDestroyInputBuffer(encoder, inputBuffer); ++} ++ ++static NVENCSTATUS WINAPI NvEncCreateBitstreamBuffer(void *encoder, NV_ENC_CREATE_BITSTREAM_BUFFER *createBitstreamBufferParams) ++{ ++ TRACE("(%p, %p)\n", encoder, createBitstreamBufferParams); ++ return origFunctions.nvEncCreateBitstreamBuffer(encoder, createBitstreamBufferParams); ++} ++ ++static NVENCSTATUS WINAPI NvEncDestroyBitstreamBuffer(void *encoder, NV_ENC_OUTPUT_PTR bitstreamBuffer) ++{ ++ TRACE("(%p, %p)\n", encoder, bitstreamBuffer); ++ return origFunctions.nvEncDestroyBitstreamBuffer(encoder, bitstreamBuffer); ++} ++ ++static NVENCSTATUS WINAPI NvEncEncodePicture(void *encoder, NV_ENC_PIC_PARAMS *encodePicParams) ++{ ++ NVENCSTATUS result; ++ TRACE("(%p, %p)\n", encoder, encodePicParams); ++ ++ result = origFunctions.nvEncEncodePicture(encoder, encodePicParams); ++ ++ if (encodePicParams->completionEvent) ++ SetEvent(encodePicParams->completionEvent); ++ ++ return result; ++} ++ ++static NVENCSTATUS WINAPI NvEncLockBitstream(void *encoder, NV_ENC_LOCK_BITSTREAM *lockBitstreamBufferParams) ++{ ++ TRACE("(%p, %p)\n", encoder, lockBitstreamBufferParams); ++ return origFunctions.nvEncLockBitstream(encoder, lockBitstreamBufferParams); ++} ++ ++static NVENCSTATUS WINAPI NvEncUnlockBitstream(void *encoder, NV_ENC_OUTPUT_PTR bitstreamBuffer) ++{ ++ TRACE("(%p, %p)\n", encoder, bitstreamBuffer); ++ return origFunctions.nvEncUnlockBitstream(encoder, bitstreamBuffer); ++} ++ ++static NVENCSTATUS WINAPI NvEncLockInputBuffer(void *encoder, NV_ENC_LOCK_INPUT_BUFFER *lockInputBufferParams) ++{ ++ TRACE("(%p, %p)\n", encoder, lockInputBufferParams); ++ return origFunctions.nvEncLockInputBuffer(encoder, lockInputBufferParams); ++} ++ ++static NVENCSTATUS WINAPI NvEncUnlockInputBuffer(void *encoder, NV_ENC_INPUT_PTR inputBuffer) ++{ ++ TRACE("(%p, %p)\n", encoder, inputBuffer); ++ return origFunctions.nvEncUnlockInputBuffer(encoder, inputBuffer); ++} ++ ++static NVENCSTATUS WINAPI NvEncGetEncodeStats(void *encoder, NV_ENC_STAT *encodeStats) ++{ ++ TRACE("(%p, %p)\n", encoder, encodeStats); ++ return origFunctions.nvEncGetEncodeStats(encoder, encodeStats); ++} ++ ++static NVENCSTATUS WINAPI NvEncGetSequenceParams(void *encoder, NV_ENC_SEQUENCE_PARAM_PAYLOAD *sequenceParamPayload) ++{ ++ TRACE("(%p, %p)\n", encoder, sequenceParamPayload); ++ return origFunctions.nvEncGetSequenceParams(encoder, sequenceParamPayload); ++} ++ ++static NVENCSTATUS WINAPI NvEncRegisterAsyncEvent(void *encoder, NV_ENC_EVENT_PARAMS *eventParams) ++{ ++ TRACE("(%p, %p)\n", encoder, eventParams); ++ /* This function will always fail as the linux NVIDIA driver doesn't support async mode */ ++ /* return origFunctions.nvEncRegisterAsyncEvent(encoder, eventParams); */ ++ return NV_ENC_SUCCESS; ++} ++ ++static NVENCSTATUS WINAPI NvEncUnregisterAsyncEvent(void *encoder, NV_ENC_EVENT_PARAMS *eventParams) ++{ ++ TRACE("(%p, %p)\n", encoder, eventParams); ++ /* This function will always fail as the linux NVIDIA driver doesn't support async mode */ ++ /* return origFunctions.nvEncUnregisterAsyncEvent(encoder, eventParams); */ ++ return NV_ENC_SUCCESS; ++} ++ ++static NVENCSTATUS WINAPI NvEncMapInputResource(void *encoder, NV_ENC_MAP_INPUT_RESOURCE *mapInputResParams) ++{ ++ TRACE("(%p, %p)\n", encoder, mapInputResParams); ++ return origFunctions.nvEncMapInputResource(encoder, mapInputResParams); ++} ++ ++static NVENCSTATUS WINAPI NvEncUnmapInputResource(void *encoder, NV_ENC_INPUT_PTR mappedInputBuffer) ++{ ++ TRACE("(%p, %p)\n", encoder, mappedInputBuffer); ++ return origFunctions.nvEncUnmapInputResource(encoder, mappedInputBuffer); ++} ++ ++static NVENCSTATUS WINAPI NvEncDestroyEncoder(void *encoder) ++{ ++ TRACE("(%p)\n", encoder); ++ return origFunctions.nvEncDestroyEncoder(encoder); ++} ++ ++static NVENCSTATUS WINAPI NvEncInvalidateRefFrames(void *encoder, uint64_t invalidRefFrameTimeStamp) ++{ ++ TRACE("(%p, %llu)\n", encoder, invalidRefFrameTimeStamp); ++ return origFunctions.nvEncInvalidateRefFrames(encoder, invalidRefFrameTimeStamp); ++} ++ ++static NVENCSTATUS WINAPI NvEncOpenEncodeSessionEx(NV_ENC_OPEN_ENCODE_SESSION_EX_PARAMS *openSessionExParams, void **encoder) ++{ ++ TRACE("(%p, %p)\n", openSessionExParams, encoder); ++ return origFunctions.nvEncOpenEncodeSessionEx(openSessionExParams, encoder); ++} ++ ++static NVENCSTATUS WINAPI NvEncRegisterResource(void *encoder, NV_ENC_REGISTER_RESOURCE *registerResParams) ++{ ++ TRACE("(%p, %p)\n", encoder, registerResParams); ++ return origFunctions.nvEncRegisterResource(encoder, registerResParams); ++} ++ ++static NVENCSTATUS WINAPI NvEncUnregisterResource(void *encoder, NV_ENC_REGISTERED_PTR registeredResource) ++{ ++ TRACE("(%p, %p)\n", encoder, registeredResource); ++ return origFunctions.nvEncUnregisterResource(encoder, registeredResource); ++} ++ ++static NVENCSTATUS WINAPI NvEncReconfigureEncoder(void *encoder, NV_ENC_RECONFIGURE_PARAMS *reInitEncodeParams) ++{ ++ TRACE("(%p, %p)\n", encoder, reInitEncodeParams); ++ return origFunctions.nvEncReconfigureEncoder(encoder, reInitEncodeParams); ++} ++ ++ ++NVENCSTATUS WINAPI NvEncodeAPICreateInstance(NV_ENCODE_API_FUNCTION_LIST *functionList) ++{ ++ TRACE("(%p)\n", functionList); ++ ++ if (!functionList) ++ return NV_ENC_ERR_INVALID_PTR; ++ ++ /* FIXME: Provide forward/backwards compatibility */ ++ if (functionList->version != NV_ENCODE_API_FUNCTION_LIST_VER) ++ FIXME("Application expects nvencodeapi version %x, but wrapper only supports version %x\n", ++ functionList->version, NV_ENCODE_API_FUNCTION_LIST_VER); ++ ++ /* set all function points and reserved values to zero */ ++ memset(functionList, 0, sizeof(*functionList)); ++ functionList->version = origFunctions.version; ++ ++ #define SET_FUNCPTR(f) if (origFunctions.nv##f) functionList->nv##f = &Nv##f ++ ++ SET_FUNCPTR(EncOpenEncodeSession); ++ SET_FUNCPTR(EncGetEncodeGUIDCount); ++ SET_FUNCPTR(EncGetEncodeProfileGUIDCount); ++ SET_FUNCPTR(EncGetEncodeProfileGUIDs); ++ SET_FUNCPTR(EncGetEncodeGUIDs); ++ SET_FUNCPTR(EncGetInputFormatCount); ++ SET_FUNCPTR(EncGetInputFormats); ++ SET_FUNCPTR(EncGetEncodeCaps); ++ SET_FUNCPTR(EncGetEncodePresetCount); ++ SET_FUNCPTR(EncGetEncodePresetGUIDs); ++ SET_FUNCPTR(EncGetEncodePresetConfig); ++ SET_FUNCPTR(EncInitializeEncoder); ++ SET_FUNCPTR(EncCreateInputBuffer); ++ SET_FUNCPTR(EncDestroyInputBuffer); ++ SET_FUNCPTR(EncCreateBitstreamBuffer); ++ SET_FUNCPTR(EncDestroyBitstreamBuffer); ++ SET_FUNCPTR(EncEncodePicture); ++ SET_FUNCPTR(EncLockBitstream); ++ SET_FUNCPTR(EncUnlockBitstream); ++ SET_FUNCPTR(EncLockInputBuffer); ++ SET_FUNCPTR(EncUnlockInputBuffer); ++ SET_FUNCPTR(EncGetEncodeStats); ++ SET_FUNCPTR(EncGetSequenceParams); ++ SET_FUNCPTR(EncRegisterAsyncEvent); ++ SET_FUNCPTR(EncUnregisterAsyncEvent); ++ SET_FUNCPTR(EncMapInputResource); ++ SET_FUNCPTR(EncUnmapInputResource); ++ SET_FUNCPTR(EncDestroyEncoder); ++ SET_FUNCPTR(EncInvalidateRefFrames); ++ SET_FUNCPTR(EncOpenEncodeSessionEx); ++ SET_FUNCPTR(EncRegisterResource); ++ SET_FUNCPTR(EncUnregisterResource); ++ SET_FUNCPTR(EncReconfigureEncoder); ++ ++ #undef SET_FUNCPTR ++ ++ return NV_ENC_SUCCESS; ++} ++ ++static BOOL load_nvencode(void) ++{ ++ libnvidia_encode_handle = wine_dlopen("libnvidia-encode.so", RTLD_NOW, NULL, 0); ++ if (!libnvidia_encode_handle) ++ { ++ FIXME("Wine cannot find the libnvidia-encode.so library, NVIDIA video encoding support disabled.\n"); ++ return FALSE; ++ } ++ ++ pNvEncodeAPICreateInstance = wine_dlsym(libnvidia_encode_handle, "NvEncodeAPICreateInstance", NULL, 0); ++ if (!pNvEncodeAPICreateInstance) ++ { ++ FIXME("Can't find symbol NvEncodeAPICreateInstance.\n"); ++ return FALSE; ++ } ++ ++ memset(&origFunctions, 0, sizeof(origFunctions)); ++ origFunctions.version = NV_ENCODE_API_FUNCTION_LIST_VER; ++ if (pNvEncodeAPICreateInstance(&origFunctions)) ++ { ++ FIXME("Failed to get function pointers.\n"); ++ return FALSE; ++ } ++ ++ return TRUE; ++} ++ ++BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved) ++{ ++ TRACE("(%p, %u, %p)\n", instance, reason, reserved); ++ ++ switch (reason) ++ { ++ case DLL_PROCESS_ATTACH: ++ DisableThreadLibraryCalls(instance); ++ if (!load_nvencode()) return FALSE; ++ break; ++ case DLL_PROCESS_DETACH: ++ if (reserved) break; ++ if (libnvidia_encode_handle) ++ wine_dlclose(libnvidia_encode_handle, NULL, 0); ++ break; ++ } ++ ++ return TRUE; ++} +diff --git a/dlls/nvencodeapi/nvencodeapi.spec b/dlls/nvencodeapi/nvencodeapi.spec +new file mode 100644 +index 0000000..11d74e8 +--- /dev/null ++++ b/dlls/nvencodeapi/nvencodeapi.spec +@@ -0,0 +1 @@ ++@ stdcall NvEncodeAPICreateInstance(ptr) +diff --git a/dlls/nvencodeapi64/Makefile.in b/dlls/nvencodeapi64/Makefile.in +new file mode 100644 +index 0000000..8297ec3 +--- /dev/null ++++ b/dlls/nvencodeapi64/Makefile.in +@@ -0,0 +1,5 @@ ++MODULE = nvencodeapi64.dll ++PARENTSRC = ../nvencodeapi ++ ++C_SRCS = \ ++ nvencodeapi.c +diff --git a/dlls/nvencodeapi64/nvencodeapi64.spec b/dlls/nvencodeapi64/nvencodeapi64.spec +new file mode 100644 +index 0000000..11d74e8 +--- /dev/null ++++ b/dlls/nvencodeapi64/nvencodeapi64.spec +@@ -0,0 +1 @@ ++@ stdcall NvEncodeAPICreateInstance(ptr) +diff --git a/include/Makefile.in b/include/Makefile.in +index 72443e8..bc9148d 100644 +--- a/include/Makefile.in ++++ b/include/Makefile.in +@@ -482,6 +482,7 @@ SRCDIR_INCLUDES = \ + ntstatus.h \ + nvapi.h \ + nvcuvid.h \ ++ nvencodeapi.h \ + objbase.h \ + objsel.h \ + odbcinst.h \ +diff --git a/include/nvencodeapi.h b/include/nvencodeapi.h +new file mode 100644 +index 0000000..45e9fb9 +--- /dev/null ++++ b/include/nvencodeapi.h +@@ -0,0 +1,281 @@ ++/* ++ * Copyright (C) 2015 Michael Müller ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with this library; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#include ++#include ++ ++#ifndef __WINE_NVENCODEAPI_H ++#define __WINE_NVENCODEAPI_H ++ ++#define NVENCAPI_MAJOR_VERSION 5 ++#define NVENCAPI_MINOR_VERSION 0 ++#define NVENCAPI_VERSION ((NVENCAPI_MAJOR_VERSION << 4) | (NVENCAPI_MINOR_VERSION)) ++#define NVENCAPI_STRUCT_VERSION(type, version) (uint32_t)(sizeof(type) | ((version)<<16) | (NVENCAPI_VERSION << 24)) ++ ++#define NVENCSTATUS int ++#define NV_ENC_SUCCESS 0 ++#define NV_ENC_ERR_INVALID_PTR 6 ++#define NV_ENC_ERR_UNSUPPORTED_PARAM 12 ++#define NV_ENC_ERR_INVALID_VERSION 15 ++ ++typedef void *NV_ENC_INPUT_PTR; ++typedef void *NV_ENC_OUTPUT_PTR; ++typedef void *NV_ENC_REGISTERED_PTR; ++ ++typedef struct _NV_ENC_CAPS_PARAM NV_ENC_CAPS_PARAM; ++typedef struct _NV_ENC_CREATE_INPUT_BUFFER NV_ENC_CREATE_INPUT_BUFFER; ++typedef struct _NV_ENC_CREATE_BITSTREAM_BUFFER NV_ENC_CREATE_BITSTREAM_BUFFER; ++typedef struct _NV_ENC_QP NV_ENC_QP; ++typedef struct _NV_ENC_RC_PARAMS NV_ENC_RC_PARAMS; ++typedef struct _NV_ENC_CONFIG_H264_VUI_PARAMETERS NV_ENC_CONFIG_H264_VUI_PARAMETERS; ++typedef struct _NV_ENC_CONFIG_H264 NV_ENC_CONFIG_H264; ++typedef struct _NV_ENC_CONFIG_HEVC NV_ENC_CONFIG_HEVC; ++typedef struct _NV_ENC_CONFIG NV_ENC_CONFIG; ++typedef struct _NV_ENC_RECONFIGURE_PARAMS NV_ENC_RECONFIGURE_PARAMS; ++typedef struct _NV_ENC_PRESET_CONFIG NV_ENC_PRESET_CONFIG; ++typedef struct _NV_ENC_H264_SEI_PAYLOAD NV_ENC_H264_SEI_PAYLOAD; ++typedef struct _NV_ENC_LOCK_BITSTREAM NV_ENC_LOCK_BITSTREAM; ++typedef struct _NV_ENC_LOCK_INPUT_BUFFER NV_ENC_LOCK_INPUT_BUFFER; ++typedef struct _NV_ENC_MAP_INPUT_RESOURCE NV_ENC_MAP_INPUT_RESOURCE; ++typedef struct _NV_ENC_REGISTER_RESOURCE NV_ENC_REGISTER_RESOURCE; ++typedef struct _NV_ENC_STAT NV_ENC_STAT; ++typedef struct _NV_ENC_SEQUENCE_PARAM_PAYLOAD NV_ENC_SEQUENCE_PARAM_PAYLOAD; ++typedef struct _NV_ENC_EVENT_PARAMS NV_ENC_EVENT_PARAMS; ++typedef struct _NV_ENC_OPEN_ENCODE_SESSIONEX_PARAMS NV_ENC_OPEN_ENCODE_SESSIONEX_PARAMS; ++typedef struct _NV_ENC_BUFFER_FORMAT NV_ENC_BUFFER_FORMAT; ++typedef struct _NV_ENC_OPEN_ENCODE_SESSION_EX_PARAMS NV_ENC_OPEN_ENCODE_SESSION_EX_PARAMS; ++ ++typedef struct _NVENC_EXTERNAL_ME_HINT_COUNTS_PER_BLOCKTYPE ++{ ++ uint32_t numCandsPerBlk16x16 : 4; ++ uint32_t numCandsPerBlk16x8 : 4; ++ uint32_t numCandsPerBlk8x16 : 4; ++ uint32_t numCandsPerBlk8x8 : 4; ++ uint32_t reserved : 16; ++ uint32_t reserved1[3]; ++} NVENC_EXTERNAL_ME_HINT_COUNTS_PER_BLOCKTYPE; ++ ++typedef struct _NV_ENC_INITIALIZE_PARAMS ++{ ++ uint32_t version; ++ GUID encodeGUID; ++ GUID presetGUID; ++ uint32_t encodeWidth; ++ uint32_t encodeHeight; ++ uint32_t darWidth; ++ uint32_t darHeight; ++ uint32_t frameRateNum; ++ uint32_t frameRateDen; ++ uint32_t enableEncodeAsync; ++ uint32_t enablePTD; ++ uint32_t reportSliceOffsets : 1; ++ uint32_t enableSubFrameWrite : 1; ++ uint32_t enableExternalMEHints : 1; ++ uint32_t reservedBitFields : 29; ++ uint32_t privDataSize; ++ void *privData; ++ void *encodeConfig; ++ uint32_t maxEncodeWidth; ++ uint32_t maxEncodeHeight; ++ NVENC_EXTERNAL_ME_HINT_COUNTS_PER_BLOCKTYPE maxMEHintCountsPerBlock[2]; ++ uint32_t reserved[289]; ++ void *reserved2[64]; ++} NV_ENC_INITIALIZE_PARAMS; ++ ++typedef struct _NV_ENC_PIC_PARAMS_H264 ++{ ++ uint32_t displayPOCSyntax; ++ uint32_t reserved3; ++ uint32_t refPicFlag; ++ uint32_t colourPlaneId; ++ uint32_t forceIntraRefreshWithFrameCnt; ++ uint32_t constrainedFrame : 1; ++ uint32_t sliceModeDataUpdate : 1; ++ uint32_t ltrMarkFrame : 1; ++ uint32_t ltrUseFrames : 1; ++ uint32_t reservedBitFields : 28; ++ uint8_t *sliceTypeData; ++ uint32_t sliceTypeArrayCnt; ++ uint32_t seiPayloadArrayCnt; ++ NV_ENC_H264_SEI_PAYLOAD *seiPayloadArray; ++ uint32_t sliceMode; ++ uint32_t sliceModeData; ++ uint32_t ltrMarkFrameIdx; ++ uint32_t ltrUseFrameBitmap; ++ uint32_t ltrUsageMode; ++ uint32_t reserved[243]; ++ void *reserved2[62]; ++} NV_ENC_PIC_PARAMS_H264; ++ ++typedef struct _NV_ENC_PIC_PARAMS_HEVC ++{ ++ uint32_t displayPOCSyntax; ++ uint32_t refPicFlag; ++ uint32_t temporalId; ++ uint32_t forceIntraRefreshWithFrameCnt; ++ uint32_t constrainedFrame : 1; ++ uint32_t sliceModeDataUpdate : 1; ++ uint32_t ltrMarkFrame : 1; ++ uint32_t ltrUseFrames : 1; ++ uint32_t reservedBitFields : 28; ++ uint8_t *sliceTypeData; ++ uint32_t sliceTypeArrayCnt; ++ uint32_t sliceMode; ++ uint32_t sliceModeData; ++ uint32_t ltrMarkFrameIdx; ++ uint32_t ltrUseFrameBitmap; ++ uint32_t ltrUsageMode; ++ uint32_t reserved[246]; ++ void *reserved2[62]; ++} NV_ENC_PIC_PARAMS_HEVC; ++ ++typedef union _NV_ENC_CODEC_PIC_PARAMS ++{ ++ NV_ENC_PIC_PARAMS_H264 h264PicParams; ++ NV_ENC_PIC_PARAMS_HEVC hevcPicParams; ++ uint32_t reserved[256]; ++} NV_ENC_CODEC_PIC_PARAMS; ++ ++struct _NVENC_EXTERNAL_ME_HINT ++{ ++ int32_t mvx : 12; ++ int32_t mvy : 10; ++ int32_t refidx : 5; ++ int32_t dir : 1; ++ int32_t partType : 2; ++ int32_t lastofPart : 1; ++ int32_t lastOfMB : 1; ++}; ++ ++typedef struct _NV_ENC_PIC_PARAMS ++{ ++ uint32_t version; ++ uint32_t inputWidth; ++ uint32_t inputHeight; ++ uint32_t inputPitch; ++ uint32_t encodePicFlags; ++ uint32_t frameIdx; ++ uint64_t inputTimeStamp; ++ uint64_t inputDuration; ++ void *inputBuffer; ++ void *outputBitstream; ++ void *completionEvent; ++ int bufferFmt; ++ int pictureStruct; ++ int pictureType; ++ NV_ENC_CODEC_PIC_PARAMS codecPicParams; ++ struct _NVENC_EXTERNAL_ME_HINT_COUNTS_PER_BLOCKTYPE meHintCountsPerBlock[2]; ++ struct _NVENC_EXTERNAL_ME_HINT *meExternalHints; ++ uint32_t reserved1[6]; ++ void *reserved2[2]; ++ int8_t *qpDeltaMap; ++ uint32_t qpDeltaMapSize; ++ uint32_t reservedBitFields; ++ uint32_t reserved3[287]; ++ void *reserved4[60]; ++} NV_ENC_PIC_PARAMS; ++ ++typedef struct __NV_ENCODE_API_FUNCTION_LIST ++{ ++ uint32_t version; ++ uint32_t reserved; ++ NVENCSTATUS (WINAPI *nvEncOpenEncodeSession)(void *device, uint32_t deviceType, void **encoder); ++ NVENCSTATUS (WINAPI *nvEncGetEncodeGUIDCount)(void *encoder, uint32_t *encodeGUIDCount); ++ NVENCSTATUS (WINAPI *nvEncGetEncodeProfileGUIDCount)(void *encoder, GUID encodeGUID, uint32_t *encodePresetGUIDCount); ++ NVENCSTATUS (WINAPI *nvEncGetEncodeProfileGUIDs)(void *encoder, GUID encodeGUID, GUID *presetGUIDs, uint32_t guidArraySize, ++ uint32_t *encodePresetGUIDCount); ++ NVENCSTATUS (WINAPI *nvEncGetEncodeGUIDs)(void *encoder, GUID *GUIDs, uint32_t guidArraySize, uint32_t *GUIDCount); ++ NVENCSTATUS (WINAPI *nvEncGetInputFormatCount)(void *encoder, GUID encodeGUID, uint32_t *inputFmtCount); ++ NVENCSTATUS (WINAPI *nvEncGetInputFormats)(void *encoder, GUID encodeGUID, NV_ENC_BUFFER_FORMAT *inputFmts, ++ uint32_t inputFmtArraySize, uint32_t *inputFmtCount); ++ NVENCSTATUS (WINAPI *nvEncGetEncodeCaps)(void *encoder, GUID encodeGUID, NV_ENC_CAPS_PARAM *capsParam, int *capsVal); ++ NVENCSTATUS (WINAPI *nvEncGetEncodePresetCount)(void *encoder, GUID encodeGUID, uint32_t *encodePresetGUIDCount); ++ NVENCSTATUS (WINAPI *nvEncGetEncodePresetGUIDs)(void *encoder, GUID encodeGUID, GUID *presetGUIDs, uint32_t guidArraySize, ++ uint32_t *encodePresetGUIDCount); ++ NVENCSTATUS (WINAPI *nvEncGetEncodePresetConfig)(void *encoder, GUID encodeGUID, GUID presetGUID, NV_ENC_PRESET_CONFIG *presetConfig); ++ NVENCSTATUS (WINAPI *nvEncInitializeEncoder)(void *encoder, NV_ENC_INITIALIZE_PARAMS *createEncodeParams); ++ NVENCSTATUS (WINAPI *nvEncCreateInputBuffer)(void *encoder, NV_ENC_CREATE_INPUT_BUFFER *createInputBufferParams); ++ NVENCSTATUS (WINAPI *nvEncDestroyInputBuffer)(void *encoder, NV_ENC_INPUT_PTR inputBuffer); ++ NVENCSTATUS (WINAPI *nvEncCreateBitstreamBuffer)(void *encoder, NV_ENC_CREATE_BITSTREAM_BUFFER *createBitstreamBufferParams); ++ NVENCSTATUS (WINAPI *nvEncDestroyBitstreamBuffer)(void *encoder, NV_ENC_OUTPUT_PTR bitstreamBuffer); ++ NVENCSTATUS (WINAPI *nvEncEncodePicture)(void *encoder, NV_ENC_PIC_PARAMS *encodePicParams); ++ NVENCSTATUS (WINAPI *nvEncLockBitstream)(void *encoder, NV_ENC_LOCK_BITSTREAM *lockBitstreamBufferParams); ++ NVENCSTATUS (WINAPI *nvEncUnlockBitstream)(void *encoder, NV_ENC_OUTPUT_PTR bitstreamBuffer); ++ NVENCSTATUS (WINAPI *nvEncLockInputBuffer)(void *encoder, NV_ENC_LOCK_INPUT_BUFFER *lockInputBufferParams); ++ NVENCSTATUS (WINAPI *nvEncUnlockInputBuffer)(void *encoder, NV_ENC_INPUT_PTR inputBuffer); ++ NVENCSTATUS (WINAPI *nvEncGetEncodeStats)(void *encoder, NV_ENC_STAT *encodeStats); ++ NVENCSTATUS (WINAPI *nvEncGetSequenceParams)(void *encoder, NV_ENC_SEQUENCE_PARAM_PAYLOAD *hsequenceParamPayload); ++ NVENCSTATUS (WINAPI *nvEncRegisterAsyncEvent)(void *encoder, NV_ENC_EVENT_PARAMS *eventParams); ++ NVENCSTATUS (WINAPI *nvEncUnregisterAsyncEvent)(void *encoder, NV_ENC_EVENT_PARAMS *eventParams); ++ NVENCSTATUS (WINAPI *nvEncMapInputResource)(void *encoder, NV_ENC_MAP_INPUT_RESOURCE *mapInputResParams); ++ NVENCSTATUS (WINAPI *nvEncUnmapInputResource)(void *encoder, NV_ENC_INPUT_PTR mappedInputBuffer); ++ NVENCSTATUS (WINAPI *nvEncDestroyEncoder)(void *encoder); ++ NVENCSTATUS (WINAPI *nvEncInvalidateRefFrames)(void *encoder, uint64_t invalidRefFrameTimeStamp); ++ NVENCSTATUS (WINAPI *nvEncOpenEncodeSessionEx)(NV_ENC_OPEN_ENCODE_SESSION_EX_PARAMS *openSessionExParams, void **encoder); ++ NVENCSTATUS (WINAPI *nvEncRegisterResource)(void *encoder, NV_ENC_REGISTER_RESOURCE *registerResParams); ++ NVENCSTATUS (WINAPI *nvEncUnregisterResource)(void *encoder, NV_ENC_REGISTERED_PTR registeredRes); ++ NVENCSTATUS (WINAPI *nvEncReconfigureEncoder)(void *encoder, NV_ENC_RECONFIGURE_PARAMS *reInitEncodeParams); ++ void *reserved2[285]; ++} NV_ENCODE_API_FUNCTION_LIST; ++ ++#define NV_ENCODE_API_FUNCTION_LIST_VER NVENCAPI_STRUCT_VERSION(NV_ENCODE_API_FUNCTION_LIST, 2) ++ ++typedef struct __LINUX_NV_ENCODE_API_FUNCTION_LIST ++{ ++ uint32_t version; ++ uint32_t reserved; ++ NVENCSTATUS (*nvEncOpenEncodeSession)(void *device, uint32_t deviceType, void **encoder); ++ NVENCSTATUS (*nvEncGetEncodeGUIDCount)(void *encoder, uint32_t *encodeGUIDCount); ++ NVENCSTATUS (*nvEncGetEncodeProfileGUIDCount)(void *encoder, GUID encodeGUID, uint32_t *encodePresetGUIDCount); ++ NVENCSTATUS (*nvEncGetEncodeProfileGUIDs)(void *encoder, GUID encodeGUID, GUID *presetGUIDs, uint32_t guidArraySize, ++ uint32_t *encodePresetGUIDCount); ++ NVENCSTATUS (*nvEncGetEncodeGUIDs)(void *encoder, GUID *GUIDs, uint32_t guidArraySize, uint32_t *GUIDCount); ++ NVENCSTATUS (*nvEncGetInputFormatCount)(void *encoder, GUID encodeGUID, uint32_t *inputFmtCount); ++ NVENCSTATUS (*nvEncGetInputFormats)(void *encoder, GUID encodeGUID, NV_ENC_BUFFER_FORMAT *inputFmts, ++ uint32_t inputFmtArraySize, uint32_t *inputFmtCount); ++ NVENCSTATUS (*nvEncGetEncodeCaps)(void *encoder, GUID encodeGUID, NV_ENC_CAPS_PARAM *capsParam, int *capsVal); ++ NVENCSTATUS (*nvEncGetEncodePresetCount)(void *encoder, GUID encodeGUID, uint32_t *encodePresetGUIDCount); ++ NVENCSTATUS (*nvEncGetEncodePresetGUIDs)(void *encoder, GUID encodeGUID, GUID *presetGUIDs, uint32_t guidArraySize, ++ uint32_t *encodePresetGUIDCount); ++ NVENCSTATUS (*nvEncGetEncodePresetConfig)(void *encoder, GUID encodeGUID, GUID presetGUID, NV_ENC_PRESET_CONFIG *presetConfig); ++ NVENCSTATUS (*nvEncInitializeEncoder)(void *encoder, NV_ENC_INITIALIZE_PARAMS *createEncodeParams); ++ NVENCSTATUS (*nvEncCreateInputBuffer)(void *encoder, NV_ENC_CREATE_INPUT_BUFFER *createInputBufferParams); ++ NVENCSTATUS (*nvEncDestroyInputBuffer)(void *encoder, NV_ENC_INPUT_PTR inputBuffer); ++ NVENCSTATUS (*nvEncCreateBitstreamBuffer)(void *encoder, NV_ENC_CREATE_BITSTREAM_BUFFER *createBitstreamBufferParams); ++ NVENCSTATUS (*nvEncDestroyBitstreamBuffer)(void *encoder, NV_ENC_OUTPUT_PTR bitstreamBuffer); ++ NVENCSTATUS (*nvEncEncodePicture)(void *encoder, NV_ENC_PIC_PARAMS *encodePicParams); ++ NVENCSTATUS (*nvEncLockBitstream)(void *encoder, NV_ENC_LOCK_BITSTREAM *lockBitstreamBufferParams); ++ NVENCSTATUS (*nvEncUnlockBitstream)(void *encoder, NV_ENC_OUTPUT_PTR bitstreamBuffer); ++ NVENCSTATUS (*nvEncLockInputBuffer)(void *encoder, NV_ENC_LOCK_INPUT_BUFFER *lockInputBufferParams); ++ NVENCSTATUS (*nvEncUnlockInputBuffer)(void *encoder, NV_ENC_INPUT_PTR inputBuffer); ++ NVENCSTATUS (*nvEncGetEncodeStats)(void *encoder, NV_ENC_STAT *encodeStats); ++ NVENCSTATUS (*nvEncGetSequenceParams)(void *encoder, NV_ENC_SEQUENCE_PARAM_PAYLOAD *hsequenceParamPayload); ++ NVENCSTATUS (*nvEncRegisterAsyncEvent)(void *encoder, NV_ENC_EVENT_PARAMS *eventParams); ++ NVENCSTATUS (*nvEncUnregisterAsyncEvent)(void *encoder, NV_ENC_EVENT_PARAMS *eventParams); ++ NVENCSTATUS (*nvEncMapInputResource)(void *encoder, NV_ENC_MAP_INPUT_RESOURCE *mapInputResParams); ++ NVENCSTATUS (*nvEncUnmapInputResource)(void *encoder, NV_ENC_INPUT_PTR mappedInputBuffer); ++ NVENCSTATUS (*nvEncDestroyEncoder)(void *encoder); ++ NVENCSTATUS (*nvEncInvalidateRefFrames)(void *encoder, uint64_t invalidRefFrameTimeStamp); ++ NVENCSTATUS (*nvEncOpenEncodeSessionEx)(NV_ENC_OPEN_ENCODE_SESSION_EX_PARAMS *openSessionExParams, void **encoder); ++ NVENCSTATUS (*nvEncRegisterResource)(void *encoder, NV_ENC_REGISTER_RESOURCE *registerResParams); ++ NVENCSTATUS (*nvEncUnregisterResource)(void *encoder, NV_ENC_REGISTERED_PTR registeredRes); ++ NVENCSTATUS (*nvEncReconfigureEncoder)(void *encoder, NV_ENC_RECONFIGURE_PARAMS *reInitEncodeParams); ++ void *reserved2[285]; ++} LINUX_NV_ENCODE_API_FUNCTION_LIST; ++ ++#endif /* __WINE_NVENCODEAPI_H */ +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/nvencodeapi-Video_Encoder/definition wine-staging-1.7.36~ubuntu12.04.1/patches/nvencodeapi-Video_Encoder/definition --- wine-staging-1.7.35~ubuntu12.04.1/patches/nvencodeapi-Video_Encoder/definition 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/nvencodeapi-Video_Encoder/definition 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,2 @@ +Fixes: Support for NVIDIA video encoder library (nvencodeapi) +Depends: nvcuvid-CUDA_Video_Support diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/patchinstall.sh wine-staging-1.7.36~ubuntu12.04.1/patches/patchinstall.sh --- wine-staging-1.7.35~ubuntu12.04.1/patches/patchinstall.sh 2015-01-24 15:32:20.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/patchinstall.sh 2015-02-08 20:46:30.000000000 +0000 @@ -53,6 +53,12 @@ exit 1 } +# Show a warning +warning() +{ + echo "WARNING: $1" >&2 +} + # Enable or disable all patchsets patch_enable_all () { @@ -76,7 +82,6 @@ enable_d3dx9_36_Texture_Align="$1" enable_d3dx9_36_UpdateSkinnedMesh="$1" enable_dbghelp_Debug_Symbols="$1" - enable_dbghelp_KdHelp="$1" enable_ddraw_d3d_execute_buffer="$1" enable_dinput_Events="$1" enable_dpvoice_GetCompressionTypes="$1" @@ -85,6 +90,7 @@ enable_fonts_Missing_Fonts="$1" enable_gdi32_MaxPixelFormats="$1" enable_gdi32_MultiMonitor="$1" + enable_gdi32_OSMesaMakeCurrent="$1" enable_gdiplus_GdipCreateRegionRgnData="$1" enable_imagehlp_BindImageEx="$1" enable_imm32_Cross_Thread_Access="$1" @@ -103,6 +109,7 @@ enable_kernel32_VerifyVersionInfo="$1" enable_libs_Unicode_Collation="$1" enable_makedep_PARENTSPEC="$1" + enable_mmdevapi_AEV_GetVolumeRange="$1" enable_msvcp90_basic_string_wchar_dtor="$1" enable_msvcrt_atof_strtod="$1" enable_msvfw32_Image_Size="$1" @@ -123,18 +130,22 @@ enable_ntdll_NtSetLdtEntries="$1" enable_ntdll_Pipe_SpecialCharacters="$1" enable_ntdll_RtlIpv4StringToAddressExA="$1" + enable_ntdll_RtlUnwindEx="$1" enable_ntdll_ThreadTime="$1" enable_ntdll_User_Shared_Data="$1" + enable_ntdll_Vista_Threadpool="$1" enable_ntdll_WRITECOPY="$1" enable_ntdll_WinSqm="$1" enable_ntoskrnl_DriverTest="$1" enable_ntoskrnl_Emulator="$1" - enable_ntoskrnl_KeWaitForMultipleObjects="$1" + enable_ntoskrnl_Stubs="$1" enable_nvapi_Stub_DLL="$1" enable_nvcuda_CUDA_Support="$1" enable_nvcuvid_CUDA_Video_Support="$1" + enable_nvencodeapi_Video_Encoder="$1" enable_ole32_CoWaitForMultipleHandles="$1" enable_quartz_MediaSeeking_Positions="$1" + enable_reg_Cleanup="$1" enable_regedit_String_Termination="$1" enable_riched20_IText_Interface="$1" enable_secur32_Schannel_ContextAttr="$1" @@ -167,24 +178,30 @@ enable_user32_Mouse_Message_Hwnd="$1" enable_user32_ScrollWindowEx="$1" enable_user32_WndProc="$1" + enable_vcomp_Stub_Functions="$1" enable_windowscodecs_TGA_Decoder="$1" + enable_wine_inf_Performance="$1" enable_wineboot_HKEY_DYN_DATA="$1" enable_winebuild_LinkerVersion="$1" + enable_winecfg_Libraries="$1" enable_winecfg_Staging="$1" enable_wined3d_CSMT_Helper="$1" enable_wined3d_CSMT_Main="$1" enable_wined3d_DXTn="$1" enable_wined3d_Revert_PixelFormat="$1" + enable_winedevice_DriverUnload="$1" enable_winedevice_Fix_Relocation="$1" enable_winemenubuilder_Desktop_Icon_Path="$1" enable_winepulse_PulseAudio_Support="$1" enable_winex11_CandidateWindowPos="$1" enable_winex11_Clipboard_HTML="$1" + enable_winex11_RawEventWarp="$1" enable_winex11_Window_Groups="$1" enable_winex11_Window_Style="$1" enable_winex11_XEMBED="$1" enable_winex11_wglShareLists="$1" enable_wininet_encoding="$1" + enable_winmm_Delay_Import_Depends="$1" enable_wpcap_Dynamic_Linking="$1" enable_ws2_32_Connect_Time="$1" enable_ws2_32_TransmitFile="$1" @@ -257,9 +274,6 @@ dbghelp-Debug_Symbols) enable_dbghelp_Debug_Symbols="$2" ;; - dbghelp-KdHelp) - enable_dbghelp_KdHelp="$2" - ;; ddraw-d3d_execute_buffer) enable_ddraw_d3d_execute_buffer="$2" ;; @@ -284,6 +298,9 @@ gdi32-MultiMonitor) enable_gdi32_MultiMonitor="$2" ;; + gdi32-OSMesaMakeCurrent) + enable_gdi32_OSMesaMakeCurrent="$2" + ;; gdiplus-GdipCreateRegionRgnData) enable_gdiplus_GdipCreateRegionRgnData="$2" ;; @@ -338,6 +355,9 @@ makedep-PARENTSPEC) enable_makedep_PARENTSPEC="$2" ;; + mmdevapi-AEV_GetVolumeRange) + enable_mmdevapi_AEV_GetVolumeRange="$2" + ;; msvcp90-basic_string_wchar_dtor) enable_msvcp90_basic_string_wchar_dtor="$2" ;; @@ -398,12 +418,18 @@ ntdll-RtlIpv4StringToAddressExA) enable_ntdll_RtlIpv4StringToAddressExA="$2" ;; + ntdll-RtlUnwindEx) + enable_ntdll_RtlUnwindEx="$2" + ;; ntdll-ThreadTime) enable_ntdll_ThreadTime="$2" ;; ntdll-User_Shared_Data) enable_ntdll_User_Shared_Data="$2" ;; + ntdll-Vista_Threadpool) + enable_ntdll_Vista_Threadpool="$2" + ;; ntdll-WRITECOPY) enable_ntdll_WRITECOPY="$2" ;; @@ -416,8 +442,8 @@ ntoskrnl-Emulator) enable_ntoskrnl_Emulator="$2" ;; - ntoskrnl-KeWaitForMultipleObjects) - enable_ntoskrnl_KeWaitForMultipleObjects="$2" + ntoskrnl-Stubs) + enable_ntoskrnl_Stubs="$2" ;; nvapi-Stub_DLL) enable_nvapi_Stub_DLL="$2" @@ -428,12 +454,18 @@ nvcuvid-CUDA_Video_Support) enable_nvcuvid_CUDA_Video_Support="$2" ;; + nvencodeapi-Video_Encoder) + enable_nvencodeapi_Video_Encoder="$2" + ;; ole32-CoWaitForMultipleHandles) enable_ole32_CoWaitForMultipleHandles="$2" ;; quartz-MediaSeeking_Positions) enable_quartz_MediaSeeking_Positions="$2" ;; + reg-Cleanup) + enable_reg_Cleanup="$2" + ;; regedit-String_Termination) enable_regedit_String_Termination="$2" ;; @@ -530,15 +562,24 @@ user32-WndProc) enable_user32_WndProc="$2" ;; + vcomp-Stub_Functions) + enable_vcomp_Stub_Functions="$2" + ;; windowscodecs-TGA_Decoder) enable_windowscodecs_TGA_Decoder="$2" ;; + wine.inf-Performance) + enable_wine_inf_Performance="$2" + ;; wineboot-HKEY_DYN_DATA) enable_wineboot_HKEY_DYN_DATA="$2" ;; winebuild-LinkerVersion) enable_winebuild_LinkerVersion="$2" ;; + winecfg-Libraries) + enable_winecfg_Libraries="$2" + ;; winecfg-Staging) enable_winecfg_Staging="$2" ;; @@ -554,6 +595,9 @@ wined3d-Revert_PixelFormat) enable_wined3d_Revert_PixelFormat="$2" ;; + winedevice-DriverUnload) + enable_winedevice_DriverUnload="$2" + ;; winedevice-Fix_Relocation) enable_winedevice_Fix_Relocation="$2" ;; @@ -569,6 +613,9 @@ winex11-Clipboard_HTML) enable_winex11_Clipboard_HTML="$2" ;; + winex11-RawEventWarp) + enable_winex11_RawEventWarp="$2" + ;; winex11-Window_Groups) enable_winex11_Window_Groups="$2" ;; @@ -584,6 +631,9 @@ wininet-encoding) enable_wininet_encoding="$2" ;; + winmm-Delay_Import_Depends) + enable_winmm_Delay_Import_Depends="$2" + ;; wpcap-Dynamic_Linking) enable_wpcap_Dynamic_Linking="$2" ;; @@ -708,7 +758,7 @@ # are applied, but the exitcode is zero. To avoid broken builds we # will workaround this issue or abort. For more information see # https://github.com/wine-compholio/wine-staging/issues/7 -test ! -d "$DESTDIR/.git" && (cd "$DESTDIR"; git rev-parse --git-dir) &> /dev/null +test ! -d ".git" && git rev-parse --git-dir >/dev/null 2>&1 workaround_git_bug="$?" # Apply the patches using gitapply.sh, a small wrapper around 'patch' @@ -737,9 +787,9 @@ gitapply_args="" fi - if ! command -v epatch &> /dev/null || \ - ! command -v ebegin &> /dev/null || \ - ! command -v eend &> /dev/null; then + if ! command -v epatch >/dev/null 2>&1 || \ + ! command -v ebegin >/dev/null 2>&1 || \ + ! command -v eend >/dev/null 2>&1; then abort "Shell functions epatch/ebegin/eend not found. You have to source this script from your ebuild." fi @@ -868,6 +918,13 @@ enable_ntdll_DOS_Attributes=1 fi +if test "$enable_nvencodeapi_Video_Encoder" -eq 1; then + if test "$enable_nvcuvid_CUDA_Video_Support" -gt 1; then + abort "Patchset nvcuvid-CUDA_Video_Support disabled, but nvencodeapi-Video_Encoder depends on that." + fi + enable_nvcuvid_CUDA_Video_Support=1 +fi + if test "$enable_nvcuvid_CUDA_Video_Support" -eq 1; then if test "$enable_nvapi_Stub_DLL" -gt 1; then abort "Patchset nvapi-Stub_DLL disabled, but nvcuvid-CUDA_Video_Support depends on that." @@ -927,9 +984,14 @@ # If autoupdate is enabled then create a tempfile to keep track of all patches if test "$enable_patchlist" -eq 1; then - patchlist=$(mktemp) - if test ! -f "$patchlist"; then - abort "Unable to create temporary file for patchlist." + if test "$enable_Staging" -eq 1; then + patchlist=$(mktemp) + if test ! -f "$patchlist"; then + abort "Unable to create temporary file for patchlist." + fi + else + warning "Skipping generation of patchlist because 'Staging' patchset is disabled." + enable_patchlist=0 fi fi @@ -1333,21 +1395,6 @@ ) >> "$patchlist" fi -# Patchset dbghelp-KdHelp -# | -# | This patchset fixes the following Wine bugs: -# | * [#37272] Don't fill KdHelp structure for usermode applications -# | -# | Modified files: -# | * dlls/dbghelp/stack.c -# | -if test "$enable_dbghelp_KdHelp" -eq 1; then - patch_apply dbghelp-KdHelp/0001-dbghelp-Don-t-fill-KdHelp-structure-for-usermode-app.patch - ( - echo '+ { "Sebastian Lackner", "dbghelp: Don'\''t fill KdHelp structure for usermode applications.", 1 },'; - ) >> "$patchlist" -fi - # Patchset ddraw-d3d_execute_buffer # | # | Modified files: @@ -1367,12 +1414,12 @@ # | * [#34559] Scrolling causes mouse and screen to lock in Call to Power II # | # | Modified files: -# | * dlls/dinput/device.c, dlls/dinput/keyboard.c, dlls/user32/input.c, dlls/user32/user32.spec, include/winuser.h +# | * dlls/dinput/keyboard.c, dlls/dinput/mouse.c, dlls/user32/input.c, dlls/user32/user32.spec, include/winuser.h # | if test "$enable_dinput_Events" -eq 1; then patch_apply dinput-Events/0001-dinput-Ensure-X11-input-events-are-handled-even-with.patch ( - echo '+ { "Sebastian Lackner", "dinput: Ensure X11 input events are handled even without explicit message loop.", 1 },'; + echo '+ { "Sebastian Lackner", "dinput: Ensure X11 input events are handled even without explicit message loop.", 2 },'; ) >> "$patchlist" fi @@ -1481,6 +1528,18 @@ ) >> "$patchlist" fi +# Patchset gdi32-OSMesaMakeCurrent +# | +# | Modified files: +# | * dlls/gdi32/dibdrv/opengl.c +# | +if test "$enable_gdi32_OSMesaMakeCurrent" -eq 1; then + patch_apply gdi32-OSMesaMakeCurrent/0001-gdi32-Fix-arguments-for-OSMesaMakeCurrent-when-using.patch + ( + echo '+ { "Michael Müller", "gdi32: Fix arguments for OSMesaMakeCurrent when using 16 bit formats.", 1 },'; + ) >> "$patchlist" +fi + # Patchset gdiplus-GdipCreateRegionRgnData # | # | This patchset fixes the following Wine bugs: @@ -1805,6 +1864,21 @@ ) >> "$patchlist" fi +# Patchset mmdevapi-AEV_GetVolumeRange +# | +# | This patchset fixes the following Wine bugs: +# | * [#35658] Improve stub for AEV_GetVolumeRange +# | +# | Modified files: +# | * dlls/mmdevapi/audiovolume.c +# | +if test "$enable_mmdevapi_AEV_GetVolumeRange" -eq 1; then + patch_apply mmdevapi-AEV_GetVolumeRange/0001-mmdevapi-Improve-AEV_GetVolumeRange-stub.patch + ( + echo '+ { "Christian Costa", "mmdevapi: Improve AEV_GetVolumeRange stub.", 1 },'; + ) >> "$patchlist" +fi + # Patchset msvcp90-basic_string_wchar_dtor # | # | This patchset fixes the following Wine bugs: @@ -2143,6 +2217,21 @@ ) >> "$patchlist" fi +# Patchset ntdll-RtlUnwindEx +# | +# | This patchset fixes the following Wine bugs: +# | * [#34254] Fix check for end_frame in RtlUnwindEx on x86_64. +# | +# | Modified files: +# | * dlls/ntdll/signal_x86_64.c +# | +if test "$enable_ntdll_RtlUnwindEx" -eq 1; then + patch_apply ntdll-RtlUnwindEx/0001-ntdll-Fix-check-for-end_frame-in-RtlUnwindEx-on-x86_.patch + ( + echo '+ { "Sebastian Lackner", "ntdll: Fix check for end_frame in RtlUnwindEx on x86_64.", 1 },'; + ) >> "$patchlist" +fi + # Patchset ntdll-ThreadTime # | # | This patchset fixes the following Wine bugs: @@ -2170,6 +2259,41 @@ ) >> "$patchlist" fi +# Patchset ntdll-Vista_Threadpool +# | +# | This patchset fixes the following Wine bugs: +# | * [#35192] Add implementation for CreateThreadpool +# | * [#32531] Implement threadpool work items +# | * [#37306] Implement threadpool timers +# | +# | Modified files: +# | * dlls/kernel32/kernel32.spec, dlls/kernel32/tests/thread.c, dlls/kernel32/thread.c, dlls/ntdll/Makefile.in, +# | dlls/ntdll/ntdll.spec, dlls/ntdll/tests/Makefile.in, dlls/ntdll/tests/threadpool.c, dlls/ntdll/threadpool2.c, +# | include/winternl.h +# | +if test "$enable_ntdll_Vista_Threadpool" -eq 1; then + patch_apply ntdll-Vista_Threadpool/0001-ntdll-Add-threadpool-stub-functions-to-specfile.patch + patch_apply ntdll-Vista_Threadpool/0002-ntdll-Implement-threadpool-cleanup-group-and-callbac.patch + patch_apply ntdll-Vista_Threadpool/0003-ntdll-Implement-additional-threadpool-work-item-func.patch + patch_apply ntdll-Vista_Threadpool/0004-ntdll-Implement-threadpool-timer-functions.-rev-2.patch + patch_apply ntdll-Vista_Threadpool/0005-ntdll-tests-Add-tests-for-Tp-threadpool-functions.patch + patch_apply ntdll-Vista_Threadpool/0006-kernel32-Forward-various-threadpool-functions-to-ntd.patch + patch_apply ntdll-Vista_Threadpool/0007-ntdll-Implement-threadpool-wait-objects.patch + patch_apply ntdll-Vista_Threadpool/0008-ntdll-tests-Add-tests-for-threadpool-wait-objects.patch + patch_apply ntdll-Vista_Threadpool/0009-kernel32-Forward-threadpool-wait-functions-to-ntdll.patch + ( + echo '+ { "Sebastian Lackner", "ntdll: Add threadpool stub functions to specfile.", 1 },'; + echo '+ { "Sebastian Lackner", "ntdll: Implement threadpool, cleanup group and callback instance functions.", 2 },'; + echo '+ { "Sebastian Lackner", "ntdll: Implement additional threadpool work item functions.", 1 },'; + echo '+ { "Sebastian Lackner", "ntdll: Implement threadpool timer functions.", 2 },'; + echo '+ { "Sebastian Lackner", "ntdll/tests: Add tests for Tp* threadpool functions.", 1 },'; + echo '+ { "Sebastian Lackner", "kernel32: Forward various threadpool functions to ntdll.", 1 },'; + echo '+ { "Sebastian Lackner", "ntdll: Implement threadpool wait objects.", 1 },'; + echo '+ { "Sebastian Lackner", "ntdll/tests: Add tests for threadpool wait objects.", 1 },'; + echo '+ { "Sebastian Lackner", "kernel32: Forward threadpool wait functions to ntdll.", 1 },'; + ) >> "$patchlist" +fi + # Patchset ntdll-WinSqm # | # | This patchset fixes the following Wine bugs: @@ -2223,20 +2347,41 @@ ) >> "$patchlist" fi -# Patchset ntoskrnl-KeWaitForMultipleObjects +# Patchset ntoskrnl-Stubs # | # | Modified files: -# | * dlls/ntoskrnl.exe/ntoskrnl.c, dlls/ntoskrnl.exe/ntoskrnl.exe.spec, include/ddk/ntddk.h +# | * dlls/ntoskrnl.exe/ntoskrnl.c, dlls/ntoskrnl.exe/ntoskrnl.exe.spec, include/ddk/wdm.h, include/ntdef.h # | -if test "$enable_ntoskrnl_KeWaitForMultipleObjects" -eq 1; then - patch_apply ntoskrnl-KeWaitForMultipleObjects/0001-ntoskrnl.exe-add-KeWaitForMultipleObjects-stub.patch +if test "$enable_ntoskrnl_Stubs" -eq 1; then + patch_apply ntoskrnl-Stubs/0001-include-Remove-several-duplicate-definitions-from-nt.patch + patch_apply ntoskrnl-Stubs/0002-ntoskrnl.exe-add-KeWaitForMultipleObjects-stub.patch + patch_apply ntoskrnl-Stubs/0003-ntoskrnl.exe-Add-stub-for-IoGetAttachedDeviceReferen.patch + patch_apply ntoskrnl-Stubs/0004-ntoskrnl.exe-Add-stubs-for-ExAcquireFastMutexUnsafe-.patch + patch_apply ntoskrnl-Stubs/0005-ntoskrnl.exe-Add-stubs-for-ObReferenceObjectByPointe.patch + patch_apply ntoskrnl-Stubs/0006-ntoskrnl.exe-Add-stub-for-KeDelayExecutionThread.patch + patch_apply ntoskrnl-Stubs/0007-ntoskrnl.exe-Improve-KeReleaseMutex-stub.patch + patch_apply ntoskrnl-Stubs/0008-ntoskrnl.exe-Improve-KeInitializeSemaphore-stub.patch + patch_apply ntoskrnl-Stubs/0009-ntoskrnl.exe-Improve-KeInitializeTimerEx-stub.patch + patch_apply ntoskrnl-Stubs/0010-ntoskrnl.exe-Fix-IoReleaseCancelSpinLock-argument.patch ( + echo '+ { "Sebastian Lackner", "include: Remove several duplicate definitions from ntdef.h.", 1 },'; echo '+ { "Austin English", "ntoskrnl.exe: add KeWaitForMultipleObjects stub.", 1 },'; + echo '+ { "Alexander Morozov", "ntoskrnl.exe: Add stub for IoGetAttachedDeviceReference.", 1 },'; + echo '+ { "Alexander Morozov", "ntoskrnl.exe: Add stubs for ExAcquireFastMutexUnsafe and ExReleaseFastMutexUnsafe.", 1 },'; + echo '+ { "Alexander Morozov", "ntoskrnl.exe: Add stubs for ObReferenceObjectByPointer and ObDereferenceObject.", 1 },'; + echo '+ { "Alexander Morozov", "ntoskrnl.exe: Add stub for KeDelayExecutionThread.", 1 },'; + echo '+ { "Alexander Morozov", "ntoskrnl.exe: Improve KeReleaseMutex stub.", 1 },'; + echo '+ { "Alexander Morozov", "ntoskrnl.exe: Improve KeInitializeSemaphore stub.", 1 },'; + echo '+ { "Alexander Morozov", "ntoskrnl.exe: Improve KeInitializeTimerEx stub.", 1 },'; + echo '+ { "Christian Costa", "ntoskrnl.exe: Fix IoReleaseCancelSpinLock argument.", 1 },'; ) >> "$patchlist" fi # Patchset nvcuda-CUDA_Support # | +# | This patchset fixes the following Wine bugs: +# | * [#37664] MediaCoder needs CUDA for video encoding +# | # | Modified files: # | * configure.ac, dlls/nvcuda/Makefile.in, dlls/nvcuda/internal.c, dlls/nvcuda/nvcuda.c, dlls/nvcuda/nvcuda.h, # | dlls/nvcuda/nvcuda.rc, dlls/nvcuda/nvcuda.spec, dlls/nvcuda/tests/Makefile.in, dlls/nvcuda/tests/nvcuda.c, @@ -2250,6 +2395,7 @@ patch_apply nvcuda-CUDA_Support/0005-nvcuda-Properly-wrap-undocumented-ContextStorage-int.patch patch_apply nvcuda-CUDA_Support/0006-nvcuda-Emulate-two-d3d9-initialization-functions.patch patch_apply nvcuda-CUDA_Support/0007-nvcuda-Properly-wrap-stream-callbacks-by-forwarding-.patch + patch_apply nvcuda-CUDA_Support/0008-nvcuda-Add-support-for-CUDA-7.0.patch ( echo '+ { "Sebastian Lackner", "include: Add cuda.h.h.", 1 },'; echo '+ { "Sebastian Lackner", "nvcuda: Add stub dll.", 1 },'; @@ -2258,11 +2404,15 @@ echo '+ { "Michael Müller", "nvcuda: Properly wrap undocumented '\''ContextStorage'\'' interface and add tests.", 1 },'; echo '+ { "Michael Müller", "nvcuda: Emulate two d3d9 initialization functions.", 1 },'; echo '+ { "Sebastian Lackner", "nvcuda: Properly wrap stream callbacks by forwarding them to a worker thread.", 1 },'; + echo '+ { "Sebastian Lackner", "nvcuda: Add support for CUDA 7.0.", 1 },'; ) >> "$patchlist" fi # Patchset nvapi-Stub_DLL # | +# | This patchset fixes the following Wine bugs: +# | * [#35062] Fix graphical corruption in FarCry 3 with NVIDIA drivers +# | # | Modified files: # | * configure.ac, dlls/nvapi/Makefile.in, dlls/nvapi/nvapi.c, dlls/nvapi/nvapi.spec, dlls/nvapi/tests/Makefile.in, # | dlls/nvapi/tests/nvapi.c, dlls/nvapi64/Makefile.in, dlls/nvapi64/nvapi64.spec, include/Makefile.in, include/nvapi.h @@ -2317,6 +2467,19 @@ ) >> "$patchlist" fi +# Patchset nvencodeapi-Video_Encoder +# | +# | Modified files: +# | * configure.ac, dlls/nvencodeapi/Makefile.in, dlls/nvencodeapi/nvencodeapi.c, dlls/nvencodeapi/nvencodeapi.spec, +# | dlls/nvencodeapi64/Makefile.in, dlls/nvencodeapi64/nvencodeapi64.spec, include/Makefile.in, include/nvencodeapi.h +# | +if test "$enable_nvencodeapi_Video_Encoder" -eq 1; then + patch_apply nvencodeapi-Video_Encoder/0001-nvencodeapi-First-implementation.patch + ( + echo '+ { "Michael Müller", "nvencodeapi: First implementation.", 1 },'; + ) >> "$patchlist" +fi + # Patchset ole32-CoWaitForMultipleHandles # | # | Modified files: @@ -2350,6 +2513,32 @@ ) >> "$patchlist" fi +# Patchset reg-Cleanup +# | +# | Modified files: +# | * programs/reg/reg.c, programs/reg/reg.h, programs/reg/reg.rc, programs/reg/tests/reg.c +# | +if test "$enable_reg_Cleanup" -eq 1; then + patch_apply reg-Cleanup/0001-reg-Add-system-error-printing-function.patch + patch_apply reg-Cleanup/0002-reg-Add-sane_path-function-to-do-preliniary-key-vali.patch + patch_apply reg-Cleanup/0003-reg-Add-check-for-multiple-backslashes-at-the-end-of.patch + patch_apply reg-Cleanup/0004-reg-Add-path-key-conversion-functions.patch + patch_apply reg-Cleanup/0005-reg-Add-wchar-type-conversion-functions.patch + patch_apply reg-Cleanup/0006-reg-Add-wchar-raw-data-conversion-functions.patch + patch_apply reg-Cleanup/0007-reg-Clean-up-reg_add.patch + patch_apply reg-Cleanup/0008-reg-Clean-up-reg_delete.patch + ( + echo '+ { "Jonathan Vollebregt", "reg: Add system error printing function.", 1 },'; + echo '+ { "Jonathan Vollebregt", "reg: Add sane_path function to do preliniary key validation.", 1 },'; + echo '+ { "Jonathan Vollebregt", "reg: Add check for multiple backslashes at the end of the key.", 1 },'; + echo '+ { "Jonathan Vollebregt", "reg: Add path/key conversion functions.", 1 },'; + echo '+ { "Jonathan Vollebregt", "reg: Add wchar/type conversion functions.", 1 },'; + echo '+ { "Jonathan Vollebregt", "reg: Add wchar/raw data conversion functions.", 1 },'; + echo '+ { "Jonathan Vollebregt", "reg: Clean up reg_add.", 1 },'; + echo '+ { "Jonathan Vollebregt", "reg: Clean up reg_delete.", 1 },'; + ) >> "$patchlist" +fi + # Patchset regedit-String_Termination # | # | This patchset fixes the following Wine bugs: @@ -2421,7 +2610,8 @@ # Patchset server-Stored_ACLs # | # | This patchset fixes the following Wine bugs: -# | * [#31858] Support for stored file ACLs +# | * [#31858] Silverlight needs support for file ACLs +# | * [#33576] Support for stored file ACLs # | # | Modified files: # | * dlls/advapi32/tests/security.c, include/wine/port.h, server/change.c, server/file.c, server/file.h @@ -2726,16 +2916,14 @@ # | * [#36709] Support for SLGetWindowsInformationDWORD # | # | Modified files: -# | * configure.ac, dlls/ntdll/ntdll.spec, dlls/ntdll/reg.c, dlls/ntdll/tests/reg.c, dlls/slc/slc.c, -# | dlls/slc/tests/Makefile.in, dlls/slc/tests/slc.c, include/slerror.h, include/winternl.h, loader/wine.inf.in +# | * dlls/ntdll/ntdll.spec, dlls/ntdll/reg.c, dlls/ntdll/tests/reg.c, dlls/slc/slc.c, dlls/slc/tests/slc.c, +# | include/winternl.h, loader/wine.inf.in # | if test "$enable_slc_SLGetWindowsInformation" -eq 1; then - patch_apply slc-SLGetWindowsInformation/0001-slc-tests-Add-tests-for-SLGetWindowsInformationDWORD.patch - patch_apply slc-SLGetWindowsInformation/0002-ntdll-tests-Add-tests-for-NtQueryLicenseKey.patch - patch_apply slc-SLGetWindowsInformation/0003-ntdll-Implement-Nt-Zw-QueryLicenseValue.patch - patch_apply slc-SLGetWindowsInformation/0004-slc-Implement-SLGetWindowsInformationDWORD.patch + patch_apply slc-SLGetWindowsInformation/0001-ntdll-tests-Add-tests-for-NtQueryLicenseKey.patch + patch_apply slc-SLGetWindowsInformation/0002-ntdll-Implement-Nt-Zw-QueryLicenseValue.patch + patch_apply slc-SLGetWindowsInformation/0003-slc-Implement-SLGetWindowsInformationDWORD.patch ( - echo '+ { "Sebastian Lackner", "slc/tests: Add tests for SLGetWindowsInformationDWORD.", 1 },'; echo '+ { "Sebastian Lackner", "ntdll/tests: Add tests for NtQueryLicenseKey.", 1 },'; echo '+ { "Sebastian Lackner", "ntdll: Implement [Nt|Zw]QueryLicenseValue.", 1 },'; echo '+ { "Sebastian Lackner", "slc: Implement SLGetWindowsInformationDWORD.", 1 },'; @@ -2879,6 +3067,36 @@ ) >> "$patchlist" fi +# Patchset vcomp-Stub_Functions +# | +# | This patchset fixes the following Wine bugs: +# | * [#31640] Implement additional stubs for vcomp dlls +# | +# | Modified files: +# | * configure.ac, dlls/vcomp/Makefile.in, dlls/vcomp/fork.c, dlls/vcomp/main.c, dlls/vcomp/tests/Makefile.in, +# | dlls/vcomp/tests/fork.c, dlls/vcomp/tests/vcomp.manifest, dlls/vcomp/tests/vcomp.rc, dlls/vcomp/tests/work.c, +# | dlls/vcomp/vcomp.spec, dlls/vcomp/vcomp_private.h, dlls/vcomp/work.c, dlls/vcomp100/vcomp100.spec, +# | dlls/vcomp90/vcomp90.spec +# | +if test "$enable_vcomp_Stub_Functions" -eq 1; then + patch_apply vcomp-Stub_Functions/0001-vcomp-single-threaded-implementation-of-_vcomp_fork.patch + patch_apply vcomp-Stub_Functions/0002-vcomp-better-stubs-for-_vcomp_for_static_simple_init.patch + patch_apply vcomp-Stub_Functions/0003-vcomp-better-stub-for-_vcomp_for_static_init.patch + patch_apply vcomp-Stub_Functions/0004-vcomp-implement-omp_in_parallel.patch + patch_apply vcomp-Stub_Functions/0005-vcomp-better-stubs-for-_vcomp_for_dynamic_init-_vcom.patch + patch_apply vcomp-Stub_Functions/0006-vcomp-better-stubs-for-_vcomp_sections_init-_vcomp_s.patch + patch_apply vcomp-Stub_Functions/0007-vcomp-Add-a-warning-that-multithreading-is-not-yet-s.patch + ( + echo '+ { "Dan Kegel", "vcomp: single-threaded implementation of _vcomp_fork.", 1 },'; + echo '+ { "Dan Kegel", "vcomp: better stubs for _vcomp_for_static_simple_init, _vcomp_for_static_end.", 1 },'; + echo '+ { "Dan Kegel", "vcomp: better stub for _vcomp_for_static_init.", 1 },'; + echo '+ { "Dan Kegel", "vcomp: implement omp_in_parallel.", 1 },'; + echo '+ { "Dan Kegel", "vcomp: better stubs for _vcomp_for_dynamic_init, _vcomp_for_dynamic_next.", 1 },'; + echo '+ { "Dan Kegel", "vcomp: better stubs for _vcomp_sections_init, _vcomp_sections_next.", 1 },'; + echo '+ { "Sebastian Lackner", "vcomp: Add a warning that multithreading is not yet supported.", 1 },'; + ) >> "$patchlist" +fi + # Patchset windowscodecs-TGA_Decoder # | # | Modified files: @@ -2891,6 +3109,21 @@ ) >> "$patchlist" fi +# Patchset wine.inf-Performance +# | +# | This patchset fixes the following Wine bugs: +# | * [#33661] Add performance library registry keys needed by MS SQL Server Management Studio Express 2008 R2 +# | +# | Modified files: +# | * loader/wine.inf.in +# | +if test "$enable_wine_inf_Performance" -eq 1; then + patch_apply wine.inf-Performance/0001-wine.inf-Add-registry-keys-for-Windows-Performance-L.patch + ( + echo '+ { "Daniel Jelinski", "wine.inf: Add registry keys for Windows Performance Library.", 1 },'; + ) >> "$patchlist" +fi + # Patchset wineboot-HKEY_DYN_DATA # | # | This patchset fixes the following Wine bugs: @@ -2921,6 +3154,21 @@ ) >> "$patchlist" fi +# Patchset winecfg-Libraries +# | +# | This patchset fixes the following Wine bugs: +# | * [#12804] Add library override instead of closing winecfg when pressing ENTER over the combobox +# | +# | Modified files: +# | * programs/winecfg/libraries.c +# | +if test "$enable_winecfg_Libraries" -eq 1; then + patch_apply winecfg-Libraries/0001-winecfg-Add-library-override-instead-of-closing-wine.patch + ( + echo '+ { "Sebastian Lackner", "winecfg: Add library override instead of closing winecfg when pressing ENTER.", 1 },'; + ) >> "$patchlist" +fi + # Patchset wined3d-CSMT_Helper # | # | Modified files: @@ -3352,6 +3600,18 @@ ) >> "$patchlist" fi +# Patchset winedevice-DriverUnload +# | +# | Modified files: +# | * programs/winedevice/device.c +# | +if test "$enable_winedevice_DriverUnload" -eq 1; then + patch_apply winedevice-DriverUnload/0001-winedevice-Call-DriverUnload-function-when-unloading.patch + ( + echo '+ { "Michael Müller", "winedevice: Call DriverUnload function when unloading a driver.", 1 },'; + ) >> "$patchlist" +fi + # Patchset winedevice-Fix_Relocation # | # | This patchset fixes the following Wine bugs: @@ -3501,6 +3761,21 @@ ) >> "$patchlist" fi +# Patchset winex11-RawEventWarp +# | +# | This patchset fixes the following Wine bugs: +# | * [#32913] Fix mouse jittering in Planetside 2 +# | +# | Modified files: +# | * dlls/winex11.drv/mouse.c +# | +if test "$enable_winex11_RawEventWarp" -eq 1; then + patch_apply winex11-RawEventWarp/0001-winex11-Only-enable-XInput2-cursor-warp-workaround-i.patch + ( + echo '+ { "Sebastian Lackner", "winex11: Only enable XInput2 cursor warp workaround if necessary.", 1 },'; + ) >> "$patchlist" +fi + # Patchset winex11-Window_Groups # | # | This patchset fixes the following Wine bugs: @@ -3573,6 +3848,21 @@ ) >> "$patchlist" fi +# Patchset winmm-Delay_Import_Depends +# | +# | This patchset fixes the following Wine bugs: +# | * [#37983] Jedi Knight: Dark Forces II crashes with winmm set to native +# | +# | Modified files: +# | * dlls/winmm/Makefile.in +# | +if test "$enable_winmm_Delay_Import_Depends" -eq 1; then + patch_apply winmm-Delay_Import_Depends/0001-winmm-Delay-import-ole32-msacm32-to-workaround-bug-w.patch + ( + echo '+ { "Michael Müller", "winmm: Delay import ole32 msacm32 to workaround bug when loading multiple winmm versions.", 1 },'; + ) >> "$patchlist" +fi + # Patchset wpcap-Dynamic_Linking # | # | Modified files: @@ -3657,27 +3947,16 @@ patch_data=$(cat "$patchlist" | sort) patch_lines=$(echo "$patch_data" | wc -l) if test ! -z "$patch_data"; then - patch_lines=$((${patch_lines}+23)) + patch_lines=$((${patch_lines}+21)) cat > "$patchlist" < Subject: Autogenerated patch list. -diff --git a/include/wine/library.h b/include/wine/library.h ---- a/include/wine/library.h -+++ b/include/wine/library.h -@@ -43,6 +43,7 @@ extern const char *wine_get_data_dir(void); - extern const char *wine_get_server_dir(void); - extern const char *wine_get_user_name(void); - extern const char *wine_get_version(void); -+extern const void *wine_get_patches(void); - extern const char *wine_get_build_id(void); - extern void wine_init_argv0_path( const char *argv0 ); - extern void wine_exec_wine_binary( const char *name, char **argv, const char *env_var ); diff --git a/libs/wine/config.c b/libs/wine/config.c -index a273502..0a3182f 100644 +index 5262c76..0a3182f 100644 --- a/libs/wine/config.c +++ b/libs/wine/config.c -@@ -478,6 +478,${patch_lines} @@ const char *wine_get_version(void) +@@ -478,10 +478,${patch_lines} @@ const char *wine_get_version(void) return PACKAGE_VERSION; } @@ -3693,39 +3972,14 @@ + { NULL, NULL, 0 } +}; + -+/* return the applied non-standard patches */ -+const void *wine_get_patches(void) -+{ + /* return the applied non-standard patches */ + const void *wine_get_patches(void) + { +- return NULL; + return &wine_patch_data[0]; -+} -+ + } + /* return the build id string */ - const char *wine_get_build_id(void) - { -diff --git a/libs/wine/wine.def b/libs/wine/wine.def -index ed315bd..5b42029 100644 ---- a/libs/wine/wine.def -+++ b/libs/wine/wine.def -@@ -83,6 +83,7 @@ EXPORTS - wine_get_sortkey - wine_get_user_name - wine_get_version -+ wine_get_patches - wine_init - wine_init_argv0_path - wine_is_dbcs_leadbyte -diff --git a/libs/wine/wine.map b/libs/wine/wine.map -index 2159fac..7cb2918 100644 ---- a/libs/wine/wine.map -+++ b/libs/wine/wine.map -@@ -90,6 +90,7 @@ WINE_1.0 - wine_get_ss; - wine_get_user_name; - wine_get_version; -+ wine_get_patches; - wine_init; - wine_init_argv0_path; - wine_is_dbcs_leadbyte; EOF patch_apply_file "$patchlist" fi diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/reg-Cleanup/0001-reg-Add-system-error-printing-function.patch wine-staging-1.7.36~ubuntu12.04.1/patches/reg-Cleanup/0001-reg-Add-system-error-printing-function.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/reg-Cleanup/0001-reg-Add-system-error-printing-function.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/reg-Cleanup/0001-reg-Add-system-error-printing-function.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,104 @@ +From 9680fcc2fc0686299984a04baa3e4088e1375b1b Mon Sep 17 00:00:00 2001 +From: Jonathan Vollebregt +Date: Wed, 14 Jan 2015 18:12:21 +0100 +Subject: reg: Add system error printing function + +--- + programs/reg/reg.c | 32 ++++++++++++++++++++++++++++---- + programs/reg/reg.h | 1 + + programs/reg/reg.rc | 1 + + 3 files changed, 30 insertions(+), 4 deletions(-) + +diff --git a/programs/reg/reg.c b/programs/reg/reg.c +index e9c7d16..a88512d 100644 +--- a/programs/reg/reg.c ++++ b/programs/reg/reg.c +@@ -67,6 +67,30 @@ static int reg_message(int msg) + return reg_printfW(formatW, msg_buffer); + } + ++static void reg_print_error(LSTATUS error_code) ++{ ++ switch (error_code) ++ { ++ case ERROR_SUCCESS: ++ return; ++ case ERROR_BAD_COMMAND: ++ reg_message(STRING_INVALID_CMDLINE); ++ return; ++ default: ++ { ++ static const WCHAR error_string[] = {'%','0','5','d',':',' ','%','s',0}; ++ WCHAR *message = NULL; ++ FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER, NULL, ++ error_code, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (WCHAR *)&message, 0, NULL); ++ ++ reg_message(STRING_ERROR); ++ reg_printfW(error_string, error_code, message); ++ LocalFree(message); ++ return; ++ } ++ } ++} ++ + static int reg_StrCmpNIW(LPCWSTR str, LPCWSTR comp, int len) + { + int i; +@@ -413,7 +437,7 @@ int wmain(int argc, WCHAR *argvW[]) + + if (argc < 3) + { +- reg_message(STRING_INVALID_CMDLINE); ++ reg_print_error(ERROR_BAD_COMMAND); + return 1; + } + else if (argc == 3 && (!lstrcmpW(argvW[2], slashHelpW) || +@@ -449,7 +473,7 @@ int wmain(int argc, WCHAR *argvW[]) + + if (argc < 3) + { +- reg_message(STRING_INVALID_CMDLINE); ++ reg_print_error(ERROR_BAD_COMMAND); + return 1; + } + else if (argc == 3 && (!lstrcmpW(argvW[2], slashHelpW) || +@@ -480,7 +504,7 @@ int wmain(int argc, WCHAR *argvW[]) + + if (argc < 3) + { +- reg_message(STRING_INVALID_CMDLINE); ++ reg_print_error(ERROR_BAD_COMMAND); + return 1; + } + else if (argc == 3 && (!lstrcmpW(argvW[2], slashHelpW) || +@@ -504,7 +528,7 @@ int wmain(int argc, WCHAR *argvW[]) + } + else + { +- reg_message(STRING_INVALID_CMDLINE); ++ reg_print_error(ERROR_BAD_COMMAND); + return 1; + } + } +diff --git a/programs/reg/reg.h b/programs/reg/reg.h +index 2221647..1c2ae83 100644 +--- a/programs/reg/reg.h ++++ b/programs/reg/reg.h +@@ -30,3 +30,4 @@ + #define STRING_INVALID_CMDLINE 107 + #define STRING_NO_REMOTE 108 + #define STRING_CANNOT_FIND 109 ++#define STRING_ERROR 110 +diff --git a/programs/reg/reg.rc b/programs/reg/reg.rc +index 479912b..6183aaa 100644 +--- a/programs/reg/reg.rc ++++ b/programs/reg/reg.rc +@@ -35,4 +35,5 @@ STRINGTABLE + STRING_INVALID_CMDLINE, "Error: Invalid command line parameters\n" + STRING_NO_REMOTE, "Error: Unable to add keys to remote machine\n" + STRING_CANNOT_FIND, "Error: The system was unable to find the specified registry key or value\n" ++ STRING_ERROR, "Unexpected error: " + } +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/reg-Cleanup/0002-reg-Add-sane_path-function-to-do-preliniary-key-vali.patch wine-staging-1.7.36~ubuntu12.04.1/patches/reg-Cleanup/0002-reg-Add-sane_path-function-to-do-preliniary-key-vali.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/reg-Cleanup/0002-reg-Add-sane_path-function-to-do-preliniary-key-vali.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/reg-Cleanup/0002-reg-Add-sane_path-function-to-do-preliniary-key-vali.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,104 @@ +From f33dbf947516c606d9215f182224a00e027e5750 Mon Sep 17 00:00:00 2001 +From: Jonathan Vollebregt +Date: Wed, 14 Jan 2015 18:12:22 +0100 +Subject: reg: Add sane_path function to do preliniary key validation + +--- + programs/reg/reg.c | 25 +++++++++++++++++++++---- + programs/reg/reg.rc | 2 +- + 2 files changed, 22 insertions(+), 5 deletions(-) + mode change 100644 => 100755 programs/reg/reg.c + +diff --git a/programs/reg/reg.c b/programs/reg/reg.c +old mode 100644 +new mode 100755 +index a88512d..fef9313 +--- a/programs/reg/reg.c ++++ b/programs/reg/reg.c +@@ -20,6 +20,8 @@ + #include + #include "reg.h" + ++#define ERROR_NO_REMOTE 20000 ++ + static int reg_printfW(const WCHAR *msg, ...) + { + va_list va_args; +@@ -76,6 +78,9 @@ static void reg_print_error(LSTATUS error_code) + case ERROR_BAD_COMMAND: + reg_message(STRING_INVALID_CMDLINE); + return; ++ case ERROR_NO_REMOTE: ++ reg_message(STRING_NO_REMOTE); ++ return; + default: + { + static const WCHAR error_string[] = {'%','0','5','d',':',' ','%','s',0}; +@@ -203,6 +208,14 @@ static LPBYTE get_regdata(LPWSTR data, DWORD reg_type, WCHAR separator, DWORD *r + return out_data; + } + ++static LSTATUS sane_path(const WCHAR *key) ++{ ++ if (key[0] == '\\' && key[1] == '\\' && key[2] != '\\') ++ return ERROR_NO_REMOTE; ++ ++ return ERROR_SUCCESS; ++} ++ + static int reg_add(WCHAR *key_name, WCHAR *value_name, BOOL value_empty, + WCHAR *type, WCHAR separator, WCHAR *data, BOOL force) + { +@@ -210,12 +223,14 @@ static int reg_add(WCHAR *key_name, WCHAR *value_name, BOOL value_empty, + ' ','%','s',' ','%','d',' ','%','s',' ','%','s',' ','%','d','\n',0}; + LPWSTR p; + HKEY root,subkey; ++ LONG err; + + reg_printfW(stubW, key_name, value_name, value_empty, type, data, force); + +- if (key_name[0]=='\\' && key_name[1]=='\\') ++ err = sane_path(key_name); ++ if (err != ERROR_SUCCESS) + { +- reg_message(STRING_NO_REMOTE); ++ reg_print_error(err); + return 1; + } + +@@ -280,15 +295,17 @@ static int reg_delete(WCHAR *key_name, WCHAR *value_name, BOOL value_empty, + { + LPWSTR p; + HKEY root,subkey; ++ LONG err; + + static const WCHAR stubW[] = {'D','E','L','E','T','E', + ' ','-',' ','%','s',' ','%','s',' ','%','d',' ','%','d',' ','%','d','\n' + ,0}; + reg_printfW(stubW, key_name, value_name, value_empty, value_all, force); + +- if (key_name[0]=='\\' && key_name[1]=='\\') ++ err = sane_path(key_name); ++ if (err != ERROR_SUCCESS) + { +- reg_message(STRING_NO_REMOTE); ++ reg_print_error(err); + return 1; + } + +diff --git a/programs/reg/reg.rc b/programs/reg/reg.rc +index 6183aaa..5fc5a76 100644 +--- a/programs/reg/reg.rc ++++ b/programs/reg/reg.rc +@@ -33,7 +33,7 @@ STRINGTABLE + STRING_SUCCESS, "The operation completed successfully\n" + STRING_INVALID_KEY, "Error: Invalid key name\n" + STRING_INVALID_CMDLINE, "Error: Invalid command line parameters\n" +- STRING_NO_REMOTE, "Error: Unable to add keys to remote machine\n" ++ STRING_NO_REMOTE, "Error: Unable to access remote machine\n" + STRING_CANNOT_FIND, "Error: The system was unable to find the specified registry key or value\n" + STRING_ERROR, "Unexpected error: " + } +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/reg-Cleanup/0003-reg-Add-check-for-multiple-backslashes-at-the-end-of.patch wine-staging-1.7.36~ubuntu12.04.1/patches/reg-Cleanup/0003-reg-Add-check-for-multiple-backslashes-at-the-end-of.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/reg-Cleanup/0003-reg-Add-check-for-multiple-backslashes-at-the-end-of.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/reg-Cleanup/0003-reg-Add-check-for-multiple-backslashes-at-the-end-of.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,56 @@ +From 00f098bf99cb6c50222b5e46dcb00536b4177c34 Mon Sep 17 00:00:00 2001 +From: Jonathan Vollebregt +Date: Wed, 14 Jan 2015 18:12:23 +0100 +Subject: reg: Add check for multiple backslashes at the end of the key + +--- + programs/reg/reg.c | 8 ++++++++ + programs/reg/tests/reg.c | 4 ++-- + 2 files changed, 10 insertions(+), 2 deletions(-) + +diff --git a/programs/reg/reg.c b/programs/reg/reg.c +index fef9313..f0c0b2e 100755 +--- a/programs/reg/reg.c ++++ b/programs/reg/reg.c +@@ -78,6 +78,9 @@ static void reg_print_error(LSTATUS error_code) + case ERROR_BAD_COMMAND: + reg_message(STRING_INVALID_CMDLINE); + return; ++ case ERROR_INVALID_HANDLE: ++ reg_message(STRING_INVALID_KEY); ++ return; + case ERROR_NO_REMOTE: + reg_message(STRING_NO_REMOTE); + return; +@@ -210,6 +213,11 @@ static LPBYTE get_regdata(LPWSTR data, DWORD reg_type, WCHAR separator, DWORD *r + + static LSTATUS sane_path(const WCHAR *key) + { ++ int i = strlenW(key); ++ ++ if (i < 3 || (key[i - 1] == '\\' && key[i - 2] == '\\')) ++ return ERROR_INVALID_HANDLE; ++ + if (key[0] == '\\' && key[1] == '\\' && key[2] != '\\') + return ERROR_NO_REMOTE; + +diff --git a/programs/reg/tests/reg.c b/programs/reg/tests/reg.c +index b7605e4..dbfce89 100644 +--- a/programs/reg/tests/reg.c ++++ b/programs/reg/tests/reg.c +@@ -129,10 +129,10 @@ static void test_add(void) + ok(err == ERROR_FILE_NOT_FOUND, "got exit code %d\n", r); + + run_reg_exe("reg add HKCU\\" KEY_BASE "\\keytest2\\\\ /f", &r); +- todo_wine ok(r == REG_EXIT_FAILURE || broken(r == REG_EXIT_SUCCESS /* WinXP */), ++ ok(r == REG_EXIT_FAILURE || broken(r == REG_EXIT_SUCCESS /* WinXP */), + "got exit code %u\n", r); + err = RegDeleteKeyA(HKEY_CURRENT_USER, KEY_BASE "\\keytest2"); +- todo_wine ok(err == ERROR_FILE_NOT_FOUND || broken(err == ERROR_SUCCESS /* WinXP */), ++ ok(err == ERROR_FILE_NOT_FOUND || broken(err == ERROR_SUCCESS /* WinXP */), + "got exit code %d\n", r); + + run_reg_exe("reg add HKCU\\" KEY_BASE "\\keytest3\\ /f", &r); +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/reg-Cleanup/0004-reg-Add-path-key-conversion-functions.patch wine-staging-1.7.36~ubuntu12.04.1/patches/reg-Cleanup/0004-reg-Add-path-key-conversion-functions.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/reg-Cleanup/0004-reg-Add-path-key-conversion-functions.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/reg-Cleanup/0004-reg-Add-path-key-conversion-functions.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,239 @@ +From ac0eef4019baefc758a06d21ccaa5aaa7dadf1c2 Mon Sep 17 00:00:00 2001 +From: Jonathan Vollebregt +Date: Wed, 14 Jan 2015 18:12:24 +0100 +Subject: reg: Add path/key conversion functions + +--- + programs/reg/reg.c | 150 ++++++++++++++++++++++++++--------------------------- + 1 file changed, 75 insertions(+), 75 deletions(-) + +diff --git a/programs/reg/reg.c b/programs/reg/reg.c +index f0c0b2e..e9b5b68 100755 +--- a/programs/reg/reg.c ++++ b/programs/reg/reg.c +@@ -20,8 +20,38 @@ + #include + #include "reg.h" + ++#define ARRAY_SIZE(A) (sizeof(A)/sizeof(*A)) ++ + #define ERROR_NO_REMOTE 20000 + ++static const WCHAR empty_wstr[] = {0}; ++ ++static const WCHAR short_hklm[] = {'H','K','L','M',0}; ++static const WCHAR short_hkcu[] = {'H','K','C','U',0}; ++static const WCHAR short_hkcr[] = {'H','K','C','R',0}; ++static const WCHAR short_hku[] = {'H','K','U',0}; ++static const WCHAR short_hkcc[] = {'H','K','C','C',0}; ++static const WCHAR long_hklm[] = {'H','K','E','Y','_','L','O','C','A','L','_','M','A','C','H','I','N','E',0}; ++static const WCHAR long_hkcu[] = {'H','K','E','Y','_','C','U','R','R','E','N','T','_','U','S','E','R',0}; ++static const WCHAR long_hkcr[] = {'H','K','E','Y','_','C','L','A','S','S','E','S','_','R','O','O','T',0}; ++static const WCHAR long_hku[] = {'H','K','E','Y','_','U','S','E','R','S',0}; ++static const WCHAR long_hkcc[] = {'H','K','E','Y','_','C','U','R','R','E','N','T','_','C','O','N','F','I','G',0}; ++ ++static const struct ++{ ++ HKEY key; ++ const WCHAR *short_name; ++ const WCHAR *long_name; ++} ++root_rels[] = ++{ ++ {HKEY_LOCAL_MACHINE, short_hklm, long_hklm}, ++ {HKEY_CURRENT_USER, short_hkcu, long_hkcu}, ++ {HKEY_CLASSES_ROOT, short_hkcr, long_hkcr}, ++ {HKEY_USERS, short_hku, long_hku}, ++ {HKEY_CURRENT_CONFIG, short_hkcc, long_hkcc}, ++}; ++ + static int reg_printfW(const WCHAR *msg, ...) + { + va_list va_args; +@@ -84,6 +114,9 @@ static void reg_print_error(LSTATUS error_code) + case ERROR_NO_REMOTE: + reg_message(STRING_NO_REMOTE); + return; ++ case ERROR_FILE_NOT_FOUND: ++ reg_message(STRING_CANNOT_FIND); ++ return; + default: + { + static const WCHAR error_string[] = {'%','0','5','d',':',' ','%','s',0}; +@@ -99,51 +132,40 @@ static void reg_print_error(LSTATUS error_code) + } + } + +-static int reg_StrCmpNIW(LPCWSTR str, LPCWSTR comp, int len) ++static inline BOOL path_rootname_cmp(const WCHAR *input_path, const WCHAR *rootkey_name) + { +- int i; ++ DWORD length = strlenW(rootkey_name); ++ ++ return (!strncmpiW(input_path, rootkey_name, length) && ++ (input_path[length] == 0 || input_path[length] == '\\')); ++} + +- for (i = 0; i < len; i++) ++static HKEY path_get_rootkey(const WCHAR *path) ++{ ++ DWORD i; ++ ++ for (i = 0; i < ARRAY_SIZE(root_rels); i++) + { +- if (!str[i]) +- { +- len = i + 1; +- break; +- } ++ if (path_rootname_cmp(path, root_rels[i].short_name) || ++ path_rootname_cmp(path, root_rels[i].long_name)) ++ return root_rels[i].key; + } + +- return CompareStringW(CP_ACP, NORM_IGNORECASE, str, len, comp, len) - CSTR_EQUAL; ++ return NULL; + } + +-static HKEY get_rootkey(LPWSTR key) ++static LSTATUS path_open(const WCHAR *path, HKEY *out, BOOL create) + { +- static const WCHAR szHKLM[] = {'H','K','L','M',0}; +- static const WCHAR szHKEY_LOCAL_MACHINE[] = {'H','K','E','Y','_','L','O','C','A','L','_','M','A','C','H','I','N','E',0}; +- static const WCHAR szHKCU[] = {'H','K','C','U',0}; +- static const WCHAR szHKEY_CURRENT_USER[] = {'H','K','E','Y','_','C','U','R','R','E','N','T','_','U','S','E','R',0}; +- static const WCHAR szHKCR[] = {'H','K','C','R',0}; +- static const WCHAR szHKEY_CLASSES_ROOT[] = {'H','K','E','Y','_','C','L','A','S','S','E','S','_','R','O','O','T',0}; +- static const WCHAR szHKU[] = {'H','K','U',0}; +- static const WCHAR szHKEY_USERS[] = {'H','K','E','Y','_','U','S','E','R','S',0}; +- static const WCHAR szHKCC[] = {'H','K','C','C',0}; +- static const WCHAR szHKEY_CURRENT_CONFIG[] = {'H','K','E','Y','_','C','U','R','R','E','N','T','_','C','O','N','F','I','G',0}; +- +- if (!reg_StrCmpNIW(key, szHKLM, 4) || +- !reg_StrCmpNIW(key, szHKEY_LOCAL_MACHINE, 18)) +- return HKEY_LOCAL_MACHINE; +- else if (!reg_StrCmpNIW(key, szHKCU, 4) || +- !reg_StrCmpNIW(key, szHKEY_CURRENT_USER, 17)) +- return HKEY_CURRENT_USER; +- else if (!reg_StrCmpNIW(key, szHKCR, 4) || +- !reg_StrCmpNIW(key, szHKEY_CLASSES_ROOT, 17)) +- return HKEY_CLASSES_ROOT; +- else if (!reg_StrCmpNIW(key, szHKU, 3) || +- !reg_StrCmpNIW(key, szHKEY_USERS, 10)) +- return HKEY_USERS; +- else if (!reg_StrCmpNIW(key, szHKCC, 4) || +- !reg_StrCmpNIW(key, szHKEY_CURRENT_CONFIG, 19)) +- return HKEY_CURRENT_CONFIG; +- else return NULL; ++ *out = path_get_rootkey(path); ++ ++ path = strchrW(path, '\\'); ++ if (path) ++ path++; ++ ++ if (create) ++ return RegCreateKeyW(*out, path, out); ++ else ++ return RegOpenKeyW(*out, path, out); + } + + static DWORD get_regtype(LPWSTR type) +@@ -229,8 +251,7 @@ static int reg_add(WCHAR *key_name, WCHAR *value_name, BOOL value_empty, + { + static const WCHAR stubW[] = {'A','D','D',' ','-',' ','%','s', + ' ','%','s',' ','%','d',' ','%','s',' ','%','s',' ','%','d','\n',0}; +- LPWSTR p; +- HKEY root,subkey; ++ HKEY subkey; + LONG err; + + reg_printfW(stubW, key_name, value_name, value_empty, type, data, force); +@@ -242,22 +263,8 @@ static int reg_add(WCHAR *key_name, WCHAR *value_name, BOOL value_empty, + return 1; + } + +- p = strchrW(key_name,'\\'); +- if (!p) +- { +- reg_message(STRING_INVALID_KEY); +- return 1; +- } +- p++; +- +- root = get_rootkey(key_name); +- if (!root) +- { +- reg_message(STRING_INVALID_KEY); +- return 1; +- } +- +- if(RegCreateKeyW(root,p,&subkey)!=ERROR_SUCCESS) ++ err = path_open(key_name, &subkey, TRUE); ++ if (err != ERROR_SUCCESS) + { + reg_message(STRING_INVALID_KEY); + return 1; +@@ -301,8 +308,7 @@ static int reg_add(WCHAR *key_name, WCHAR *value_name, BOOL value_empty, + static int reg_delete(WCHAR *key_name, WCHAR *value_name, BOOL value_empty, + BOOL value_all, BOOL force) + { +- LPWSTR p; +- HKEY root,subkey; ++ HKEY subkey; + LONG err; + + static const WCHAR stubW[] = {'D','E','L','E','T','E', +@@ -317,16 +323,8 @@ static int reg_delete(WCHAR *key_name, WCHAR *value_name, BOOL value_empty, + return 1; + } + +- p = strchrW(key_name,'\\'); +- if (!p) +- { +- reg_message(STRING_INVALID_KEY); +- return 1; +- } +- p++; +- +- root = get_rootkey(key_name); +- if (!root) ++ err = path_open(key_name, &subkey, FALSE); ++ if (err != ERROR_SUCCESS) + { + reg_message(STRING_INVALID_KEY); + return 1; +@@ -352,21 +350,23 @@ static int reg_delete(WCHAR *key_name, WCHAR *value_name, BOOL value_empty, + /* Delete subtree only if no /v* option is given */ + if (!value_name && !value_empty && !value_all) + { +- if (RegDeleteTreeW(root,p)!=ERROR_SUCCESS) ++ err = RegDeleteTreeW(subkey, NULL); ++ if (err != ERROR_SUCCESS) + { +- reg_message(STRING_CANNOT_FIND); ++ reg_print_error(err); ++ return 1; ++ } ++ ++ err = RegDeleteKeyW(subkey, empty_wstr); ++ if (err != ERROR_SUCCESS) ++ { ++ reg_print_error(err); + return 1; + } + reg_message(STRING_SUCCESS); + return 0; + } + +- if(RegOpenKeyW(root,p,&subkey)!=ERROR_SUCCESS) +- { +- reg_message(STRING_CANNOT_FIND); +- return 1; +- } +- + if (value_all) + { + LPWSTR szValue; +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/reg-Cleanup/0005-reg-Add-wchar-type-conversion-functions.patch wine-staging-1.7.36~ubuntu12.04.1/patches/reg-Cleanup/0005-reg-Add-wchar-type-conversion-functions.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/reg-Cleanup/0005-reg-Add-wchar-type-conversion-functions.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/reg-Cleanup/0005-reg-Add-wchar-type-conversion-functions.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,136 @@ +From c7ea9e4dfd765ca4221d39276d09ec872d45ba9a Mon Sep 17 00:00:00 2001 +From: Jonathan Vollebregt +Date: Wed, 14 Jan 2015 18:12:25 +0100 +Subject: reg: Add wchar/type conversion functions + +--- + programs/reg/reg.c | 65 ++++++++++++++++++++++++++++++++++------------------- + programs/reg/reg.h | 1 + + programs/reg/reg.rc | 1 + + 3 files changed, 44 insertions(+), 23 deletions(-) + +diff --git a/programs/reg/reg.c b/programs/reg/reg.c +index e9b5b68..3ffcc25 100755 +--- a/programs/reg/reg.c ++++ b/programs/reg/reg.c +@@ -52,6 +52,32 @@ root_rels[] = + {HKEY_CURRENT_CONFIG, short_hkcc, long_hkcc}, + }; + ++static const WCHAR type_none[] = {'R','E','G','_','N','O','N','E',0}; ++static const WCHAR type_sz[] = {'R','E','G','_','S','Z',0}; ++static const WCHAR type_expand_sz[] = {'R','E','G','_','E','X','P','A','N','D','_','S','Z',0}; ++static const WCHAR type_binary[] = {'R','E','G','_','B','I','N','A','R','Y',0}; ++static const WCHAR type_dword[] = {'R','E','G','_','D','W','O','R','D',0}; ++static const WCHAR type_dword_le[] = {'R','E','G','_','D','W','O','R','D','_','L','I','T','T','L','E','_','E','N','D','I','A','N',0}; ++static const WCHAR type_dword_be[] = {'R','E','G','_','D','W','O','R','D','_','B','I','G','_','E','N','D','I','A','N',0}; ++static const WCHAR type_multi_sz[] = {'R','E','G','_','M','U','L','T','I','_','S','Z',0}; ++ ++static const struct ++{ ++ DWORD type; ++ const WCHAR *name; ++} ++type_rels[] = ++{ ++ {REG_NONE, type_none}, ++ {REG_SZ, type_sz}, ++ {REG_EXPAND_SZ, type_expand_sz}, ++ {REG_BINARY, type_binary}, ++ {REG_DWORD, type_dword}, ++ {REG_DWORD_LITTLE_ENDIAN, type_dword_le}, ++ {REG_DWORD_BIG_ENDIAN, type_dword_be}, ++ {REG_MULTI_SZ, type_multi_sz}, ++}; ++ + static int reg_printfW(const WCHAR *msg, ...) + { + va_list va_args; +@@ -117,6 +143,9 @@ static void reg_print_error(LSTATUS error_code) + case ERROR_FILE_NOT_FOUND: + reg_message(STRING_CANNOT_FIND); + return; ++ case ERROR_UNSUPPORTED_TYPE: ++ reg_message(STRING_UNSUPPORTED_TYPE); ++ return; + default: + { + static const WCHAR error_string[] = {'%','0','5','d',':',' ','%','s',0}; +@@ -168,30 +197,20 @@ static LSTATUS path_open(const WCHAR *path, HKEY *out, BOOL create) + return RegOpenKeyW(*out, path, out); + } + +-static DWORD get_regtype(LPWSTR type) ++static DWORD wchar_get_type(const WCHAR *type_name) + { +- static const WCHAR szREG_SZ[] = {'R','E','G','_','S','Z',0}; +- static const WCHAR szREG_MULTI_SZ[] = {'R','E','G','_','M','U','L','T','I','_','S','Z',0}; +- static const WCHAR szREG_DWORD_BIG_ENDIAN[] = {'R','E','G','_','D','W','O','R','D','_','B','I','G','_','E','N','D','I','A','N',0}; +- static const WCHAR szREG_DWORD[] = {'R','E','G','_','D','W','O','R','D',0}; +- static const WCHAR szREG_BINARY[] = {'R','E','G','_','B','I','N','A','R','Y',0}; +- static const WCHAR szREG_DWORD_LITTLE_ENDIAN[] = {'R','E','G','_','D','W','O','R','D','_','L','I','T','T','L','E','_','E','N','D','I','A','N',0}; +- static const WCHAR szREG_NONE[] = {'R','E','G','_','N','O','N','E',0}; +- static const WCHAR szREG_EXPAND_SZ[] = {'R','E','G','_','E','X','P','A','N','D','_','S','Z',0}; +- +- if (!type) ++ DWORD i; ++ ++ if (!type_name) + return REG_SZ; + +- if (lstrcmpiW(type,szREG_SZ)==0) return REG_SZ; +- if (lstrcmpiW(type,szREG_DWORD)==0) return REG_DWORD; +- if (lstrcmpiW(type,szREG_MULTI_SZ)==0) return REG_MULTI_SZ; +- if (lstrcmpiW(type,szREG_EXPAND_SZ)==0) return REG_EXPAND_SZ; +- if (lstrcmpiW(type,szREG_DWORD_BIG_ENDIAN)==0) return REG_DWORD_BIG_ENDIAN; +- if (lstrcmpiW(type,szREG_DWORD_LITTLE_ENDIAN)==0) return REG_DWORD_LITTLE_ENDIAN; +- if (lstrcmpiW(type,szREG_BINARY)==0) return REG_BINARY; +- if (lstrcmpiW(type,szREG_NONE)==0) return REG_NONE; ++ for (i = 0; i < ARRAY_SIZE(type_rels); i++) ++ { ++ if (!strcmpiW(type_rels[i].name, type_name)) ++ return type_rels[i].type; ++ } + +- return -1; ++ return ~0u; + } + + static LPBYTE get_regdata(LPWSTR data, DWORD reg_type, WCHAR separator, DWORD *reg_count) +@@ -284,11 +303,11 @@ static int reg_add(WCHAR *key_name, WCHAR *value_name, BOOL value_empty, + } + } + +- reg_type = get_regtype(type); +- if (reg_type == -1) ++ reg_type = wchar_get_type(type); ++ if (reg_type == ~0u) + { + RegCloseKey(subkey); +- reg_message(STRING_INVALID_CMDLINE); ++ reg_print_error(ERROR_UNSUPPORTED_TYPE); + return 1; + } + +diff --git a/programs/reg/reg.h b/programs/reg/reg.h +index 1c2ae83..42de422 100644 +--- a/programs/reg/reg.h ++++ b/programs/reg/reg.h +@@ -31,3 +31,4 @@ + #define STRING_NO_REMOTE 108 + #define STRING_CANNOT_FIND 109 + #define STRING_ERROR 110 ++#define STRING_UNSUPPORTED_TYPE 111 +diff --git a/programs/reg/reg.rc b/programs/reg/reg.rc +index 5fc5a76..beafd4f 100644 +--- a/programs/reg/reg.rc ++++ b/programs/reg/reg.rc +@@ -36,4 +36,5 @@ STRINGTABLE + STRING_NO_REMOTE, "Error: Unable to access remote machine\n" + STRING_CANNOT_FIND, "Error: The system was unable to find the specified registry key or value\n" + STRING_ERROR, "Unexpected error: " ++ STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n" + } +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/reg-Cleanup/0006-reg-Add-wchar-raw-data-conversion-functions.patch wine-staging-1.7.36~ubuntu12.04.1/patches/reg-Cleanup/0006-reg-Add-wchar-raw-data-conversion-functions.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/reg-Cleanup/0006-reg-Add-wchar-raw-data-conversion-functions.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/reg-Cleanup/0006-reg-Add-wchar-raw-data-conversion-functions.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,407 @@ +From ff3494f11d42dc38e2455b21a95981b6e7d48a8d Mon Sep 17 00:00:00 2001 +From: Jonathan Vollebregt +Date: Wed, 14 Jan 2015 18:12:26 +0100 +Subject: reg: Add wchar/raw data conversion functions + +In the case of REG_SZ and the like, it may seem like the functions +perform an unncessary copy of the strings which should already be +in memory ripe for the taking. + +However because these functions handle more than one type of data +the calling function needs to be able to free the data afterwards. + +Simply returning the input string would result in a function +freeing one of it's own parameters, so we make sure to return +new memory by making a copy. +--- + programs/reg/reg.c | 140 +++++++++++++++++++++++++++++++++++++++-------- + programs/reg/reg.h | 1 + + programs/reg/reg.rc | 1 + + programs/reg/tests/reg.c | 57 ++++++++++--------- + 4 files changed, 146 insertions(+), 53 deletions(-) + +diff --git a/programs/reg/reg.c b/programs/reg/reg.c +index 3ffcc25..0d892fd 100755 +--- a/programs/reg/reg.c ++++ b/programs/reg/reg.c +@@ -18,11 +18,15 @@ + + #include + #include ++#include + #include "reg.h" + + #define ARRAY_SIZE(A) (sizeof(A)/sizeof(*A)) + + #define ERROR_NO_REMOTE 20000 ++#define ERROR_INVALID_DWORD 20001 ++ ++WINE_DEFAULT_DEBUG_CHANNEL(reg); + + static const WCHAR empty_wstr[] = {0}; + +@@ -146,6 +150,9 @@ static void reg_print_error(LSTATUS error_code) + case ERROR_UNSUPPORTED_TYPE: + reg_message(STRING_UNSUPPORTED_TYPE); + return; ++ case ERROR_INVALID_DWORD: ++ reg_message(STRING_INVALID_DWORD); ++ return; + default: + { + static const WCHAR error_string[] = {'%','0','5','d',':',' ','%','s',0}; +@@ -213,43 +220,120 @@ static DWORD wchar_get_type(const WCHAR *type_name) + return ~0u; + } + +-static LPBYTE get_regdata(LPWSTR data, DWORD reg_type, WCHAR separator, DWORD *reg_count) ++static LSTATUS wchar_get_data(const WCHAR *input, const DWORD type, const WCHAR separator, ++ DWORD *size_out, BYTE **out) + { +- LPBYTE out_data = NULL; +- *reg_count = 0; ++ DWORD i; ++ ++ if (!input) ++ input = empty_wstr; + +- switch (reg_type) ++ switch (type) + { ++ case REG_NONE: + case REG_SZ: ++ case REG_EXPAND_SZ: + { +- *reg_count = (lstrlenW(data) + 1) * sizeof(WCHAR); +- out_data = HeapAlloc(GetProcessHeap(),0,*reg_count); +- lstrcpyW((LPWSTR)out_data,data); +- break; ++ i = (strlenW(input) + 1) * sizeof(WCHAR); ++ *out = HeapAlloc(GetProcessHeap(), 0, i); ++ memcpy(*out, input, i); ++ *size_out = i; ++ return ERROR_SUCCESS; + } + case REG_DWORD: ++ case REG_DWORD_BIG_ENDIAN: ++ { ++ WCHAR *temp; ++ ++ if (input[0] == '0' && (input[1] == 'x' || input[1] == 'X')) ++ i = strtoulW(input, &temp, 16); ++ else ++ i = strtoulW(input, &temp, 10); ++ ++ if (input[0] == '-' || temp[0] || temp == input) ++ return ERROR_INVALID_DWORD; ++ ++ if (i == 0xffffffff) ++ WINE_FIXME("Check for integer overflow.\n"); ++ ++ *out = HeapAlloc(GetProcessHeap(), 0, sizeof(DWORD)); ++ **(DWORD **) out = i; ++ *size_out = sizeof(DWORD); ++ return ERROR_SUCCESS; ++ } ++ case REG_MULTI_SZ: + { +- LPWSTR rest; +- DWORD val; +- val = strtolW(data, &rest, 0); +- if (rest == data) { +- static const WCHAR nonnumber[] = {'E','r','r','o','r',':',' ','/','d',' ','r','e','q','u','i','r','e','s',' ','n','u','m','b','e','r','.','\n',0}; +- reg_printfW(nonnumber); +- break; ++ WCHAR *temp = HeapAlloc(GetProcessHeap(), 0, (strlenW(input) + 1) * sizeof(WCHAR)); ++ DWORD p; ++ ++ for (i = 0, p = 0; i <= strlenW(input); i++, p++) ++ { ++ /* If this character is the separator, or no separator has been given and these ++ * characters are "\\0", then add a 0 indicating the end of this string */ ++ if ( (separator && input[i] == separator) || ++ (!separator && input[i] == '\\' && input[i + 1] == '0') ) ++ { ++ /* If it's the first character or the previous one was a separator */ ++ if (!p || temp[p - 1] == 0) ++ { ++ HeapFree(GetProcessHeap(), 0, temp); ++ return ERROR_INVALID_DATA; ++ } ++ temp[p] = 0; ++ ++ if (!separator) ++ i++; ++ } ++ else ++ temp[p] = input[i]; + } +- *reg_count = sizeof(DWORD); +- out_data = HeapAlloc(GetProcessHeap(),0,*reg_count); +- ((LPDWORD)out_data)[0] = val; +- break; ++ ++ /* Add a 0 to the end if the string wasn't "", and it wasn't ++ * double-0-terminated already (In the case of a trailing separator) */ ++ if (p > 1 && temp[p - 2]) ++ temp[p++] = 0; ++ ++ *size_out = p * sizeof(WCHAR); ++ *out = (BYTE *) temp; ++ return ERROR_SUCCESS; ++ } ++ case REG_BINARY: ++ { ++ BYTE *temp = HeapAlloc(GetProcessHeap(), 0, strlenW(input)); ++ DWORD p, odd; ++ ++ for (i = 0, p = 0; i < strlenW(input); i++, p++) ++ { ++ if (input[i] >= '0' && input[i] <= '9') ++ temp[p] = input[i] - '0'; ++ else if (input[i] >= 'a' && input[i] <= 'f') ++ temp[p] = input[i] - 'a' + 10; ++ else if (input[i] >= 'A' && input[i] <= 'F') ++ temp[p] = input[i] - 'A' + 10; ++ else ++ { ++ HeapFree(GetProcessHeap(), 0, temp); ++ return ERROR_INVALID_DATA; ++ } ++ } ++ ++ *out = temp; ++ odd = p & 1; ++ temp += odd; ++ p >>= 1; ++ ++ for (i = 0; i < p; i++) ++ temp[i] = (temp[i * 2] << 4) | temp[i * 2 + 1]; ++ ++ *size_out = p + odd; ++ return ERROR_SUCCESS; + } + default: + { +- static const WCHAR unhandled[] = {'U','n','h','a','n','d','l','e','d',' ','T','y','p','e',' ','0','x','%','x',' ',' ','d','a','t','a',' ','%','s','\n',0}; +- reg_printfW(unhandled, reg_type,data); ++ WINE_FIXME("Add support for registry type: %u\n", type); ++ return ERROR_UNSUPPORTED_TYPE; + } + } +- +- return out_data; + } + + static LSTATUS sane_path(const WCHAR *key) +@@ -312,7 +396,15 @@ static int reg_add(WCHAR *key_name, WCHAR *value_name, BOOL value_empty, + } + + if (data) +- reg_data = get_regdata(data,reg_type,separator,®_count); ++ { ++ err = wchar_get_data(data, reg_type, separator, ®_count, ®_data); ++ if (err != ERROR_SUCCESS) ++ { ++ RegCloseKey(subkey); ++ reg_print_error(err); ++ return 1; ++ } ++ } + + RegSetValueExW(subkey,value_name,0,reg_type,reg_data,reg_count); + HeapFree(GetProcessHeap(),0,reg_data); +diff --git a/programs/reg/reg.h b/programs/reg/reg.h +index 42de422..00c4d66 100644 +--- a/programs/reg/reg.h ++++ b/programs/reg/reg.h +@@ -32,3 +32,4 @@ + #define STRING_CANNOT_FIND 109 + #define STRING_ERROR 110 + #define STRING_UNSUPPORTED_TYPE 111 ++#define STRING_INVALID_DWORD 112 +diff --git a/programs/reg/reg.rc b/programs/reg/reg.rc +index beafd4f..730d421 100644 +--- a/programs/reg/reg.rc ++++ b/programs/reg/reg.rc +@@ -37,4 +37,5 @@ STRINGTABLE + STRING_CANNOT_FIND, "Error: The system was unable to find the specified registry key or value\n" + STRING_ERROR, "Unexpected error: " + STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n" ++ STRING_INVALID_DWORD, "Error: /d must be positive number\n" + } +diff --git a/programs/reg/tests/reg.c b/programs/reg/tests/reg.c +index dbfce89..99b4813 100644 +--- a/programs/reg/tests/reg.c ++++ b/programs/reg/tests/reg.c +@@ -154,7 +154,7 @@ static void test_add(void) + /* REG_NONE */ + run_reg_exe("reg add HKCU\\" KEY_BASE " /v none0 /d deadbeef /t REG_NONE /f", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %d\n", r); +- verify_reg(hkey, "none0", REG_NONE, "d\0e\0a\0d\0b\0e\0e\0f\0\0", 18, TODO_REG_SIZE); ++ verify_reg(hkey, "none0", REG_NONE, "d\0e\0a\0d\0b\0e\0e\0f\0\0", 18, 0); + + /* REG_SZ */ + run_reg_exe("reg add HKCU\\" KEY_BASE " /d WineTest /f", &r); +@@ -188,11 +188,11 @@ static void test_add(void) + /* REG_EXPAND_SZ */ + run_reg_exe("reg add HKCU\\" KEY_BASE " /v expand0 /t REG_EXpand_sz /d \"dead%PATH%beef\" /f", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %u\n", r); +- verify_reg(hkey, "expand0", REG_EXPAND_SZ, "dead%PATH%beef", 15, TODO_REG_SIZE); ++ verify_reg(hkey, "expand0", REG_EXPAND_SZ, "dead%PATH%beef", 15, 0); + + run_reg_exe("reg add HKCU\\" KEY_BASE " /v expand1 /t REG_EXpand_sz /d \"dead^%PATH^%beef\" /f", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %u\n", r); +- verify_reg(hkey, "expand1", REG_EXPAND_SZ, "dead^%PATH^%beef", 17, TODO_REG_SIZE); ++ verify_reg(hkey, "expand1", REG_EXPAND_SZ, "dead^%PATH^%beef", 17, 0); + + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_EXPAND_SZ /v expand2 /f", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %u\n", r); +@@ -200,11 +200,11 @@ static void test_add(void) + + run_reg_exe("reg add HKEY_CURRENT_USER\\" KEY_BASE " /ve /t REG_EXPAND_SZ /d WineTEST /f", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %u\n", r); +- verify_reg(hkey, "", REG_EXPAND_SZ, "WineTEST", 9, TODO_REG_SIZE); ++ verify_reg(hkey, "", REG_EXPAND_SZ, "WineTEST", 9, 0); + + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_EXPAND_SZ /v expand3 /f /d \"\"", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %u\n", r); +- verify_reg(hkey, "expand3", REG_EXPAND_SZ, "", 1, TODO_REG_SIZE); ++ verify_reg(hkey, "expand3", REG_EXPAND_SZ, "", 1, 0); + + /* REG_BINARY */ + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_BINARY /v bin0 /f", &r); +@@ -214,14 +214,14 @@ static void test_add(void) + run_reg_exe("reg add HKEY_CURRENT_USER\\" KEY_BASE " /ve /t REG_BINARY /d deadbeef /f", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %u\n", r); + dword = 0xefbeadde; +- verify_reg(hkey, "", REG_BINARY, &dword, sizeof(DWORD), TODO_REG_SIZE); ++ verify_reg(hkey, "", REG_BINARY, &dword, sizeof(DWORD), 0); + + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_BINARY /v bin1 /f /d 0xDeAdBeEf", &r); +- todo_wine ok(r == REG_EXIT_FAILURE, "got exit code %u\n", r); ++ ok(r == REG_EXIT_FAILURE, "got exit code %u\n", r); + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_BINARY /v bin2 /f /d x01", &r); +- todo_wine ok(r == REG_EXIT_FAILURE, "got exit code %u\n", r); ++ ok(r == REG_EXIT_FAILURE, "got exit code %u\n", r); + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_BINARY /v bin3 /f /d 01x", &r); +- todo_wine ok(r == REG_EXIT_FAILURE, "got exit code %u\n", r); ++ ok(r == REG_EXIT_FAILURE, "got exit code %u\n", r); + + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_BINARY /v bin4 /f /d DeAdBeEf0DD", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %u\n", r); +@@ -235,8 +235,8 @@ static void test_add(void) + err = RegQueryValueExA(hkey, "bin4", NULL, &type, (void *) (buffer+12), &size); + ok(err == ERROR_SUCCESS, "RegQueryValueEx failed: got %d\n", err); + ok(type == REG_BINARY, "got wrong type %u\n", type); +- todo_wine ok(size == 6, "got wrong size %u\n", size); +- todo_wine ok(memcmp(buffer, buffer+12, 6) == 0 || ++ ok(size == 6, "got wrong size %u\n", size); ++ ok(memcmp(buffer, buffer+12, 6) == 0 || + broken(memcmp(buffer+6, buffer+12, 6) == 0 /* WinXP */), "got wrong data\n"); + + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_BINARY /v bin5 /d \"\" /f", &r); +@@ -257,11 +257,11 @@ static void test_add(void) + todo_wine ok(r == REG_EXIT_FAILURE || broken(r == REG_EXIT_SUCCESS /* WinXP */), + "got exit code %d, expected 0\n", r); + run_reg_exe("reg add HKCU\\" KEY_BASE " /v dword2 /t REG_DWORD /d zzz /f", &r); +- todo_wine ok(r == REG_EXIT_FAILURE, "got exit code %d, expected 1\n", r); ++ ok(r == REG_EXIT_FAILURE, "got exit code %d, expected 1\n", r); + run_reg_exe("reg add HKCU\\" KEY_BASE " /v dword3 /t REG_DWORD /d deadbeef /f", &r); +- todo_wine ok(r == REG_EXIT_FAILURE, "got exit code %d, expected 1\n", r); ++ ok(r == REG_EXIT_FAILURE, "got exit code %d, expected 1\n", r); + run_reg_exe("reg add HKCU\\" KEY_BASE " /v dword4 /t REG_DWORD /d 123xyz /f", &r); +- todo_wine ok(r == REG_EXIT_FAILURE, "got exit code %d, expected 1\n", r); ++ ok(r == REG_EXIT_FAILURE, "got exit code %d, expected 1\n", r); + + run_reg_exe("reg add HKCU\\" KEY_BASE " /v dword5 /t reg_dword /d 12345678 /f", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r); +@@ -275,22 +275,21 @@ static void test_add(void) + ok(err == ERROR_SUCCESS, "RegQueryValueEx failed: got %d\n", err); + ok(type == REG_DWORD, "got wrong type %d, expected %d\n", type, REG_DWORD); + ok(size == sizeof(DWORD), "got wrong size %d, expected %d\n", size, (int)sizeof(DWORD)); +- todo_wine ok(dword == 123 || broken(dword == 0123 /* WinXP */), ++ ok(dword == 123 || broken(dword == 0123 /* WinXP */), + "got wrong data %d, expected %d\n", dword, 123); + + run_reg_exe("reg add HKCU\\" KEY_BASE " /v dword7 /t reg_dword /d 0xabcdefg /f", &r); +- todo_wine ok(r == REG_EXIT_FAILURE, "got exit code %d, expected 1\n", r); ++ ok(r == REG_EXIT_FAILURE, "got exit code %d, expected 1\n", r); + + run_reg_exe("reg add HKCU\\" KEY_BASE " /v dword8 /t REG_dword /d 0xdeadbeef /f", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r); + dword = 0xdeadbeef; +- verify_reg(hkey, "dword8", REG_DWORD, &dword, sizeof(dword), +- (sizeof(long) > sizeof(DWORD)) ? 0 : TODO_REG_DATA); ++ verify_reg(hkey, "dword8", REG_DWORD, &dword, sizeof(dword), 0); + + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_DWORD /v dword9 /f /d -1", &r); +- todo_wine ok(r == REG_EXIT_FAILURE || broken(r == REG_EXIT_SUCCESS /* WinXP */), "got exit code %u\n", r); ++ ok(r == REG_EXIT_FAILURE || broken(r == REG_EXIT_SUCCESS /* WinXP */), "got exit code %u\n", r); + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_DWORD /v dword10 /f /d -0x1", &r); +- todo_wine ok(r == REG_EXIT_FAILURE || broken(r == REG_EXIT_SUCCESS /* WinXP */), "got exit code %u\n", r); ++ ok(r == REG_EXIT_FAILURE || broken(r == REG_EXIT_SUCCESS /* WinXP */), "got exit code %u\n", r); + + run_reg_exe("reg add HKCU\\" KEY_BASE " /v dword8 /t REG_dword /d 0x01ffffffff /f", &r); + todo_wine ok(r == REG_EXIT_FAILURE || broken(r == REG_EXIT_SUCCESS /* WinXP */), "got exit code %d\n", r); +@@ -305,7 +304,7 @@ static void test_add(void) + run_reg_exe("reg add HKCU\\" KEY_BASE " /v DWORD_BE /t REG_DWORD_BIG_ENDIAN /d 456 /f", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %u\n", r); + dword = 456; +- verify_reg(hkey, "DWORD_BE", REG_DWORD_BIG_ENDIAN, &dword, sizeof(dword), TODO_REG_SIZE); ++ verify_reg(hkey, "DWORD_BE", REG_DWORD_BIG_ENDIAN, &dword, sizeof(dword), 0); + /* REG_DWORD_BIG_ENDIAN is broken in every version of windows. It behaves like + * an ordinary REG_DWORD - that is little endian. GG */ + +@@ -313,15 +312,15 @@ static void test_add(void) + run_reg_exe("reg add HKCU\\" KEY_BASE " /v multi0 /t REG_MULTI_SZ /d \"three\\0little\\0strings\" /f", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %u\n", r); + memcpy(buffer, "three\0little\0strings\0", 22); +- verify_reg(hkey, "multi0", REG_MULTI_SZ, buffer, 22, TODO_REG_SIZE); ++ verify_reg(hkey, "multi0", REG_MULTI_SZ, buffer, 22, 0); + + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_MULTI_SZ /v multi1 /s \"#\" /d \"three#little#strings\" /f", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %u\n", r); +- verify_reg(hkey, "multi1", REG_MULTI_SZ, buffer, 22, TODO_REG_SIZE); ++ verify_reg(hkey, "multi1", REG_MULTI_SZ, buffer, 22, 0); + + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_MULTI_SZ /v multi2 /d \"\" /f", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %u\n", r); +- verify_reg(hkey, "multi2", REG_MULTI_SZ, &buffer[21], 1, TODO_REG_SIZE); ++ verify_reg(hkey, "multi2", REG_MULTI_SZ, &buffer[21], 1, 0); + + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_MULTI_SZ /v multi3 /f", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %u\n", r); +@@ -329,7 +328,7 @@ static void test_add(void) + + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_MULTI_SZ /v multi4 /s \"#\" /d \"threelittlestrings\" /f", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %u\n", r); +- verify_reg(hkey, "multi4", REG_MULTI_SZ, "threelittlestrings\0", 20, TODO_REG_SIZE); ++ verify_reg(hkey, "multi4", REG_MULTI_SZ, "threelittlestrings\0", 20, 0); + + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_MULTI_SZ /v multi5 /s \"#randomgibberish\" /d \"three#little#strings\" /f", &r); + todo_wine ok(r == REG_EXIT_FAILURE, "got exit code %u\n", r); +@@ -338,16 +337,16 @@ static void test_add(void) + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_MULTI_SZ /v multi7 /s \"\" /d \"three#little#strings\" /f", &r); + todo_wine ok(r == REG_EXIT_FAILURE, "got exit code %u\n", r); + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_MULTI_SZ /v multi8 /s \"#\" /d \"##\" /f", &r); +- todo_wine ok(r == REG_EXIT_FAILURE, "got exit code %u\n", r); ++ ok(r == REG_EXIT_FAILURE, "got exit code %u\n", r); + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_MULTI_SZ /v multi9 /s \"#\" /d \"two##strings\" /f", &r); +- todo_wine ok(r == REG_EXIT_FAILURE, "got exit code %u\n", r); ++ ok(r == REG_EXIT_FAILURE, "got exit code %u\n", r); + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_MULTI_SZ /v multi10 /s \"#\" /d \"#a\" /f", &r); +- todo_wine ok(r == REG_EXIT_FAILURE, "got exit code %u\n", r); ++ ok(r == REG_EXIT_FAILURE, "got exit code %u\n", r); + + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_MULTI_SZ /v multi11 /s \"#\" /d \"a#\" /f", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %u\n", r); + buffer[0]='a'; buffer[1]=0; buffer[2]=0; +- verify_reg(hkey, "multi11", REG_MULTI_SZ, buffer, 3, TODO_REG_SIZE); ++ verify_reg(hkey, "multi11", REG_MULTI_SZ, buffer, 3, 0); + + RegCloseKey(hkey); + +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/reg-Cleanup/0007-reg-Clean-up-reg_add.patch wine-staging-1.7.36~ubuntu12.04.1/patches/reg-Cleanup/0007-reg-Clean-up-reg_add.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/reg-Cleanup/0007-reg-Clean-up-reg_add.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/reg-Cleanup/0007-reg-Clean-up-reg_add.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,226 @@ +From 41951b170a3de9adade891c290c161793582f32e Mon Sep 17 00:00:00 2001 +From: Jonathan Vollebregt +Date: Wed, 14 Jan 2015 18:12:27 +0100 +Subject: reg: Clean up reg_add + +You'll notice that bad value input leaves a zombie key after this +call, but this is consistant with native. +--- + programs/reg/reg.c | 91 +++++++++++++++++++++++++----------------------- + programs/reg/tests/reg.c | 22 ++++++------ + 2 files changed, 59 insertions(+), 54 deletions(-) + +diff --git a/programs/reg/reg.c b/programs/reg/reg.c +index 0d892fd..084a8d5 100755 +--- a/programs/reg/reg.c ++++ b/programs/reg/reg.c +@@ -349,71 +349,69 @@ static LSTATUS sane_path(const WCHAR *key) + return ERROR_SUCCESS; + } + +-static int reg_add(WCHAR *key_name, WCHAR *value_name, BOOL value_empty, +- WCHAR *type, WCHAR separator, WCHAR *data, BOOL force) ++static int reg_add( const WCHAR *key_name, const WCHAR *value_name, const BOOL value_empty, ++ const WCHAR *type, const WCHAR separator, const WCHAR *data, ++ const BOOL force) + { +- static const WCHAR stubW[] = {'A','D','D',' ','-',' ','%','s', +- ' ','%','s',' ','%','d',' ','%','s',' ','%','s',' ','%','d','\n',0}; +- HKEY subkey; +- LONG err; +- +- reg_printfW(stubW, key_name, value_name, value_empty, type, data, force); +- +- err = sane_path(key_name); ++ HKEY key = NULL; ++ LONG err = sane_path(key_name); + if (err != ERROR_SUCCESS) ++ goto error; ++ ++ if (value_name && value_empty) + { +- reg_print_error(err); +- return 1; ++ err = ERROR_BAD_COMMAND; ++ goto error; + } + +- err = path_open(key_name, &subkey, TRUE); ++ err = path_open(key_name, &key, TRUE); + if (err != ERROR_SUCCESS) +- { +- reg_message(STRING_INVALID_KEY); +- return 1; +- } ++ goto error; + + if (value_name || data) + { +- DWORD reg_type; +- DWORD reg_count = 0; +- BYTE* reg_data = NULL; ++ DWORD size, reg_type; ++ BYTE *data_out; ++ ++ if (value_name && !value_name[0]) ++ value_name = NULL; + +- if (!force) ++ if (type && !type[0]) + { +- if (RegQueryValueW(subkey,value_name,NULL,NULL)==ERROR_SUCCESS) +- { +- /* FIXME: Prompt for overwrite */ +- } ++ data = NULL; ++ type = NULL; + } + +- reg_type = wchar_get_type(type); +- if (reg_type == ~0u) ++ if (!force && RegQueryValueExW(key, value_name, NULL, NULL, NULL, NULL) == ERROR_SUCCESS) + { +- RegCloseKey(subkey); +- reg_print_error(ERROR_UNSUPPORTED_TYPE); +- return 1; ++ WINE_FIXME("Prompt for overwrite\n"); + } + +- if (data) ++ reg_type = wchar_get_type(type); ++ if (reg_type == ~0u) + { +- err = wchar_get_data(data, reg_type, separator, ®_count, ®_data); +- if (err != ERROR_SUCCESS) +- { +- RegCloseKey(subkey); +- reg_print_error(err); +- return 1; +- } ++ err = ERROR_INVALID_DATATYPE; ++ goto error; + } + +- RegSetValueExW(subkey,value_name,0,reg_type,reg_data,reg_count); +- HeapFree(GetProcessHeap(),0,reg_data); ++ err = wchar_get_data(data, reg_type, separator, &size, &data_out); ++ if (err != ERROR_SUCCESS) ++ goto error; ++ ++ err = RegSetValueExW(key, value_name, 0, reg_type, data_out, size); ++ HeapFree(GetProcessHeap(), 0, data_out); ++ if (err != ERROR_SUCCESS) ++ goto error; + } + +- RegCloseKey(subkey); ++ RegCloseKey(key); + reg_message(STRING_SUCCESS); +- + return 0; ++ ++error: ++ RegCloseKey(key); ++ reg_print_error(err); ++ return 1; + } + + static int reg_delete(WCHAR *key_name, WCHAR *value_name, BOOL value_empty, +@@ -593,7 +591,14 @@ int wmain(int argc, WCHAR *argvW[]) + else if (!lstrcmpiW(argvW[i], slashTW)) + type = argvW[++i]; + else if (!lstrcmpiW(argvW[i], slashSW)) +- separator = argvW[++i][0]; ++ { ++ if (!argvW[++i][0] || argvW[i][1]) ++ { ++ reg_print_error(ERROR_BAD_COMMAND); ++ return 1; ++ } ++ separator = argvW[i][0]; ++ } + else if (!lstrcmpiW(argvW[i], slashDW)) + data = argvW[++i]; + else if (!lstrcmpiW(argvW[i], slashFW)) +diff --git a/programs/reg/tests/reg.c b/programs/reg/tests/reg.c +index 99b4813..a3ecdfb 100644 +--- a/programs/reg/tests/reg.c ++++ b/programs/reg/tests/reg.c +@@ -110,12 +110,12 @@ static void test_add(void) + + /* Test empty type */ + run_reg_exe("reg add HKCU\\" KEY_BASE " /v emptyType /t \"\" /d WineTest /f", &r); +- todo_wine ok(r == REG_EXIT_SUCCESS || broken(r == REG_EXIT_FAILURE /* WinXP */), ++ ok(r == REG_EXIT_SUCCESS || broken(r == REG_EXIT_FAILURE /* WinXP */), + "got exit code %u\n", r); + if (r == REG_EXIT_SUCCESS) +- todo_wine verify_reg(hkey, "emptyType", REG_SZ, "", 1, 0); ++ verify_reg(hkey, "emptyType", REG_SZ, "", 1, 0); + else +- todo_wine win_skip("broken reg.exe detected\n"); ++ win_skip("broken reg.exe detected\n"); + + /* Test input key formats */ + run_reg_exe("reg add \\HKCU\\" KEY_BASE "\\keytest0 /f", &r); +@@ -171,7 +171,7 @@ static void test_add(void) + + run_reg_exe("reg add HKCU\\" KEY_BASE " /v test /f", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r); +- verify_reg(hkey, "test", REG_SZ, "", 1, TODO_REG_SIZE); ++ verify_reg(hkey, "test", REG_SZ, "", 1, 0); + + run_reg_exe("reg add HKEY_CURRENT_USER\\" KEY_BASE " /ve /d WineTEST /f", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r); +@@ -179,7 +179,7 @@ static void test_add(void) + + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_SZ /v test2 /f", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r); +- verify_reg(hkey, "test2", REG_SZ, "", 1, TODO_REG_SIZE); ++ verify_reg(hkey, "test2", REG_SZ, "", 1, 0); + + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_SZ /v test3 /f /d \"\"", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r); +@@ -196,7 +196,7 @@ static void test_add(void) + + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_EXPAND_SZ /v expand2 /f", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %u\n", r); +- verify_reg(hkey, "expand2", REG_EXPAND_SZ, "", 1, TODO_REG_SIZE); ++ verify_reg(hkey, "expand2", REG_EXPAND_SZ, "", 1, 0); + + run_reg_exe("reg add HKEY_CURRENT_USER\\" KEY_BASE " /ve /t REG_EXPAND_SZ /d WineTEST /f", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %u\n", r); +@@ -254,7 +254,7 @@ static void test_add(void) + win_skip("broken reg.exe detected\n"); + + run_reg_exe("reg add HKCU\\" KEY_BASE " /v dword1 /t REG_DWORD /f", &r); +- todo_wine ok(r == REG_EXIT_FAILURE || broken(r == REG_EXIT_SUCCESS /* WinXP */), ++ ok(r == REG_EXIT_FAILURE || broken(r == REG_EXIT_SUCCESS /* WinXP */), + "got exit code %d, expected 0\n", r); + run_reg_exe("reg add HKCU\\" KEY_BASE " /v dword2 /t REG_DWORD /d zzz /f", &r); + ok(r == REG_EXIT_FAILURE, "got exit code %d, expected 1\n", r); +@@ -324,18 +324,18 @@ static void test_add(void) + + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_MULTI_SZ /v multi3 /f", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %u\n", r); +- verify_reg(hkey, "multi3", REG_MULTI_SZ, &buffer[21], 1, TODO_REG_SIZE); ++ verify_reg(hkey, "multi3", REG_MULTI_SZ, &buffer[21], 1, 0); + + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_MULTI_SZ /v multi4 /s \"#\" /d \"threelittlestrings\" /f", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %u\n", r); + verify_reg(hkey, "multi4", REG_MULTI_SZ, "threelittlestrings\0", 20, 0); + + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_MULTI_SZ /v multi5 /s \"#randomgibberish\" /d \"three#little#strings\" /f", &r); +- todo_wine ok(r == REG_EXIT_FAILURE, "got exit code %u\n", r); ++ ok(r == REG_EXIT_FAILURE, "got exit code %u\n", r); + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_MULTI_SZ /v multi6 /s \"\\0\" /d \"three\\0little\\0strings\" /f", &r); +- todo_wine ok(r == REG_EXIT_FAILURE, "got exit code %u\n", r); ++ ok(r == REG_EXIT_FAILURE, "got exit code %u\n", r); + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_MULTI_SZ /v multi7 /s \"\" /d \"three#little#strings\" /f", &r); +- todo_wine ok(r == REG_EXIT_FAILURE, "got exit code %u\n", r); ++ ok(r == REG_EXIT_FAILURE, "got exit code %u\n", r); + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_MULTI_SZ /v multi8 /s \"#\" /d \"##\" /f", &r); + ok(r == REG_EXIT_FAILURE, "got exit code %u\n", r); + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_MULTI_SZ /v multi9 /s \"#\" /d \"two##strings\" /f", &r); +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/reg-Cleanup/0008-reg-Clean-up-reg_delete.patch wine-staging-1.7.36~ubuntu12.04.1/patches/reg-Cleanup/0008-reg-Clean-up-reg_delete.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/reg-Cleanup/0008-reg-Clean-up-reg_delete.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/reg-Cleanup/0008-reg-Clean-up-reg_delete.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,228 @@ +From c1794766d8e9d1a1ddf46f4b81236e71a12fcbc4 Mon Sep 17 00:00:00 2001 +From: Jonathan Vollebregt +Date: Wed, 14 Jan 2015 18:12:28 +0100 +Subject: reg: Clean up reg_delete + +--- + programs/reg/reg.c | 152 ++++++++++++++++++++++++----------------------- + programs/reg/tests/reg.c | 2 +- + 2 files changed, 78 insertions(+), 76 deletions(-) + +diff --git a/programs/reg/reg.c b/programs/reg/reg.c +index 084a8d5..5d7db3b 100755 +--- a/programs/reg/reg.c ++++ b/programs/reg/reg.c +@@ -414,120 +414,122 @@ error: + return 1; + } + +-static int reg_delete(WCHAR *key_name, WCHAR *value_name, BOOL value_empty, +- BOOL value_all, BOOL force) ++static int reg_delete(const WCHAR *key_name, const WCHAR *value_name, const BOOL value_empty, ++ const BOOL value_all, const BOOL force) + { +- HKEY subkey; +- LONG err; +- +- static const WCHAR stubW[] = {'D','E','L','E','T','E', +- ' ','-',' ','%','s',' ','%','s',' ','%','d',' ','%','d',' ','%','d','\n' +- ,0}; +- reg_printfW(stubW, key_name, value_name, value_empty, value_all, force); +- +- err = sane_path(key_name); ++ HKEY key = NULL; ++ LONG err = sane_path(key_name); + if (err != ERROR_SUCCESS) + { + reg_print_error(err); + return 1; + } + +- err = path_open(key_name, &subkey, FALSE); ++ err = path_open(key_name, &key, FALSE); + if (err != ERROR_SUCCESS) +- { +- reg_message(STRING_INVALID_KEY); +- return 1; +- } +- +- if (value_name && value_empty) +- { +- reg_message(STRING_INVALID_CMDLINE); +- return 1; +- } ++ goto error; + +- if (value_empty && value_all) ++ /* Mutually exclusive options */ ++ if ((!!value_name + !!value_empty + !!value_all) > 1) + { +- reg_message(STRING_INVALID_CMDLINE); +- return 1; ++ err = ERROR_BAD_COMMAND; ++ goto error; + } + + if (!force) + { +- /* FIXME: Prompt for delete */ ++ WINE_FIXME("Prompt for delete\n"); + } + +- /* Delete subtree only if no /v* option is given */ +- if (!value_name && !value_empty && !value_all) ++ if (value_empty || value_name) + { +- err = RegDeleteTreeW(subkey, NULL); +- if (err != ERROR_SUCCESS) +- { +- reg_print_error(err); +- return 1; +- } ++ if (value_name && value_name[0]) ++ err = RegDeleteValueW(key, value_name); ++ else ++ err = RegDeleteValueW(key, NULL); + +- err = RegDeleteKeyW(subkey, empty_wstr); + if (err != ERROR_SUCCESS) +- { +- reg_print_error(err); +- return 1; +- } +- reg_message(STRING_SUCCESS); +- return 0; ++ goto error; + } +- +- if (value_all) ++ else if (value_all) + { +- LPWSTR szValue; +- DWORD maxValue; +- DWORD count; +- LONG rc; +- +- rc = RegQueryInfoKeyW(subkey, NULL, NULL, NULL, NULL, NULL, NULL, NULL, +- &maxValue, NULL, NULL, NULL); +- if (rc != ERROR_SUCCESS) ++ WCHAR *enum_v_name; ++ DWORD count, max_size, this_size, i = 0; ++ BOOL incomplete = FALSE; ++ ++ err = RegQueryInfoKeyW(key, NULL, NULL, NULL, NULL, NULL, NULL, ++ &count, &max_size, NULL, NULL, NULL); ++ if (err != ERROR_SUCCESS) ++ goto error; ++ ++ max_size++; ++ enum_v_name = HeapAlloc(GetProcessHeap(), 0, max_size * sizeof(WCHAR)); ++ if (!enum_v_name) + { +- /* FIXME: failure */ +- RegCloseKey(subkey); +- return 1; ++ err = ERROR_NOT_ENOUGH_MEMORY; ++ goto error; + } +- maxValue++; +- szValue = HeapAlloc(GetProcessHeap(),0,maxValue*sizeof(WCHAR)); + +- while (1) ++ while (i < count) + { +- count = maxValue; +- rc = RegEnumValueW(subkey, 0, szValue, &count, NULL, NULL, NULL, NULL); +- if (rc == ERROR_SUCCESS) ++ this_size = max_size; ++ ++ err = RegEnumValueW(key, i, enum_v_name, &this_size, NULL, NULL, NULL, NULL); ++ if (err != ERROR_SUCCESS) ++ { ++ reg_print_error(err); ++ incomplete = TRUE; ++ i++; ++ continue; ++ } ++ ++ err = RegDeleteValueW(key, enum_v_name); ++ if (err != ERROR_SUCCESS) + { +- rc = RegDeleteValueW(subkey, szValue); +- if (rc != ERROR_SUCCESS) +- break; ++ reg_print_error(err); ++ incomplete = TRUE; ++ i++; ++ continue; + } +- else break; ++ ++ count--; + } +- if (rc != ERROR_SUCCESS) ++ ++ HeapFree(GetProcessHeap(), 0, enum_v_name); ++ ++ if (incomplete) + { +- /* FIXME delete failed */ ++ RegCloseKey(key); ++ return 1; + } + } +- else if (value_name) ++ /* Delete subtree only if no /v* option is given */ ++ else + { +- if (RegDeleteValueW(subkey,value_name) != ERROR_SUCCESS) ++ if (key == path_get_rootkey(key_name)) + { +- RegCloseKey(subkey); +- reg_message(STRING_CANNOT_FIND); ++ /* "This works well enough on native to make you regret you pressed enter" - stefand */ ++ WINE_FIXME("Deleting a root key is not implemented.\n"); ++ RegCloseKey(key); + return 1; + } +- } +- else if (value_empty) +- { +- RegSetValueExW(subkey,NULL,0,REG_SZ,NULL,0); ++ ++ err = RegDeleteTreeW(key, NULL); ++ if (err != ERROR_SUCCESS) ++ goto error; ++ err = RegDeleteKeyW(key, empty_wstr); ++ if (err != ERROR_SUCCESS) ++ goto error; + } + +- RegCloseKey(subkey); ++ RegCloseKey(key); + reg_message(STRING_SUCCESS); + return 0; ++ ++error: ++ RegCloseKey(key); ++ reg_print_error(err); ++ return 1; + } + + static int reg_query(WCHAR *key_name, WCHAR *value_name, BOOL value_empty, +diff --git a/programs/reg/tests/reg.c b/programs/reg/tests/reg.c +index a3ecdfb..20ef7af 100644 +--- a/programs/reg/tests/reg.c ++++ b/programs/reg/tests/reg.c +@@ -388,7 +388,7 @@ static void test_delete(void) + run_reg_exe("reg delete HKCU\\" KEY_BASE " /ve /f", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r); + err = RegQueryValueExA(hkey, "", NULL, NULL, NULL, NULL); +- todo_wine ok(err == ERROR_FILE_NOT_FOUND, "got %d\n", err); ++ ok(err == ERROR_FILE_NOT_FOUND, "got %d\n", err); + + run_reg_exe("reg delete HKCU\\" KEY_BASE " /va /f", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r); +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/server-Stored_ACLs/definition wine-staging-1.7.36~ubuntu12.04.1/patches/server-Stored_ACLs/definition --- wine-staging-1.7.35~ubuntu12.04.1/patches/server-Stored_ACLs/definition 2015-01-24 15:32:20.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/server-Stored_ACLs/definition 2015-02-08 20:46:30.000000000 +0000 @@ -1,2 +1,3 @@ Depends: ntdll-DOS_Attributes -Fixes: [31858] Support for stored file ACLs +Fixes: [31858] Silverlight needs support for file ACLs +Fixes: [33576] Support for stored file ACLs diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/slc-SLGetWindowsInformation/0001-ntdll-tests-Add-tests-for-NtQueryLicenseKey.patch wine-staging-1.7.36~ubuntu12.04.1/patches/slc-SLGetWindowsInformation/0001-ntdll-tests-Add-tests-for-NtQueryLicenseKey.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/slc-SLGetWindowsInformation/0001-ntdll-tests-Add-tests-for-NtQueryLicenseKey.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/slc-SLGetWindowsInformation/0001-ntdll-tests-Add-tests-for-NtQueryLicenseKey.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,224 @@ +From d472e386628175207a8e51bcc6a4d357bbf970a9 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Mon, 22 Dec 2014 07:58:10 +0100 +Subject: ntdll/tests: Add tests for NtQueryLicenseKey. + +--- + dlls/ntdll/tests/reg.c | 180 +++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 180 insertions(+) + +diff --git a/dlls/ntdll/tests/reg.c b/dlls/ntdll/tests/reg.c +index 08af73e..1606f8f 100644 +--- a/dlls/ntdll/tests/reg.c ++++ b/dlls/ntdll/tests/reg.c +@@ -130,6 +130,7 @@ static NTSTATUS (WINAPI * pNtCreateKey)( PHANDLE retkey, ACCESS_MASK access, con + ULONG TitleIndex, const UNICODE_STRING *class, ULONG options, + PULONG dispos ); + static NTSTATUS (WINAPI * pNtQueryKey)(HANDLE,KEY_INFORMATION_CLASS,PVOID,ULONG,PULONG); ++static NTSTATUS (WINAPI * pNtQueryLicenseValue)(const UNICODE_STRING *,ULONG *,PVOID,ULONG,ULONG *); + static NTSTATUS (WINAPI * pNtQueryValueKey)(HANDLE,const UNICODE_STRING *,KEY_VALUE_INFORMATION_CLASS,void *,DWORD,DWORD *); + static NTSTATUS (WINAPI * pNtSetValueKey)(HANDLE, const PUNICODE_STRING, ULONG, + ULONG, const void*, ULONG ); +@@ -191,6 +192,10 @@ static BOOL InitFunctionPtrs(void) + NTDLL_GET_PROC(RtlZeroMemory) + NTDLL_GET_PROC(RtlpNtQueryValueKey) + NTDLL_GET_PROC(RtlOpenCurrentUser) ++ ++ /* optional functions */ ++ pNtQueryLicenseValue = (void *)GetProcAddress(hntdll, "NtQueryLicenseValue"); ++ + return TRUE; + } + #undef NTDLL_GET_PROC +@@ -645,6 +650,180 @@ static void test_NtDeleteKey(void) + ok(status == STATUS_SUCCESS, "NtDeleteKey Failed: 0x%08x\n", status); + } + ++static void test_NtQueryLicenseKey(void) ++{ ++ static const WCHAR emptyW[] = {'E','M','P','T','Y',0}; ++ UNICODE_STRING name; ++ WORD buffer[32]; ++ NTSTATUS status; ++ ULONG type, len; ++ DWORD value; ++ ++ if (!pNtQueryLicenseValue) ++ { ++ skip("NtQueryLicenseValue not found, skipping tests\n"); ++ return; ++ } ++ ++ type = 0xdead; ++ len = 0xbeef; ++ memset(&name, 0, sizeof(name)); ++ status = pNtQueryLicenseValue(&name, &type, buffer, sizeof(buffer), &len); ++ ok(status == STATUS_INVALID_PARAMETER, "NtQueryLicenseValue returned %08x, expected STATUS_INVALID_PARAMETER\n", status); ++ ok(type == 0xdead, "expected unmodified value for type, got %u\n", type); ++ ok(len == 0xbeef, "expected unmodified value for len, got %u\n", len); ++ ++ /* test with empty key */ ++ pRtlCreateUnicodeStringFromAsciiz(&name, ""); ++ ++ type = 0xdead; ++ len = 0xbeef; ++ status = pNtQueryLicenseValue(NULL, &type, buffer, sizeof(buffer), &len); ++ ok(status == STATUS_INVALID_PARAMETER, "NtQueryLicenseValue returned %08x, expected STATUS_INVALID_PARAMETER\n", status); ++ ok(type == 0xdead, "expected unmodified value for type, got %u\n", type); ++ ok(len == 0xbeef, "expected unmodified value for len, got %u\n", len); ++ ++ type = 0xdead; ++ status = pNtQueryLicenseValue(&name, &type, buffer, sizeof(buffer), NULL); ++ ok(status == STATUS_INVALID_PARAMETER, "NtQueryLicenseValue returned %08x, expected STATUS_INVALID_PARAMETER\n", status); ++ ok(type == 0xdead, "expected unmodified value for type, got %u\n", type); ++ ++ len = 0xbeef; ++ status = pNtQueryLicenseValue(&name, NULL, buffer, sizeof(buffer), &len); ++ ok(status == STATUS_INVALID_PARAMETER, "NtQueryLicenseValue returned %08x, expected STATUS_INVALID_PARAMETER\n", status); ++ ok(len == 0xbeef, "expected unmodified value for len, got %u\n", len); ++ ++ type = 0xdead; ++ len = 0xbeef; ++ status = pNtQueryLicenseValue(&name, &type, buffer, sizeof(buffer), &len); ++ ok(status == STATUS_INVALID_PARAMETER, "NtQueryLicenseValue returned %08x, expected STATUS_INVALID_PARAMETER\n", status); ++ ok(type == 0xdead, "expected unmodified value for type, got %u\n", type); ++ ok(len == 0xbeef, "expected unmodified value for len, got %u\n", len); ++ ++ pRtlFreeUnicodeString(&name); ++ ++ /* test with nonexistent licence key */ ++ pRtlCreateUnicodeStringFromAsciiz(&name, "Nonexistent-License-Value"); ++ ++ type = 0xdead; ++ len = 0xbeef; ++ status = pNtQueryLicenseValue(NULL, &type, buffer, sizeof(buffer), &len); ++ ok(status == STATUS_INVALID_PARAMETER, "NtQueryLicenseValue returned %08x, expected STATUS_INVALID_PARAMETER\n", status); ++ ok(type == 0xdead, "expected unmodified value for type, got %u\n", type); ++ ok(len == 0xbeef, "expected unmodified value for len, got %u\n", len); ++ ++ type = 0xdead; ++ status = pNtQueryLicenseValue(&name, &type, buffer, sizeof(buffer), NULL); ++ ok(status == STATUS_INVALID_PARAMETER, "NtQueryLicenseValue returned %08x, expected STATUS_INVALID_PARAMETER\n", status); ++ ok(type == 0xdead, "expected unmodified value for type, got %u\n", type); ++ ++ len = 0xbeef; ++ status = pNtQueryLicenseValue(&name, NULL, buffer, sizeof(buffer), &len); ++ ok(status == STATUS_OBJECT_NAME_NOT_FOUND, "NtQueryLicenseValue returned %08x, expected STATUS_OBJECT_NAME_NOT_FOUND\n", status); ++ ok(len == 0xbeef, "expected unmodified value for len, got %u\n", len); ++ ++ type = 0xdead; ++ len = 0xbeef; ++ status = pNtQueryLicenseValue(&name, &type, buffer, sizeof(buffer), &len); ++ ok(status == STATUS_OBJECT_NAME_NOT_FOUND, "NtQueryLicenseValue unexpected suceeded\n"); ++ ok(type == 0xdead, "expected unmodified value for type, got %u\n", type); ++ ok(len == 0xbeef, "expected unmodified value for len, got %u\n", len); ++ ++ pRtlFreeUnicodeString(&name); ++ ++ /* test with REG_SZ license key */ ++ pRtlCreateUnicodeStringFromAsciiz(&name, "Kernel-MUI-Language-Allowed"); ++ ++ type = 0xdead; ++ len = 0xbeef; ++ status = pNtQueryLicenseValue(NULL, &type, buffer, sizeof(buffer), &len); ++ ok(status == STATUS_INVALID_PARAMETER, "NtQueryLicenseValue returned %08x, expected STATUS_INVALID_PARAMETER\n", status); ++ ok(type == 0xdead, "expected unmodified value for type, got %u\n", type); ++ ok(len == 0xbeef, "expected unmodified value for len, got %u\n", len); ++ ++ type = 0xdead; ++ status = pNtQueryLicenseValue(&name, &type, buffer, sizeof(buffer), NULL); ++ ok(status == STATUS_INVALID_PARAMETER, "NtQueryLicenseValue returned %08x, expected STATUS_INVALID_PARAMETER\n", status); ++ ok(type == 0xdead, "expected unmodified value for type, got %u\n", type); ++ ++ type = 0xdead; ++ len = 0; ++ status = pNtQueryLicenseValue(&name, &type, buffer, 0, &len); ++ ok(status == STATUS_BUFFER_TOO_SMALL, "NtQueryLicenseValue returned %08x, expected STATUS_BUFFER_TOO_SMALL\n", status); ++ ok(type == REG_SZ, "expected type = REG_SZ, got %u\n", type); ++ ok(len == sizeof(emptyW), "expected len = %u, got %u\n", (DWORD)sizeof(emptyW), len); ++ ++ len = 0; ++ status = pNtQueryLicenseValue(&name, NULL, buffer, 0, &len); ++ ok(status == STATUS_BUFFER_TOO_SMALL, "NtQueryLicenseValue returned %08x, expected STATUS_BUFFER_TOO_SMALL\n", status); ++ ok(len == sizeof(emptyW), "expected len = %u, got %u\n", (DWORD)sizeof(emptyW), len); ++ ++ type = 0xdead; ++ len = 0; ++ memset(buffer, 0x11, sizeof(buffer)); ++ status = pNtQueryLicenseValue(&name, &type, buffer, sizeof(buffer), &len); ++ ok(status == STATUS_SUCCESS, "NtQueryLicenseValue returned %08x, expected STATUS_SUCCESS\n", status); ++ ok(type == REG_SZ, "expected type = REG_SZ, got %u\n", type); ++ ok(len == sizeof(emptyW), "expected len = %u, got %u\n", (DWORD)sizeof(emptyW), len); ++ ok(!memcmp(buffer, emptyW, sizeof(emptyW)), "unexpected buffer content\n"); ++ ++ type = 0xdead; ++ len = 0; ++ memset(buffer, 0x11, sizeof(buffer)); ++ status = pNtQueryLicenseValue(&name, &type, buffer, 2, &len); ++ ok(status == STATUS_BUFFER_TOO_SMALL, "NtQueryLicenseValue returned %08x, expected STATUS_BUFFER_TOO_SMALL\n", status); ++ ok(type == REG_SZ, "expected type REG_SZ, got %u\n", type); ++ ok(len == sizeof(emptyW), "expected len = %u, got %u\n", (DWORD)sizeof(emptyW), len); ++ ok(buffer[0] == 0x1111, "expected buffer[0] = 0x1111, got %u\n", buffer[0]); ++ ++ pRtlFreeUnicodeString(&name); ++ ++ /* test with REG_DWORD license key */ ++ pRtlCreateUnicodeStringFromAsciiz(&name, "Kernel-MUI-Number-Allowed"); ++ ++ type = 0xdead; ++ len = 0xbeef; ++ status = pNtQueryLicenseValue(NULL, &type, &value, sizeof(value), &len); ++ ok(status == STATUS_INVALID_PARAMETER, "NtQueryLicenseValue returned %08x, expected STATUS_INVALID_PARAMETER\n", status); ++ ok(type == 0xdead, "expected unmodified value for type, got %u\n", type); ++ ok(len == 0xbeef, "expected unmodified value for len, got %u\n", len); ++ ++ type = 0xdead; ++ status = pNtQueryLicenseValue(&name, &type, &value, sizeof(value), NULL); ++ ok(status == STATUS_INVALID_PARAMETER, "NtQueryLicenseValue returned %08x, expected STATUS_INVALID_PARAMETER\n", status); ++ ok(type == 0xdead, "expected unmodified value for type, got %u\n", type); ++ ++ type = 0xdead; ++ len = 0; ++ status = pNtQueryLicenseValue(&name, &type, &value, 0, &len); ++ ok(status == STATUS_BUFFER_TOO_SMALL, "NtQueryLicenseValue returned %08x, expected STATUS_BUFFER_TOO_SMALL\n", status); ++ ok(type == REG_DWORD, "expected type = REG_DWORD, got %u\n", type); ++ ok(len == sizeof(value), "expected len = %u, got %u\n", (DWORD)sizeof(value), len); ++ ++ len = 0; ++ status = pNtQueryLicenseValue(&name, NULL, &value, 0, &len); ++ ok(status == STATUS_BUFFER_TOO_SMALL, "NtQueryLicenseValue returned %08x, expected STATUS_BUFFER_TOO_SMALL\n", status); ++ ok(len == sizeof(value), "expected len = %u, got %u\n", (DWORD)sizeof(value), len); ++ ++ type = 0xdead; ++ len = 0; ++ value = 0xdeadbeef; ++ status = pNtQueryLicenseValue(&name, &type, &value, sizeof(value), &len); ++ ok(status == STATUS_SUCCESS, "NtQueryLicenseValue returned %08x, expected STATUS_SUCCESS\n", status); ++ ok(type == REG_DWORD, "expected type = REG_DWORD, got %u\n", type); ++ ok(len == sizeof(value), "expected len = %u, got %u\n", (DWORD)sizeof(value), len); ++ ok(value != 0xdeadbeef, "expected value != 0xdeadbeef\n"); ++ ++ type = 0xdead; ++ len = 0; ++ status = pNtQueryLicenseValue(&name, &type, &value, 2, &len); ++ ok(status == STATUS_BUFFER_TOO_SMALL, "NtQueryLicenseValue returned %08x, expected STATUS_BUFFER_TOO_SMALL\n", status); ++ ok(type == REG_DWORD, "expected type REG_DWORD, got %u\n", type); ++ ok(len == sizeof(value), "expected len = %u, got %u\n", (DWORD)sizeof(value), len); ++ ++ pRtlFreeUnicodeString(&name); ++} ++ + static void test_RtlpNtQueryValueKey(void) + { + NTSTATUS status; +@@ -1347,6 +1526,7 @@ START_TEST(reg) + test_NtFlushKey(); + test_NtQueryKey(); + test_NtQueryValueKey(); ++ test_NtQueryLicenseKey(); + test_long_value_name(); + test_NtDeleteKey(); + test_symlinks(); +-- +2.2.1 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/slc-SLGetWindowsInformation/0001-slc-tests-Add-tests-for-SLGetWindowsInformationDWORD.patch wine-staging-1.7.36~ubuntu12.04.1/patches/slc-SLGetWindowsInformation/0001-slc-tests-Add-tests-for-SLGetWindowsInformationDWORD.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/slc-SLGetWindowsInformation/0001-slc-tests-Add-tests-for-SLGetWindowsInformationDWORD.patch 2015-01-24 15:32:20.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/slc-SLGetWindowsInformation/0001-slc-tests-Add-tests-for-SLGetWindowsInformationDWORD.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,138 +0,0 @@ -From 509bb7172754c95f340aacfeae365e6da7007305 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Mon, 22 Dec 2014 07:26:37 +0100 -Subject: slc/tests: Add tests for SLGetWindowsInformationDWORD. - ---- - configure.ac | 1 + - dlls/slc/tests/Makefile.in | 5 +++ - dlls/slc/tests/slc.c | 80 ++++++++++++++++++++++++++++++++++++++++++++++ - include/slerror.h | 1 + - 4 files changed, 87 insertions(+) - create mode 100644 dlls/slc/tests/Makefile.in - create mode 100644 dlls/slc/tests/slc.c - -diff --git a/configure.ac b/configure.ac -index 2fa4dcc..0eaa26e 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -3228,6 +3228,7 @@ WINE_CONFIG_DLL(shlwapi,,[implib,po]) - WINE_CONFIG_TEST(dlls/shlwapi/tests) - WINE_CONFIG_DLL(slbcsp) - WINE_CONFIG_DLL(slc,,[implib]) -+WINE_CONFIG_TEST(dlls/slc/tests) - WINE_CONFIG_DLL(snmpapi,,[implib]) - WINE_CONFIG_TEST(dlls/snmpapi/tests) - WINE_CONFIG_DLL(softpub) -diff --git a/dlls/slc/tests/Makefile.in b/dlls/slc/tests/Makefile.in -new file mode 100644 -index 0000000..51b648c ---- /dev/null -+++ b/dlls/slc/tests/Makefile.in -@@ -0,0 +1,5 @@ -+TESTDLL = slc.dll -+IMPORTS = slc -+ -+C_SRCS = \ -+ slc.c -diff --git a/dlls/slc/tests/slc.c b/dlls/slc/tests/slc.c -new file mode 100644 -index 0000000..723cd4c ---- /dev/null -+++ b/dlls/slc/tests/slc.c -@@ -0,0 +1,80 @@ -+/* -+ * Copyright 2014 Sebastian Lackner -+ * -+ * This library is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2.1 of the License, or (at your option) any later version. -+ * -+ * This library is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with this library; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA -+ */ -+ -+#include -+ -+#include "windef.h" -+#include "winbase.h" -+#include "winerror.h" -+ -+#include "slpublic.h" -+#include "slerror.h" -+ -+#include -+ -+static void test_SLGetWindowsInformationDWORD(void) -+{ -+ static const WCHAR NonexistentLicenseValueW[] = {'N','o','n','e','x','i','s','t','e','n','t','-', -+ 'L','i','c','e','n','s','e','-','V','a','l','u','e',0}; -+ static const WCHAR KernelMUILanguageAllowedW[] = {'K','e','r','n','e','l','-','M','U','I','-', -+ 'L','a','n','g','u','a','g','e','-','A','l','l','o','w','e','d',0}; -+ static const WCHAR KernelMUINumberAllowedW[] = {'K','e','r','n','e','l','-','M','U','I','-', -+ 'N','u','m','b','e','r','-','A','l','l','o','w','e','d',0}; -+ static const WCHAR emptyW[] = {0}; -+ DWORD value; -+ HRESULT res; -+ -+ res = SLGetWindowsInformationDWORD(NonexistentLicenseValueW, NULL); -+ todo_wine -+ ok(res == E_INVALIDARG, "expected E_INVALIDARG, got %08x\n", res); -+ -+ res = SLGetWindowsInformationDWORD(NULL, &value); -+ todo_wine -+ ok(res == E_INVALIDARG, "expected E_INVALIDARG, got %08x\n", res); -+ -+ value = 0xdeadbeef; -+ res = SLGetWindowsInformationDWORD(NonexistentLicenseValueW, &value); -+ todo_wine -+ ok(res == SL_E_VALUE_NOT_FOUND, "expected SL_E_VALUE_NOT_FOUND, got %08x\n", res); -+ ok(value == 0xdeadbeef, "expected value = 0xdeadbeef, got %u\n", value); -+ -+ value = 0xdeadbeef; -+ res = SLGetWindowsInformationDWORD(emptyW, &value); -+ ok(res == SL_E_RIGHT_NOT_GRANTED || broken(res == 0xd000000d) /* Win 8 */, -+ "expected SL_E_RIGHT_NOT_GRANTED, got %08x\n", res); -+ ok(value == 0xdeadbeef, "expected value = 0xdeadbeef, got %u\n", value); -+ -+ value = 0xdeadbeef; -+ res = SLGetWindowsInformationDWORD(KernelMUILanguageAllowedW, &value); -+ todo_wine -+ ok(res == SL_E_DATATYPE_MISMATCHED, "expected SL_E_DATATYPE_MISMATCHED, got %08x\n", res); -+ ok(value == 0xdeadbeef, "expected value = 0xdeadbeef, got %u\n", value); -+ -+ value = 0xdeadbeef; -+ res = SLGetWindowsInformationDWORD(KernelMUINumberAllowedW, &value); -+ todo_wine -+ ok(res == S_OK, "expected S_OK, got %u\n", res); -+ todo_wine -+ ok(value != 0xdeadbeef, "expected value != 0xdeadbeef\n"); -+} -+ -+ -+START_TEST(slc) -+{ -+ test_SLGetWindowsInformationDWORD(); -+} -diff --git a/include/slerror.h b/include/slerror.h -index 9c800f6..8b45d99 100644 ---- a/include/slerror.h -+++ b/include/slerror.h -@@ -19,6 +19,7 @@ - #ifndef __WINE_SLERROR_H - #define __WINE_SLERROR_H - -+#define SL_E_VALUE_NOT_FOUND 0xC004F012 - #define SL_E_RIGHT_NOT_GRANTED 0xC004F013 - #define SL_E_DATATYPE_MISMATCHED 0xC004F01E - --- -2.2.1 - diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/slc-SLGetWindowsInformation/0002-ntdll-Implement-Nt-Zw-QueryLicenseValue.patch wine-staging-1.7.36~ubuntu12.04.1/patches/slc-SLGetWindowsInformation/0002-ntdll-Implement-Nt-Zw-QueryLicenseValue.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/slc-SLGetWindowsInformation/0002-ntdll-Implement-Nt-Zw-QueryLicenseValue.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/slc-SLGetWindowsInformation/0002-ntdll-Implement-Nt-Zw-QueryLicenseValue.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,195 @@ +From 93534274eab90da6059cdc56d1e58912d2071101 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Mon, 22 Dec 2014 20:01:29 +0100 +Subject: ntdll: Implement [Nt|Zw]QueryLicenseValue. + +--- + dlls/ntdll/ntdll.spec | 2 ++ + dlls/ntdll/reg.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++ + dlls/ntdll/tests/reg.c | 2 +- + include/winternl.h | 1 + + loader/wine.inf.in | 26 ++++++++++++++++---- + 5 files changed, 90 insertions(+), 5 deletions(-) + +diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec +index 51de6e7..da43cf0 100644 +--- a/dlls/ntdll/ntdll.spec ++++ b/dlls/ntdll/ntdll.spec +@@ -255,6 +255,7 @@ + @ stub NtQueryIntervalProfile + @ stdcall NtQueryIoCompletion(long long ptr long ptr) + @ stdcall NtQueryKey (long long ptr long ptr) ++@ stdcall NtQueryLicenseValue(ptr ptr ptr long ptr) + @ stdcall NtQueryMultipleValueKey(long ptr long ptr long ptr) + @ stdcall NtQueryMutant(long long ptr long ptr) + @ stdcall NtQueryObject(long long long long long) +@@ -1134,6 +1135,7 @@ + @ stub ZwQueryIntervalProfile + @ stdcall ZwQueryIoCompletion(long long ptr long ptr) NtQueryIoCompletion + @ stdcall ZwQueryKey(long long ptr long ptr) NtQueryKey ++@ stdcall ZwQueryLicenseValue(ptr ptr ptr long ptr) NtQueryLicenseValue + @ stdcall ZwQueryMultipleValueKey(long ptr long ptr long ptr) NtQueryMultipleValueKey + @ stdcall ZwQueryMutant(long long ptr long ptr) NtQueryMutant + @ stdcall ZwQueryObject(long long long long long) NtQueryObject +diff --git a/dlls/ntdll/reg.c b/dlls/ntdll/reg.c +index cdca88a..a104c2e 100644 +--- a/dlls/ntdll/reg.c ++++ b/dlls/ntdll/reg.c +@@ -1401,3 +1401,67 @@ NTSTATUS WINAPI RtlWriteRegistryValue( ULONG RelativeTo, PCWSTR path, PCWSTR nam + + return status; + } ++ ++/************************************************************************* ++ * NtQueryLicenseValue [NTDLL.@] ++ * ++ * NOTES ++ * On Windows all license properties are stored in a single key, but ++ * unless there is some app which explicitly depends on that, there is ++ * no good reason to reproduce that. ++ */ ++NTSTATUS WINAPI NtQueryLicenseValue( const UNICODE_STRING *name, ULONG *result_type, ++ PVOID data, ULONG length, ULONG *result_len ) ++{ ++ static const WCHAR LicenseInformationW[] = {'M','a','c','h','i','n','e','\\', ++ 'S','o','f','t','w','a','r','e','\\', ++ 'W','i','n','e','\\','L','i','c','e','n','s','e', ++ 'I','n','f','o','r','m','a','t','i','o','n',0}; ++ KEY_VALUE_PARTIAL_INFORMATION *info; ++ NTSTATUS status = STATUS_OBJECT_NAME_NOT_FOUND; ++ DWORD info_length, count; ++ OBJECT_ATTRIBUTES attr; ++ UNICODE_STRING keyW; ++ HANDLE hkey; ++ ++ if (!name || !name->Buffer || !name->Length || !result_len) ++ return STATUS_INVALID_PARAMETER; ++ ++ info_length = FIELD_OFFSET(KEY_VALUE_PARTIAL_INFORMATION, Data) + length; ++ info = RtlAllocateHeap( GetProcessHeap(), 0, info_length ); ++ if (!info) return STATUS_NO_MEMORY; ++ ++ attr.Length = sizeof(attr); ++ attr.RootDirectory = 0; ++ attr.ObjectName = &keyW; ++ attr.Attributes = 0; ++ attr.SecurityDescriptor = NULL; ++ attr.SecurityQualityOfService = NULL; ++ RtlInitUnicodeString( &keyW, LicenseInformationW ); ++ ++ /* @@ Wine registry key: HKLM\Software\Wine\LicenseInformation */ ++ if (!NtOpenKey( &hkey, KEY_READ, &attr )) ++ { ++ status = NtQueryValueKey( hkey, name, KeyValuePartialInformation, ++ info, info_length, &count ); ++ if (!status || status == STATUS_BUFFER_OVERFLOW) ++ { ++ if (result_type) ++ *result_type = info->Type; ++ ++ *result_len = info->DataLength; ++ ++ if (status == STATUS_BUFFER_OVERFLOW) ++ status = STATUS_BUFFER_TOO_SMALL; ++ else ++ memcpy( data, info->Data, info->DataLength ); ++ } ++ NtClose( hkey ); ++ } ++ ++ if (status == STATUS_OBJECT_NAME_NOT_FOUND) ++ FIXME( "License key %s not found\n", debugstr_w(name->Buffer) ); ++ ++ RtlFreeHeap( GetProcessHeap(), 0, info ); ++ return status; ++} +diff --git a/dlls/ntdll/tests/reg.c b/dlls/ntdll/tests/reg.c +index 968c291..e7596b8 100644 +--- a/dlls/ntdll/tests/reg.c ++++ b/dlls/ntdll/tests/reg.c +@@ -661,7 +661,7 @@ static void test_NtQueryLicenseKey(void) + + if (!pNtQueryLicenseValue) + { +- skip("NtQueryLicenseValue not found, skipping tests\n"); ++ win_skip("NtQueryLicenseValue not found, skipping tests\n"); + return; + } + +diff --git a/include/winternl.h b/include/winternl.h +index 1a694da..c448760 100644 +--- a/include/winternl.h ++++ b/include/winternl.h +@@ -2184,6 +2184,7 @@ NTSYSAPI NTSTATUS WINAPI NtQuerySystemTime(PLARGE_INTEGER); + NTSYSAPI NTSTATUS WINAPI NtQueryTimer(HANDLE,TIMER_INFORMATION_CLASS,PVOID,ULONG,PULONG); + NTSYSAPI NTSTATUS WINAPI NtQueryTimerResolution(PULONG,PULONG,PULONG); + NTSYSAPI NTSTATUS WINAPI NtQueryValueKey(HANDLE,const UNICODE_STRING *,KEY_VALUE_INFORMATION_CLASS,void *,DWORD,DWORD *); ++NTSYSAPI NTSTATUS WINAPI NtQueryLicenseValue(const UNICODE_STRING *,ULONG *,PVOID,ULONG,ULONG *); + NTSYSAPI NTSTATUS WINAPI NtQueryVirtualMemory(HANDLE,LPCVOID,MEMORY_INFORMATION_CLASS,PVOID,SIZE_T,SIZE_T*); + NTSYSAPI NTSTATUS WINAPI NtQueryVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS); + NTSYSAPI NTSTATUS WINAPI NtRaiseException(PEXCEPTION_RECORD,PCONTEXT,BOOL); +diff --git a/loader/wine.inf.in b/loader/wine.inf.in +index a4548f2..3c401b1 100644 +--- a/loader/wine.inf.in ++++ b/loader/wine.inf.in +@@ -47,7 +47,8 @@ AddReg=\ + Services, \ + SessionMgr,\ + Tapi,\ +- Timezones ++ Timezones,\ ++ LicenseInformation + + [DefaultInstall.NT] + RegisterDlls=RegisterDllsSection +@@ -71,7 +72,8 @@ AddReg=\ + SessionMgr,\ + Tapi,\ + Timezones,\ +- VersionInfo ++ VersionInfo,\ ++ LicenseInformation + + [DefaultInstall.ntamd64] + RegisterDlls=RegisterDllsSection +@@ -97,7 +99,8 @@ AddReg=\ + SessionMgr,\ + Tapi,\ + Timezones,\ +- VersionInfo.ntamd64 ++ VersionInfo.ntamd64,\ ++ LicenseInformation + + [Wow64Install] + RegisterDlls=RegisterDllsSection +@@ -111,7 +114,8 @@ AddReg=\ + MCI,\ + Misc,\ + Tapi,\ +- VersionInfo.ntamd64 ++ VersionInfo.ntamd64,\ ++ LicenseInformation + + [DefaultInstall.Services] + AddService=BITS,0,BITSService +@@ -3140,3 +3144,17 @@ HKLM,Software\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Time Zones,"Symbol + HKLM,Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Time Zones,"SymbolicLinkValue",0x60000,"\Registry\Machine\Software\Microsoft\Windows NT\CurrentVersion\Time Zones" + HKLM,Software\Wow6432Node\Policies,"SymbolicLinkValue",0x60000,"\Registry\Machine\Software\Policies" + HKLM,Software\Wow6432Node\Registered Applications,"SymbolicLinkValue",0x60000,"\Registry\Machine\Software\Registered Applications" ++ ++[LicenseInformation] ++; based on information from http://www.geoffchappell.com/notes/windows/license/install.htm ++HKLM,Software\Wine\LicenseInformation,"Kernel-MUI-Language-Allowed",,"EMPTY" ++HKLM,Software\Wine\LicenseInformation,"Kernel-MUI-Language-Disallowed",,"EMPTY" ++HKLM,Software\Wine\LicenseInformation,"Kernel-MUI-Number-Allowed",0x10001,1000 ++HKLM,Software\Wine\LicenseInformation,"Shell-InBoxGames-FreeCell-EnableGame",0x10001,0x00000001 ++HKLM,Software\Wine\LicenseInformation,"Shell-InBoxGames-Hearts-EnableGame",0x10001,0x00000001 ++HKLM,Software\Wine\LicenseInformation,"Shell-InBoxGames-Minesweeper-EnableGame",0x10001,0x00000001 ++HKLM,Software\Wine\LicenseInformation,"Shell-InBoxGames-PurblePlace-EnableGame",0x10001,0x00000001 ++HKLM,Software\Wine\LicenseInformation,"Shell-InBoxGames-Shanghai-EnableGame",0x10001,0x00000001 ++HKLM,Software\Wine\LicenseInformation,"Shell-InBoxGames-Solitaire-EnableGame",0x10001,0x00000001 ++HKLM,Software\Wine\LicenseInformation,"Shell-InBoxGames-SpiderSolitaire-EnableGame",0x10001,0x00000001 ++HKLM,Software\Wine\LicenseInformation,"Shell-PremiumInBoxGames-Chess-EnableGame",0x10001,0x00000001 +-- +2.2.1 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/slc-SLGetWindowsInformation/0002-ntdll-tests-Add-tests-for-NtQueryLicenseKey.patch wine-staging-1.7.36~ubuntu12.04.1/patches/slc-SLGetWindowsInformation/0002-ntdll-tests-Add-tests-for-NtQueryLicenseKey.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/slc-SLGetWindowsInformation/0002-ntdll-tests-Add-tests-for-NtQueryLicenseKey.patch 2015-01-24 15:32:20.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/slc-SLGetWindowsInformation/0002-ntdll-tests-Add-tests-for-NtQueryLicenseKey.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,224 +0,0 @@ -From d472e386628175207a8e51bcc6a4d357bbf970a9 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Mon, 22 Dec 2014 07:58:10 +0100 -Subject: ntdll/tests: Add tests for NtQueryLicenseKey. - ---- - dlls/ntdll/tests/reg.c | 180 +++++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 180 insertions(+) - -diff --git a/dlls/ntdll/tests/reg.c b/dlls/ntdll/tests/reg.c -index 08af73e..1606f8f 100644 ---- a/dlls/ntdll/tests/reg.c -+++ b/dlls/ntdll/tests/reg.c -@@ -130,6 +130,7 @@ static NTSTATUS (WINAPI * pNtCreateKey)( PHANDLE retkey, ACCESS_MASK access, con - ULONG TitleIndex, const UNICODE_STRING *class, ULONG options, - PULONG dispos ); - static NTSTATUS (WINAPI * pNtQueryKey)(HANDLE,KEY_INFORMATION_CLASS,PVOID,ULONG,PULONG); -+static NTSTATUS (WINAPI * pNtQueryLicenseValue)(const UNICODE_STRING *,ULONG *,PVOID,ULONG,ULONG *); - static NTSTATUS (WINAPI * pNtQueryValueKey)(HANDLE,const UNICODE_STRING *,KEY_VALUE_INFORMATION_CLASS,void *,DWORD,DWORD *); - static NTSTATUS (WINAPI * pNtSetValueKey)(HANDLE, const PUNICODE_STRING, ULONG, - ULONG, const void*, ULONG ); -@@ -191,6 +192,10 @@ static BOOL InitFunctionPtrs(void) - NTDLL_GET_PROC(RtlZeroMemory) - NTDLL_GET_PROC(RtlpNtQueryValueKey) - NTDLL_GET_PROC(RtlOpenCurrentUser) -+ -+ /* optional functions */ -+ pNtQueryLicenseValue = (void *)GetProcAddress(hntdll, "NtQueryLicenseValue"); -+ - return TRUE; - } - #undef NTDLL_GET_PROC -@@ -645,6 +650,180 @@ static void test_NtDeleteKey(void) - ok(status == STATUS_SUCCESS, "NtDeleteKey Failed: 0x%08x\n", status); - } - -+static void test_NtQueryLicenseKey(void) -+{ -+ static const WCHAR emptyW[] = {'E','M','P','T','Y',0}; -+ UNICODE_STRING name; -+ WORD buffer[32]; -+ NTSTATUS status; -+ ULONG type, len; -+ DWORD value; -+ -+ if (!pNtQueryLicenseValue) -+ { -+ skip("NtQueryLicenseValue not found, skipping tests\n"); -+ return; -+ } -+ -+ type = 0xdead; -+ len = 0xbeef; -+ memset(&name, 0, sizeof(name)); -+ status = pNtQueryLicenseValue(&name, &type, buffer, sizeof(buffer), &len); -+ ok(status == STATUS_INVALID_PARAMETER, "NtQueryLicenseValue returned %08x, expected STATUS_INVALID_PARAMETER\n", status); -+ ok(type == 0xdead, "expected unmodified value for type, got %u\n", type); -+ ok(len == 0xbeef, "expected unmodified value for len, got %u\n", len); -+ -+ /* test with empty key */ -+ pRtlCreateUnicodeStringFromAsciiz(&name, ""); -+ -+ type = 0xdead; -+ len = 0xbeef; -+ status = pNtQueryLicenseValue(NULL, &type, buffer, sizeof(buffer), &len); -+ ok(status == STATUS_INVALID_PARAMETER, "NtQueryLicenseValue returned %08x, expected STATUS_INVALID_PARAMETER\n", status); -+ ok(type == 0xdead, "expected unmodified value for type, got %u\n", type); -+ ok(len == 0xbeef, "expected unmodified value for len, got %u\n", len); -+ -+ type = 0xdead; -+ status = pNtQueryLicenseValue(&name, &type, buffer, sizeof(buffer), NULL); -+ ok(status == STATUS_INVALID_PARAMETER, "NtQueryLicenseValue returned %08x, expected STATUS_INVALID_PARAMETER\n", status); -+ ok(type == 0xdead, "expected unmodified value for type, got %u\n", type); -+ -+ len = 0xbeef; -+ status = pNtQueryLicenseValue(&name, NULL, buffer, sizeof(buffer), &len); -+ ok(status == STATUS_INVALID_PARAMETER, "NtQueryLicenseValue returned %08x, expected STATUS_INVALID_PARAMETER\n", status); -+ ok(len == 0xbeef, "expected unmodified value for len, got %u\n", len); -+ -+ type = 0xdead; -+ len = 0xbeef; -+ status = pNtQueryLicenseValue(&name, &type, buffer, sizeof(buffer), &len); -+ ok(status == STATUS_INVALID_PARAMETER, "NtQueryLicenseValue returned %08x, expected STATUS_INVALID_PARAMETER\n", status); -+ ok(type == 0xdead, "expected unmodified value for type, got %u\n", type); -+ ok(len == 0xbeef, "expected unmodified value for len, got %u\n", len); -+ -+ pRtlFreeUnicodeString(&name); -+ -+ /* test with nonexistent licence key */ -+ pRtlCreateUnicodeStringFromAsciiz(&name, "Nonexistent-License-Value"); -+ -+ type = 0xdead; -+ len = 0xbeef; -+ status = pNtQueryLicenseValue(NULL, &type, buffer, sizeof(buffer), &len); -+ ok(status == STATUS_INVALID_PARAMETER, "NtQueryLicenseValue returned %08x, expected STATUS_INVALID_PARAMETER\n", status); -+ ok(type == 0xdead, "expected unmodified value for type, got %u\n", type); -+ ok(len == 0xbeef, "expected unmodified value for len, got %u\n", len); -+ -+ type = 0xdead; -+ status = pNtQueryLicenseValue(&name, &type, buffer, sizeof(buffer), NULL); -+ ok(status == STATUS_INVALID_PARAMETER, "NtQueryLicenseValue returned %08x, expected STATUS_INVALID_PARAMETER\n", status); -+ ok(type == 0xdead, "expected unmodified value for type, got %u\n", type); -+ -+ len = 0xbeef; -+ status = pNtQueryLicenseValue(&name, NULL, buffer, sizeof(buffer), &len); -+ ok(status == STATUS_OBJECT_NAME_NOT_FOUND, "NtQueryLicenseValue returned %08x, expected STATUS_OBJECT_NAME_NOT_FOUND\n", status); -+ ok(len == 0xbeef, "expected unmodified value for len, got %u\n", len); -+ -+ type = 0xdead; -+ len = 0xbeef; -+ status = pNtQueryLicenseValue(&name, &type, buffer, sizeof(buffer), &len); -+ ok(status == STATUS_OBJECT_NAME_NOT_FOUND, "NtQueryLicenseValue unexpected suceeded\n"); -+ ok(type == 0xdead, "expected unmodified value for type, got %u\n", type); -+ ok(len == 0xbeef, "expected unmodified value for len, got %u\n", len); -+ -+ pRtlFreeUnicodeString(&name); -+ -+ /* test with REG_SZ license key */ -+ pRtlCreateUnicodeStringFromAsciiz(&name, "Kernel-MUI-Language-Allowed"); -+ -+ type = 0xdead; -+ len = 0xbeef; -+ status = pNtQueryLicenseValue(NULL, &type, buffer, sizeof(buffer), &len); -+ ok(status == STATUS_INVALID_PARAMETER, "NtQueryLicenseValue returned %08x, expected STATUS_INVALID_PARAMETER\n", status); -+ ok(type == 0xdead, "expected unmodified value for type, got %u\n", type); -+ ok(len == 0xbeef, "expected unmodified value for len, got %u\n", len); -+ -+ type = 0xdead; -+ status = pNtQueryLicenseValue(&name, &type, buffer, sizeof(buffer), NULL); -+ ok(status == STATUS_INVALID_PARAMETER, "NtQueryLicenseValue returned %08x, expected STATUS_INVALID_PARAMETER\n", status); -+ ok(type == 0xdead, "expected unmodified value for type, got %u\n", type); -+ -+ type = 0xdead; -+ len = 0; -+ status = pNtQueryLicenseValue(&name, &type, buffer, 0, &len); -+ ok(status == STATUS_BUFFER_TOO_SMALL, "NtQueryLicenseValue returned %08x, expected STATUS_BUFFER_TOO_SMALL\n", status); -+ ok(type == REG_SZ, "expected type = REG_SZ, got %u\n", type); -+ ok(len == sizeof(emptyW), "expected len = %u, got %u\n", (DWORD)sizeof(emptyW), len); -+ -+ len = 0; -+ status = pNtQueryLicenseValue(&name, NULL, buffer, 0, &len); -+ ok(status == STATUS_BUFFER_TOO_SMALL, "NtQueryLicenseValue returned %08x, expected STATUS_BUFFER_TOO_SMALL\n", status); -+ ok(len == sizeof(emptyW), "expected len = %u, got %u\n", (DWORD)sizeof(emptyW), len); -+ -+ type = 0xdead; -+ len = 0; -+ memset(buffer, 0x11, sizeof(buffer)); -+ status = pNtQueryLicenseValue(&name, &type, buffer, sizeof(buffer), &len); -+ ok(status == STATUS_SUCCESS, "NtQueryLicenseValue returned %08x, expected STATUS_SUCCESS\n", status); -+ ok(type == REG_SZ, "expected type = REG_SZ, got %u\n", type); -+ ok(len == sizeof(emptyW), "expected len = %u, got %u\n", (DWORD)sizeof(emptyW), len); -+ ok(!memcmp(buffer, emptyW, sizeof(emptyW)), "unexpected buffer content\n"); -+ -+ type = 0xdead; -+ len = 0; -+ memset(buffer, 0x11, sizeof(buffer)); -+ status = pNtQueryLicenseValue(&name, &type, buffer, 2, &len); -+ ok(status == STATUS_BUFFER_TOO_SMALL, "NtQueryLicenseValue returned %08x, expected STATUS_BUFFER_TOO_SMALL\n", status); -+ ok(type == REG_SZ, "expected type REG_SZ, got %u\n", type); -+ ok(len == sizeof(emptyW), "expected len = %u, got %u\n", (DWORD)sizeof(emptyW), len); -+ ok(buffer[0] == 0x1111, "expected buffer[0] = 0x1111, got %u\n", buffer[0]); -+ -+ pRtlFreeUnicodeString(&name); -+ -+ /* test with REG_DWORD license key */ -+ pRtlCreateUnicodeStringFromAsciiz(&name, "Kernel-MUI-Number-Allowed"); -+ -+ type = 0xdead; -+ len = 0xbeef; -+ status = pNtQueryLicenseValue(NULL, &type, &value, sizeof(value), &len); -+ ok(status == STATUS_INVALID_PARAMETER, "NtQueryLicenseValue returned %08x, expected STATUS_INVALID_PARAMETER\n", status); -+ ok(type == 0xdead, "expected unmodified value for type, got %u\n", type); -+ ok(len == 0xbeef, "expected unmodified value for len, got %u\n", len); -+ -+ type = 0xdead; -+ status = pNtQueryLicenseValue(&name, &type, &value, sizeof(value), NULL); -+ ok(status == STATUS_INVALID_PARAMETER, "NtQueryLicenseValue returned %08x, expected STATUS_INVALID_PARAMETER\n", status); -+ ok(type == 0xdead, "expected unmodified value for type, got %u\n", type); -+ -+ type = 0xdead; -+ len = 0; -+ status = pNtQueryLicenseValue(&name, &type, &value, 0, &len); -+ ok(status == STATUS_BUFFER_TOO_SMALL, "NtQueryLicenseValue returned %08x, expected STATUS_BUFFER_TOO_SMALL\n", status); -+ ok(type == REG_DWORD, "expected type = REG_DWORD, got %u\n", type); -+ ok(len == sizeof(value), "expected len = %u, got %u\n", (DWORD)sizeof(value), len); -+ -+ len = 0; -+ status = pNtQueryLicenseValue(&name, NULL, &value, 0, &len); -+ ok(status == STATUS_BUFFER_TOO_SMALL, "NtQueryLicenseValue returned %08x, expected STATUS_BUFFER_TOO_SMALL\n", status); -+ ok(len == sizeof(value), "expected len = %u, got %u\n", (DWORD)sizeof(value), len); -+ -+ type = 0xdead; -+ len = 0; -+ value = 0xdeadbeef; -+ status = pNtQueryLicenseValue(&name, &type, &value, sizeof(value), &len); -+ ok(status == STATUS_SUCCESS, "NtQueryLicenseValue returned %08x, expected STATUS_SUCCESS\n", status); -+ ok(type == REG_DWORD, "expected type = REG_DWORD, got %u\n", type); -+ ok(len == sizeof(value), "expected len = %u, got %u\n", (DWORD)sizeof(value), len); -+ ok(value != 0xdeadbeef, "expected value != 0xdeadbeef\n"); -+ -+ type = 0xdead; -+ len = 0; -+ status = pNtQueryLicenseValue(&name, &type, &value, 2, &len); -+ ok(status == STATUS_BUFFER_TOO_SMALL, "NtQueryLicenseValue returned %08x, expected STATUS_BUFFER_TOO_SMALL\n", status); -+ ok(type == REG_DWORD, "expected type REG_DWORD, got %u\n", type); -+ ok(len == sizeof(value), "expected len = %u, got %u\n", (DWORD)sizeof(value), len); -+ -+ pRtlFreeUnicodeString(&name); -+} -+ - static void test_RtlpNtQueryValueKey(void) - { - NTSTATUS status; -@@ -1347,6 +1526,7 @@ START_TEST(reg) - test_NtFlushKey(); - test_NtQueryKey(); - test_NtQueryValueKey(); -+ test_NtQueryLicenseKey(); - test_long_value_name(); - test_NtDeleteKey(); - test_symlinks(); --- -2.2.1 - diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/slc-SLGetWindowsInformation/0003-ntdll-Implement-Nt-Zw-QueryLicenseValue.patch wine-staging-1.7.36~ubuntu12.04.1/patches/slc-SLGetWindowsInformation/0003-ntdll-Implement-Nt-Zw-QueryLicenseValue.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/slc-SLGetWindowsInformation/0003-ntdll-Implement-Nt-Zw-QueryLicenseValue.patch 2015-01-24 15:32:20.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/slc-SLGetWindowsInformation/0003-ntdll-Implement-Nt-Zw-QueryLicenseValue.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,195 +0,0 @@ -From 93534274eab90da6059cdc56d1e58912d2071101 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Mon, 22 Dec 2014 20:01:29 +0100 -Subject: ntdll: Implement [Nt|Zw]QueryLicenseValue. - ---- - dlls/ntdll/ntdll.spec | 2 ++ - dlls/ntdll/reg.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++ - dlls/ntdll/tests/reg.c | 2 +- - include/winternl.h | 1 + - loader/wine.inf.in | 26 ++++++++++++++++---- - 5 files changed, 90 insertions(+), 5 deletions(-) - -diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec -index 51de6e7..da43cf0 100644 ---- a/dlls/ntdll/ntdll.spec -+++ b/dlls/ntdll/ntdll.spec -@@ -255,6 +255,7 @@ - @ stub NtQueryIntervalProfile - @ stdcall NtQueryIoCompletion(long long ptr long ptr) - @ stdcall NtQueryKey (long long ptr long ptr) -+@ stdcall NtQueryLicenseValue(ptr ptr ptr long ptr) - @ stdcall NtQueryMultipleValueKey(long ptr long ptr long ptr) - @ stdcall NtQueryMutant(long long ptr long ptr) - @ stdcall NtQueryObject(long long long long long) -@@ -1134,6 +1135,7 @@ - @ stub ZwQueryIntervalProfile - @ stdcall ZwQueryIoCompletion(long long ptr long ptr) NtQueryIoCompletion - @ stdcall ZwQueryKey(long long ptr long ptr) NtQueryKey -+@ stdcall ZwQueryLicenseValue(ptr ptr ptr long ptr) NtQueryLicenseValue - @ stdcall ZwQueryMultipleValueKey(long ptr long ptr long ptr) NtQueryMultipleValueKey - @ stdcall ZwQueryMutant(long long ptr long ptr) NtQueryMutant - @ stdcall ZwQueryObject(long long long long long) NtQueryObject -diff --git a/dlls/ntdll/reg.c b/dlls/ntdll/reg.c -index cdca88a..a104c2e 100644 ---- a/dlls/ntdll/reg.c -+++ b/dlls/ntdll/reg.c -@@ -1401,3 +1401,67 @@ NTSTATUS WINAPI RtlWriteRegistryValue( ULONG RelativeTo, PCWSTR path, PCWSTR nam - - return status; - } -+ -+/************************************************************************* -+ * NtQueryLicenseValue [NTDLL.@] -+ * -+ * NOTES -+ * On Windows all license properties are stored in a single key, but -+ * unless there is some app which explicitly depends on that, there is -+ * no good reason to reproduce that. -+ */ -+NTSTATUS WINAPI NtQueryLicenseValue( const UNICODE_STRING *name, ULONG *result_type, -+ PVOID data, ULONG length, ULONG *result_len ) -+{ -+ static const WCHAR LicenseInformationW[] = {'M','a','c','h','i','n','e','\\', -+ 'S','o','f','t','w','a','r','e','\\', -+ 'W','i','n','e','\\','L','i','c','e','n','s','e', -+ 'I','n','f','o','r','m','a','t','i','o','n',0}; -+ KEY_VALUE_PARTIAL_INFORMATION *info; -+ NTSTATUS status = STATUS_OBJECT_NAME_NOT_FOUND; -+ DWORD info_length, count; -+ OBJECT_ATTRIBUTES attr; -+ UNICODE_STRING keyW; -+ HANDLE hkey; -+ -+ if (!name || !name->Buffer || !name->Length || !result_len) -+ return STATUS_INVALID_PARAMETER; -+ -+ info_length = FIELD_OFFSET(KEY_VALUE_PARTIAL_INFORMATION, Data) + length; -+ info = RtlAllocateHeap( GetProcessHeap(), 0, info_length ); -+ if (!info) return STATUS_NO_MEMORY; -+ -+ attr.Length = sizeof(attr); -+ attr.RootDirectory = 0; -+ attr.ObjectName = &keyW; -+ attr.Attributes = 0; -+ attr.SecurityDescriptor = NULL; -+ attr.SecurityQualityOfService = NULL; -+ RtlInitUnicodeString( &keyW, LicenseInformationW ); -+ -+ /* @@ Wine registry key: HKLM\Software\Wine\LicenseInformation */ -+ if (!NtOpenKey( &hkey, KEY_READ, &attr )) -+ { -+ status = NtQueryValueKey( hkey, name, KeyValuePartialInformation, -+ info, info_length, &count ); -+ if (!status || status == STATUS_BUFFER_OVERFLOW) -+ { -+ if (result_type) -+ *result_type = info->Type; -+ -+ *result_len = info->DataLength; -+ -+ if (status == STATUS_BUFFER_OVERFLOW) -+ status = STATUS_BUFFER_TOO_SMALL; -+ else -+ memcpy( data, info->Data, info->DataLength ); -+ } -+ NtClose( hkey ); -+ } -+ -+ if (status == STATUS_OBJECT_NAME_NOT_FOUND) -+ FIXME( "License key %s not found\n", debugstr_w(name->Buffer) ); -+ -+ RtlFreeHeap( GetProcessHeap(), 0, info ); -+ return status; -+} -diff --git a/dlls/ntdll/tests/reg.c b/dlls/ntdll/tests/reg.c -index 968c291..e7596b8 100644 ---- a/dlls/ntdll/tests/reg.c -+++ b/dlls/ntdll/tests/reg.c -@@ -661,7 +661,7 @@ static void test_NtQueryLicenseKey(void) - - if (!pNtQueryLicenseValue) - { -- skip("NtQueryLicenseValue not found, skipping tests\n"); -+ win_skip("NtQueryLicenseValue not found, skipping tests\n"); - return; - } - -diff --git a/include/winternl.h b/include/winternl.h -index 1a694da..c448760 100644 ---- a/include/winternl.h -+++ b/include/winternl.h -@@ -2184,6 +2184,7 @@ NTSYSAPI NTSTATUS WINAPI NtQuerySystemTime(PLARGE_INTEGER); - NTSYSAPI NTSTATUS WINAPI NtQueryTimer(HANDLE,TIMER_INFORMATION_CLASS,PVOID,ULONG,PULONG); - NTSYSAPI NTSTATUS WINAPI NtQueryTimerResolution(PULONG,PULONG,PULONG); - NTSYSAPI NTSTATUS WINAPI NtQueryValueKey(HANDLE,const UNICODE_STRING *,KEY_VALUE_INFORMATION_CLASS,void *,DWORD,DWORD *); -+NTSYSAPI NTSTATUS WINAPI NtQueryLicenseValue(const UNICODE_STRING *,ULONG *,PVOID,ULONG,ULONG *); - NTSYSAPI NTSTATUS WINAPI NtQueryVirtualMemory(HANDLE,LPCVOID,MEMORY_INFORMATION_CLASS,PVOID,SIZE_T,SIZE_T*); - NTSYSAPI NTSTATUS WINAPI NtQueryVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS); - NTSYSAPI NTSTATUS WINAPI NtRaiseException(PEXCEPTION_RECORD,PCONTEXT,BOOL); -diff --git a/loader/wine.inf.in b/loader/wine.inf.in -index a4548f2..3c401b1 100644 ---- a/loader/wine.inf.in -+++ b/loader/wine.inf.in -@@ -47,7 +47,8 @@ AddReg=\ - Services, \ - SessionMgr,\ - Tapi,\ -- Timezones -+ Timezones,\ -+ LicenseInformation - - [DefaultInstall.NT] - RegisterDlls=RegisterDllsSection -@@ -71,7 +72,8 @@ AddReg=\ - SessionMgr,\ - Tapi,\ - Timezones,\ -- VersionInfo -+ VersionInfo,\ -+ LicenseInformation - - [DefaultInstall.ntamd64] - RegisterDlls=RegisterDllsSection -@@ -97,7 +99,8 @@ AddReg=\ - SessionMgr,\ - Tapi,\ - Timezones,\ -- VersionInfo.ntamd64 -+ VersionInfo.ntamd64,\ -+ LicenseInformation - - [Wow64Install] - RegisterDlls=RegisterDllsSection -@@ -111,7 +114,8 @@ AddReg=\ - MCI,\ - Misc,\ - Tapi,\ -- VersionInfo.ntamd64 -+ VersionInfo.ntamd64,\ -+ LicenseInformation - - [DefaultInstall.Services] - AddService=BITS,0,BITSService -@@ -3140,3 +3144,17 @@ HKLM,Software\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Time Zones,"Symbol - HKLM,Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Time Zones,"SymbolicLinkValue",0x60000,"\Registry\Machine\Software\Microsoft\Windows NT\CurrentVersion\Time Zones" - HKLM,Software\Wow6432Node\Policies,"SymbolicLinkValue",0x60000,"\Registry\Machine\Software\Policies" - HKLM,Software\Wow6432Node\Registered Applications,"SymbolicLinkValue",0x60000,"\Registry\Machine\Software\Registered Applications" -+ -+[LicenseInformation] -+; based on information from http://www.geoffchappell.com/notes/windows/license/install.htm -+HKLM,Software\Wine\LicenseInformation,"Kernel-MUI-Language-Allowed",,"EMPTY" -+HKLM,Software\Wine\LicenseInformation,"Kernel-MUI-Language-Disallowed",,"EMPTY" -+HKLM,Software\Wine\LicenseInformation,"Kernel-MUI-Number-Allowed",0x10001,1000 -+HKLM,Software\Wine\LicenseInformation,"Shell-InBoxGames-FreeCell-EnableGame",0x10001,0x00000001 -+HKLM,Software\Wine\LicenseInformation,"Shell-InBoxGames-Hearts-EnableGame",0x10001,0x00000001 -+HKLM,Software\Wine\LicenseInformation,"Shell-InBoxGames-Minesweeper-EnableGame",0x10001,0x00000001 -+HKLM,Software\Wine\LicenseInformation,"Shell-InBoxGames-PurblePlace-EnableGame",0x10001,0x00000001 -+HKLM,Software\Wine\LicenseInformation,"Shell-InBoxGames-Shanghai-EnableGame",0x10001,0x00000001 -+HKLM,Software\Wine\LicenseInformation,"Shell-InBoxGames-Solitaire-EnableGame",0x10001,0x00000001 -+HKLM,Software\Wine\LicenseInformation,"Shell-InBoxGames-SpiderSolitaire-EnableGame",0x10001,0x00000001 -+HKLM,Software\Wine\LicenseInformation,"Shell-PremiumInBoxGames-Chess-EnableGame",0x10001,0x00000001 --- -2.2.1 - diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/slc-SLGetWindowsInformation/0003-slc-Implement-SLGetWindowsInformationDWORD.patch wine-staging-1.7.36~ubuntu12.04.1/patches/slc-SLGetWindowsInformation/0003-slc-Implement-SLGetWindowsInformationDWORD.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/slc-SLGetWindowsInformation/0003-slc-Implement-SLGetWindowsInformationDWORD.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/slc-SLGetWindowsInformation/0003-slc-Implement-SLGetWindowsInformationDWORD.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,95 @@ +From 03c03be0348f069e83b0817a525e3fcf69b31024 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Mon, 22 Dec 2014 20:27:07 +0100 +Subject: slc: Implement SLGetWindowsInformationDWORD. + +--- + dlls/slc/slc.c | 24 ++++++++++++++++++++++-- + dlls/slc/tests/slc.c | 6 ------ + 2 files changed, 22 insertions(+), 8 deletions(-) + +diff --git a/dlls/slc/slc.c b/dlls/slc/slc.c +index 1b02c9b..26190f4 100644 +--- a/dlls/slc/slc.c ++++ b/dlls/slc/slc.c +@@ -19,8 +19,11 @@ + + #include + ++#include "ntstatus.h" ++#define WIN32_NO_STATUS + #include "windef.h" + #include "winbase.h" ++#include "winternl.h" + #include "wine/debug.h" + + #include "slpublic.h" +@@ -37,9 +40,26 @@ HRESULT WINAPI SLGetWindowsInformation(LPCWSTR name, SLDATATYPE *type, UINT *val + + HRESULT WINAPI SLGetWindowsInformationDWORD(LPCWSTR lpszValueName, LPDWORD pdwValue) + { +- FIXME("(%s) stub\n", debugstr_w(lpszValueName) ); ++ UNICODE_STRING nameW; ++ NTSTATUS status; ++ ULONG type, len; + +- return SL_E_RIGHT_NOT_GRANTED; ++ TRACE("(%s)\n", debugstr_w(lpszValueName) ); ++ ++ if (!lpszValueName || !pdwValue) ++ return E_INVALIDARG; ++ if (!lpszValueName[0]) ++ return SL_E_RIGHT_NOT_GRANTED; ++ ++ RtlInitUnicodeString( &nameW, lpszValueName ); ++ status = NtQueryLicenseValue( &nameW, &type, pdwValue, sizeof(DWORD), &len ); ++ ++ if ((!status || status == STATUS_BUFFER_TOO_SMALL) && (type != REG_DWORD)) ++ return SL_E_DATATYPE_MISMATCHED; ++ if (status == STATUS_OBJECT_NAME_NOT_FOUND) ++ return SL_E_VALUE_NOT_FOUND; ++ ++ return status ? E_FAIL : S_OK; + } + + /*********************************************************************** +diff --git a/dlls/slc/tests/slc.c b/dlls/slc/tests/slc.c +index 723cd4c..b9296b2 100644 +--- a/dlls/slc/tests/slc.c ++++ b/dlls/slc/tests/slc.c +@@ -40,16 +40,13 @@ static void test_SLGetWindowsInformationDWORD(void) + HRESULT res; + + res = SLGetWindowsInformationDWORD(NonexistentLicenseValueW, NULL); +- todo_wine + ok(res == E_INVALIDARG, "expected E_INVALIDARG, got %08x\n", res); + + res = SLGetWindowsInformationDWORD(NULL, &value); +- todo_wine + ok(res == E_INVALIDARG, "expected E_INVALIDARG, got %08x\n", res); + + value = 0xdeadbeef; + res = SLGetWindowsInformationDWORD(NonexistentLicenseValueW, &value); +- todo_wine + ok(res == SL_E_VALUE_NOT_FOUND, "expected SL_E_VALUE_NOT_FOUND, got %08x\n", res); + ok(value == 0xdeadbeef, "expected value = 0xdeadbeef, got %u\n", value); + +@@ -61,15 +58,12 @@ static void test_SLGetWindowsInformationDWORD(void) + + value = 0xdeadbeef; + res = SLGetWindowsInformationDWORD(KernelMUILanguageAllowedW, &value); +- todo_wine + ok(res == SL_E_DATATYPE_MISMATCHED, "expected SL_E_DATATYPE_MISMATCHED, got %08x\n", res); + ok(value == 0xdeadbeef, "expected value = 0xdeadbeef, got %u\n", value); + + value = 0xdeadbeef; + res = SLGetWindowsInformationDWORD(KernelMUINumberAllowedW, &value); +- todo_wine + ok(res == S_OK, "expected S_OK, got %u\n", res); +- todo_wine + ok(value != 0xdeadbeef, "expected value != 0xdeadbeef\n"); + } + +-- +2.2.1 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/slc-SLGetWindowsInformation/0004-slc-Implement-SLGetWindowsInformationDWORD.patch wine-staging-1.7.36~ubuntu12.04.1/patches/slc-SLGetWindowsInformation/0004-slc-Implement-SLGetWindowsInformationDWORD.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/slc-SLGetWindowsInformation/0004-slc-Implement-SLGetWindowsInformationDWORD.patch 2015-01-24 15:32:20.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/slc-SLGetWindowsInformation/0004-slc-Implement-SLGetWindowsInformationDWORD.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,95 +0,0 @@ -From 03c03be0348f069e83b0817a525e3fcf69b31024 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Mon, 22 Dec 2014 20:27:07 +0100 -Subject: slc: Implement SLGetWindowsInformationDWORD. - ---- - dlls/slc/slc.c | 24 ++++++++++++++++++++++-- - dlls/slc/tests/slc.c | 6 ------ - 2 files changed, 22 insertions(+), 8 deletions(-) - -diff --git a/dlls/slc/slc.c b/dlls/slc/slc.c -index 1b02c9b..26190f4 100644 ---- a/dlls/slc/slc.c -+++ b/dlls/slc/slc.c -@@ -19,8 +19,11 @@ - - #include - -+#include "ntstatus.h" -+#define WIN32_NO_STATUS - #include "windef.h" - #include "winbase.h" -+#include "winternl.h" - #include "wine/debug.h" - - #include "slpublic.h" -@@ -37,9 +40,26 @@ HRESULT WINAPI SLGetWindowsInformation(LPCWSTR name, SLDATATYPE *type, UINT *val - - HRESULT WINAPI SLGetWindowsInformationDWORD(LPCWSTR lpszValueName, LPDWORD pdwValue) - { -- FIXME("(%s) stub\n", debugstr_w(lpszValueName) ); -+ UNICODE_STRING nameW; -+ NTSTATUS status; -+ ULONG type, len; - -- return SL_E_RIGHT_NOT_GRANTED; -+ TRACE("(%s)\n", debugstr_w(lpszValueName) ); -+ -+ if (!lpszValueName || !pdwValue) -+ return E_INVALIDARG; -+ if (!lpszValueName[0]) -+ return SL_E_RIGHT_NOT_GRANTED; -+ -+ RtlInitUnicodeString( &nameW, lpszValueName ); -+ status = NtQueryLicenseValue( &nameW, &type, pdwValue, sizeof(DWORD), &len ); -+ -+ if ((!status || status == STATUS_BUFFER_TOO_SMALL) && (type != REG_DWORD)) -+ return SL_E_DATATYPE_MISMATCHED; -+ if (status == STATUS_OBJECT_NAME_NOT_FOUND) -+ return SL_E_VALUE_NOT_FOUND; -+ -+ return status ? E_FAIL : S_OK; - } - - /*********************************************************************** -diff --git a/dlls/slc/tests/slc.c b/dlls/slc/tests/slc.c -index 723cd4c..b9296b2 100644 ---- a/dlls/slc/tests/slc.c -+++ b/dlls/slc/tests/slc.c -@@ -40,16 +40,13 @@ static void test_SLGetWindowsInformationDWORD(void) - HRESULT res; - - res = SLGetWindowsInformationDWORD(NonexistentLicenseValueW, NULL); -- todo_wine - ok(res == E_INVALIDARG, "expected E_INVALIDARG, got %08x\n", res); - - res = SLGetWindowsInformationDWORD(NULL, &value); -- todo_wine - ok(res == E_INVALIDARG, "expected E_INVALIDARG, got %08x\n", res); - - value = 0xdeadbeef; - res = SLGetWindowsInformationDWORD(NonexistentLicenseValueW, &value); -- todo_wine - ok(res == SL_E_VALUE_NOT_FOUND, "expected SL_E_VALUE_NOT_FOUND, got %08x\n", res); - ok(value == 0xdeadbeef, "expected value = 0xdeadbeef, got %u\n", value); - -@@ -61,15 +58,12 @@ static void test_SLGetWindowsInformationDWORD(void) - - value = 0xdeadbeef; - res = SLGetWindowsInformationDWORD(KernelMUILanguageAllowedW, &value); -- todo_wine - ok(res == SL_E_DATATYPE_MISMATCHED, "expected SL_E_DATATYPE_MISMATCHED, got %08x\n", res); - ok(value == 0xdeadbeef, "expected value = 0xdeadbeef, got %u\n", value); - - value = 0xdeadbeef; - res = SLGetWindowsInformationDWORD(KernelMUINumberAllowedW, &value); -- todo_wine - ok(res == S_OK, "expected S_OK, got %u\n", res); -- todo_wine - ok(value != 0xdeadbeef, "expected value != 0xdeadbeef\n"); - } - --- -2.2.1 - diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/Staging/0004-loader-Add-commandline-option-patches-to-show-the-pa.patch wine-staging-1.7.36~ubuntu12.04.1/patches/Staging/0004-loader-Add-commandline-option-patches-to-show-the-pa.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/Staging/0004-loader-Add-commandline-option-patches-to-show-the-pa.patch 2015-01-24 15:32:20.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/Staging/0004-loader-Add-commandline-option-patches-to-show-the-pa.patch 2015-02-08 20:46:30.000000000 +0000 @@ -1,13 +1,17 @@ -From 6661529d2422f99287336b764fe7a5b61484b8ad Mon Sep 17 00:00:00 2001 +From f23512417cb3d149a8be4f757282d17cc1f99f9a Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Thu, 29 May 2014 23:43:45 +0200 Subject: loader: Add commandline option --patches to show the patch list. --- - dlls/ntdll/misc.c | 8 ++++++++ - dlls/ntdll/ntdll.spec | 1 + - loader/main.c | 36 +++++++++++++++++++++++++++++++++++- - 3 files changed, 44 insertions(+), 1 deletion(-) + dlls/ntdll/misc.c | 8 ++++++++ + dlls/ntdll/ntdll.spec | 1 + + include/wine/library.h | 1 + + libs/wine/config.c | 6 ++++++ + libs/wine/wine.def | 1 + + libs/wine/wine.map | 1 + + loader/main.c | 42 +++++++++++++++++++++++++++++++++++++++++- + 7 files changed, 59 insertions(+), 1 deletion(-) diff --git a/dlls/ntdll/misc.c b/dlls/ntdll/misc.c index ad1b43b..1f985e7 100644 @@ -29,7 +33,7 @@ */ const char * CDECL NTDLL_wine_get_build_id(void) diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec -index 7e95969..f9483aa 100644 +index 51de6e7..ee4ed49 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec @@ -1421,6 +1421,7 @@ @@ -40,8 +44,61 @@ @ cdecl wine_get_build_id() NTDLL_wine_get_build_id @ cdecl wine_get_host_version(ptr ptr) NTDLL_wine_get_host_version +diff --git a/include/wine/library.h b/include/wine/library.h +index 242bb69..fae73fe 100644 +--- a/include/wine/library.h ++++ b/include/wine/library.h +@@ -43,6 +43,7 @@ extern const char *wine_get_data_dir(void); + extern const char *wine_get_server_dir(void); + extern const char *wine_get_user_name(void); + extern const char *wine_get_version(void); ++extern const void *wine_get_patches(void); + extern const char *wine_get_build_id(void); + extern void wine_init_argv0_path( const char *argv0 ); + extern void wine_exec_wine_binary( const char *name, char **argv, const char *env_var ); +diff --git a/libs/wine/config.c b/libs/wine/config.c +index a273502..5262c76 100644 +--- a/libs/wine/config.c ++++ b/libs/wine/config.c +@@ -478,6 +478,12 @@ const char *wine_get_version(void) + return PACKAGE_VERSION; + } + ++/* return the applied non-standard patches */ ++const void *wine_get_patches(void) ++{ ++ return NULL; ++} ++ + /* return the build id string */ + const char *wine_get_build_id(void) + { +diff --git a/libs/wine/wine.def b/libs/wine/wine.def +index ed315bd..5b42029 100644 +--- a/libs/wine/wine.def ++++ b/libs/wine/wine.def +@@ -83,6 +83,7 @@ EXPORTS + wine_get_sortkey + wine_get_user_name + wine_get_version ++ wine_get_patches + wine_init + wine_init_argv0_path + wine_is_dbcs_leadbyte +diff --git a/libs/wine/wine.map b/libs/wine/wine.map +index 2159fac..7cb2918 100644 +--- a/libs/wine/wine.map ++++ b/libs/wine/wine.map +@@ -90,6 +90,7 @@ WINE_1.0 + wine_get_ss; + wine_get_user_name; + wine_get_version; ++ wine_get_patches; + wine_init; + wine_init_argv0_path; + wine_is_dbcs_leadbyte; diff --git a/loader/main.c b/loader/main.c -index ac67290..b1df463 100644 +index ce21173..4794e51 100644 --- a/loader/main.c +++ b/loader/main.c @@ -89,7 +89,8 @@ static void check_command_line( int argc, char *argv[] ) @@ -54,7 +111,7 @@ if (argc <= 1) { -@@ -106,6 +107,39 @@ static void check_command_line( int argc, char *argv[] ) +@@ -106,6 +107,45 @@ static void check_command_line( int argc, char *argv[] ) printf( "%s\n", wine_get_build_id() ); exit(0); } @@ -68,6 +125,12 @@ + } + *next, *cur = wine_get_patches(); + ++ if (!cur) ++ { ++ fprintf( stderr, "Patchlist not available.\n" ); ++ exit(1); ++ } ++ + while (cur->author) + { + next = cur + 1; @@ -77,7 +140,7 @@ + next++; + } + -+ printf( "%s (%d):\n", cur->author, next - cur ); ++ printf( "%s (%d):\n", cur->author, (int)(next - cur) ); + while (cur < next) + { + printf( " %s", cur->subject ); @@ -95,5 +158,5 @@ -- -2.1.3 +2.2.1 diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/vcomp-Stub_Functions/0001-vcomp-single-threaded-implementation-of-_vcomp_fork.patch wine-staging-1.7.36~ubuntu12.04.1/patches/vcomp-Stub_Functions/0001-vcomp-single-threaded-implementation-of-_vcomp_fork.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/vcomp-Stub_Functions/0001-vcomp-single-threaded-implementation-of-_vcomp_fork.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/vcomp-Stub_Functions/0001-vcomp-single-threaded-implementation-of-_vcomp_fork.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,484 @@ +From 90156f8a04061c7d0629f46dd640c09bccb0122c Mon Sep 17 00:00:00 2001 +From: Dan Kegel +Date: Fri, 12 Oct 2012 22:31:39 -0700 +Subject: vcomp: single-threaded implementation of _vcomp_fork + +--- + configure.ac | 3 +- + dlls/vcomp/Makefile.in | 1 + + dlls/vcomp/fork.c | 161 ++++++++++++++++++++++++++++++++++++++++ + dlls/vcomp/tests/Makefile.in | 8 ++ + dlls/vcomp/tests/fork.c | 153 ++++++++++++++++++++++++++++++++++++++ + dlls/vcomp/tests/vcomp.manifest | 21 ++++++ + dlls/vcomp/tests/vcomp.rc | 22 ++++++ + dlls/vcomp/vcomp.spec | 2 +- + dlls/vcomp100/vcomp100.spec | 2 +- + dlls/vcomp90/vcomp90.spec | 2 +- + 10 files changed, 371 insertions(+), 4 deletions(-) + create mode 100644 dlls/vcomp/fork.c + create mode 100644 dlls/vcomp/tests/Makefile.in + create mode 100644 dlls/vcomp/tests/fork.c + create mode 100644 dlls/vcomp/tests/vcomp.manifest + create mode 100644 dlls/vcomp/tests/vcomp.rc + +diff --git a/configure.ac b/configure.ac +index a931730..8c51410 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3290,7 +3290,8 @@ WINE_CONFIG_DLL(uxtheme,,[implib]) + WINE_CONFIG_TEST(dlls/uxtheme/tests) + WINE_CONFIG_DLL(vbscript,,[clean]) + WINE_CONFIG_TEST(dlls/vbscript/tests,[clean]) +-WINE_CONFIG_DLL(vcomp) ++WINE_CONFIG_DLL(vcomp,,[implib]) ++WINE_CONFIG_TEST(dlls/vcomp/tests) + WINE_CONFIG_DLL(vcomp100) + WINE_CONFIG_DLL(vcomp90) + WINE_CONFIG_DLL(vdhcp.vxd,enable_win16) +diff --git a/dlls/vcomp/Makefile.in b/dlls/vcomp/Makefile.in +index a54a86f..5bd0074 100644 +--- a/dlls/vcomp/Makefile.in ++++ b/dlls/vcomp/Makefile.in +@@ -1,4 +1,5 @@ + MODULE = vcomp.dll + + C_SRCS = \ ++ fork.c \ + main.c +diff --git a/dlls/vcomp/fork.c b/dlls/vcomp/fork.c +new file mode 100644 +index 0000000..13a7b56 +--- /dev/null ++++ b/dlls/vcomp/fork.c +@@ -0,0 +1,161 @@ ++/* ++ * vcomp fork/join implementation ++ * ++ * Copyright 2012 Dan Kegel ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with this library; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#include "config.h" ++ ++#include ++ ++#include "windef.h" ++#include "winbase.h" ++#include "wine/debug.h" ++ ++WINE_DEFAULT_DEBUG_CHANNEL(vcomp); ++ ++void CDECL _vcomp_fork_call_wrapper(void *wrapper, int nargs, __ms_va_list args); ++ ++/* When Visual C encounters a '#pragma omp parallel' directive, ++ * it wraps the next statement in a function, and passes the address ++ * of the wrapper function to _vcomp_fork, which calls that function-- ++ * possibly after spawning extra copies on new threads. ++ * ++ * If the directive has an if() clause, the value passed to the if clause ++ * is passed as the first argument to _vcomp_fork; if it is false, ++ * or if OMP_NUM_THREADS is 1, or omp_set_num_threads(1) has been called, ++ * or if too many threads are already in use, native _vcomp_fork doesn't spawn ++ * any extra threads, it just calls the wrapper function. ++ * ++ * The OpenMP standard allows implementations to fall back to executing ++ * everything on a single thread, so that's what we'll do for now; ++ * our _vcomp_fork will simply call the wrapper function. ++ * That's enough to make many, but not all, apps run correctly. ++ * ++ * If the statement being wrapped refers to variables from an outer scope, ++ * Visual C passes them to _vcomp_fork and thence the wrapper as follows: ++ * - Unchanging ints are always passed by value ++ * - Unchanging floats are passed by value on i386, but by reference on amd64 ++ * - Everything else is passed by reference ++ * ++ * The call to _vcomp_fork is synthesized by the compiler; ++ * user code isn't even aware that a call is being made. And the callee ++ * (_vcomp_fork) is also under Visual C's control. Thus the compiler ++ * is free to use a nonstandard ABI for this call. And it does, in that ++ * float arguments are not promoted to double. (Some apps ++ * that use floats would probably be very annoyed if they were silently ++ * promoted to doubles by "#pragma omp parallel".) ++ * ++ * The call from _vcomp_fork to the wrapper function also doesn't quite ++ * follow the normal win32/win64 calling conventions: ++ * 1) Since Visual C never passes floats or doubles by value to the ++ * wrapper on amd64, native vcomp.dll does not copy floating point parameters ++ * to registers, contrary to the win64 ABI. Manual tests confirm this. ++ * 2) Since the wrapper itself doesn't use varargs at all, _vcomp_fork can't ++ * just pass an __ms_va_list; it has to push the arguments onto the stack again. ++ * This can't be done in C, so we use assembly in _vcomp_fork_call_wrapper. ++ * (That function is a close copy of call_method in oleaut32/typelib.c, ++ * with unneeded instructions removed.) ++ */ ++ ++void WINAPIV _vcomp_fork(BOOL ifval, int nargs, void *wrapper, ...) ++{ ++ __ms_va_list valist; ++ TRACE("(%d, %d, %p, ...)\n", ifval, nargs, wrapper); ++ __ms_va_start(valist, wrapper); ++ _vcomp_fork_call_wrapper(wrapper, nargs, valist); ++ __ms_va_end(valist); ++} ++ ++#if defined(__i386__) ++__ASM_GLOBAL_FUNC( _vcomp_fork_call_wrapper, ++ "pushl %ebp\n\t" ++ __ASM_CFI(".cfi_adjust_cfa_offset 4\n\t") ++ __ASM_CFI(".cfi_rel_offset %ebp,0\n\t") ++ "movl %esp,%ebp\n\t" ++ __ASM_CFI(".cfi_def_cfa_register %ebp\n\t") ++ "pushl %esi\n\t" ++ __ASM_CFI(".cfi_rel_offset %esi,-4\n\t") ++ "pushl %edi\n\t" ++ __ASM_CFI(".cfi_rel_offset %edi,-8\n\t") ++ "movl 12(%ebp),%edx\n\t" ++ "movl %esp,%edi\n\t" ++ "shll $2,%edx\n\t" ++ "jz 1f\n\t" ++ "subl %edx,%edi\n\t" ++ "andl $~15,%edi\n\t" ++ "movl %edi,%esp\n\t" ++ "movl 12(%ebp),%ecx\n\t" ++ "movl 16(%ebp),%esi\n\t" ++ "cld\n\t" ++ "rep; movsl\n" ++ "1:\tcall *8(%ebp)\n\t" ++ "leal -8(%ebp),%esp\n\t" ++ "popl %edi\n\t" ++ __ASM_CFI(".cfi_same_value %edi\n\t") ++ "popl %esi\n\t" ++ __ASM_CFI(".cfi_same_value %esi\n\t") ++ "popl %ebp\n\t" ++ __ASM_CFI(".cfi_def_cfa %esp,4\n\t") ++ __ASM_CFI(".cfi_same_value %ebp\n\t") ++ "ret" ) ++ ++#elif defined(__x86_64__) ++ ++__ASM_GLOBAL_FUNC( _vcomp_fork_call_wrapper, ++ "pushq %rbp\n\t" ++ __ASM_CFI(".cfi_adjust_cfa_offset 8\n\t") ++ __ASM_CFI(".cfi_rel_offset %rbp,0\n\t") ++ "movq %rsp,%rbp\n\t" ++ __ASM_CFI(".cfi_def_cfa_register %rbp\n\t") ++ "pushq %rsi\n\t" ++ __ASM_CFI(".cfi_rel_offset %rsi,-8\n\t") ++ "pushq %rdi\n\t" ++ __ASM_CFI(".cfi_rel_offset %rdi,-16\n\t") ++ "movq %rcx,%rax\n\t" ++ "movq $4,%rcx\n\t" ++ "cmp %rcx,%rdx\n\t" ++ "cmovgq %rdx,%rcx\n\t" ++ "leaq 0(,%rcx,8),%rdx\n\t" ++ "subq %rdx,%rsp\n\t" ++ "andq $~15,%rsp\n\t" ++ "movq %rsp,%rdi\n\t" ++ "movq %r8,%rsi\n\t" ++ "rep; movsq\n\t" ++ "movq 0(%rsp),%rcx\n\t" ++ "movq 8(%rsp),%rdx\n\t" ++ "movq 16(%rsp),%r8\n\t" ++ "movq 24(%rsp),%r9\n\t" ++ "callq *%rax\n\t" ++ "leaq -16(%rbp),%rsp\n\t" ++ "popq %rdi\n\t" ++ __ASM_CFI(".cfi_same_value %rdi\n\t") ++ "popq %rsi\n\t" ++ __ASM_CFI(".cfi_same_value %rsi\n\t") ++ __ASM_CFI(".cfi_def_cfa_register %rsp\n\t") ++ "popq %rbp\n\t" ++ __ASM_CFI(".cfi_adjust_cfa_offset -8\n\t") ++ __ASM_CFI(".cfi_same_value %rbp\n\t") ++ "ret") ++#else ++ ++void CDECL _vcomp_fork_call_wrapper(void *wrapper, int nargs, __ms_va_list args) ++{ ++ ERR("Not implemented for this architecture\n"); ++} ++ ++#endif +diff --git a/dlls/vcomp/tests/Makefile.in b/dlls/vcomp/tests/Makefile.in +new file mode 100644 +index 0000000..81430a3 +--- /dev/null ++++ b/dlls/vcomp/tests/Makefile.in +@@ -0,0 +1,8 @@ ++TESTDLL = vcomp.dll ++IMPORTS = vcomp ++ ++C_SRCS = \ ++ fork.c ++ ++RC_SRCS = \ ++ vcomp.rc +diff --git a/dlls/vcomp/tests/fork.c b/dlls/vcomp/tests/fork.c +new file mode 100644 +index 0000000..a6f176c +--- /dev/null ++++ b/dlls/vcomp/tests/fork.c +@@ -0,0 +1,153 @@ ++/* ++ * Unit test suite for vcomp fork/join implementation ++ * ++ * Copyright 2012 Dan Kegel ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with this library; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#include "wine/test.h" ++ ++static const int is_win64 = (sizeof(void *) > sizeof(int)); ++ ++static void WINAPIV (*p_vcomp_fork)(BOOL ifval, int nargs, void *wrapper, ...); ++static int CDECL (*pomp_get_max_threads)(void); ++ ++#define GETFUNC(x) do { p##x = (void*)GetProcAddress(vcomp, #x); ok(p##x != NULL, "Export '%s' not found\n", #x); } while(0) ++ ++static BOOL init(void) ++{ ++ HMODULE vcomp = LoadLibraryA("vcomp.dll"); ++ if (!vcomp) ++ { ++ win_skip("vcomp.dll not installed\n"); ++ return FALSE; ++ } ++ ++ GETFUNC(_vcomp_fork); ++ GETFUNC(omp_get_max_threads); ++ ++ return TRUE; ++} ++ ++/* Test whether a variety of types are passed correctly. ++ * Pass five of each because the first four parameters are ++ * handled differently on amd64, and we want to test both ++ * ways. ++ */ ++ ++static void CDECL _test_vcomp_fork_ptr_worker(LONG volatile *a, LONG volatile *b, LONG volatile *c, LONG volatile *d, LONG volatile *e) ++{ ++ InterlockedIncrement(a); ++ InterlockedIncrement(b); ++ InterlockedIncrement(c); ++ InterlockedIncrement(d); ++ InterlockedIncrement(e); ++} ++ ++static void test_vcomp_fork_ptr(void) ++{ ++ LONG volatile a, b, c, d, e; ++ int n; ++ ++ /* #pragma omp parallel if(FALSE) shared(a, b, c, d, e) ++ * { InterlockedIncrement(&a); ... InterlockedIncrement(&e); } ++ */ ++ a=0; b=1; c=2; d=3; e=4; ++ p_vcomp_fork(FALSE, 5, _test_vcomp_fork_ptr_worker, &a, &b, &c, &d, &e); ++ ok(a == 1, "a == 1\n"); ++ ok(b == 2, "a == 2\n"); ++ ok(c == 3, "a == 3\n"); ++ ok(d == 4, "a == 4\n"); ++ ok(e == 5, "a == 5\n"); ++ ++ /* #pragma omp parallel if(TRUE) shared(a, b, c, d, e) ++ * { InterlockedIncrement(&a); ... InterlockedIncrement(&e); } ++ */ ++ a=0; b=1; c=2; d=3; e=4; ++ n = pomp_get_max_threads(); ++ p_vcomp_fork(TRUE, 5, _test_vcomp_fork_ptr_worker, &a, &b, &c, &d, &e); ++ ok(a > 0 && a <= (n+0), "a > 0 && a <= (n+0)\n"); ++ ok(b > 1 && b <= (n+1), "b > 1 && b <= (n+1)\n"); ++ ok(c > 2 && c <= (n+2), "c > 2 && c <= (n+2)\n"); ++ ok(d > 3 && d <= (n+3), "d > 3 && d <= (n+3)\n"); ++ ok(e > 4 && e <= (n+4), "e > 4 && e <= (n+4)\n"); ++} ++ ++static void CDECL _test_vcomp_fork_uintptr_worker(UINT_PTR a, UINT_PTR b, UINT_PTR c, UINT_PTR d, UINT_PTR e) ++{ ++ ok(a == 1, "expected a == 1\n"); ++ ok(b == MAXUINT_PTR-2, "expected b == MAXUINT_PTR-2\n"); ++ ok(c == 3, "expected c == 3\n"); ++ ok(d == MAXUINT_PTR-4, "expected d == MAXUINT_PTR-4\n"); ++ ok(e == 5, "expected e == 5\n"); ++} ++ ++static void test_vcomp_fork_uintptr(void) ++{ ++ /* test_vcomp_fork_ptr ought to have been enough, but probably ++ * didn't vary all the bits of the high word, so do that here. ++ */ ++ p_vcomp_fork(TRUE, 5, _test_vcomp_fork_uintptr_worker, \ ++ (UINT_PTR)1, (UINT_PTR)(MAXUINT_PTR-2), \ ++ (UINT_PTR)3, (UINT_PTR)(MAXUINT_PTR)-4, (UINT_PTR) 5); ++} ++ ++static void CDECL _test_vcomp_fork_float_worker(float a, float b, float c, float d, float e) ++{ ++ ok(1.4999 < a && a < 1.5001, "expected a == 1.5, got %f\n", a); ++ ok(2.4999 < b && b < 2.5001, "expected b == 2.5, got %f\n", b); ++ ok(3.4999 < c && c < 3.5001, "expected c == 3.5, got %f\n", c); ++ ok(4.4999 < d && d < 4.5001, "expected d == 4.5, got %f\n", d); ++ ok(5.4999 < e && e < 5.5001, "expected e == 5.5, got %f\n", e); ++} ++ ++static void test_vcomp_fork_float(void) ++{ ++ static void CDECL (*p_vcomp_fork_f5)(BOOL, int, void *, float, float, float, float, float); ++ ++ if (is_win64) ++ { ++ skip("Skipping float test on x86_64.\n"); ++ return; ++ } ++ ++ /* ++ * 32 bit Visual C sometimes passes 32 bit floats by value to ++ * the wrapper, so verify that here. ++ * ++ * x86-64 Visual C has not yet been observed passing 32 bit floats by ++ * value to the wrapper, and indeed _vcomp_fork does not even copy the ++ * first four args to floating point registers, so this test fails ++ * on x86-64 for the first four arguments even on native. ++ * Therefore don't run it. (It's hard to write a reliable test to show ++ * this, since the floating point registers might just happen ++ * to have the right values once in a blue moon.) ++ */ ++ ++ /* Avoid float promotion by using a prototype tailored for this call */ ++ p_vcomp_fork_f5 = (void *)p_vcomp_fork; ++ p_vcomp_fork_f5(TRUE, 5, _test_vcomp_fork_float_worker, 1.5f, 2.5f, 3.5f, 4.5f, 5.5f); ++} ++ ++START_TEST(fork) ++{ ++ if (!init()) ++ return; ++ ++ test_vcomp_fork_ptr(); ++ test_vcomp_fork_uintptr(); ++ test_vcomp_fork_float(); ++} +diff --git a/dlls/vcomp/tests/vcomp.manifest b/dlls/vcomp/tests/vcomp.manifest +new file mode 100644 +index 0000000..6c8bd91 +--- /dev/null ++++ b/dlls/vcomp/tests/vcomp.manifest +@@ -0,0 +1,21 @@ ++ ++ ++ ++Wine vcomp test suite ++ ++ ++ ++ ++ ++ +diff --git a/dlls/vcomp/tests/vcomp.rc b/dlls/vcomp/tests/vcomp.rc +new file mode 100644 +index 0000000..c5f1d25 +--- /dev/null ++++ b/dlls/vcomp/tests/vcomp.rc +@@ -0,0 +1,22 @@ ++/* ++ * Copyright (c) 2012 Dan Kegel ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with this library; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#include "winuser.h" ++ ++/* @makedep: vcomp.manifest */ ++1 RT_MANIFEST vcomp.manifest +diff --git a/dlls/vcomp/vcomp.spec b/dlls/vcomp/vcomp.spec +index 306dd15..d446574 100644 +--- a/dlls/vcomp/vcomp.spec ++++ b/dlls/vcomp/vcomp.spec +@@ -64,7 +64,7 @@ + @ stub _vcomp_for_static_init_i8 + @ stub _vcomp_for_static_simple_init + @ stub _vcomp_for_static_simple_init_i8 +-@ stub _vcomp_fork ++@ varargs _vcomp_fork(long long ptr) + @ stub _vcomp_get_thread_num + @ stub _vcomp_leave_critsect + @ stub _vcomp_master_barrier +diff --git a/dlls/vcomp100/vcomp100.spec b/dlls/vcomp100/vcomp100.spec +index 39cf91c..2c04e91 100644 +--- a/dlls/vcomp100/vcomp100.spec ++++ b/dlls/vcomp100/vcomp100.spec +@@ -64,7 +64,7 @@ + @ stub _vcomp_for_static_init_i8 + @ stub _vcomp_for_static_simple_init + @ stub _vcomp_for_static_simple_init_i8 +-@ stub _vcomp_fork ++@ varargs _vcomp_fork(long long ptr) vcomp._vcomp_fork + @ stub _vcomp_get_thread_num + @ stub _vcomp_leave_critsect + @ stub _vcomp_master_barrier +diff --git a/dlls/vcomp90/vcomp90.spec b/dlls/vcomp90/vcomp90.spec +index 39cf91c..2c04e91 100644 +--- a/dlls/vcomp90/vcomp90.spec ++++ b/dlls/vcomp90/vcomp90.spec +@@ -64,7 +64,7 @@ + @ stub _vcomp_for_static_init_i8 + @ stub _vcomp_for_static_simple_init + @ stub _vcomp_for_static_simple_init_i8 +-@ stub _vcomp_fork ++@ varargs _vcomp_fork(long long ptr) vcomp._vcomp_fork + @ stub _vcomp_get_thread_num + @ stub _vcomp_leave_critsect + @ stub _vcomp_master_barrier +-- +2.2.1 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/vcomp-Stub_Functions/0002-vcomp-better-stubs-for-_vcomp_for_static_simple_init.patch wine-staging-1.7.36~ubuntu12.04.1/patches/vcomp-Stub_Functions/0002-vcomp-better-stubs-for-_vcomp_for_static_simple_init.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/vcomp-Stub_Functions/0002-vcomp-better-stubs-for-_vcomp_for_static_simple_init.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/vcomp-Stub_Functions/0002-vcomp-better-stubs-for-_vcomp_for_static_simple_init.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,233 @@ +From c0369b34efc51c992be270a9e4eaef33b3cbf3d5 Mon Sep 17 00:00:00 2001 +From: Dan Kegel +Date: Sun, 14 Oct 2012 20:40:31 -0700 +Subject: vcomp: better stubs for _vcomp_for_static_simple_init, + _vcomp_for_static_end + +--- + dlls/vcomp/Makefile.in | 3 +- + dlls/vcomp/tests/Makefile.in | 3 +- + dlls/vcomp/tests/work.c | 83 ++++++++++++++++++++++++++++++++++++++++++++ + dlls/vcomp/vcomp.spec | 4 +-- + dlls/vcomp/work.c | 41 ++++++++++++++++++++++ + dlls/vcomp100/vcomp100.spec | 4 +-- + dlls/vcomp90/vcomp90.spec | 4 +-- + 7 files changed, 134 insertions(+), 8 deletions(-) + create mode 100644 dlls/vcomp/tests/work.c + create mode 100644 dlls/vcomp/work.c + +diff --git a/dlls/vcomp/Makefile.in b/dlls/vcomp/Makefile.in +index 5bd0074..dfff21a 100644 +--- a/dlls/vcomp/Makefile.in ++++ b/dlls/vcomp/Makefile.in +@@ -2,4 +2,5 @@ MODULE = vcomp.dll + + C_SRCS = \ + fork.c \ +- main.c ++ main.c \ ++ work.c +diff --git a/dlls/vcomp/tests/Makefile.in b/dlls/vcomp/tests/Makefile.in +index 81430a3..f1479ab 100644 +--- a/dlls/vcomp/tests/Makefile.in ++++ b/dlls/vcomp/tests/Makefile.in +@@ -2,7 +2,8 @@ TESTDLL = vcomp.dll + IMPORTS = vcomp + + C_SRCS = \ +- fork.c ++ fork.c \ ++ work.c + + RC_SRCS = \ + vcomp.rc +diff --git a/dlls/vcomp/tests/work.c b/dlls/vcomp/tests/work.c +new file mode 100644 +index 0000000..e8d3f2c +--- /dev/null ++++ b/dlls/vcomp/tests/work.c +@@ -0,0 +1,83 @@ ++/* ++ * Unit test suite for vcomp work-sharing implementation ++ * ++ * Copyright 2012 Dan Kegel ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with this library; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#include "wine/test.h" ++ ++static void WINAPIV (*p_vcomp_fork)(DWORD parallel, int nargs, void *helper, ...); ++static void CDECL (*p_vcomp_for_static_end)(void); ++static void CDECL (*p_vcomp_for_static_simple_init)(int first, int last, int mystep, int step, int *pfirst, int *plast); ++ ++#define GETFUNC(x) do { p##x = (void*)GetProcAddress(vcomp, #x); ok(p##x != NULL, "Export '%s' not found\n", #x); } while(0) ++ ++static BOOL init(void) ++{ ++ HMODULE vcomp = LoadLibraryA("vcomp.dll"); ++ if (!vcomp) ++ { ++ win_skip("vcomp.dll not installed\n"); ++ return FALSE; ++ } ++ ++ GETFUNC(_vcomp_fork); ++ GETFUNC(_vcomp_for_static_end); ++ GETFUNC(_vcomp_for_static_simple_init); ++ ++ return TRUE; ++} ++ ++static LONG volatile ncalls; ++static LONG volatile nsum; ++ ++static void CDECL _test_vcomp_for_static_simple_init_worker(void) ++{ ++ int i, my_limit; ++ ++ InterlockedIncrement(&ncalls); ++ ++ /* for (i=0; i<=12; i++) */ ++ p_vcomp_for_static_simple_init(0, 12, 1, 1, &i, &my_limit); ++ ++ while (i <= my_limit) ++ { ++ int j; ++ for (j=0; j= 1, "expected >= 1 call, got %d\n", ncalls); ++ ok(nsum == 6*13, "expected sum 6*13, got %d\n", nsum); ++} ++ ++START_TEST(work) ++{ ++ if (!init()) ++ return; ++ ++ test_vcomp_for_static_simple_init(); ++} +diff --git a/dlls/vcomp/vcomp.spec b/dlls/vcomp/vcomp.spec +index d446574..b14edca 100644 +--- a/dlls/vcomp/vcomp.spec ++++ b/dlls/vcomp/vcomp.spec +@@ -59,10 +59,10 @@ + @ stub _vcomp_for_dynamic_init_i8 + @ stub _vcomp_for_dynamic_next + @ stub _vcomp_for_dynamic_next_i8 +-@ stub _vcomp_for_static_end ++@ cdecl _vcomp_for_static_end() + @ stub _vcomp_for_static_init + @ stub _vcomp_for_static_init_i8 +-@ stub _vcomp_for_static_simple_init ++@ cdecl _vcomp_for_static_simple_init(long long long long ptr ptr) + @ stub _vcomp_for_static_simple_init_i8 + @ varargs _vcomp_fork(long long ptr) + @ stub _vcomp_get_thread_num +diff --git a/dlls/vcomp/work.c b/dlls/vcomp/work.c +new file mode 100644 +index 0000000..0f9ff78 +--- /dev/null ++++ b/dlls/vcomp/work.c +@@ -0,0 +1,41 @@ ++/* ++ * vcomp work-sharing implementation ++ * ++ * Copyright 2012 Dan Kegel ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with this library; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#include "config.h" ++ ++#include ++ ++#include "windef.h" ++#include "winbase.h" ++#include "wine/debug.h" ++ ++WINE_DEFAULT_DEBUG_CHANNEL(vcomp); ++ ++void CDECL _vcomp_for_static_simple_init(int first, int last, int mystep, int step, int *pfirst, int *plast) ++{ ++ TRACE("(%d, %d, %d, %d, %p, %p): stub\n", first, last, mystep, step, pfirst, plast); ++ *pfirst = first; ++ *plast = last; ++} ++ ++void CDECL _vcomp_for_static_end(void) ++{ ++ TRACE("stub\n"); ++} +diff --git a/dlls/vcomp100/vcomp100.spec b/dlls/vcomp100/vcomp100.spec +index 2c04e91..89e0972 100644 +--- a/dlls/vcomp100/vcomp100.spec ++++ b/dlls/vcomp100/vcomp100.spec +@@ -59,10 +59,10 @@ + @ stub _vcomp_for_dynamic_init_i8 + @ stub _vcomp_for_dynamic_next + @ stub _vcomp_for_dynamic_next_i8 +-@ stub _vcomp_for_static_end ++@ cdecl _vcomp_for_static_end() vcomp._vcomp_for_static_end + @ stub _vcomp_for_static_init + @ stub _vcomp_for_static_init_i8 +-@ stub _vcomp_for_static_simple_init ++@ cdecl _vcomp_for_static_simple_init(long long long long ptr ptr) vcomp._vcomp_for_static_simple_init + @ stub _vcomp_for_static_simple_init_i8 + @ varargs _vcomp_fork(long long ptr) vcomp._vcomp_fork + @ stub _vcomp_get_thread_num +diff --git a/dlls/vcomp90/vcomp90.spec b/dlls/vcomp90/vcomp90.spec +index 2c04e91..89e0972 100644 +--- a/dlls/vcomp90/vcomp90.spec ++++ b/dlls/vcomp90/vcomp90.spec +@@ -59,10 +59,10 @@ + @ stub _vcomp_for_dynamic_init_i8 + @ stub _vcomp_for_dynamic_next + @ stub _vcomp_for_dynamic_next_i8 +-@ stub _vcomp_for_static_end ++@ cdecl _vcomp_for_static_end() vcomp._vcomp_for_static_end + @ stub _vcomp_for_static_init + @ stub _vcomp_for_static_init_i8 +-@ stub _vcomp_for_static_simple_init ++@ cdecl _vcomp_for_static_simple_init(long long long long ptr ptr) vcomp._vcomp_for_static_simple_init + @ stub _vcomp_for_static_simple_init_i8 + @ varargs _vcomp_fork(long long ptr) vcomp._vcomp_fork + @ stub _vcomp_get_thread_num +-- +2.2.1 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/vcomp-Stub_Functions/0003-vcomp-better-stub-for-_vcomp_for_static_init.patch wine-staging-1.7.36~ubuntu12.04.1/patches/vcomp-Stub_Functions/0003-vcomp-better-stub-for-_vcomp_for_static_init.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/vcomp-Stub_Functions/0003-vcomp-better-stub-for-_vcomp_for_static_init.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/vcomp-Stub_Functions/0003-vcomp-better-stub-for-_vcomp_for_static_init.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,153 @@ +From fadfe0d8a2483066f6f0137b2fb6d6efa3090db8 Mon Sep 17 00:00:00 2001 +From: Dan Kegel +Date: Sun, 14 Oct 2012 20:42:35 -0700 +Subject: vcomp: better stub for _vcomp_for_static_init + +--- + dlls/vcomp/tests/work.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ + dlls/vcomp/vcomp.spec | 2 +- + dlls/vcomp/work.c | 11 +++++++++++ + dlls/vcomp100/vcomp100.spec | 2 +- + dlls/vcomp90/vcomp90.spec | 2 +- + 5 files changed, 59 insertions(+), 3 deletions(-) + +diff --git a/dlls/vcomp/tests/work.c b/dlls/vcomp/tests/work.c +index e8d3f2c..2a76227 100644 +--- a/dlls/vcomp/tests/work.c ++++ b/dlls/vcomp/tests/work.c +@@ -22,6 +22,7 @@ + + static void WINAPIV (*p_vcomp_fork)(DWORD parallel, int nargs, void *helper, ...); + static void CDECL (*p_vcomp_for_static_end)(void); ++static void CDECL (*p_vcomp_for_static_init)(int first, int last, int mystep, int chunksize, int *pnloops, int *pfirst, int *plast, int *pchunksize, int *pfinalchunkstart); + static void CDECL (*p_vcomp_for_static_simple_init)(int first, int last, int mystep, int step, int *pfirst, int *plast); + + #define GETFUNC(x) do { p##x = (void*)GetProcAddress(vcomp, #x); ok(p##x != NULL, "Export '%s' not found\n", #x); } while(0) +@@ -37,6 +38,7 @@ static BOOL init(void) + + GETFUNC(_vcomp_fork); + GETFUNC(_vcomp_for_static_end); ++ GETFUNC(_vcomp_for_static_init); + GETFUNC(_vcomp_for_static_simple_init); + + return TRUE; +@@ -45,6 +47,48 @@ static BOOL init(void) + static LONG volatile ncalls; + static LONG volatile nsum; + ++static void CDECL _test_vcomp_for_static_init_worker(void) ++{ ++ const int my_start = 0; ++ const int my_end = 12; ++ const int my_incr = 1; ++ const int my_chunksize = 1; ++ int nloops, chunkstart, chunkend, chunksize, finalchunkstart; ++ ++ InterlockedIncrement(&ncalls); ++ ++ /* for (i=0; i<=12; i++) */ ++ p_vcomp_for_static_init(my_start, my_end, my_incr, my_chunksize, ++ &nloops, &chunkstart, &chunkend, &chunksize, &finalchunkstart); ++ ++ do ++ { ++ int i; ++ if (chunkstart == finalchunkstart) chunkend = my_end; ++ ++ for (i=chunkstart; i <= chunkend; i += my_incr) ++ { ++ int j; ++ for (j=0; j 0); ++ ++ p_vcomp_for_static_end(); ++} ++ ++static void test_vcomp_for_static_init(void) ++{ ++ ncalls = 0; ++ nsum = 0; ++ p_vcomp_fork(1, 0, _test_vcomp_for_static_init_worker); ++ ok(ncalls >= 1, "expected >= 1 call, got %d\n", ncalls); ++ ok(nsum == 6*13, "expected sum 6*13, got %d\n", nsum); ++} ++ + static void CDECL _test_vcomp_for_static_simple_init_worker(void) + { + int i, my_limit; +@@ -79,5 +123,6 @@ START_TEST(work) + if (!init()) + return; + ++ test_vcomp_for_static_init(); + test_vcomp_for_static_simple_init(); + } +diff --git a/dlls/vcomp/vcomp.spec b/dlls/vcomp/vcomp.spec +index b14edca..8bc66e8 100644 +--- a/dlls/vcomp/vcomp.spec ++++ b/dlls/vcomp/vcomp.spec +@@ -60,7 +60,7 @@ + @ stub _vcomp_for_dynamic_next + @ stub _vcomp_for_dynamic_next_i8 + @ cdecl _vcomp_for_static_end() +-@ stub _vcomp_for_static_init ++@ cdecl _vcomp_for_static_init(long long long long ptr ptr ptr ptr ptr) + @ stub _vcomp_for_static_init_i8 + @ cdecl _vcomp_for_static_simple_init(long long long long ptr ptr) + @ stub _vcomp_for_static_simple_init_i8 +diff --git a/dlls/vcomp/work.c b/dlls/vcomp/work.c +index 0f9ff78..82df26e 100644 +--- a/dlls/vcomp/work.c ++++ b/dlls/vcomp/work.c +@@ -28,6 +28,17 @@ + + WINE_DEFAULT_DEBUG_CHANNEL(vcomp); + ++void CDECL _vcomp_for_static_init(int first, int last, int mystep, int chunksize, int *pnloops, int *pfirst, int *plast, int *pchunksize, int *pfinalchunkstart) ++{ ++ TRACE("(%d, %d, %d, %d, %p, %p, %p, %p, %p): stub\n", ++ first, last, mystep, chunksize, pnloops, pfirst, plast, pchunksize, pfinalchunkstart); ++ *pfirst = first; ++ *plast = last; ++ *pfinalchunkstart = last; ++ *pnloops = 1; ++ *pchunksize = 0; /* moot, since nloops=1 */ ++} ++ + void CDECL _vcomp_for_static_simple_init(int first, int last, int mystep, int step, int *pfirst, int *plast) + { + TRACE("(%d, %d, %d, %d, %p, %p): stub\n", first, last, mystep, step, pfirst, plast); +diff --git a/dlls/vcomp100/vcomp100.spec b/dlls/vcomp100/vcomp100.spec +index 89e0972..f008e2e 100644 +--- a/dlls/vcomp100/vcomp100.spec ++++ b/dlls/vcomp100/vcomp100.spec +@@ -60,7 +60,7 @@ + @ stub _vcomp_for_dynamic_next + @ stub _vcomp_for_dynamic_next_i8 + @ cdecl _vcomp_for_static_end() vcomp._vcomp_for_static_end +-@ stub _vcomp_for_static_init ++@ cdecl _vcomp_for_static_init(long long long long ptr ptr ptr ptr ptr) vcomp._vcomp_for_static_init + @ stub _vcomp_for_static_init_i8 + @ cdecl _vcomp_for_static_simple_init(long long long long ptr ptr) vcomp._vcomp_for_static_simple_init + @ stub _vcomp_for_static_simple_init_i8 +diff --git a/dlls/vcomp90/vcomp90.spec b/dlls/vcomp90/vcomp90.spec +index 89e0972..f008e2e 100644 +--- a/dlls/vcomp90/vcomp90.spec ++++ b/dlls/vcomp90/vcomp90.spec +@@ -60,7 +60,7 @@ + @ stub _vcomp_for_dynamic_next + @ stub _vcomp_for_dynamic_next_i8 + @ cdecl _vcomp_for_static_end() vcomp._vcomp_for_static_end +-@ stub _vcomp_for_static_init ++@ cdecl _vcomp_for_static_init(long long long long ptr ptr ptr ptr ptr) vcomp._vcomp_for_static_init + @ stub _vcomp_for_static_init_i8 + @ cdecl _vcomp_for_static_simple_init(long long long long ptr ptr) vcomp._vcomp_for_static_simple_init + @ stub _vcomp_for_static_simple_init_i8 +-- +2.2.1 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/vcomp-Stub_Functions/0004-vcomp-implement-omp_in_parallel.patch wine-staging-1.7.36~ubuntu12.04.1/patches/vcomp-Stub_Functions/0004-vcomp-implement-omp_in_parallel.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/vcomp-Stub_Functions/0004-vcomp-implement-omp_in_parallel.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/vcomp-Stub_Functions/0004-vcomp-implement-omp_in_parallel.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,254 @@ +From 659f7394d0c3e4c969e0b0f66689433fd133febd Mon Sep 17 00:00:00 2001 +From: Dan Kegel +Date: Wed, 17 Oct 2012 09:15:06 -0700 +Subject: vcomp: implement omp_in_parallel + +--- + dlls/vcomp/fork.c | 32 +++++++++++++++++++++++++++++ + dlls/vcomp/main.c | 12 +++++++++++ + dlls/vcomp/tests/fork.c | 50 +++++++++++++++++++++++++++++++++++++++++++++ + dlls/vcomp/vcomp.spec | 2 +- + dlls/vcomp/vcomp_private.h | 19 +++++++++++++++++ + dlls/vcomp100/vcomp100.spec | 2 +- + dlls/vcomp90/vcomp90.spec | 2 +- + 7 files changed, 116 insertions(+), 3 deletions(-) + create mode 100644 dlls/vcomp/vcomp_private.h + +diff --git a/dlls/vcomp/fork.c b/dlls/vcomp/fork.c +index 13a7b56..49399c6 100644 +--- a/dlls/vcomp/fork.c ++++ b/dlls/vcomp/fork.c +@@ -25,6 +25,22 @@ + #include "windef.h" + #include "winbase.h" + #include "wine/debug.h" ++#include "vcomp_private.h" ++ ++struct vcomp_team ++{ ++ struct vcomp_team *parent; ++}; ++ ++static inline struct vcomp_team *vcomp_get_team(void) ++{ ++ return (struct vcomp_team *)TlsGetValue(vcomp_context_tls); ++} ++ ++static inline void vcomp_set_team(struct vcomp_team *team) ++{ ++ TlsSetValue(vcomp_context_tls, team); ++} + + WINE_DEFAULT_DEBUG_CHANNEL(vcomp); + +@@ -75,10 +91,18 @@ void CDECL _vcomp_fork_call_wrapper(void *wrapper, int nargs, __ms_va_list args) + void WINAPIV _vcomp_fork(BOOL ifval, int nargs, void *wrapper, ...) + { + __ms_va_list valist; ++ struct vcomp_team team; ++ + TRACE("(%d, %d, %p, ...)\n", ifval, nargs, wrapper); ++ ++ team.parent = vcomp_get_team(); ++ vcomp_set_team(&team); ++ + __ms_va_start(valist, wrapper); + _vcomp_fork_call_wrapper(wrapper, nargs, valist); + __ms_va_end(valist); ++ ++ vcomp_set_team(team.parent); + } + + #if defined(__i386__) +@@ -159,3 +183,11 @@ void CDECL _vcomp_fork_call_wrapper(void *wrapper, int nargs, __ms_va_list args) + } + + #endif ++ ++int CDECL omp_in_parallel(void) ++{ ++ int val = (vcomp_get_team() != NULL); ++ ++ TRACE("returning %d\n", val); ++ return val; ++} +diff --git a/dlls/vcomp/main.c b/dlls/vcomp/main.c +index ab2a372..e37cf16 100644 +--- a/dlls/vcomp/main.c ++++ b/dlls/vcomp/main.c +@@ -26,9 +26,12 @@ + #include "windef.h" + #include "winbase.h" + #include "wine/debug.h" ++#include "vcomp_private.h" + + WINE_DEFAULT_DEBUG_CHANNEL(vcomp); + ++DWORD vcomp_context_tls; ++ + int CDECL omp_get_dynamic(void) + { + TRACE("stub\n"); +@@ -117,6 +120,15 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) + return FALSE; /* prefer native version */ + case DLL_PROCESS_ATTACH: + DisableThreadLibraryCalls(hinstDLL); ++ ++ if ((vcomp_context_tls = TlsAlloc()) == TLS_OUT_OF_INDEXES) ++ { ++ ERR("Failed to allocate TLS index\n"); ++ return FALSE; ++ } ++ break; ++ case DLL_PROCESS_DETACH: ++ TlsFree(vcomp_context_tls); + break; + } + +diff --git a/dlls/vcomp/tests/fork.c b/dlls/vcomp/tests/fork.c +index a6f176c..3d11504 100644 +--- a/dlls/vcomp/tests/fork.c ++++ b/dlls/vcomp/tests/fork.c +@@ -24,6 +24,9 @@ static const int is_win64 = (sizeof(void *) > sizeof(int)); + + static void WINAPIV (*p_vcomp_fork)(BOOL ifval, int nargs, void *wrapper, ...); + static int CDECL (*pomp_get_max_threads)(void); ++static int CDECL (*pomp_get_num_threads)(void); ++static int CDECL (*pomp_in_parallel)(void); ++static void CDECL (*pomp_set_num_threads)(int); + + #define GETFUNC(x) do { p##x = (void*)GetProcAddress(vcomp, #x); ok(p##x != NULL, "Export '%s' not found\n", #x); } while(0) + +@@ -36,6 +39,9 @@ static BOOL init(void) + return FALSE; + } + ++ GETFUNC(omp_get_num_threads); ++ GETFUNC(omp_in_parallel); ++ GETFUNC(omp_set_num_threads); + GETFUNC(_vcomp_fork); + GETFUNC(omp_get_max_threads); + +@@ -142,6 +148,49 @@ static void test_vcomp_fork_float(void) + p_vcomp_fork_f5(TRUE, 5, _test_vcomp_fork_float_worker, 1.5f, 2.5f, 3.5f, 4.5f, 5.5f); + } + ++#define NLOOPS_SHORT 5 ++#define SLEEP_MS_SHORT 50 ++ ++static void CDECL _test_omp_in_parallel_nested_worker(LONG volatile *psum) ++{ ++ if (pomp_in_parallel()) ++ InterlockedIncrement(psum); ++} ++ ++static void CDECL _test_omp_in_parallel_worker(LONG volatile *psum) ++{ ++ int i; ++ InterlockedIncrement(psum); ++ for (i=0; i +Date: Mon, 15 Oct 2012 21:01:30 -0700 +Subject: vcomp: better stubs for _vcomp_for_dynamic_init, + _vcomp_for_dynamic_next + +--- + dlls/vcomp/fork.c | 15 ----------- + dlls/vcomp/tests/work.c | 66 +++++++++++++++++++++++++++++++++++++++++++++ + dlls/vcomp/vcomp.spec | 4 +-- + dlls/vcomp/vcomp_private.h | 37 +++++++++++++++++++++++++ + dlls/vcomp/work.c | 47 ++++++++++++++++++++++++++++++++ + dlls/vcomp100/vcomp100.spec | 4 +-- + dlls/vcomp90/vcomp90.spec | 4 +-- + 7 files changed, 156 insertions(+), 21 deletions(-) + +diff --git a/dlls/vcomp/fork.c b/dlls/vcomp/fork.c +index 49399c6..5af2021 100644 +--- a/dlls/vcomp/fork.c ++++ b/dlls/vcomp/fork.c +@@ -27,21 +27,6 @@ + #include "wine/debug.h" + #include "vcomp_private.h" + +-struct vcomp_team +-{ +- struct vcomp_team *parent; +-}; +- +-static inline struct vcomp_team *vcomp_get_team(void) +-{ +- return (struct vcomp_team *)TlsGetValue(vcomp_context_tls); +-} +- +-static inline void vcomp_set_team(struct vcomp_team *team) +-{ +- TlsSetValue(vcomp_context_tls, team); +-} +- + WINE_DEFAULT_DEBUG_CHANNEL(vcomp); + + void CDECL _vcomp_fork_call_wrapper(void *wrapper, int nargs, __ms_va_list args); +diff --git a/dlls/vcomp/tests/work.c b/dlls/vcomp/tests/work.c +index 2a76227..5abe0e1 100644 +--- a/dlls/vcomp/tests/work.c ++++ b/dlls/vcomp/tests/work.c +@@ -21,12 +21,18 @@ + #include "wine/test.h" + + static void WINAPIV (*p_vcomp_fork)(DWORD parallel, int nargs, void *helper, ...); ++static void CDECL (*p_vcomp_for_dynamic_init)(int flags, int first, int last, int mystep, int chunksize); ++static int CDECL (*p_vcomp_for_dynamic_next)(int *pcounter, int *pchunklimit); + static void CDECL (*p_vcomp_for_static_end)(void); + static void CDECL (*p_vcomp_for_static_init)(int first, int last, int mystep, int chunksize, int *pnloops, int *pfirst, int *plast, int *pchunksize, int *pfinalchunkstart); + static void CDECL (*p_vcomp_for_static_simple_init)(int first, int last, int mystep, int step, int *pfirst, int *plast); + + #define GETFUNC(x) do { p##x = (void*)GetProcAddress(vcomp, #x); ok(p##x != NULL, "Export '%s' not found\n", #x); } while(0) + ++/* Matches definitions in ../vcomp_private.h */ ++#define VCOMP_DYNAMIC_FOR_FLAGS_DOWN 0x0 ++#define VCOMP_DYNAMIC_FOR_FLAGS_UP 0x40 ++ + static BOOL init(void) + { + HMODULE vcomp = LoadLibraryA("vcomp.dll"); +@@ -37,6 +43,8 @@ static BOOL init(void) + } + + GETFUNC(_vcomp_fork); ++ GETFUNC(_vcomp_for_dynamic_init); ++ GETFUNC(_vcomp_for_dynamic_next); + GETFUNC(_vcomp_for_static_end); + GETFUNC(_vcomp_for_static_init); + GETFUNC(_vcomp_for_static_simple_init); +@@ -47,6 +55,63 @@ static BOOL init(void) + static LONG volatile ncalls; + static LONG volatile nsum; + ++static void CDECL _test_vcomp_for_dynamic_worker_up(void) ++{ ++ int i, limit; ++ ++ InterlockedIncrement(&ncalls); ++ ++ /* pragma omp schedule(dynamic,16) */ ++ /* for (i=0; i<=17; i++) */ ++ p_vcomp_for_dynamic_init(VCOMP_DYNAMIC_FOR_FLAGS_UP, 0, 17, 1, 16); ++ while (p_vcomp_for_dynamic_next(&i, &limit)) ++ { ++ for (; i<=limit; i++) ++ { ++ int j; ++ for (j=0; j=0; i--) */ ++ p_vcomp_for_dynamic_init(VCOMP_DYNAMIC_FOR_FLAGS_DOWN, 17, 0, 1, 16); ++ while (p_vcomp_for_dynamic_next(&i, &limit)) ++ { ++ for (; i>=limit; i--) ++ { ++ int j; ++ for (j=0; j= 1, "expected >= 1 call, got %d\n", ncalls); ++ ok(nsum == 9*17, "expected sum 9*17, got %d\n", nsum); ++ ++ /* for (i=17; i>=0; i--) nsum += i; */ ++ ncalls = 0; ++ nsum = 0; ++ p_vcomp_fork(1, 0, _test_vcomp_for_dynamic_worker_down); ++ ok(ncalls >= 1, "expected >= 1 call, got %d\n", ncalls); ++ ok(nsum == 9*17, "expected sum 9*17, got %d\n", nsum); ++} ++ + static void CDECL _test_vcomp_for_static_init_worker(void) + { + const int my_start = 0; +@@ -123,6 +188,7 @@ START_TEST(work) + if (!init()) + return; + ++ test_vcomp_for_dynamic(); + test_vcomp_for_static_init(); + test_vcomp_for_static_simple_init(); + } +diff --git a/dlls/vcomp/vcomp.spec b/dlls/vcomp/vcomp.spec +index 156233f..f603660 100644 +--- a/dlls/vcomp/vcomp.spec ++++ b/dlls/vcomp/vcomp.spec +@@ -55,9 +55,9 @@ + @ stub _vcomp_copyprivate_receive + @ stub _vcomp_enter_critsect + @ stub _vcomp_flush +-@ stub _vcomp_for_dynamic_init ++@ cdecl _vcomp_for_dynamic_init(long long long long long) + @ stub _vcomp_for_dynamic_init_i8 +-@ stub _vcomp_for_dynamic_next ++@ cdecl _vcomp_for_dynamic_next(ptr ptr) + @ stub _vcomp_for_dynamic_next_i8 + @ cdecl _vcomp_for_static_end() + @ cdecl _vcomp_for_static_init(long long long long ptr ptr ptr ptr ptr) +diff --git a/dlls/vcomp/vcomp_private.h b/dlls/vcomp/vcomp_private.h +index 50c4643..d3a7005 100644 +--- a/dlls/vcomp/vcomp_private.h ++++ b/dlls/vcomp/vcomp_private.h +@@ -1,4 +1,7 @@ + /* ++ * vcmp wine internal private include file ++ * ++ * Copyright 2012 Dan Kegel + * Copyright 2015 Sebastian Lackner + * + * This library is free software; you can redistribute it and/or +@@ -16,4 +19,38 @@ + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + ++#ifndef __WINE_VCOMP_PRIVATE_H ++#define __WINE_VCOMP_PRIVATE_H ++ ++struct vcomp_team ++{ ++ struct vcomp_team *parent; ++ union ++ { ++ struct ++ { ++ int counter; ++ int step; ++ int iterations_remaining; ++ int chunksize; ++ int flags; ++ } dyn_for; ++ } work; ++}; ++ + extern DWORD vcomp_context_tls DECLSPEC_HIDDEN; ++ ++static inline struct vcomp_team *vcomp_get_team(void) ++{ ++ return (struct vcomp_team *)TlsGetValue(vcomp_context_tls); ++} ++ ++static inline void vcomp_set_team(struct vcomp_team *team) ++{ ++ TlsSetValue(vcomp_context_tls, team); ++} ++ ++#define VCOMP_DYNAMIC_FOR_FLAGS_DOWN 0x0 ++#define VCOMP_DYNAMIC_FOR_FLAGS_UP 0x40 ++ ++#endif +diff --git a/dlls/vcomp/work.c b/dlls/vcomp/work.c +index 82df26e..87bce93 100644 +--- a/dlls/vcomp/work.c ++++ b/dlls/vcomp/work.c +@@ -25,9 +25,56 @@ + #include "windef.h" + #include "winbase.h" + #include "wine/debug.h" ++#include "vcomp_private.h" + + WINE_DEFAULT_DEBUG_CHANNEL(vcomp); + ++void CDECL _vcomp_for_dynamic_init(int flags, int first, int last, int mystep, int chunksize) ++{ ++ struct vcomp_team *pt = vcomp_get_team(); ++ ++ TRACE("(%d, %d, %d, %d, %d): stub\n", flags, first, last, mystep, chunksize); ++ ++ pt->work.dyn_for.counter = first; ++ pt->work.dyn_for.chunksize = chunksize; ++ pt->work.dyn_for.flags = flags; ++ pt->work.dyn_for.step = mystep; ++ if (flags & VCOMP_DYNAMIC_FOR_FLAGS_UP) ++ pt->work.dyn_for.iterations_remaining = 1 + (last - first) / mystep; ++ else ++ pt->work.dyn_for.iterations_remaining = 1 + (first - last) / mystep; ++} ++ ++int CDECL _vcomp_for_dynamic_next(int *pcounter, int *pchunklimit) ++{ ++ struct vcomp_team *pt = vcomp_get_team(); ++ int n; ++ ++ TRACE("(%p, %p): stub.\n", pcounter, pchunklimit); ++ ++ n = pt->work.dyn_for.chunksize; ++ if (n > pt->work.dyn_for.iterations_remaining) ++ n = pt->work.dyn_for.iterations_remaining; ++ ++ *pcounter = pt->work.dyn_for.counter; ++ ++ if (pt->work.dyn_for.flags & VCOMP_DYNAMIC_FOR_FLAGS_UP) ++ { ++ pt->work.dyn_for.counter += pt->work.dyn_for.step * n; ++ *pchunklimit = pt->work.dyn_for.counter - 1; ++ } ++ else ++ { ++ pt->work.dyn_for.counter -= pt->work.dyn_for.step * n; ++ *pchunklimit = pt->work.dyn_for.counter + 1; ++ } ++ pt->work.dyn_for.iterations_remaining -= n; ++ ++ TRACE("counter %d, iterations_remaining %d, n %d, returning %d\n", ++ pt->work.dyn_for.counter, pt->work.dyn_for.iterations_remaining, n, (n > 0)); ++ return (n > 0); ++} ++ + void CDECL _vcomp_for_static_init(int first, int last, int mystep, int chunksize, int *pnloops, int *pfirst, int *plast, int *pchunksize, int *pfinalchunkstart) + { + TRACE("(%d, %d, %d, %d, %p, %p, %p, %p, %p): stub\n", +diff --git a/dlls/vcomp100/vcomp100.spec b/dlls/vcomp100/vcomp100.spec +index dd276d0..48d5e3f 100644 +--- a/dlls/vcomp100/vcomp100.spec ++++ b/dlls/vcomp100/vcomp100.spec +@@ -55,9 +55,9 @@ + @ stub _vcomp_copyprivate_receive + @ stub _vcomp_enter_critsect + @ stub _vcomp_flush +-@ stub _vcomp_for_dynamic_init ++@ cdecl _vcomp_for_dynamic_init(long long long long long) vcomp._vcomp_for_dynamic_init + @ stub _vcomp_for_dynamic_init_i8 +-@ stub _vcomp_for_dynamic_next ++@ cdecl _vcomp_for_dynamic_next(ptr ptr) vcomp._vcomp_for_dynamic_next + @ stub _vcomp_for_dynamic_next_i8 + @ cdecl _vcomp_for_static_end() vcomp._vcomp_for_static_end + @ cdecl _vcomp_for_static_init(long long long long ptr ptr ptr ptr ptr) vcomp._vcomp_for_static_init +diff --git a/dlls/vcomp90/vcomp90.spec b/dlls/vcomp90/vcomp90.spec +index dd276d0..48d5e3f 100644 +--- a/dlls/vcomp90/vcomp90.spec ++++ b/dlls/vcomp90/vcomp90.spec +@@ -55,9 +55,9 @@ + @ stub _vcomp_copyprivate_receive + @ stub _vcomp_enter_critsect + @ stub _vcomp_flush +-@ stub _vcomp_for_dynamic_init ++@ cdecl _vcomp_for_dynamic_init(long long long long long) vcomp._vcomp_for_dynamic_init + @ stub _vcomp_for_dynamic_init_i8 +-@ stub _vcomp_for_dynamic_next ++@ cdecl _vcomp_for_dynamic_next(ptr ptr) vcomp._vcomp_for_dynamic_next + @ stub _vcomp_for_dynamic_next_i8 + @ cdecl _vcomp_for_static_end() vcomp._vcomp_for_static_end + @ cdecl _vcomp_for_static_init(long long long long ptr ptr ptr ptr ptr) vcomp._vcomp_for_static_init +-- +2.2.1 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/vcomp-Stub_Functions/0006-vcomp-better-stubs-for-_vcomp_sections_init-_vcomp_s.patch wine-staging-1.7.36~ubuntu12.04.1/patches/vcomp-Stub_Functions/0006-vcomp-better-stubs-for-_vcomp_sections_init-_vcomp_s.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/vcomp-Stub_Functions/0006-vcomp-better-stubs-for-_vcomp_sections_init-_vcomp_s.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/vcomp-Stub_Functions/0006-vcomp-better-stubs-for-_vcomp_sections_init-_vcomp_s.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,180 @@ +From 8069c24409570d48c59bb103539d1ea1fd835c36 Mon Sep 17 00:00:00 2001 +From: Dan Kegel +Date: Mon, 15 Oct 2012 21:09:56 -0700 +Subject: vcomp: better stubs for _vcomp_sections_init, _vcomp_sections_next + +--- + dlls/vcomp/tests/work.c | 34 ++++++++++++++++++++++++++++++++++ + dlls/vcomp/vcomp.spec | 4 ++-- + dlls/vcomp/vcomp_private.h | 5 +++++ + dlls/vcomp/work.c | 18 ++++++++++++++++++ + dlls/vcomp100/vcomp100.spec | 4 ++-- + dlls/vcomp90/vcomp90.spec | 4 ++-- + 6 files changed, 63 insertions(+), 6 deletions(-) + +diff --git a/dlls/vcomp/tests/work.c b/dlls/vcomp/tests/work.c +index 5abe0e1..981f741 100644 +--- a/dlls/vcomp/tests/work.c ++++ b/dlls/vcomp/tests/work.c +@@ -20,12 +20,15 @@ + + #include "wine/test.h" + ++static void WINAPIV (*p_vcomp_barrier)(void); + static void WINAPIV (*p_vcomp_fork)(DWORD parallel, int nargs, void *helper, ...); + static void CDECL (*p_vcomp_for_dynamic_init)(int flags, int first, int last, int mystep, int chunksize); + static int CDECL (*p_vcomp_for_dynamic_next)(int *pcounter, int *pchunklimit); + static void CDECL (*p_vcomp_for_static_end)(void); + static void CDECL (*p_vcomp_for_static_init)(int first, int last, int mystep, int chunksize, int *pnloops, int *pfirst, int *plast, int *pchunksize, int *pfinalchunkstart); + static void CDECL (*p_vcomp_for_static_simple_init)(int first, int last, int mystep, int step, int *pfirst, int *plast); ++static void CDECL (*p_vcomp_sections_init)(int n); ++static int CDECL (*p_vcomp_sections_next)(void); + + #define GETFUNC(x) do { p##x = (void*)GetProcAddress(vcomp, #x); ok(p##x != NULL, "Export '%s' not found\n", #x); } while(0) + +@@ -42,12 +45,15 @@ static BOOL init(void) + return FALSE; + } + ++ GETFUNC(_vcomp_barrier); + GETFUNC(_vcomp_fork); + GETFUNC(_vcomp_for_dynamic_init); + GETFUNC(_vcomp_for_dynamic_next); + GETFUNC(_vcomp_for_static_end); + GETFUNC(_vcomp_for_static_init); + GETFUNC(_vcomp_for_static_simple_init); ++ GETFUNC(_vcomp_sections_init); ++ GETFUNC(_vcomp_sections_next); + + return TRUE; + } +@@ -183,6 +189,33 @@ static void test_vcomp_for_static_simple_init(void) + ok(nsum == 6*13, "expected sum 6*13, got %d\n", nsum); + } + ++int section_calls[3]; ++ ++static void CDECL _test_vcomp_sections_worker(void) ++{ ++ p_vcomp_sections_init(3); ++ ++ for (;;) ++ { ++ int i = p_vcomp_sections_next(); ++ if (i < 0 || i >= 3) break; ++ section_calls[i]++; ++ } ++ ++ p_vcomp_barrier(); ++} ++ ++static void test_vcomp_sections(void) ++{ ++ section_calls[0] = 0; ++ section_calls[1] = 0; ++ section_calls[2] = 0; ++ p_vcomp_fork(1, 0, _test_vcomp_sections_worker); ++ ok(section_calls[0] == 1, "section 0 not called once\n"); ++ ok(section_calls[1] == 1, "section 1 not called once\n"); ++ ok(section_calls[2] == 1, "section 2 not called once\n"); ++} ++ + START_TEST(work) + { + if (!init()) +@@ -191,4 +224,5 @@ START_TEST(work) + test_vcomp_for_dynamic(); + test_vcomp_for_static_init(); + test_vcomp_for_static_simple_init(); ++ test_vcomp_sections(); + } +diff --git a/dlls/vcomp/vcomp.spec b/dlls/vcomp/vcomp.spec +index f603660..1b02a65 100644 +--- a/dlls/vcomp/vcomp.spec ++++ b/dlls/vcomp/vcomp.spec +@@ -83,8 +83,8 @@ + @ stub _vcomp_reduction_u2 + @ stub _vcomp_reduction_u4 + @ stub _vcomp_reduction_u8 +-@ stub _vcomp_sections_init +-@ stub _vcomp_sections_next ++@ cdecl _vcomp_sections_init(long) ++@ cdecl _vcomp_sections_next() + @ cdecl _vcomp_set_num_threads(long) + @ cdecl _vcomp_single_begin(long) + @ cdecl _vcomp_single_end() +diff --git a/dlls/vcomp/vcomp_private.h b/dlls/vcomp/vcomp_private.h +index d3a7005..3d6c22b 100644 +--- a/dlls/vcomp/vcomp_private.h ++++ b/dlls/vcomp/vcomp_private.h +@@ -35,6 +35,11 @@ struct vcomp_team + int chunksize; + int flags; + } dyn_for; ++ struct ++ { ++ int counter; ++ int nsect; ++ } sections; + } work; + }; + +diff --git a/dlls/vcomp/work.c b/dlls/vcomp/work.c +index 87bce93..4370ec5 100644 +--- a/dlls/vcomp/work.c ++++ b/dlls/vcomp/work.c +@@ -97,3 +97,21 @@ void CDECL _vcomp_for_static_end(void) + { + TRACE("stub\n"); + } ++ ++void CDECL _vcomp_sections_init(int n) ++{ ++ struct vcomp_team *pt = vcomp_get_team(); ++ TRACE("(%d): stub\n", n); ++ pt->work.sections.counter = 0; ++ pt->work.sections.nsect = n; ++} ++ ++int CDECL _vcomp_sections_next(void) ++{ ++ struct vcomp_team *pt = vcomp_get_team(); ++ int i = pt->work.sections.counter++; ++ if (i >= pt->work.sections.nsect) ++ i = -1; ++ TRACE("stub; returning %d\n", i); ++ return i; ++} +diff --git a/dlls/vcomp100/vcomp100.spec b/dlls/vcomp100/vcomp100.spec +index 48d5e3f..ab93ec2 100644 +--- a/dlls/vcomp100/vcomp100.spec ++++ b/dlls/vcomp100/vcomp100.spec +@@ -83,8 +83,8 @@ + @ stub _vcomp_reduction_u2 + @ stub _vcomp_reduction_u4 + @ stub _vcomp_reduction_u8 +-@ stub _vcomp_sections_init +-@ stub _vcomp_sections_next ++@ cdecl _vcomp_sections_init(long) vcomp._vcomp_sections_init ++@ cdecl _vcomp_sections_next() vcomp._vcomp_sections_next + @ cdecl _vcomp_set_num_threads(long) vcomp._vcomp_set_num_threads + @ cdecl _vcomp_single_begin(long) vcomp._vcomp_single_begin + @ cdecl _vcomp_single_end() vcomp._vcomp_single_end +diff --git a/dlls/vcomp90/vcomp90.spec b/dlls/vcomp90/vcomp90.spec +index 48d5e3f..ab93ec2 100644 +--- a/dlls/vcomp90/vcomp90.spec ++++ b/dlls/vcomp90/vcomp90.spec +@@ -83,8 +83,8 @@ + @ stub _vcomp_reduction_u2 + @ stub _vcomp_reduction_u4 + @ stub _vcomp_reduction_u8 +-@ stub _vcomp_sections_init +-@ stub _vcomp_sections_next ++@ cdecl _vcomp_sections_init(long) vcomp._vcomp_sections_init ++@ cdecl _vcomp_sections_next() vcomp._vcomp_sections_next + @ cdecl _vcomp_set_num_threads(long) vcomp._vcomp_set_num_threads + @ cdecl _vcomp_single_begin(long) vcomp._vcomp_single_begin + @ cdecl _vcomp_single_end() vcomp._vcomp_single_end +-- +2.2.1 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/vcomp-Stub_Functions/0007-vcomp-Add-a-warning-that-multithreading-is-not-yet-s.patch wine-staging-1.7.36~ubuntu12.04.1/patches/vcomp-Stub_Functions/0007-vcomp-Add-a-warning-that-multithreading-is-not-yet-s.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/vcomp-Stub_Functions/0007-vcomp-Add-a-warning-that-multithreading-is-not-yet-s.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/vcomp-Stub_Functions/0007-vcomp-Add-a-warning-that-multithreading-is-not-yet-s.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,25 @@ +From 5748aa15dd5e619714e9a04a033b30bd1fdae7d7 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Thu, 29 Jan 2015 00:18:47 +0100 +Subject: vcomp: Add a warning that multithreading is not yet supported. + +--- + dlls/vcomp/main.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/dlls/vcomp/main.c b/dlls/vcomp/main.c +index e37cf16..1dd57dd 100644 +--- a/dlls/vcomp/main.c ++++ b/dlls/vcomp/main.c +@@ -126,6 +126,8 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) + ERR("Failed to allocate TLS index\n"); + return FALSE; + } ++ ++ FIXME("Builtin vcomp doesn't support multithreading, use native library for better performance.\n"); + break; + case DLL_PROCESS_DETACH: + TlsFree(vcomp_context_tls); +-- +2.2.1 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/vcomp-Stub_Functions/definition wine-staging-1.7.36~ubuntu12.04.1/patches/vcomp-Stub_Functions/definition --- wine-staging-1.7.35~ubuntu12.04.1/patches/vcomp-Stub_Functions/definition 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/vcomp-Stub_Functions/definition 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1 @@ +Fixes: [31640] Implement additional stubs for vcomp dlls diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/winecfg-Libraries/0001-winecfg-Add-library-override-instead-of-closing-wine.patch wine-staging-1.7.36~ubuntu12.04.1/patches/winecfg-Libraries/0001-winecfg-Add-library-override-instead-of-closing-wine.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/winecfg-Libraries/0001-winecfg-Add-library-override-instead-of-closing-wine.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/winecfg-Libraries/0001-winecfg-Add-library-override-instead-of-closing-wine.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,74 @@ +From fa8d8f6dba0b772b2e820360dae34f994b5e78ea Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Sat, 7 Feb 2015 08:00:34 +0100 +Subject: winecfg: Add library override instead of closing winecfg when + pressing ENTER. + +Based on a patch by Hugh McMaster. +--- + programs/winecfg/libraries.c | 31 +++++++++++++++++++------------ + 1 file changed, 19 insertions(+), 12 deletions(-) + +diff --git a/programs/winecfg/libraries.c b/programs/winecfg/libraries.c +index 660737b..a9889e5 100644 +--- a/programs/winecfg/libraries.c ++++ b/programs/winecfg/libraries.c +@@ -421,9 +421,15 @@ static void on_add_combo_change(HWND dialog) + len=SendDlgItemMessageW(dialog, IDC_DLLCOMBO, CB_GETLBTEXTLEN, sel, 0); + + if (buffer[0] || len>0) ++ { + enable(IDC_DLLS_ADDDLL) ++ SendMessageW(GetParent(dialog), DM_SETDEFID, IDC_DLLS_ADDDLL, 0); ++ } + else ++ { + disable(IDC_DLLS_ADDDLL); ++ SendMessageW(GetParent(dialog), DM_SETDEFID, IDOK, 0); ++ } + } + + static void set_dllmode(HWND dialog, DWORD id) +@@ -492,7 +498,8 @@ static void on_add_click(HWND dialog) + + SendDlgItemMessageW(dialog, IDC_DLLCOMBO, WM_SETTEXT, 0, (LPARAM)emptyW); + disable(IDC_DLLS_ADDDLL); +- ++ SendMessageW(GetParent(dialog), DM_SETDEFID, IDOK, 0); ++ + WINE_TRACE("Adding %s as native, builtin\n", buffer); + + SendMessageW(GetParent(dialog), PSM_CHANGED, 0, 0); +@@ -605,18 +612,18 @@ LibrariesDlgProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) + break; + case WM_COMMAND: + switch(HIWORD(wParam)) { +- +- /* FIXME: when the user hits enter in the DLL combo box we should invoke the add +- * add button, rather than the propsheet OK button. But I don't know how to do that! +- */ +- + case CBN_EDITCHANGE: +- if(LOWORD(wParam) == IDC_DLLCOMBO) +- { +- on_add_combo_change(hDlg); +- break; +- } +- ++ if (LOWORD(wParam) == IDC_DLLCOMBO) ++ on_add_combo_change(hDlg); ++ break; ++ case CBN_SETFOCUS: ++ if (LOWORD(wParam) == IDC_DLLCOMBO) ++ on_add_combo_change(hDlg); ++ break; ++ case CBN_KILLFOCUS: ++ if (LOWORD(wParam) == IDC_DLLCOMBO) ++ SendMessageW(GetParent(hDlg), DM_SETDEFID, IDOK, 0); ++ break; + case BN_CLICKED: + switch(LOWORD(wParam)) { + case IDC_DLLS_ADDDLL: +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/winecfg-Libraries/definition wine-staging-1.7.36~ubuntu12.04.1/patches/winecfg-Libraries/definition --- wine-staging-1.7.35~ubuntu12.04.1/patches/winecfg-Libraries/definition 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/winecfg-Libraries/definition 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1 @@ +Fixes: [12804] Add library override instead of closing winecfg when pressing ENTER over the combobox diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/wined3d-CSMT_Main/0087-wined3d-Poll-queries-automatically-in-the-CS.patch wine-staging-1.7.36~ubuntu12.04.1/patches/wined3d-CSMT_Main/0087-wined3d-Poll-queries-automatically-in-the-CS.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/wined3d-CSMT_Main/0087-wined3d-Poll-queries-automatically-in-the-CS.patch 2015-01-24 15:32:20.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/wined3d-CSMT_Main/0087-wined3d-Poll-queries-automatically-in-the-CS.patch 2015-02-08 20:46:30.000000000 +0000 @@ -1,4 +1,4 @@ -From e041aaa221e23ed7af4d1620180dc4e00cf006f3 Mon Sep 17 00:00:00 2001 +From 17105a18c3e8a754e5158ff99e8ce367aed113ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Sat, 6 Jul 2013 19:18:48 +0200 Subject: wined3d: Poll queries automatically in the CS @@ -10,7 +10,7 @@ 3 files changed, 180 insertions(+), 128 deletions(-) diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c -index ba8e840..68e1ed7 100644 +index d182150..cb969a0 100644 --- a/dlls/wined3d/cs.c +++ b/dlls/wined3d/cs.c @@ -68,7 +68,6 @@ enum wined3d_cs_op @@ -38,7 +38,7 @@ static void wined3d_cs_submit(struct wined3d_cs *cs, size_t size) { LONG new_val = (cs->queue.head + size) & (WINED3D_CS_QUEUE_SIZE - 1); -@@ -1709,8 +1698,9 @@ static UINT wined3d_cs_exec_query_issue(struct wined3d_cs *cs, const void *data) +@@ -1712,8 +1701,9 @@ static UINT wined3d_cs_exec_query_issue(struct wined3d_cs *cs, const void *data) query->query_ops->query_issue(query, op->flags); @@ -50,7 +50,7 @@ return sizeof(*op); } -@@ -1727,37 +1717,6 @@ void wined3d_cs_emit_query_issue(struct wined3d_cs *cs, struct wined3d_query *qu +@@ -1730,37 +1720,6 @@ void wined3d_cs_emit_query_issue(struct wined3d_cs *cs, struct wined3d_query *qu cs->ops->submit(cs, sizeof(*op)); } @@ -88,7 +88,7 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void *data) = { /* WINED3D_CS_OP_NOP */ wined3d_cs_exec_nop, -@@ -1804,7 +1763,6 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void +@@ -1807,7 +1766,6 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void /* WINED3D_CS_OP_RESOURCE_MAP */ wined3d_cs_exec_resource_map, /* WINED3D_CS_OP_RESOURCE_UNMAP */ wined3d_cs_exec_resource_unmap, /* WINED3D_CS_OP_QUERY_ISSUE */ wined3d_cs_exec_query_issue, @@ -96,7 +96,7 @@ }; static void *wined3d_cs_mt_require_space(struct wined3d_cs *cs, size_t size) -@@ -1919,17 +1877,45 @@ void wined3d_cs_switch_onscreen_ds(struct wined3d_cs *cs, +@@ -1922,17 +1880,45 @@ void wined3d_cs_switch_onscreen_ds(struct wined3d_cs *cs, wined3d_surface_incref(cs->onscreen_depth_stencil); } @@ -143,7 +143,7 @@ { continue; diff --git a/dlls/wined3d/query.c b/dlls/wined3d/query.c -index bea03ed..621a9d7 100644 +index 098197b..dffad6f 100644 --- a/dlls/wined3d/query.c +++ b/dlls/wined3d/query.c @@ -241,6 +241,15 @@ ULONG CDECL wined3d_query_decref(struct wined3d_query *query) @@ -257,14 +257,14 @@ { - if (size) - { -- GL_EXTCALL(glGetQueryObjectuivARB(oq->id, GL_QUERY_RESULT_ARB, &samples)); -- checkGLcall("glGetQueryObjectuivARB(GL_QUERY_RESULT)"); +- GL_EXTCALL(glGetQueryObjectuiv(oq->id, GL_QUERY_RESULT, &samples)); +- checkGLcall("glGetQueryObjectuiv(GL_QUERY_RESULT)"); - TRACE("Returning %d samples.\n", samples); - fill_query_data(data, size, &samples, sizeof(samples)); - } - res = S_OK; -+ GL_EXTCALL(glGetQueryObjectuivARB(oq->id, GL_QUERY_RESULT_ARB, &samples)); -+ checkGLcall("glGetQueryObjectuivARB(GL_QUERY_RESULT)"); ++ GL_EXTCALL(glGetQueryObjectuiv(oq->id, GL_QUERY_RESULT, &samples)); ++ checkGLcall("glGetQueryObjectuiv(GL_QUERY_RESULT)"); + TRACE("Returning %d samples.\n", samples); + oq->samples = samples; + ret = TRUE; @@ -443,14 +443,14 @@ { - if (size) - { -- GL_EXTCALL(glGetQueryObjectui64v(tq->id, GL_QUERY_RESULT_ARB, ×tamp)); -- checkGLcall("glGetQueryObjectuivARB(GL_QUERY_RESULT)"); +- GL_EXTCALL(glGetQueryObjectui64v(tq->id, GL_QUERY_RESULT, ×tamp)); +- checkGLcall("glGetQueryObjectui64v(GL_QUERY_RESULT)"); - TRACE("Returning timestamp %s.\n", wine_dbgstr_longlong(timestamp)); - fill_query_data(data, size, ×tamp, sizeof(timestamp)); - } - res = S_OK; -+ GL_EXTCALL(glGetQueryObjectui64v(tq->id, GL_QUERY_RESULT_ARB, ×tamp)); -+ checkGLcall("glGetQueryObjectuivARB(GL_QUERY_RESULT)"); ++ GL_EXTCALL(glGetQueryObjectui64v(tq->id, GL_QUERY_RESULT, ×tamp)); ++ checkGLcall("glGetQueryObjectui64v(GL_QUERY_RESULT)"); + TRACE("Returning timestamp %s.\n", wine_dbgstr_longlong(timestamp)); + tq->timestamp = timestamp; + ret = TRUE; @@ -536,10 +536,10 @@ return WINED3D_OK; } diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h -index 3fd7fa7..7bda9f0 100644 +index cabc227..936ed73 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h -@@ -1051,6 +1051,7 @@ struct wined3d_occlusion_query +@@ -1079,6 +1079,7 @@ struct wined3d_occlusion_query struct list entry; GLuint id; struct wined3d_context *context; @@ -547,7 +547,7 @@ }; union wined3d_gl_query_object -@@ -1086,6 +1087,7 @@ struct wined3d_timestamp_query +@@ -1114,6 +1115,7 @@ struct wined3d_timestamp_query struct list entry; GLuint id; struct wined3d_context *context; @@ -555,7 +555,7 @@ }; void context_alloc_timestamp_query(struct wined3d_context *context, struct wined3d_timestamp_query *query) DECLSPEC_HIDDEN; -@@ -2564,6 +2566,7 @@ struct wined3d_cs +@@ -2586,6 +2588,7 @@ struct wined3d_cs struct wined3d_cs_queue queue; LONG pending_presents; @@ -563,7 +563,7 @@ }; struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device) DECLSPEC_HIDDEN; -@@ -2657,6 +2660,7 @@ enum query_state { +@@ -2679,6 +2682,7 @@ enum query_state { struct wined3d_query_ops { HRESULT (*query_get_data)(struct wined3d_query *query, void *data, DWORD data_size, DWORD flags); @@ -571,7 +571,7 @@ void (*query_issue)(struct wined3d_query *query, DWORD flags); }; -@@ -2672,7 +2676,8 @@ struct wined3d_query +@@ -2694,7 +2698,8 @@ struct wined3d_query DWORD data_size; void *extendedData; @@ -582,5 +582,5 @@ /* TODO: Add tests and support for FLOAT16_4 POSITIONT, D3DCOLOR position, other -- -2.1.3 +2.2.2 diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/wined3d-CSMT_Main/9999-IfDefined.patch wine-staging-1.7.36~ubuntu12.04.1/patches/wined3d-CSMT_Main/9999-IfDefined.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/wined3d-CSMT_Main/9999-IfDefined.patch 2015-01-24 15:32:20.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/wined3d-CSMT_Main/9999-IfDefined.patch 2015-02-08 20:46:30.000000000 +0000 @@ -2479,8 +2479,8 @@ if (available) { +#if defined(STAGING_CSMT) - GL_EXTCALL(glGetQueryObjectuivARB(oq->id, GL_QUERY_RESULT_ARB, &samples)); - checkGLcall("glGetQueryObjectuivARB(GL_QUERY_RESULT)"); + GL_EXTCALL(glGetQueryObjectuiv(oq->id, GL_QUERY_RESULT, &samples)); + checkGLcall("glGetQueryObjectuiv(GL_QUERY_RESULT)"); TRACE("Returning %d samples.\n", samples); @@ -459,6 +523,69 @@ @@ -2489,8 +2489,8 @@ +#else /* STAGING_CSMT */ + if (size) + { -+ GL_EXTCALL(glGetQueryObjectuivARB(oq->id, GL_QUERY_RESULT_ARB, &samples)); -+ checkGLcall("glGetQueryObjectuivARB(GL_QUERY_RESULT)"); ++ GL_EXTCALL(glGetQueryObjectuiv(oq->id, GL_QUERY_RESULT, &samples)); ++ checkGLcall("glGetQueryObjectuiv(GL_QUERY_RESULT)"); + TRACE("Returning %d samples.\n", samples); + fill_query_data(data, size, &samples, sizeof(samples)); + } @@ -2714,8 +2714,8 @@ if (available) { +#if defined(STAGING_CSMT) - GL_EXTCALL(glGetQueryObjectui64v(tq->id, GL_QUERY_RESULT_ARB, ×tamp)); - checkGLcall("glGetQueryObjectuivARB(GL_QUERY_RESULT)"); + GL_EXTCALL(glGetQueryObjectui64v(tq->id, GL_QUERY_RESULT, ×tamp)); + checkGLcall("glGetQueryObjectui64v(GL_QUERY_RESULT)"); TRACE("Returning timestamp %s.\n", wine_dbgstr_longlong(timestamp)); @@ -663,6 +877,28 @@ } @@ -2724,8 +2724,8 @@ +#else /* STAGING_CSMT */ + if (size) + { -+ GL_EXTCALL(glGetQueryObjectui64v(tq->id, GL_QUERY_RESULT_ARB, ×tamp)); -+ checkGLcall("glGetQueryObjectuivARB(GL_QUERY_RESULT)"); ++ GL_EXTCALL(glGetQueryObjectui64v(tq->id, GL_QUERY_RESULT, ×tamp)); ++ checkGLcall("glGetQueryObjectui64v(GL_QUERY_RESULT)"); + TRACE("Returning timestamp %s.\n", wine_dbgstr_longlong(timestamp)); + fill_query_data(data, size, ×tamp, sizeof(timestamp)); + } @@ -4479,7 +4479,7 @@ &adapter->d3d_info, WINED3D_STATE_INIT_DEFAULT))) { ERR("Failed to initialize device state, hr %#x.\n", hr); -@@ -4927,6 +5654,7 @@ +@@ -4937,6 +5664,7 @@ else return CallWindowProcA(proc, window, message, wparam, lparam); } @@ -4487,7 +4487,7 @@ /* Context activation is done by the caller */ struct wined3d_gl_bo *wined3d_device_get_bo(struct wined3d_device *device, UINT size, GLenum gl_usage, -@@ -4980,3 +5708,4 @@ +@@ -4990,3 +5718,4 @@ wined3d_device_destroy_bo(device, context, bo); } @@ -9521,7 +9521,7 @@ diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c --- a/dlls/wined3d/directx.c +++ b/dlls/wined3d/directx.c -@@ -5333,9 +5333,15 @@ +@@ -5345,9 +5345,15 @@ DebugBreak(); } diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/winedevice-DriverUnload/0001-winedevice-Call-DriverUnload-function-when-unloading.patch wine-staging-1.7.36~ubuntu12.04.1/patches/winedevice-DriverUnload/0001-winedevice-Call-DriverUnload-function-when-unloading.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/winedevice-DriverUnload/0001-winedevice-Call-DriverUnload-function-when-unloading.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/winedevice-DriverUnload/0001-winedevice-Call-DriverUnload-function-when-unloading.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,83 @@ +From 2ccb50c0dd04ae77d39dac6406f8cfa6e102aa91 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20M=C3=BCller?= +Date: Mon, 26 Jan 2015 04:31:10 +0100 +Subject: winedevice: Call DriverUnload function when unloading a driver. + +Based on a patch by Alexander Morozov. +--- + programs/winedevice/device.c | 29 +++++++++++++++++++++++++---- + 1 file changed, 25 insertions(+), 4 deletions(-) + +diff --git a/programs/winedevice/device.c b/programs/winedevice/device.c +index 72bc124..edd7c83 100644 +--- a/programs/winedevice/device.c ++++ b/programs/winedevice/device.c +@@ -45,6 +45,7 @@ static SERVICE_STATUS_HANDLE service_handle; + static HKEY driver_hkey; + static HANDLE stop_event; + static DRIVER_OBJECT driver_obj; ++static HMODULE driver_module; + static DRIVER_EXTENSION driver_extension; + + /* find the LDR_MODULE corresponding to the driver module */ +@@ -167,8 +168,26 @@ static NTSTATUS init_driver( HMODULE module, UNICODE_STRING *keyname ) + return status; + } + ++/* call the driver unload function */ ++static void unload_driver( HMODULE module, DRIVER_OBJECT *driver_obj ) ++{ ++ if (driver_obj->DriverUnload) ++ { ++ if (WINE_TRACE_ON(relay)) ++ WINE_DPRINTF( "%04x:Call driver unload %p (obj=%p)\n", GetCurrentThreadId(), ++ driver_obj->DriverUnload, driver_obj ); ++ ++ driver_obj->DriverUnload( driver_obj ); ++ ++ if (WINE_TRACE_ON(relay)) ++ WINE_DPRINTF( "%04x:Ret driver unload %p (obj=%p)\n", GetCurrentThreadId(), ++ driver_obj->DriverUnload, driver_obj ); ++ } ++ FreeLibrary( module ); ++} ++ + /* load the .sys module for a device driver */ +-static BOOL load_driver(void) ++static HMODULE load_driver(void) + { + static const WCHAR driversW[] = {'\\','d','r','i','v','e','r','s','\\',0}; + static const WCHAR systemrootW[] = {'\\','S','y','s','t','e','m','R','o','o','t','\\',0}; +@@ -249,10 +268,10 @@ static BOOL load_driver(void) + + module = load_driver_module( str ); + HeapFree( GetProcessHeap(), 0, path ); +- if (!module) return FALSE; ++ if (!module) return NULL; + + init_driver( module, &keypath ); +- return TRUE; ++ return module; + } + + static DWORD WINAPI service_handler( DWORD ctrl, DWORD event_type, LPVOID event_data, LPVOID context ) +@@ -305,13 +324,15 @@ static void WINAPI ServiceMain( DWORD argc, LPWSTR *argv ) + status.dwWaitHint = 10000; + SetServiceStatus( service_handle, &status ); + +- if (load_driver()) ++ driver_module = load_driver(); ++ if (driver_module) + { + status.dwCurrentState = SERVICE_RUNNING; + status.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN; + SetServiceStatus( service_handle, &status ); + + wine_ntoskrnl_main_loop( stop_event ); ++ unload_driver( driver_module, &driver_obj ); + } + else WINE_ERR( "driver %s failed to load\n", wine_dbgstr_w(driver_name) ); + +-- +1.9.1 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/winedevice-DriverUnload/definition wine-staging-1.7.36~ubuntu12.04.1/patches/winedevice-DriverUnload/definition --- wine-staging-1.7.35~ubuntu12.04.1/patches/winedevice-DriverUnload/definition 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/winedevice-DriverUnload/definition 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1 @@ +Fixes: Call DriverUnload function when unloading a device driver. diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/wine.inf-Performance/0001-wine.inf-Add-registry-keys-for-Windows-Performance-L.patch wine-staging-1.7.36~ubuntu12.04.1/patches/wine.inf-Performance/0001-wine.inf-Add-registry-keys-for-Windows-Performance-L.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/wine.inf-Performance/0001-wine.inf-Add-registry-keys-for-Windows-Performance-L.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/wine.inf-Performance/0001-wine.inf-Add-registry-keys-for-Windows-Performance-L.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,27 @@ +From 94f11de5d7ea9594acdfb3d778d7abca7d2c3017 Mon Sep 17 00:00:00 2001 +From: Daniel Jelinski +Date: Sun, 8 Feb 2015 06:32:34 +0100 +Subject: wine.inf: Add registry keys for Windows Performance Library. + +--- + loader/wine.inf.in | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/loader/wine.inf.in b/loader/wine.inf.in +index a4548f2..d0548cb 100644 +--- a/loader/wine.inf.in ++++ b/loader/wine.inf.in +@@ -484,6 +484,10 @@ HKLM,%CurrentVersionNT%\Image File Execution Options,,16 + HKLM,%CurrentVersionNT%\Language Pack,,16 + HKLM,%CurrentVersionNT%\NetworkCards,,16 + HKLM,%CurrentVersionNT%\Perflib,,16 ++HKLM,%CurrentVersionNT%\Perflib,Last Counter,0x10003,1846 ++HKLM,%CurrentVersionNT%\Perflib,Last Help,0x10003,1847 ++HKLM,%CurrentVersionNT%\Perflib\009,Counter,0x10002,1,1847,1846,End Marker ++HKLM,%CurrentVersionNT%\Perflib\009,Help,0x10002,1847,End Marker + HKLM,%CurrentVersionNT%\Ports,,16 + HKLM,%CurrentVersionNT%\Print,,16 + HKLM,%CurrentVersionNT%\ProfileList,,16 +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/wine.inf-Performance/definition wine-staging-1.7.36~ubuntu12.04.1/patches/wine.inf-Performance/definition --- wine-staging-1.7.35~ubuntu12.04.1/patches/wine.inf-Performance/definition 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/wine.inf-Performance/definition 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1 @@ +Fixes: [33661] Add performance library registry keys needed by MS SQL Server Management Studio Express 2008 R2 diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/winex11-RawEventWarp/0001-winex11-Only-enable-XInput2-cursor-warp-workaround-i.patch wine-staging-1.7.36~ubuntu12.04.1/patches/winex11-RawEventWarp/0001-winex11-Only-enable-XInput2-cursor-warp-workaround-i.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/winex11-RawEventWarp/0001-winex11-Only-enable-XInput2-cursor-warp-workaround-i.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/winex11-RawEventWarp/0001-winex11-Only-enable-XInput2-cursor-warp-workaround-i.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,64 @@ +From 88a383d2386e770e433b8c14d7a94b2511171695 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Mon, 26 Jan 2015 05:42:32 +0100 +Subject: winex11: Only enable XInput2 cursor warp workaround if necessary. + +Based on a patch by Patrick Rudolph. +--- + dlls/winex11.drv/mouse.c | 19 +++++++++++++++++-- + 1 file changed, 17 insertions(+), 2 deletions(-) + +diff --git a/dlls/winex11.drv/mouse.c b/dlls/winex11.drv/mouse.c +index f1e58fe..5f5bdeb 100644 +--- a/dlls/winex11.drv/mouse.c ++++ b/dlls/winex11.drv/mouse.c +@@ -131,6 +131,7 @@ static Cursor create_cursor( HANDLE handle ); + + #ifdef HAVE_X11_EXTENSIONS_XINPUT2_H + static BOOL xinput2_available; ++static BOOL broken_rawevents; + #define MAKE_FUNCPTR(f) static typeof(f) * p##f + MAKE_FUNCPTR(XIFreeDeviceInfo); + MAKE_FUNCPTR(XIQueryDevice); +@@ -1579,7 +1580,15 @@ void X11DRV_MotionNotify( HWND hwnd, XEvent *xev ) + if (!hwnd) + { + struct x11drv_thread_data *thread_data = x11drv_thread_data(); +- if (thread_data->warp_serial && (long)(event->serial - thread_data->warp_serial) < 0) return; ++ if (thread_data->warp_serial) ++ { ++ if ((long)(event->serial - thread_data->warp_serial) < 0) ++ { ++ TRACE( "pos %d,%d old serial %lu, ignoring\n", input.u.mi.dx, input.u.mi.dy, event->serial ); ++ return; ++ } ++ thread_data->warp_serial = 0; /* we caught up now */ ++ } + } + + send_mouse_input( hwnd, event->window, event->state, &input ); +@@ -1669,7 +1678,7 @@ static void X11DRV_RawMotion( XGenericEventCookie *xev ) + break; + } + +- if (thread_data->warp_serial) ++ if (broken_rawevents && thread_data->warp_serial) + { + if ((long)(xev->serial - thread_data->warp_serial) < 0) + { +@@ -1716,6 +1725,12 @@ void X11DRV_XInput2_Init(void) + #undef LOAD_FUNCPTR + + xinput2_available = XQueryExtension( gdi_display, "XInputExtension", &xinput2_opcode, &event, &error ); ++ ++ /* Until version 1.10.4 rawinput was broken in XOrg, see ++ * https://bugs.freedesktop.org/show_bug.cgi?id=30068 */ ++ broken_rawevents = strstr(XServerVendor( gdi_display ), "X.Org") && ++ XVendorRelease( gdi_display ) < 11004000; ++ + #else + TRACE( "X Input 2 support not compiled in.\n" ); + #endif +-- +2.2.1 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/winex11-RawEventWarp/definition wine-staging-1.7.36~ubuntu12.04.1/patches/winex11-RawEventWarp/definition --- wine-staging-1.7.35~ubuntu12.04.1/patches/winex11-RawEventWarp/definition 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/winex11-RawEventWarp/definition 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1 @@ +Fixes: [32913] Fix mouse jittering in Planetside 2 diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/winmm-Delay_Import_Depends/0001-winmm-Delay-import-ole32-msacm32-to-workaround-bug-w.patch wine-staging-1.7.36~ubuntu12.04.1/patches/winmm-Delay_Import_Depends/0001-winmm-Delay-import-ole32-msacm32-to-workaround-bug-w.patch --- wine-staging-1.7.35~ubuntu12.04.1/patches/winmm-Delay_Import_Depends/0001-winmm-Delay-import-ole32-msacm32-to-workaround-bug-w.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/winmm-Delay_Import_Depends/0001-winmm-Delay-import-ole32-msacm32-to-workaround-bug-w.patch 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1,27 @@ +From fecee7ab784c5befc19fa83ac9430960d1572811 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20M=C3=BCller?= +Date: Sat, 31 Jan 2015 06:00:38 +0100 +Subject: winmm: Delay import ole32 msacm32 to workaround bug when loading + multiple winmm versions. + +--- + dlls/winmm/Makefile.in | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/dlls/winmm/Makefile.in b/dlls/winmm/Makefile.in +index 3036526..0cf4b3c 100644 +--- a/dlls/winmm/Makefile.in ++++ b/dlls/winmm/Makefile.in +@@ -1,7 +1,8 @@ + EXTRADEFS = -D_WINMM_ + MODULE = winmm.dll + IMPORTLIB = winmm +-IMPORTS = uuid user32 advapi32 ole32 msacm32 ++IMPORTS = uuid user32 advapi32 ++DELAYIMPORTS = ole32 msacm32 + + C_SRCS = \ + driver.c \ +-- +2.2.2 + diff -Nru wine-staging-1.7.35~ubuntu12.04.1/patches/winmm-Delay_Import_Depends/definition wine-staging-1.7.36~ubuntu12.04.1/patches/winmm-Delay_Import_Depends/definition --- wine-staging-1.7.35~ubuntu12.04.1/patches/winmm-Delay_Import_Depends/definition 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/patches/winmm-Delay_Import_Depends/definition 2015-02-08 20:46:30.000000000 +0000 @@ -0,0 +1 @@ +Fixes: [37983] Jedi Knight: Dark Forces II crashes with winmm set to native diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/ar.po wine-staging-1.7.36~ubuntu12.04.1/po/ar.po --- wine-staging-1.7.35~ubuntu12.04.1/po/ar.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/ar.po 2015-02-08 20:31:28.000000000 +0000 @@ -45,8 +45,8 @@ msgid "&Modify..." msgstr "&تعديل..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "&إزالة" @@ -65,7 +65,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -146,7 +146,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -534,7 +534,7 @@ msgid "Font St&yle:" msgstr "نم&ط الخط:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "ال&حجم:" @@ -550,7 +550,7 @@ msgid "&Underline" msgstr "تسطي&ر" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "اللو&ن:" @@ -717,7 +717,7 @@ msgid "&to:" msgstr "إل&ى:" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "ال&حجم:" @@ -2194,7 +2194,7 @@ msgid "&File name:" msgstr "ا&سم الملف:" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "استعر&ض..." @@ -3421,7 +3421,7 @@ msgid "Joysticks" msgstr "مقابض اللعب" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "مع&طل" @@ -6711,7 +6711,7 @@ msgid "Hyperlink Information" msgstr "معلومات الوصلة العليا" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "الن&وع:" @@ -7534,7 +7534,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8060,7 +8060,7 @@ msgid "&Open:" msgstr "ا&فتح:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "ا&ستعرض..." @@ -8105,7 +8105,7 @@ msgid "Date deleted" msgstr "تاريخ الحذف" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "سطح المكتب" @@ -9499,7 +9499,7 @@ msgid "Digi&tal" msgstr "ر&قمية" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "ال&خط..." @@ -12863,7 +12863,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "يجري تحديث إعدادات واين في %s ، يرجى الانتظار..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12874,23 +12874,23 @@ "الإصدارة 2.1 او أحدث من رخصة غنّو العمومية المنشورة بواسطة منظمة البرمجيات " "الحرة ، ترجمه أعضاء من فريق عيون العرب و مجتمع لينكس العربي." -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "معلومات تسجيل وندوز" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "ال&مالك:" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "المن&ظمة:" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "إعدادات التطبيق" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " @@ -12900,55 +12900,55 @@ "بألسنة المكتبات و الرّسوميّات وذلك للسماح بتغييرات واسعة النّطاق تتعلق بتطبيق " "معين." -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "أ&ضف تطبيقًا..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "أزل تطبيقًا" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "إصدارة الوندو&ز:" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "إعدادات النّافذة" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "التقا&ط آلي للفأرة في وضع ملء الشاشة" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "السّماح لمدير النّواف&ذ بتأطيرها" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "السّماح لمدير النّوا&فذ بالتّحكم بها" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "محاكاة سطح المكتب افترا&ضي" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "حجم س&طح المكتب:" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "دقة الشّاشة" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "هذا مثالٌ نصيٌّ باستخدام عشر نقاط من الخط تاهوما" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "المكتبات المسيطرة" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12958,151 +12958,167 @@ "المضمّنة ( المصممّة بواسطة واين ) أو المكتبات الاصلية ( الموفّرة بواسطة تطبيق " "أو مأخوذة من وندوز ) " -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "إعداد سي&طرة مكتباتية جديد:" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "أ&ضف" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "السيط&رات الحالية:" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "ت&حرير..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "تحرير السيطرة" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "المكتبة المستعملة" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "الم&ضمّنة (المبنية بواسطة واين)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "الأ&صليّة (المأخوذة من وندوز)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "المضمّنة ثمّ الأصليّة" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "الأصليّة ثمّ المضمّنة" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "اختر ال&كل\tCtrl+A" -#: winecfg.rc:226 +#: winecfg.rc:230 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "إعدادات واين" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "فشل الاتّصال بمدير المحرّكات ، لا يمكن تحريرالاعدادات" -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "أ&ضف..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "ك&شف تلقائي" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "الم&سار:" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "الخيارات المتقدمة" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "الج&هاز:" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "است&عراض..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "الاس&م:" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "المس&لسل:" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "أظهر الملفات المخفيّة" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "معالج المحركات" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "الافتراضيات" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "جهاز الإخراج:" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "جهاز الإخراج الصوتي:" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "جهاز الإدخال:" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "جهاز الإدخال الصوتي:" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "ا&ختبار الصوت" -#: winecfg.rc:277 +#: winecfg.rc:275 +#, fuzzy +#| msgid "Wine configuration" +msgid "Speaker configuration" +msgstr "إعدادات واين" + +#: winecfg.rc:276 +#, fuzzy +#| msgid "De&vice:" +msgid "Device:" +msgstr "الج&هاز:" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 msgid "Appearance" msgstr "العرض" -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "السّم&ة:" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "ت&ثبيت سمة..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "العن&صر:" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "اللو&ن:" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "الم&جلدات" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "موص&ول إلى:" @@ -13182,6 +13198,24 @@ msgid "(System default)" msgstr "(الاعداد الافتراضي)" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +#, fuzzy +#| msgid "graphic" +msgid "Quadraphonic" +msgstr "رسومي" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -13297,127 +13331,127 @@ "\n" "تذكر انه بإمكانك الضغط على زر أضف في لسان المحركات لإضافة محرك.\n" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "خلفية التحكمات" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "نص التحكمات" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "خلفية القوائم" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "نص القوائم" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "شريط التمرير" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "خلفية الاختيار" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "نص الاختيار" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "خلفية اﻷدوات" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "نص الأدوات" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "خلفية النافذة" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "نص النافذة" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "شريط العنوان المفعل" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "العنوان المفعل" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "شريط العنوان غير المفعل" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "العنوان غير المفعل" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "نص الرسائل" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "مساحة العمل" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "إطار النافذة" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "الحد المفعل" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "الحد غير المفعل" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "ظل التحكمات" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "النص الرّمادي" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "إضاءة التحكمات" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "الظل الغامق للتحكمات" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "إضاءة التحكمات" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "الخلفية البديلة للتحكمات" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "عنصر ساخن" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "تفعيل انحدار شريط العنوان" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "إلغاء تفعيل انحدار شريط العنوان" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "القوائم المضاءة" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "شريط القوائم" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/bg.po wine-staging-1.7.36~ubuntu12.04.1/po/bg.po --- wine-staging-1.7.35~ubuntu12.04.1/po/bg.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/bg.po 2015-02-08 20:31:28.000000000 +0000 @@ -46,8 +46,8 @@ msgid "&Modify..." msgstr "&Промени" -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "Пре&махни" @@ -67,7 +67,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -154,7 +154,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -546,7 +546,7 @@ msgid "Font St&yle:" msgstr "&Стил:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "Размер:" @@ -562,7 +562,7 @@ msgid "&Underline" msgstr "Под&чертан" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "Цвят:" @@ -731,7 +731,7 @@ msgid "&to:" msgstr "&до:" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "Size:" @@ -2221,7 +2221,7 @@ msgid "&File name:" msgstr "&Файл" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 #, fuzzy msgid "B&rowse..." msgstr "Избор..." @@ -3439,7 +3439,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "&Забрани" @@ -6848,7 +6848,7 @@ msgid "Hyperlink Information" msgstr "Информация" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "&Тип:" @@ -7629,7 +7629,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "" @@ -8175,7 +8175,7 @@ msgid "&Open:" msgstr "" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "&Избери..." @@ -8220,7 +8220,7 @@ msgid "Date deleted" msgstr "" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 #, fuzzy msgctxt "display name" msgid "Desktop" @@ -9530,7 +9530,7 @@ msgid "Digi&tal" msgstr "" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Шрифт..." @@ -12709,7 +12709,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "" -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12717,24 +12717,24 @@ "option) any later version." msgstr "" -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "Owner:" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "Organization:" -#: winecfg.rc:148 +#: winecfg.rc:152 #, fuzzy msgid "Application settings" msgstr " Настройка на приложенията " -#: winecfg.rc:149 +#: winecfg.rc:153 #, fuzzy msgid "" "Wine can mimic different Windows versions for each application. This tab is " @@ -12746,57 +12746,57 @@ "за да можете да променяте, освен общосистемните, и специфичните за " "приложенията настройки." -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "&Добавяне на приложение..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "Пре&махване на приложение" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "&Версия на Windows:" -#: winecfg.rc:163 +#: winecfg.rc:167 #, fuzzy msgid "Window settings" msgstr " Настройка на прозорците " -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "Управлението на прозорците от мениджъра на прозорци" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "Емулирай виртуален работен плот" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "Размер на работния плот:" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:185 +#: winecfg.rc:189 #, fuzzy msgid "DLL overrides" msgstr " DLL замени " -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12806,155 +12806,170 @@ "(осигурена от Wine) или собствена (взета от Windows или осигурена от " "приложението)." -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "Нова библиотечна замяна:" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "&Добави" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "Съществуващи замени:" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "&Редактирай..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "Редактиране на замяна" -#: winecfg.rc:202 +#: winecfg.rc:206 #, fuzzy msgid "Load order" msgstr " Ред на зареждане " -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "&Вградена (Wine)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "&Собствена (Windows)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "В&градена, после собствена" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "Со&бствена, после вградена" -#: winecfg.rc:214 +#: winecfg.rc:218 #, fuzzy msgid "Select Drive Letter" msgstr "Маркирай &всичко" -#: winecfg.rc:226 +#: winecfg.rc:230 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Настройки на Wine" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "&Добави..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "&Открий" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "&Път:" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "Покажи допълнителните" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "Из&бери..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "&Етикет:" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "&Номер:" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "Показвай файловете, започващи с точка" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "" -#: winecfg.rc:277 +#: winecfg.rc:275 +#, fuzzy +#| msgid "Wine configuration" +msgid "Speaker configuration" +msgstr "Настройки на Wine" + +#: winecfg.rc:276 +#, fuzzy +msgid "Device:" +msgstr "De&vice:" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 #, fuzzy msgid "Appearance" msgstr " Външен вид " -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "Тема:" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "Инсталирай тема..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "" -#: winecfg.rc:293 +#: winecfg.rc:302 #, fuzzy msgid "Folders" msgstr "Папка" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "Връзка към:" @@ -13037,6 +13052,24 @@ msgid "(System default)" msgstr "Системен път" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +#, fuzzy +#| msgid "Graphics" +msgid "Quadraphonic" +msgstr "Графика" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -13143,135 +13176,135 @@ "Remember to click 'Add' in the Drives tab to create one!\n" msgstr "" -#: winecfg.rc:93 +#: winecfg.rc:97 #, fuzzy msgid "Controls Background" msgstr "&Копирай фона" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "" -#: winecfg.rc:96 +#: winecfg.rc:100 #, fuzzy msgid "Menu Background" msgstr "&Копирай фона" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "" -#: winecfg.rc:98 +#: winecfg.rc:102 #, fuzzy msgid "Scrollbar" msgstr "Превърти тук" -#: winecfg.rc:99 +#: winecfg.rc:103 #, fuzzy msgid "Selection Background" msgstr "Постави като &фон на работния плот" -#: winecfg.rc:100 +#: winecfg.rc:104 #, fuzzy msgid "Selection Text" msgstr "Маркирай &всичко" -#: winecfg.rc:101 +#: winecfg.rc:105 #, fuzzy msgid "Tooltip Background" msgstr "&Копирай фона" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:103 +#: winecfg.rc:107 #, fuzzy msgid "Window Background" msgstr "&Копирай фона" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "" -#: winecfg.rc:110 +#: winecfg.rc:114 #, fuzzy msgid "Application Workspace" msgstr "Приложения" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/ca.po wine-staging-1.7.36~ubuntu12.04.1/po/ca.po --- wine-staging-1.7.35~ubuntu12.04.1/po/ca.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/ca.po 2015-02-08 20:31:28.000000000 +0000 @@ -52,8 +52,8 @@ msgid "&Modify..." msgstr "&Modifica..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "T&reu" @@ -72,7 +72,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -156,7 +156,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -558,7 +558,7 @@ msgid "Font St&yle:" msgstr "&Estil del Tipus de Lletra:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "&Mida:" @@ -574,7 +574,7 @@ msgid "&Underline" msgstr "&Subratllat" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "&Color:" @@ -741,7 +741,7 @@ msgid "&to:" msgstr "&a:" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "Mi&da:" @@ -2224,7 +2224,7 @@ msgid "&File name:" msgstr "Nom de &fitxer:" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "&Navega..." @@ -3483,7 +3483,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "&Deshabilitada" @@ -6789,7 +6789,7 @@ msgid "Hyperlink Information" msgstr "Informació de Hiperenllaç" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "&Tipus:" @@ -7649,7 +7649,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "ppp" @@ -8178,7 +8178,7 @@ msgid "&Open:" msgstr "&Obrir:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "&Navega..." @@ -8223,7 +8223,7 @@ msgid "Date deleted" msgstr "Data suprimit" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Escriptori" @@ -9689,7 +9689,7 @@ msgid "Digi&tal" msgstr "Digi&tal" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "Tipus de &lletra..." @@ -13111,7 +13111,7 @@ msgstr "" "La configuració del Wine en %s s'està actualitzant, si us plau, espereu..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -13123,23 +13123,23 @@ "la Free Software Foundation; o la versió 2.1 de la Llicència, o (a la vostra " "elecció) qualsevol versió posterior." -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "Informació de registració del Windows" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "Pr&opietari:" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "Organit&zació:" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "Ajustaments de les aplicacions" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " @@ -13150,56 +13150,56 @@ "permetre-us canviar la configuració del sistema o d'una aplicació en " "aquestes pestanyes també." -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "&Afegeix aplicació..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "T&reure aplicació" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "Versió de &Windows:" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "Ajustaments de finestra" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" "Captura automàticament el &ratolí en les finestres de pantalla completa" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "Permet que el gestor de finestres &decori les finestres" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "Permet que el gestor de finestres &controli les finestres" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "&Emula un escriptori virtual" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "&Mida d'escriptori:" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "Resolució de pantalla" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "Això és un text de mostra en Tahoma de 10 punts" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "Reemplaçaments DLL" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -13209,57 +13209,57 @@ "(proporcionada pel Wine) o nativa (treta de Windows o proporcionada per " "l'aplicació)." -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "&Nou reemplaçament per la biblioteca:" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "&Afegeix" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "&Reemplaçaments Existents:" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "&Edita..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "Editar Reemplaçament" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "Ordre de càrrega" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "&Interna (Wine)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "&Nativa (Windows)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "In&terna, després Nativa" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "Nati&va, després Interna" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "Lletra de la Unitat" -#: winecfg.rc:226 +#: winecfg.rc:230 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Configuració del Wine" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13267,95 +13267,111 @@ "S'ha fallat en connectar al gestor de muntatge; la configuració d'unitat no " "es pot editar." -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "&Afegeix..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "Auto&detecta" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "&Ruta:" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "Mostrar &Avançat" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "Dispositi&u:" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "Na&vega..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "&Etiqueta:" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "&Sèrie:" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "Mostra els fitxers de &punt" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "Diagnòstics de controlador" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "Predeterminats" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "Dispositiu de sortida:" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "Dispositiu de sortida de veu:" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "Dispositiu d'entrada:" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "Dispositiu d'entrada de veu:" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "&Prova el So" -#: winecfg.rc:277 +#: winecfg.rc:275 +#, fuzzy +#| msgid "Wine configuration" +msgid "Speaker configuration" +msgstr "Configuració del Wine" + +#: winecfg.rc:276 +#, fuzzy +#| msgid "De&vice:" +msgid "Device:" +msgstr "Dispositi&u:" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 msgid "Appearance" msgstr "Aparença" -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "&Tema:" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "&Instal·la tema..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "&Element:" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "C&olor:" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "Carpetes" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "En&llaça a:" @@ -13435,6 +13451,24 @@ msgid "(System default)" msgstr "(Defecte del sistema)" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +#, fuzzy +#| msgid "graphic" +msgid "Quadraphonic" +msgstr "gràfic" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -13552,127 +13586,127 @@ "\n" "Recordeu fer clic en 'Afegir' en la pestanya Unitats per crear una!\n" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "Controls--Fons" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "Controls--Text" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "Menú--Fons" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "Menú--Text" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "Barra de Desplaçament" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "Selecció--Fons" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "Selecció--Text" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "Indicador de Funció--Fons" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "Indicador de Funció--Text" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "Finestra--Fons" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "Finestra--Text" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "Títol Actiu--Barra" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "Títol Actiu--Text" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "Títol Inactiu--Barra" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "Títol Inactiu--Text" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "Text de Quadre de Missatge" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "Espai de Treball d'Aplicació" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "Marca de Finestra" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "Vora Activa" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "Vora Inactiva" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "Controls--Ombra" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "Text Gris" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "Controls--Ressalt" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "Controls--Ombra Fosca" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "Controls--Brillo" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "Controls--Fons Alternatiu" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "Element Ressaltat" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "Gradient de Barra de Títol Actiu" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "Gradient de Barra de Títol Inactiu" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "Menú--Ressalt" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "Menú--Barra" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/cs.po wine-staging-1.7.36~ubuntu12.04.1/po/cs.po --- wine-staging-1.7.35~ubuntu12.04.1/po/cs.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/cs.po 2015-02-08 20:31:28.000000000 +0000 @@ -48,8 +48,8 @@ msgid "&Modify..." msgstr "Změnit..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "Odeb&rat" @@ -68,7 +68,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -151,7 +151,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -541,7 +541,7 @@ msgid "Font St&yle:" msgstr "St&yl písma:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "Veliko&st:" @@ -557,7 +557,7 @@ msgid "&Underline" msgstr "&Podtržení" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "&Barva:" @@ -724,7 +724,7 @@ msgid "&to:" msgstr "&do:" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "Veli&kost:" @@ -2194,7 +2194,7 @@ msgid "&File name:" msgstr "&Název souboru:" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "P&rocházet..." @@ -3382,7 +3382,7 @@ msgid "Joysticks" msgstr "Pákové ovladače" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "&Zakázat" @@ -6676,7 +6676,7 @@ msgid "Hyperlink Information" msgstr "Informace o hypertextovém odkazu" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "&Typ:" @@ -7469,7 +7469,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "bodů na palec (dpi)" @@ -7996,7 +7996,7 @@ msgid "&Open:" msgstr "&Otevřít:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "&Procházet..." @@ -8041,7 +8041,7 @@ msgid "Date deleted" msgstr "Datum bylo odstraněno" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Plocha" @@ -9445,7 +9445,7 @@ msgid "Digi&tal" msgstr "Digi&tální" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Písmo..." @@ -12749,7 +12749,7 @@ msgstr "" "Konfigurace Wine umístěná v %s je právě aktualizována, prosím čekejte..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12761,23 +12761,23 @@ "publikovaném Free Software Foundation; platná je verze 2.1 zmíněné licence " "nebo (pokud je lépe vyhovující) jakákoli novější verze." -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "Informace o registraci Windows" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "&Vlastník:" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "Organi&zace:" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "Nastavení aplikací" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " @@ -12787,55 +12787,55 @@ "je provázaná se záložkami Knihovny a Zobrazení a umožňuje změnit nastavení " "celého systému nebo nastavení každé aplikace zvlášť." -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "Přid&at aplikaci..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "Odeb&rat aplikaci" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "Verze &Windows:" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "Nastavení oken" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Automaticky odchytávat &myš v režimu celé obrazovky" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "Povolit správci oken &dekorovat okna" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "Povolit &správci oken kontrolu nad okny" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "&Emulace virtuálního desktopu" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "&Velikost desktopu:" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "Rozlišení obrazovky" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "Toto je testovací text - 10 bodů, Tahoma" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "Nastavení DLL" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12844,57 +12844,57 @@ "Můžete vybrat zda budou použity dynamicky linkované knihovny vestavěné ve " "Wine nebo nativní (získané z Windows nebo poskytnuté aplikací)." -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "&Nové nastavení pro knihovnu:" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "Přid&at" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "&Existující nastavení knihoven:" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "&Upravit..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "Úprava nastavení knihovny" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "Pořadí nahrávání" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "&Vestavěná (Wine)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "&Nativní (Windows)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "V&estavěná pak nativní" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "N&ativní a pak vestavěná" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "Vyberte písmeno disku" -#: winecfg.rc:226 +#: winecfg.rc:230 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Konfigurace Wine" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -12902,95 +12902,111 @@ "Selhalo připojení k správci přípojných bodů, nelze upravovat konfiguraci " "diskových jednotek." -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "Přid&at..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "Auto&detekce" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "&Cesta:" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "Zobrazit rozšířené &možnosti" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "&Zařízení:" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "Procház&et..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "P&opisek:" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "&Sériové číslo:" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "Zo&brazit soubory s tečkou na začátku názvu" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "Diagnostika ovladače" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "Výchozí nastavení" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "Výstupní zařízení:" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "Zařízení hlasového výstupu:" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "Vstupní zařízení:" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "Zařízení hlasového vstupu:" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "O&testovat zvuk" -#: winecfg.rc:277 +#: winecfg.rc:275 +#, fuzzy +#| msgid "Wine configuration" +msgid "Speaker configuration" +msgstr "Konfigurace Wine" + +#: winecfg.rc:276 +#, fuzzy +#| msgid "De&vice:" +msgid "Device:" +msgstr "&Zařízení:" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 msgid "Appearance" msgstr "Vzhled" -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "&Téma:" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "&Instalovat téma..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "Po&ložka:" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "B&arva:" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "Adresáře" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "&Odkaz do:" @@ -13070,6 +13086,24 @@ msgid "(System default)" msgstr "(Výchozí v systému)" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +#, fuzzy +#| msgid "graphic" +msgid "Quadraphonic" +msgstr "grafika" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -13187,127 +13221,127 @@ "\n" "Klikněte na ‘Přidat...’ v záložce Disky a vytvořte ho!\n" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "Pozadí ovládacích prvků" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "Písmo ovládacích prvků" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "Pozadí menu" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "Písmo menu" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "Posuvník" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "Pozadí výběru" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "Písmo výběru" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "Pozadí tipu" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "Písmo tipu" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "Pozadí okna" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "Písmo okna" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "Pozadí titulku aktivního okna" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "Písmo titulku aktivního okna" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "Pozadí titulku neaktivního okna" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "Písmo titulku neaktivního okna" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "Písmo okna zprávy" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "Pracovní prostor aplikace" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "Písmo okna" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "Okraj aktivního okna" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "Okraj neaktivního okna" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "Stíny ovládacích prvků" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "Pošedlý text" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "Zvýraznění ovládacích prvků" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "Tmavé stíny ovládacích prvků" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "Nasvícení ovládacích prvků" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "Alternativní pozadí ovládacích prvků" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "Prvek pod ukazatelem" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "Přechod titulku aktivního okna" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "Přechod titulku neaktivního okna" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "Zvýraznění v menu" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "Lišta menu" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/da.po wine-staging-1.7.36~ubuntu12.04.1/po/da.po --- wine-staging-1.7.35~ubuntu12.04.1/po/da.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/da.po 2015-02-08 20:31:28.000000000 +0000 @@ -47,8 +47,8 @@ msgid "&Modify..." msgstr "&Rediger..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "&Fjern" @@ -67,7 +67,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -149,7 +149,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -549,7 +549,7 @@ msgid "Font St&yle:" msgstr "&Typografi:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "&Størrelse:" @@ -565,7 +565,7 @@ msgid "&Underline" msgstr "&Understreget" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "&Farve:" @@ -732,7 +732,7 @@ msgid "&to:" msgstr "&til:" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "S&tørrelse:" @@ -2214,7 +2214,7 @@ msgid "&File name:" msgstr "&Filnavn:" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "&Gennemse..." @@ -3454,7 +3454,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "&Deaktiver" @@ -6756,7 +6756,7 @@ msgid "Hyperlink Information" msgstr "Information om Hyperlink'et" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "T&ype:" @@ -7614,7 +7614,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8141,7 +8141,7 @@ msgid "&Open:" msgstr "&Åbn:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "&Gennemse..." @@ -8186,7 +8186,7 @@ msgid "Date deleted" msgstr "Dato slettet" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Skrivebord" @@ -9618,7 +9618,7 @@ msgid "Digi&tal" msgstr "&Digital" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Skrifttype..." @@ -13006,7 +13006,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "Wine konfigurationen i %s, er ved at blive opdateret, vent venligst..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -13018,23 +13018,23 @@ "publiceret af Free Software Foundation; enten version 2.1, eller (efter dit " "valg) en senere version." -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "Windows registreringsoplysninger" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "Ejer:" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "Organisation:" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "Programindstillinger" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " @@ -13045,55 +13045,55 @@ "for at ændre indstillinger på hele systemet eller per program i disse " "faneblade." -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "&Tilføj program..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "&Fjern program" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "&Windows version:" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "Vindueindstillinger" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Automatisk fang &musen i vinduer med fuld skærm" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "Tillad vindues manageren at &dekorere vinduerne" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "Tillad vindues manageren at styre vinduerne" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "Emuler et virtuel &skrivebord" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "Skrivebord &størrelse:" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "Skærmopløsning" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "Dette er en eksempel tekst med 10 punkts Tahoma" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "DLL overstyringer" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -13102,57 +13102,57 @@ "Dynamiske Link Biblioteker kan specificeres individuelt for enten indbygget " "(fra Wine) eller indfødt (taget fra Windows eller et program)." -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "&Nye overstyringer for bibliotek:" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "&Tilføj" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "Eksisterende &overstyringer:" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "&Rediger..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "Rediger overstyring" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "Indlæsningsrækkefølge" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "Ind&bygget (Wine)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "Ind&født (Windows)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "Indb&ygget derefter indfødt" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "I&ndfødt derefter indbygget" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "Vælg Drevbogstav" -#: winecfg.rc:226 +#: winecfg.rc:230 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Wine konfiguration" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13160,95 +13160,111 @@ "Det lykkedes ikke at forbinde til mount manageren. Drevkonfigurationen kan " "ikke redigeres." -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "&Tilføj..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "Auto&detekter" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "&Sti:" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "Vis &avanceret" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "Enhed:" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "G&ennemse..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "Etiket:" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "Se&riel:" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "Vis &dot filer" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "Driver diagnostik" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "Standarder" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "Output enhed:" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "Stemme output enhed:" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "Input enhed:" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "Stemme input enhed:" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "&Test lyd" -#: winecfg.rc:277 +#: winecfg.rc:275 +#, fuzzy +#| msgid "Wine configuration" +msgid "Speaker configuration" +msgstr "Wine konfiguration" + +#: winecfg.rc:276 +#, fuzzy +#| msgid "De&vice:" +msgid "Device:" +msgstr "Enhed:" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 msgid "Appearance" msgstr "Udseende" -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "&Tema:" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "&Installer tema..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "&Element:" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "F&arve:" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "Mapper" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "&Link til:" @@ -13328,6 +13344,24 @@ msgid "(System default)" msgstr "(System standard)" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +#, fuzzy +#| msgid "graphic" +msgid "Quadraphonic" +msgstr "Grafik" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -13444,127 +13478,127 @@ "\n" "Husk at klikke Tilføj i Drev tabben for lave en!\n" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "Kontrol baggrund" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "Kontrol tekst" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "Menubaggrund" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "Menutekst" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "Scrollbar" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "Markeret baggrund" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "Markeret tekst" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "Baggrund i værktøjstip" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "Tekst i værktøjstip" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "vinduesbaggrund" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "vinduestekst" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "Aktiv titellinje" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "Aktiv titeltekst" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "Inaktiv titellinje" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "Inaktiv titeltekst" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "Meldingsvinduestekst" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "Arbejdsområde i program" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "Vinduesramme" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "Aktiv kant" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "Inaktiv kant" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "Kontrol skygge" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "Grå tekst" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "Markeret controls" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "Kontrol mørk skygge" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "Kontrol lys" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "Baggrund for skiftende controls" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "Markeret element" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "Gradient for aktiv titellinje" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "Gradient for Inaktiv titellinje" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "Markeret menu" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "Menulinje" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/de.po wine-staging-1.7.36~ubuntu12.04.1/po/de.po --- wine-staging-1.7.35~ubuntu12.04.1/po/de.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/de.po 2015-02-08 20:31:28.000000000 +0000 @@ -5,7 +5,7 @@ "Project-Id-Version: Wine\n" "Report-Msgid-Bugs-To: http://bugs.winehq.org\n" "POT-Creation-Date: N/A\n" -"PO-Revision-Date: 2014-10-06 21:51+0200\n" +"PO-Revision-Date: 2015-02-05 22:22+0100\n" "Last-Translator: Julian Rüger\n" "Language-Team: none\n" "Language: German\n" @@ -47,8 +47,8 @@ msgid "&Modify..." msgstr "&Ändern..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "&Entfernen" @@ -67,7 +67,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -152,7 +152,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -541,7 +541,7 @@ msgid "Font St&yle:" msgstr "Schrift&stil:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "&Größe:" @@ -557,7 +557,7 @@ msgid "&Underline" msgstr "&Unterstrichen" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "&Farbe:" @@ -724,7 +724,7 @@ msgid "&to:" msgstr "&bis:" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "G&röße:" @@ -2202,7 +2202,7 @@ msgid "&File name:" msgstr "&Dateiname:" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "&Wählen..." @@ -3445,7 +3445,7 @@ msgid "Joysticks" msgstr "Joysticks" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "&Deaktivieren" @@ -6726,7 +6726,7 @@ msgid "Hyperlink Information" msgstr "Hyperlink-Informationen" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "&Typ:" @@ -7513,7 +7513,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8040,7 +8040,7 @@ msgid "&Open:" msgstr "Ö&ffnen:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "&Durchsuchen..." @@ -8085,7 +8085,7 @@ msgid "Date deleted" msgstr "Gelöscht am" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Desktop" @@ -9549,7 +9549,7 @@ msgid "Digi&tal" msgstr "Digi&tal" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "Schrift&art..." @@ -12957,7 +12957,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "Die Konfiguration von Wine in %s wird aktualisiert, bitte warten..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12969,23 +12969,23 @@ "veröffentlicht, weiterverteilen und/oder modifizieren; entweder gemäß " "Version 2.1 der Lizenz oder (nach Ihrer Option) jeder späteren Version." -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "Windows Registrierungs-Informationen" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "&Eigentümer:" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "&Organisation:" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "Anwendungseinstellungen" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " @@ -12996,55 +12996,55 @@ "verknüpft, so dass Sie entweder systemweite oder anwendungsabhängige " "Einstellungen in diesen Reitern vornehmen können." -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "Anw. &hinzufügen..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "Anw. &entfernen" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "&Windows-Version:" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "Fenstereinstellungen" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Im Vollbildmodus automatisch die &Maus einfangen" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "Erlaube dem Fenstermanager die Fenster zu &dekorieren" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "Erlaube dem Fenstermanager die &Fenster zu kontrollieren" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "&Emuliere einen virtuellen Bildschirm" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "Desktop-&Größe:" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "Bildschirmauflösung" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "Dies ist ein Beispieltext in 10 Punkt Tahoma" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "DLL-Überschreibungen" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -13054,55 +13054,55 @@ "Builtin (gestellt durch Wine) oder Native (von Windows oder durch die " "Anwendung gestellt)." -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "&Neue Überschreibung für:" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "&Festlegen" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "Bestehende Über&schreibungen:" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "&Bearbeiten..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "Überschreibung bearbeiten" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "Ladereihenfolge" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "&Builtin (Wine)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "&Native (Windows)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "Bui<in dann Native" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "Nati&ve dann Builtin" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "Laufwerksbuchstaben wählen" -#: winecfg.rc:226 +#: winecfg.rc:230 msgid "Drive configuration" msgstr "Laufwerkskonfiguration" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13110,95 +13110,107 @@ "Fehler beim Verbinden mit dem Mountmanager. Die Laufwerkskonfiguration kann " "nicht bearbeitet werden." -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "&Hinzufügen..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "&Automatisch" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "&Pfad:" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "&Erweitert" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "Ge&rät:" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "Durch&suchen..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "&Bezeichnung:" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "S&erien-Nr.:" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "D&ot-Dateien anzeigen" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "Treiberdiagnose" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "Standards" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "Ausgabegerät:" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "Sprachausgabegerät:" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "Eingabegerät:" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "Spracheingabegerät:" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "Sound &testen" -#: winecfg.rc:277 +#: winecfg.rc:275 +msgid "Speaker configuration" +msgstr "Lautsprecher-Konfiguration" + +#: winecfg.rc:276 +msgid "Device:" +msgstr "Gerät:" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "Lautsprecher:" + +#: winecfg.rc:286 msgid "Appearance" msgstr "Darstellung" -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "&Motiv:" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "Motiv &installieren..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "&Element:" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "F&arbe:" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "Ordner" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "&Verknüpfe:" @@ -13272,11 +13284,27 @@ #: winecfg.rc:86 msgid "Audio test failed!" -msgstr "Festplattenreset fehlgeschlagen!" +msgstr "Audiotest fehlgeschlagen!" #: winecfg.rc:88 msgid "(System default)" -msgstr "(System Standard)" +msgstr "(Systemstandard)" + +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "5.1 Surround" + +#: winecfg.rc:90 +msgid "Quadraphonic" +msgstr "Quadrofon" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "Stereo" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "Mono" #: winecfg.rc:54 msgid "" @@ -13394,127 +13422,127 @@ "Vergessen Sie nicht, im Reiter 'Laufwerke' ein solches anzulegen, indem Sie " "auf 'Hinzufügen' klicken!\n" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "Steuerelementhintergrund" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "Steuerelementtext" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "Menühintergrund" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "Menütext" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "Bildlaufleiste" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "Auswahlhintergrund" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "Auswahltext" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "Tooltip-Hintergrund" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "Tooltip-Text" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "Fensterhintergrund" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "Fenstertext" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "Aktive Titelleiste" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "Aktiver Titelleistentext" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "Inaktive Titelleiste" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "Inaktiver Titelleistentext" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "Dialogfeldtext" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "Anwendungsarbeitsplatz" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "Fensterrahmen" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "Aktiver Rand" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "Inaktiver Rand" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "Steuerelementschatten" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "Grauer Text" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "Steuerelementhervorhebung" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "Dunkler Steuerelementschatten" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "Steuerelementerhellung" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "Alternativer Steuerelementhintergrund" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "Aktiv hervorgehobenes Element" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "Gradient der aktiven Titelleiste" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "Gradient der inaktiven Titelleiste" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "Menühervorhebung" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "Menüleiste" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/el.po wine-staging-1.7.36~ubuntu12.04.1/po/el.po --- wine-staging-1.7.35~ubuntu12.04.1/po/el.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/el.po 2015-02-08 20:31:28.000000000 +0000 @@ -43,8 +43,8 @@ msgid "&Modify..." msgstr "" -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "" @@ -63,7 +63,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -143,7 +143,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -525,7 +525,7 @@ msgid "Font St&yle:" msgstr "Στυλ Γρ&αμματοσειράς:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "&Μέγεθος:" @@ -541,7 +541,7 @@ msgid "&Underline" msgstr "&Υπογράμμιση" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "&Χρώμα:" @@ -709,7 +709,7 @@ msgid "&to:" msgstr "&έως:" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "Μέγε&θος:" @@ -2176,7 +2176,7 @@ msgid "&File name:" msgstr "&Περιεχόμενα" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "" @@ -3372,7 +3372,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "" @@ -6741,7 +6741,7 @@ msgid "Hyperlink Information" msgstr "" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "" @@ -7501,7 +7501,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "" @@ -8033,7 +8033,7 @@ msgid "&Open:" msgstr "" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "" @@ -8079,7 +8079,7 @@ msgid "Date deleted" msgstr "" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 #, fuzzy msgctxt "display name" msgid "Desktop" @@ -9370,7 +9370,7 @@ msgid "Digi&tal" msgstr "" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "" @@ -12476,7 +12476,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "" -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12484,237 +12484,250 @@ "option) any later version." msgstr "" -#: winecfg.rc:137 +#: winecfg.rc:141 #, fuzzy msgid "Windows registration information" msgstr "Εκτύπωση" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "" -#: winecfg.rc:140 +#: winecfg.rc:144 #, fuzzy msgid "Organi&zation:" msgstr "Επιλογές" -#: winecfg.rc:148 +#: winecfg.rc:152 #, fuzzy msgid "Application settings" msgstr "Επιλογές" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " "or per-application settings in those tabs as well." msgstr "" -#: winecfg.rc:153 +#: winecfg.rc:157 #, fuzzy msgid "&Add application..." msgstr "Επιλογές" -#: winecfg.rc:154 +#: winecfg.rc:158 #, fuzzy msgid "&Remove application" msgstr "Επιλογές" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "" -#: winecfg.rc:169 +#: winecfg.rc:173 #, fuzzy msgid "Desktop &size:" msgstr "Επιφάνεια Εργασίας" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " "application)." msgstr "" -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "" -#: winecfg.rc:193 +#: winecfg.rc:197 #, fuzzy msgid "&Edit..." msgstr "Εκτύπωση" -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "" -#: winecfg.rc:226 +#: winecfg.rc:230 #, fuzzy msgid "Drive configuration" msgstr "Επιλογές" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "" -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "" -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:261 +#: winecfg.rc:265 #, fuzzy msgid "Defaults" msgstr "Προεπιλεγμένος εκτυπωτής; " -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "" -#: winecfg.rc:277 -msgid "Appearance" +#: winecfg.rc:275 +#, fuzzy +msgid "Speaker configuration" +msgstr "Επιλογές" + +#: winecfg.rc:276 +msgid "Device:" msgstr "" #: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 +msgid "Appearance" +msgstr "" + +#: winecfg.rc:287 msgid "&Theme:" msgstr "" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "" -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "" -#: winecfg.rc:293 +#: winecfg.rc:302 #, fuzzy msgid "Folders" msgstr "Κατάλογοι Συστήματος" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "" @@ -12798,6 +12811,22 @@ msgid "(System default)" msgstr "Κατάλογοι Συστήματος" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +msgid "Quadraphonic" +msgstr "" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -12901,129 +12930,129 @@ "Remember to click 'Add' in the Drives tab to create one!\n" msgstr "" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "" -#: winecfg.rc:94 +#: winecfg.rc:98 #, fuzzy msgid "Controls Text" msgstr "&Περιεχόμενα" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "" -#: winecfg.rc:110 +#: winecfg.rc:114 #, fuzzy msgid "Application Workspace" msgstr "Επιλογές" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/en.po wine-staging-1.7.36~ubuntu12.04.1/po/en.po --- wine-staging-1.7.35~ubuntu12.04.1/po/en.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/en.po 2015-02-08 20:31:28.000000000 +0000 @@ -47,8 +47,8 @@ msgid "&Modify..." msgstr "&Modify..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "&Remove" @@ -67,7 +67,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -150,7 +150,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -540,7 +540,7 @@ msgid "Font St&yle:" msgstr "Font St&yle:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "&Size:" @@ -556,7 +556,7 @@ msgid "&Underline" msgstr "&Underline" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "&Colour:" @@ -723,7 +723,7 @@ msgid "&to:" msgstr "&to:" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "Si&ze:" @@ -2200,7 +2200,7 @@ msgid "&File name:" msgstr "&File name:" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "B&rowse..." @@ -3438,7 +3438,7 @@ msgid "Joysticks" msgstr "Joysticks" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "&Disable" @@ -6714,7 +6714,7 @@ msgid "Hyperlink Information" msgstr "Hyperlink Information" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "&Type:" @@ -7501,7 +7501,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8028,7 +8028,7 @@ msgid "&Open:" msgstr "&Open:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "&Browse..." @@ -8073,7 +8073,7 @@ msgid "Date deleted" msgstr "Date deleted" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Desktop" @@ -9499,7 +9499,7 @@ msgid "Digi&tal" msgstr "Digi&tal" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Font..." @@ -12867,7 +12867,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "The Wine configuration in %s is being updated, please wait..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12879,23 +12879,23 @@ "Free Software Foundation; either version 2.1 of the Licence, or (at your " "option) any later version." -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "Windows registration information" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "&Owner:" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "Organi&sation:" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "Application settings" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " @@ -12905,55 +12905,55 @@ "linked to the Libraries and Graphics tabs to allow you to change system-wide " "or per-application settings in those tabs as well." -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "&Add application..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "&Remove application" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "&Windows Version:" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "Window settings" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Automatically capture the &mouse in full-screen windows" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "Allow the window manager to &decorate the windows" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "Allow the &window manager to control the windows" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "&Emulate a virtual desktop" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "Desktop &size:" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "Screen resolution" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "This is a sample text using 10 point Tahoma" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "DLL overrides" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12963,55 +12963,55 @@ "(provided by Wine) or native (taken from Windows or provided by the " "application)." -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "&New override for library:" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "&Add" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "Existing &overrides:" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "&Edit..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "Edit Override" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "Load order" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "&Builtin (Wine)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "&Native (Windows)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "Bui<in then Native" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "Nati&ve then Builtin" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "Select Drive Letter" -#: winecfg.rc:226 +#: winecfg.rc:230 msgid "Drive configuration" msgstr "Drive configuration" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13019,95 +13019,107 @@ "Failed to connect to the mount manager, the drive configuration cannot be " "edited." -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "&Add..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "Auto&detect" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "&Path:" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "Show &Advanced" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "De&vice:" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "Bro&wse..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "&Label:" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "S&erial:" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "Show &dot files" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "Driver diagnostics" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "Defaults" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "Output device:" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "Voice output device:" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "Input device:" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "Voice input device:" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "&Test Sound" -#: winecfg.rc:277 +#: winecfg.rc:275 +msgid "Speaker configuration" +msgstr "Speaker configuration" + +#: winecfg.rc:276 +msgid "Device:" +msgstr "Device:" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "Speakers:" + +#: winecfg.rc:286 msgid "Appearance" msgstr "Appearance" -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "&Theme:" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "&Install theme..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "It&em:" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "C&olour:" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "Folders" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "&Link to:" @@ -13187,6 +13199,22 @@ msgid "(System default)" msgstr "(System default)" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "5.1 Surround" + +#: winecfg.rc:90 +msgid "Quadraphonic" +msgstr "Quadraphonic" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "Stereo" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "Mono" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -13300,127 +13328,127 @@ "\n" "Remember to click 'Add' in the Drives tab to create one!\n" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "Controls Background" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "Controls Text" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "Menu Background" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "Menu Text" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "Scrollbar" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "Selection Background" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "Selection Text" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "Tooltip Background" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "Tooltip Text" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "Window Background" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "Window Text" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "Active Title Bar" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "Active Title Text" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "Inactive Title Bar" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "Inactive Title Text" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "Message Box Text" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "Application Workspace" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "Window Frame" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "Active Border" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "Inactive Border" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "Controls Shadow" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "Grey Text" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "Controls Highlight" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "Controls Dark Shadow" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "Controls Light" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "Controls Alternate Background" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "Hot Tracked Item" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "Active Title Bar Gradient" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "Inactive Title Bar Gradient" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "Menu Highlight" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "Menu Bar" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/en_US.po wine-staging-1.7.36~ubuntu12.04.1/po/en_US.po --- wine-staging-1.7.35~ubuntu12.04.1/po/en_US.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/en_US.po 2015-02-08 20:31:28.000000000 +0000 @@ -47,8 +47,8 @@ msgid "&Modify..." msgstr "&Modify..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "&Remove" @@ -67,7 +67,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -150,7 +150,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -540,7 +540,7 @@ msgid "Font St&yle:" msgstr "Font St&yle:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "&Size:" @@ -556,7 +556,7 @@ msgid "&Underline" msgstr "&Underline" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "&Color:" @@ -723,7 +723,7 @@ msgid "&to:" msgstr "&to:" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "Si&ze:" @@ -2200,7 +2200,7 @@ msgid "&File name:" msgstr "&File name:" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "B&rowse..." @@ -3438,7 +3438,7 @@ msgid "Joysticks" msgstr "Joysticks" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "&Disable" @@ -6714,7 +6714,7 @@ msgid "Hyperlink Information" msgstr "Hyperlink Information" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "&Type:" @@ -7501,7 +7501,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8028,7 +8028,7 @@ msgid "&Open:" msgstr "&Open:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "&Browse..." @@ -8073,7 +8073,7 @@ msgid "Date deleted" msgstr "Date deleted" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Desktop" @@ -9499,7 +9499,7 @@ msgid "Digi&tal" msgstr "Digi&tal" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Font..." @@ -12867,7 +12867,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "The Wine configuration in %s is being updated, please wait..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12879,23 +12879,23 @@ "Free Software Foundation; either version 2.1 of the License, or (at your " "option) any later version." -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "Windows registration information" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "&Owner:" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "Organi&zation:" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "Application settings" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " @@ -12905,55 +12905,55 @@ "linked to the Libraries and Graphics tabs to allow you to change system-wide " "or per-application settings in those tabs as well." -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "&Add application..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "&Remove application" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "&Windows Version:" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "Window settings" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Automatically capture the &mouse in full-screen windows" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "Allow the window manager to &decorate the windows" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "Allow the &window manager to control the windows" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "&Emulate a virtual desktop" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "Desktop &size:" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "Screen resolution" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "This is a sample text using 10 point Tahoma" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "DLL overrides" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12963,55 +12963,55 @@ "(provided by Wine) or native (taken from Windows or provided by the " "application)." -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "&New override for library:" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "&Add" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "Existing &overrides:" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "&Edit..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "Edit Override" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "Load order" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "&Builtin (Wine)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "&Native (Windows)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "Bui<in then Native" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "Nati&ve then Builtin" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "Select Drive Letter" -#: winecfg.rc:226 +#: winecfg.rc:230 msgid "Drive configuration" msgstr "Drive configuration" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13019,95 +13019,107 @@ "Failed to connect to the mount manager, the drive configuration cannot be " "edited." -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "&Add..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "Auto&detect" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "&Path:" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "Show &Advanced" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "De&vice:" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "Bro&wse..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "&Label:" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "S&erial:" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "Show &dot files" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "Driver diagnostics" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "Defaults" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "Output device:" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "Voice output device:" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "Input device:" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "Voice input device:" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "&Test Sound" -#: winecfg.rc:277 +#: winecfg.rc:275 +msgid "Speaker configuration" +msgstr "Speaker configuration" + +#: winecfg.rc:276 +msgid "Device:" +msgstr "Device:" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "Speakers:" + +#: winecfg.rc:286 msgid "Appearance" msgstr "Appearance" -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "&Theme:" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "&Install theme..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "It&em:" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "C&olor:" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "Folders" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "&Link to:" @@ -13187,6 +13199,22 @@ msgid "(System default)" msgstr "(System default)" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "5.1 Surround" + +#: winecfg.rc:90 +msgid "Quadraphonic" +msgstr "Quadraphonic" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "Stereo" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "Mono" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -13300,127 +13328,127 @@ "\n" "Remember to click 'Add' in the Drives tab to create one!\n" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "Controls Background" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "Controls Text" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "Menu Background" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "Menu Text" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "Scrollbar" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "Selection Background" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "Selection Text" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "Tooltip Background" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "Tooltip Text" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "Window Background" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "Window Text" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "Active Title Bar" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "Active Title Text" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "Inactive Title Bar" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "Inactive Title Text" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "Message Box Text" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "Application Workspace" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "Window Frame" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "Active Border" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "Inactive Border" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "Controls Shadow" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "Gray Text" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "Controls Highlight" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "Controls Dark Shadow" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "Controls Light" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "Controls Alternate Background" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "Hot Tracked Item" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "Active Title Bar Gradient" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "Inactive Title Bar Gradient" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "Menu Highlight" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "Menu Bar" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/eo.po wine-staging-1.7.36~ubuntu12.04.1/po/eo.po --- wine-staging-1.7.35~ubuntu12.04.1/po/eo.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/eo.po 2015-02-08 20:31:28.000000000 +0000 @@ -52,8 +52,8 @@ msgid "&Modify..." msgstr "&Modifi..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "&Forigi" @@ -72,7 +72,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -148,7 +148,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -531,7 +531,7 @@ msgid "Font St&yle:" msgstr "Tipara St&ilo:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "&Dimensio:" @@ -547,7 +547,7 @@ msgid "&Underline" msgstr "S&ubstreko" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "&Koloro:" @@ -714,7 +714,7 @@ msgid "&to:" msgstr "ĝis:" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "&Dimensio:" @@ -2180,7 +2180,7 @@ msgid "&File name:" msgstr "&Dosiernomo:" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "&Foliumi..." @@ -3349,7 +3349,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "&Malaktivigi" @@ -6643,7 +6643,7 @@ msgid "Hyperlink Information" msgstr "Ligilaj informoj" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "&Tipo:" @@ -7412,7 +7412,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "" @@ -7937,7 +7937,7 @@ msgid "&Open:" msgstr "&Malfermi:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "&Foliumi..." @@ -7982,7 +7982,7 @@ msgid "Date deleted" msgstr "Dato forigita" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Labortablo" @@ -9263,7 +9263,7 @@ msgid "Digi&tal" msgstr "&Cifereca" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Tiparo..." @@ -12361,7 +12361,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "La Wine-agordo en %s aktualiĝas, bonvolu atendi..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12369,23 +12369,23 @@ "option) any later version." msgstr "" -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "Informoj pri vindoza registriĝo" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "&Estro:" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "Organi&zaĵo:" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "Programa agordo" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " @@ -12395,206 +12395,222 @@ "langeto estas kunligata al la langetoj Bibliotekoj kaj Grafikaĵoj por " "permesi, ke vi ŝanĝu agordaĵojn tutsisteme aŭ ĉiuprograme." -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "&Aldoni programon..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "&Forigi programon" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "&Vindoza eldono:" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "Fenestra agordo" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Aŭtomate kapti la &muson en tutekranaj fenestroj" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "Permesi la fenestroadministrol &ornami la fenestrojn" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "Permesi la &fenestroadministrilon regi la fenestrojn" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "&Simuli virtualan labortablon" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "Labortabla &grando:" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "Ekrana distingivo" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "Jen ekzempla teksto kun 10-punkta Tahoma" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "DLL superregoj" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " "application)." msgstr "" -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "&Aldoni" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "&Redakti..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "&Ena (Wino)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "&Indiĝena (Vindozo)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "&Post ena indiĝena" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "&Antaŭ ena indiĝena" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "Elekti aparatajn literojn" -#: winecfg.rc:226 +#: winecfg.rc:230 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Wine-agordo" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "&Aldoni..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "&Vojo:" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "Montri &Altnivele" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "&Aparato:" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "&Foliumi..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "&Etikedo:" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "&Seria:" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "Montri &punktajn dosierojn" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "Defaŭltojn" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "&Eliga dosiernomo:" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "Ena aparato:" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "&Provo sona" -#: winecfg.rc:277 +#: winecfg.rc:275 +#, fuzzy +#| msgid "Wine configuration" +msgid "Speaker configuration" +msgstr "Wine-agordo" + +#: winecfg.rc:276 +#, fuzzy +#| msgid "De&vice:" +msgid "Device:" +msgstr "&Aparato:" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 msgid "Appearance" msgstr "Aspekto" -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "&Etoso:" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "&Instali etoson..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "&Koloro:" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "Dosierujoj" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "" @@ -12674,6 +12690,24 @@ msgid "(System default)" msgstr "(Sistema defaŭlta)" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +#, fuzzy +#| msgid "Graphics" +msgid "Quadraphonic" +msgstr "Grafikaĵoj" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -12777,127 +12811,127 @@ "Remember to click 'Add' in the Drives tab to create one!\n" msgstr "" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "Fenestraĵa fono" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "Fenestraĵa teksto" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "Rulumilo" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "Elektita teksto" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "Fenestra teksto" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "Aktiva titolzono" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "Programa laborspaco" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "Fenestra kadro" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "Regas ombrojn" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "Menuzono" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/es.po wine-staging-1.7.36~ubuntu12.04.1/po/es.po --- wine-staging-1.7.35~ubuntu12.04.1/po/es.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/es.po 2015-02-08 20:31:28.000000000 +0000 @@ -47,8 +47,8 @@ msgid "&Modify..." msgstr "&Modificar..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "E&liminar" @@ -67,7 +67,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -151,7 +151,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -552,7 +552,7 @@ msgid "Font St&yle:" msgstr "Est&ilo:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "Ta&maño:" @@ -568,7 +568,7 @@ msgid "&Underline" msgstr "&Subrayado" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "C&olor:" @@ -735,7 +735,7 @@ msgid "&to:" msgstr "&hasta:" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "Ta&maño:" @@ -2218,7 +2218,7 @@ msgid "&File name:" msgstr "Nombre de &fichero:" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "Explo&rar..." @@ -3468,7 +3468,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "&Deshabilitar" @@ -6771,7 +6771,7 @@ msgid "Hyperlink Information" msgstr "Información sobre el enlace" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "&Tipo:" @@ -7631,7 +7631,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "ppp" @@ -8159,7 +8159,7 @@ msgid "&Open:" msgstr "&Abrir:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "&Examinar..." @@ -8204,7 +8204,7 @@ msgid "Date deleted" msgstr "Fecha de borrado" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Escritorio" @@ -9672,7 +9672,7 @@ msgid "Digi&tal" msgstr "&Digital" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Fuente..." @@ -13103,7 +13103,7 @@ msgstr "" "La configuración de Wine en %s está siendo actualizada, por favor espere..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -13115,23 +13115,23 @@ "Software Foundation; bajo la versión 2.1 de la licencia, o (a tu discreción) " "cualquier versión posterior." -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "Información de registro de Windows" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "&Propietario:" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "&Organización:" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "Configuración de las aplicaciones" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " @@ -13141,55 +13141,55 @@ "pestaña está enlazada a las pestañas de Librerías y Gráficos para permitirte " "cambiar la configuración global o la configuración por aplicación." -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "&Añadir aplicación..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "&Eliminar aplicación" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "&Versión a imitar:" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "Configuración de las ventanas" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Capturar el &ratón automáticamente en pantalla completa" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "Permitir que el gestor de ventanas &decore las ventanas" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "Permitir que el gestor de ventanas &controle las ventanas" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "&Emular un escritorio virtual" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "Di&mensiones:" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "Resolución" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "Esto es un texto de ejemplo usando Tahoma de 10 puntos" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "Sustitución de DLLs" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -13199,57 +13199,57 @@ "interna (proporcionada por Wine) o bien nativa (obtenida de Windows o " "proporcionada por la aplicación)." -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "&Nueva sustitución de librería:" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "&Añadir" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "&Sustituciones existentes:" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "&Editar..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "Modificar sustitución" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "Orden de carga" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "&Interna (Wine)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "&Nativa (Windows)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "I&nterna y luego nativa" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "Nati&va y luego interna" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "Seleccionar letra de la unidad" -#: winecfg.rc:226 +#: winecfg.rc:230 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Configuración de Wine" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13257,95 +13257,111 @@ "Falló en la conexión al gestor de montaje, la configuración de unidades no " "se ha podido editar." -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "&Añadir..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "Auto&detectar" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "&Ruta:" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "Mostrar &avanzado" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "Dispositi&vo:" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "E&xaminar..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "Eti&queta:" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "&Nº serie:" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "Mostrar archivos &punto" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "Diagnósticos del controlador" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "Configuraciones por defecto" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "Dispositivo de salida:" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "Dispositivo de salida de voz:" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "Dispositivo de entrada:" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "Dispositivo de entrada de voz:" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "Probar &sonido" -#: winecfg.rc:277 +#: winecfg.rc:275 +#, fuzzy +#| msgid "Wine configuration" +msgid "Speaker configuration" +msgstr "Configuración de Wine" + +#: winecfg.rc:276 +#, fuzzy +#| msgid "De&vice:" +msgid "Device:" +msgstr "Dispositi&vo:" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 msgid "Appearance" msgstr "Apariencia" -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "&Tema:" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "&Instalar tema..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "&Elemento:" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "C&olor:" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "Carpeta" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "E&nlace a:" @@ -13425,6 +13441,24 @@ msgid "(System default)" msgstr "(Predeterminado del sistema)" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +#, fuzzy +#| msgid "graphic" +msgid "Quadraphonic" +msgstr "gráfico" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -13541,127 +13575,127 @@ "\n" "¡Recuerde pulsar 'Añadir' en la pestaña Unidades para crear una!\n" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "Fondo del control" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "Texto del control" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "Fondo del menú" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "Texto del menú" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "Barra de desplazamiento" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "Fondo de la selección" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "Texto de la selección" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "Fondo del consejo" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "Texto del consejo" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "Fondo de la ventana" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "Texto de la ventana" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "Barra de título activa" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "Texto de barra de título activa" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "Barra de título inactiva" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "Texto de barra de título inactiva" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "Texto de cuadro de diálogo" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "Entorno de trabajo de la aplicación" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "Recuadro de la ventana" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "Borde activo" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "Borde inactivo" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "Sombra del control" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "Texto en gris" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "Resaltado del control" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "Sombra oscura del control" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "Parte iluminada del control" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "Fondo alternativo del control" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "Elemento resaltado" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "Gradiente barra título activa" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "Gradiente barra título inactiva" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "Resaltado del menú" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "Barra de menú" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/fa.po wine-staging-1.7.36~ubuntu12.04.1/po/fa.po --- wine-staging-1.7.35~ubuntu12.04.1/po/fa.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/fa.po 2015-02-08 20:31:28.000000000 +0000 @@ -43,8 +43,8 @@ msgid "&Modify..." msgstr "" -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "" @@ -64,7 +64,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -143,7 +143,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -541,7 +541,7 @@ msgid "Font St&yle:" msgstr "" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "" @@ -557,7 +557,7 @@ msgid "&Underline" msgstr "" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "" @@ -730,7 +730,7 @@ msgid "&to:" msgstr "" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "" @@ -2213,7 +2213,7 @@ msgid "&File name:" msgstr "&پرونده" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "" @@ -3413,7 +3413,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "" @@ -6729,7 +6729,7 @@ msgid "Hyperlink Information" msgstr "اطلاعات" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "" @@ -7481,7 +7481,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "" @@ -8023,7 +8023,7 @@ msgid "&Open:" msgstr "&باز‌کردن...\tCtrl+O" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "" @@ -8070,7 +8070,7 @@ msgid "Date deleted" msgstr "&حذف\tDel" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "" @@ -9368,7 +9368,7 @@ msgid "Digi&tal" msgstr "" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&قلم‌ها..." @@ -12485,7 +12485,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "" -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12493,238 +12493,251 @@ "option) any later version." msgstr "" -#: winecfg.rc:137 +#: winecfg.rc:141 #, fuzzy msgid "Windows registration information" msgstr "اطلاعات" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "" -#: winecfg.rc:140 +#: winecfg.rc:144 #, fuzzy msgid "Organi&zation:" msgstr "اطلاعات" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " "or per-application settings in those tabs as well." msgstr "" -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "" -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:185 +#: winecfg.rc:189 #, fuzzy msgid "DLL overrides" msgstr "&ویرایش" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " "application)." msgstr "" -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "" -#: winecfg.rc:193 +#: winecfg.rc:197 #, fuzzy msgid "&Edit..." msgstr "&ویرایش" -#: winecfg.rc:199 +#: winecfg.rc:203 #, fuzzy msgid "Edit Override" msgstr "&ویرایش" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "" -#: winecfg.rc:203 +#: winecfg.rc:207 #, fuzzy msgid "&Builtin (Wine)" msgstr "&درباره نت‌پد" -#: winecfg.rc:204 +#: winecfg.rc:208 #, fuzzy msgid "&Native (Windows)" msgstr "ذخیره &به نام..." -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "" -#: winecfg.rc:214 +#: winecfg.rc:218 #, fuzzy msgid "Select Drive Letter" msgstr "انتخاب &همه\tCtrl+A" -#: winecfg.rc:226 +#: winecfg.rc:230 #, fuzzy msgid "Drive configuration" msgstr "اطلاعات" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "" -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "" -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:261 +#: winecfg.rc:265 #, fuzzy msgid "Defaults" msgstr "صفحه &p" -#: winecfg.rc:262 +#: winecfg.rc:266 #, fuzzy msgid "Output device:" msgstr "&پرونده" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "" -#: winecfg.rc:277 -msgid "Appearance" +#: winecfg.rc:275 +#, fuzzy +msgid "Speaker configuration" +msgstr "اطلاعات" + +#: winecfg.rc:276 +msgid "Device:" msgstr "" #: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 +msgid "Appearance" +msgstr "" + +#: winecfg.rc:287 msgid "&Theme:" msgstr "" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "" -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "" @@ -12807,6 +12820,22 @@ msgid "(System default)" msgstr "" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +msgid "Quadraphonic" +msgstr "" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -12908,134 +12937,134 @@ "Remember to click 'Add' in the Drives tab to create one!\n" msgstr "" -#: winecfg.rc:93 +#: winecfg.rc:97 #, fuzzy msgid "Controls Background" msgstr "ذخیره &به نام..." -#: winecfg.rc:94 +#: winecfg.rc:98 #, fuzzy msgid "Controls Text" msgstr "&محتویات" -#: winecfg.rc:96 +#: winecfg.rc:100 #, fuzzy msgid "Menu Background" msgstr "ذخیره &به نام..." -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "" -#: winecfg.rc:99 +#: winecfg.rc:103 #, fuzzy msgid "Selection Background" msgstr "ذخیره &به نام..." -#: winecfg.rc:100 +#: winecfg.rc:104 #, fuzzy msgid "Selection Text" msgstr "انتخاب &همه\tCtrl+A" -#: winecfg.rc:101 +#: winecfg.rc:105 #, fuzzy msgid "Tooltip Background" msgstr "ذخیره &به نام..." -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:103 +#: winecfg.rc:107 #, fuzzy msgid "Window Background" msgstr "ذخیره &به نام..." -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/fi.po wine-staging-1.7.36~ubuntu12.04.1/po/fi.po --- wine-staging-1.7.35~ubuntu12.04.1/po/fi.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/fi.po 2015-02-08 20:31:28.000000000 +0000 @@ -46,8 +46,8 @@ msgid "&Modify..." msgstr "&Muokkaa..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "&Poista" @@ -66,7 +66,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -148,7 +148,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -536,7 +536,7 @@ msgid "Font St&yle:" msgstr "Fontin t&yyli:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "&Koko:" @@ -552,7 +552,7 @@ msgid "&Underline" msgstr "A&lleviivaus" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "&Väri:" @@ -719,7 +719,7 @@ msgid "&to:" msgstr "Mi&hin:" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "&Koko:" @@ -2195,7 +2195,7 @@ msgid "&File name:" msgstr "&Tiedostonimi:" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "&Selaa..." @@ -3433,7 +3433,7 @@ msgid "Joysticks" msgstr "Joystickit" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "&Poista käytöstä" @@ -6710,7 +6710,7 @@ msgid "Hyperlink Information" msgstr "Tietoja hyperlinkistä" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "&Tyyppi:" @@ -7495,7 +7495,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8020,7 +8020,7 @@ msgid "&Open:" msgstr "&Avaa:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "&Selaa..." @@ -8065,7 +8065,7 @@ msgid "Date deleted" msgstr "Poistoaika" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Työpöytä" @@ -9478,7 +9478,7 @@ msgid "Digi&tal" msgstr "Di&gitaalinen" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Fontti..." @@ -12846,7 +12846,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "Winen asetuksia kohteessa %s päivitetään, ole hyvä ja odota..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12857,23 +12857,23 @@ "Foundationin GNU Lesser General Public License (LGPL) määrää joko lisenssin " "versiossa 2.1 tai (halutessasi) missä tahansa uudemmassa versiossa." -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "Windowsin rekisteröintitiedot" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "&Omistaja:" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "Or&ganisaatio:" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "Sovellusten asetukset" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " @@ -12883,55 +12883,55 @@ "välilehti toimii yhdessä Kirjastot- ja Grafiikka-välilehtien kanssa sallien " "järjestelmän laajuiset ja sovelluskohtaiset asetukset." -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "&Lisää sovellus..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "&Poista sovellus" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "&Windowsin versio:" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "Ikkuna-asetukset" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Kaappaa hiiri kokoruututilassa automaattisesti" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "Salli ikkunointiohjelman määrätä ikkunoiden &tyyli" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "Salli ikkunointiohjelman &hallita ikkunoita" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "&Emuloi virtuaalista työpöytää" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "Työpöydän &koko:" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "Näytön resoluutio" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "Tämä on näyteteksti 10 pisteen Tahoma-fontilla" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "DLL-tiedostojen ohitukset" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12941,149 +12941,161 @@ "sisäänrakennettua (Winen tarjoamaa) tai natiivia (Windows-asennuksesta " "otettua tai sovelluksen tarjoamaa) versiota." -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "&Uusi ohitus kirjastolle:" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "&Lisää" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "&Olemassaolevat ohitukset:" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "&Muokkaa..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "Muokkaa ohitusta" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "&Latausjärjestys" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "&Sisäinen (Wine)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "&Natiivi (Windows)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "S&isäinen, sitten natiivi" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "Natiivi, sitten sisäinen" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "Valitse aseman kirjain" -#: winecfg.rc:226 +#: winecfg.rc:230 msgid "Drive configuration" msgstr "Asemien asetukset" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "Levyasemien hallintaan ei saatu yhteyttä. Asemia ei voi muokata." -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "&Lisää..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "&Hae automaattisesti" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "&Polku:" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "Nä&ytä lisäasetukset" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "Lai&te:" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "S&elaa..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "&Nimi:" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "&Sarjanumero:" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "Näytä p&istetiedostot" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "Ajurin diagnostiikka" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "Oletukset" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "Ulostulolaite:" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "Äänen ulostulolaite:" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "Sisääntulolaite:" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "Äänen sisääntulolaite:" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "&Testiääni" -#: winecfg.rc:277 +#: winecfg.rc:275 +msgid "Speaker configuration" +msgstr "Kaiutinasetukset" + +#: winecfg.rc:276 +msgid "Device:" +msgstr "Laite:" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "Kaiuttimet:" + +#: winecfg.rc:286 msgid "Appearance" msgstr "Ulkonäkö" -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "&Teema:" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "&Asenna teema..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "Ko&hta:" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "&Väri:" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "Kansiot" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "&Linkitä kohteeseen:" @@ -13163,6 +13175,22 @@ msgid "(System default)" msgstr "(Järjestelmän oletus)" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "5.1 Surround" + +#: winecfg.rc:90 +msgid "Quadraphonic" +msgstr "Neliääninen" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "Stereo" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "Mono" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -13276,127 +13304,127 @@ "\n" "Muista painaa Asemat-välilehdellä 'Lisää' ja luoda se!\n" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "Kontrollien tausta" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "Kontrollien teksti" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "Valikon tausta" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "Valikon teksti" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "Vierityspalkki" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "Valintojen tausta" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "Valintojen teksti" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "Työkaluvihjeen tausta" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "Työkaluvihjeen teksti" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "Ikkunan tausta" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "Ikkunan teksti" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "Aktiivinen otsikkopalkki" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "Aktiivinen otsikkoteksti" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "Epäaktiivinen otsikkopalkki" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "Epäaktiivinen otsikkoteksti" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "Viestilaatikon teksti" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "Ohjelmien työtila" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "Ikkunanreuna" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "Aktiivinen reunus" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "Epäaktiivinen reunus" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "Kontrollien varjo" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "Harmaa teksti" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "Kontrollien korostus" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "Kontrollien syvä varjo" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "Kontrollien valo" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "Kontrollien vaihtoehtotausta" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "Aktiivinen elementti" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "Aktiivisen otsikkopalkin liukuväri" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "Epäaktiivisen otsikkopalkin liukuväri" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "Valikon korostus" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "Valikkopalkki" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/fr.po wine-staging-1.7.36~ubuntu12.04.1/po/fr.po --- wine-staging-1.7.35~ubuntu12.04.1/po/fr.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/fr.po 2015-02-08 20:31:28.000000000 +0000 @@ -47,8 +47,8 @@ msgid "&Modify..." msgstr "&Modifier..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "&Supprimer" @@ -67,7 +67,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -152,7 +152,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -544,7 +544,7 @@ msgid "Font St&yle:" msgstr "St&yle :" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "T&aille :" @@ -560,7 +560,7 @@ msgid "&Underline" msgstr "&Souligné" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "&Couleur :" @@ -727,7 +727,7 @@ msgid "&to:" msgstr "&à :" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "Tai&lle :" @@ -2209,7 +2209,7 @@ msgid "&File name:" msgstr "&Nom du fichier :" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "Parcou&rir..." @@ -3462,7 +3462,7 @@ msgid "Joysticks" msgstr "Joysticks" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "&Désactiver" @@ -6747,7 +6747,7 @@ msgid "Hyperlink Information" msgstr "Informations sur l'hyperlien" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "&Type :" @@ -7548,7 +7548,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "ppp" @@ -8076,7 +8076,7 @@ msgid "&Open:" msgstr "&Ouvrir :" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "&Parcourir..." @@ -8121,7 +8121,7 @@ msgid "Date deleted" msgstr "Date de suppression" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Bureau" @@ -9588,7 +9588,7 @@ msgid "Digi&tal" msgstr "&Numérique" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Police..." @@ -13031,7 +13031,7 @@ "La configuration de Wine est en cours de mise à jour dans %s ; veuillez " "patienter..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -13043,23 +13043,23 @@ "que publiée par la Free Software Foundation ; soit la version 2.1 de la " "Licence, soit (à votre gré) toute version ultérieure." -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "Informations d'enregistrement de Windows" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "&Propriétaire :" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "&Organisation :" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "Paramètres des applications" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " @@ -13070,55 +13070,55 @@ "permettre de changer des paramètres globaux ou par application dans ces " "onglets." -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "&Ajouter une application..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "&Supprimer une application" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "Version de &Windows :" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "Paramètres des fenêtres" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Capturer automatiquement la &souris dans les fenêtres plein écran" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "Permettre au gestionnaire de fenêtres de &décorer les fenêtres" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "Permettre au gestionnaire de fenêtres de &contrôler les fenêtres" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "É&muler un bureau virtuel" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "&Taille du bureau :" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "Résolution de l'écran" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "Ceci est un exemple utilisant du Tahoma 10 points" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "Remplacement de DLL" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -13129,55 +13129,55 @@ "intégrée (distribuée avec Wine) de chaque bibliothèque partagée (DLL) " "utilisée par un programme." -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "&Nouveau remplacement pour :" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "A&jouter" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "Remplacements existants :" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "&Modifier..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "Éditer le remplacement" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "Ordre de chargement" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "&intégrée (Wine)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "&native (Windows)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "i&ntégrée puis native" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "n&ative puis intégrée" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "Sélectionnez la lettre du lecteur" -#: winecfg.rc:226 +#: winecfg.rc:230 msgid "Drive configuration" msgstr "Configuration des lecteurs" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13185,95 +13185,111 @@ "N'a pu se connecter au gestionnaire de montage : la configuration du lecteur " "n'a pu être éditée." -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "&Ajouter..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "&Détection automatique" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "&Chemin :" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "Afficher les dé&tails" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "&Périphérique :" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "&Parcourir..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "É&tiquette :" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "N° de &série :" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "Montrer les fichiers cachés" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "Diagnostic de pilotes" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "Valeurs par défaut" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "Périphérique de sortie :" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "Périphérique de sortie voix :" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "Périphérique d'entrée :" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "Périphérique d'entrée voix :" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "&Tester le son" -#: winecfg.rc:277 +#: winecfg.rc:275 +#, fuzzy +#| msgid "Wine configuration" +msgid "Speaker configuration" +msgstr "Configuration de Wine" + +#: winecfg.rc:276 +#, fuzzy +#| msgid "De&vice:" +msgid "Device:" +msgstr "&Périphérique :" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 msgid "Appearance" msgstr "Apparence" -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "&Thème :" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "&Installer un thème..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "Élé&ment :" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "Couleu&r :" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "Dossiers" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "&Lier à :" @@ -13353,6 +13369,24 @@ msgid "(System default)" msgstr "(Valeur par défaut du système)" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +#, fuzzy +#| msgid "graphic" +msgid "Quadraphonic" +msgstr "image" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -13469,127 +13503,127 @@ "N'oubliez pas d'en recréer un en cliquant sur le bouton « Ajouter » dans " "l'onglet « Lecteurs » !\n" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "Contrôle l'arrière-plan" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "Contrôle le texte" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "Arrière-plan du menu" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "Texte du menu" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "Barre de défilement" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "Arrière-plan de la sélection" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "Texte de la sélection" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "Arrière-plan de l'infobulle" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "Texte de l'infobulle" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "Arrière-plan de la fenêtre" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "Texte de la fenêtre" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "Barre de titre active" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "Texte de la barre de titre active" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "Barre de titre inactive" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "Texte de la barre de titre inactive" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "Texte des boîtes à messages" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "Espace de travail de l'application" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "Cadre de la fenêtre" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "Bordure active" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "Bordure inactive" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "Ombre des contrôles" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "Texte gris" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "Surbrillance des contrôles" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "Ombre sombre des contrôles" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "Lumière des contrôles" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "Arrière-plan alternatif des contrôles" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "Élément actif" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "Dégradé de la barre de titre active" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "Dégradé de la barre de titre inactive" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "Surbrillance du menu" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "Barre de menu" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/he.po wine-staging-1.7.36~ubuntu12.04.1/po/he.po --- wine-staging-1.7.35~ubuntu12.04.1/po/he.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/he.po 2015-02-08 20:31:28.000000000 +0000 @@ -54,8 +54,8 @@ msgid "&Modify..." msgstr "&שינוי..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "ה&סרה" @@ -74,7 +74,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -156,7 +156,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -545,7 +545,7 @@ msgid "Font St&yle:" msgstr "&סגנון הגופן:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "&גודל:" @@ -561,7 +561,7 @@ msgid "&Underline" msgstr "קו &תחתי" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "&צבע:" @@ -730,7 +730,7 @@ msgid "&to:" msgstr "&עד:" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "&גודל:" @@ -2222,7 +2222,7 @@ msgid "&File name:" msgstr "&שם הקובץ:" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 #, fuzzy msgid "B&rowse..." msgstr "&עיון" @@ -3436,7 +3436,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 #, fuzzy msgid "&Disable" msgstr "Table" @@ -6987,7 +6987,7 @@ msgid "Hyperlink Information" msgstr "פרטי הקישור" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "&סוג:" @@ -7778,7 +7778,7 @@ msgid "b" msgstr "בתים" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "נק׳ לאינטש" @@ -8307,7 +8307,7 @@ msgid "&Open:" msgstr "&פתיחה:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "&עיון..." @@ -8352,7 +8352,7 @@ msgid "Date deleted" msgstr "תאריך המחיקה" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "שולחן העבודה" @@ -9690,7 +9690,7 @@ msgid "Digi&tal" msgstr "&דיגיטלי" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&גופן..." @@ -13071,7 +13071,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "התצורה של wine שב־%s מתעדכנת, נא להמתין..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -13079,257 +13079,270 @@ "option) any later version." msgstr "" -#: winecfg.rc:137 +#: winecfg.rc:141 #, fuzzy msgid "Windows registration information" msgstr "&פרטי הגרסה" -#: winecfg.rc:138 +#: winecfg.rc:142 #, fuzzy msgid "&Owner:" msgstr "בעלים" -#: winecfg.rc:140 +#: winecfg.rc:144 #, fuzzy msgid "Organi&zation:" msgstr "הנפשה" -#: winecfg.rc:148 +#: winecfg.rc:152 #, fuzzy msgid "Application settings" msgstr "יישומים" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " "or per-application settings in those tabs as well." msgstr "" -#: winecfg.rc:153 +#: winecfg.rc:157 #, fuzzy msgid "&Add application..." msgstr "יישום" -#: winecfg.rc:154 +#: winecfg.rc:158 #, fuzzy msgid "&Remove application" msgstr "יישום" -#: winecfg.rc:155 +#: winecfg.rc:159 #, fuzzy msgid "&Windows Version:" msgstr "גודל החלון" -#: winecfg.rc:163 +#: winecfg.rc:167 #, fuzzy msgid "Window settings" msgstr "טקסט בחלון" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "" -#: winecfg.rc:169 +#: winecfg.rc:173 #, fuzzy msgid "Desktop &size:" msgstr "שולחן העבודה" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:185 +#: winecfg.rc:189 #, fuzzy msgid "DLL overrides" msgstr "תצוגת ע&ריכה" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " "application)." msgstr "" -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "הו&ספה" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "" -#: winecfg.rc:193 +#: winecfg.rc:197 #, fuzzy msgid "&Edit..." msgstr "&עריכה" -#: winecfg.rc:199 +#: winecfg.rc:203 #, fuzzy msgid "Edit Override" msgstr "תצוגת ע&ריכה" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "" -#: winecfg.rc:203 +#: winecfg.rc:207 #, fuzzy msgid "&Builtin (Wine)" msgstr "על &אודות Wine" -#: winecfg.rc:204 +#: winecfg.rc:208 #, fuzzy msgid "&Native (Windows)" msgstr "י&ציאה מ־Windows" -#: winecfg.rc:205 +#: winecfg.rc:209 #, fuzzy msgid "Bui<in then Native" msgstr "מובנה, טבעי" -#: winecfg.rc:206 +#: winecfg.rc:210 #, fuzzy msgid "Nati&ve then Builtin" msgstr "טבעי, מובנה" -#: winecfg.rc:214 +#: winecfg.rc:218 #, fuzzy msgid "Select Drive Letter" msgstr "טקסט הבחירה" -#: winecfg.rc:226 +#: winecfg.rc:230 #, fuzzy msgid "Drive configuration" msgstr "תצורת Wine" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:230 +#: winecfg.rc:234 #, fuzzy msgid "&Add..." msgstr "הו&ספה" -#: winecfg.rc:232 +#: winecfg.rc:236 #, fuzzy msgid "Auto&detect" msgstr "זיהוי אוטומטי" -#: winecfg.rc:235 +#: winecfg.rc:239 #, fuzzy msgid "&Path:" msgstr "ה&נתיב המלא:" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 #, fuzzy msgid "Show &Advanced" msgstr "הצגת אפשרויות מ&תקדמות" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "" -#: winecfg.rc:245 +#: winecfg.rc:249 #, fuzzy msgid "Bro&wse..." msgstr "&עיון" -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "" -#: winecfg.rc:252 +#: winecfg.rc:256 #, fuzzy msgid "Show &dot files" msgstr "אין עוד קבצים\n" -#: winecfg.rc:259 +#: winecfg.rc:263 #, fuzzy msgid "Driver diagnostics" msgstr "כלי ניתוח ה־DirectX" -#: winecfg.rc:261 +#: winecfg.rc:265 #, fuzzy msgid "Defaults" msgstr "הגדרת &בררות מחדל" -#: winecfg.rc:262 +#: winecfg.rc:266 #, fuzzy msgid "Output device:" msgstr "שם קובץ ה&פלט:" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "" -#: winecfg.rc:277 -msgid "Appearance" +#: winecfg.rc:275 +#, fuzzy +msgid "Speaker configuration" +msgstr "תצורת Wine" + +#: winecfg.rc:276 +msgid "Device:" msgstr "" #: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 +msgid "Appearance" +msgstr "" + +#: winecfg.rc:287 msgid "&Theme:" msgstr "" -#: winecfg.rc:280 +#: winecfg.rc:289 #, fuzzy msgid "&Install theme..." msgstr "התקנה..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "" -#: winecfg.rc:287 +#: winecfg.rc:296 #, fuzzy msgid "C&olor:" msgstr "&צבע" -#: winecfg.rc:293 +#: winecfg.rc:302 #, fuzzy msgid "Folders" msgstr "תיקייה" -#: winecfg.rc:296 +#: winecfg.rc:305 #, fuzzy msgid "&Link to:" msgstr "קישורים אל" @@ -13427,6 +13440,23 @@ msgid "(System default)" msgstr "נתיב המערכת" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +#, fuzzy +msgid "Quadraphonic" +msgstr "גרפיקה" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 #, fuzzy msgid "" @@ -13563,157 +13593,157 @@ "\n" "מומלץ שלא לשכוח ללחוץ על 'הוספה' בלשונית הכוננים כדי ליצור אחד כזה!\n" -#: winecfg.rc:93 +#: winecfg.rc:97 #, fuzzy msgid "Controls Background" msgstr "רקע הפקדים" -#: winecfg.rc:94 +#: winecfg.rc:98 #, fuzzy msgid "Controls Text" msgstr "טקסט הפקדים" -#: winecfg.rc:96 +#: winecfg.rc:100 #, fuzzy msgid "Menu Background" msgstr "רקע התפריט" -#: winecfg.rc:97 +#: winecfg.rc:101 #, fuzzy msgid "Menu Text" msgstr "טקסט בתפריט" -#: winecfg.rc:98 +#: winecfg.rc:102 #, fuzzy msgid "Scrollbar" msgstr "סרגל גלילה" -#: winecfg.rc:99 +#: winecfg.rc:103 #, fuzzy msgid "Selection Background" msgstr "רקע הבחירה" -#: winecfg.rc:100 +#: winecfg.rc:104 #, fuzzy msgid "Selection Text" msgstr "טקסט הבחירה" -#: winecfg.rc:101 +#: winecfg.rc:105 #, fuzzy msgid "Tooltip Background" msgstr "רקע חלונית העצה" -#: winecfg.rc:102 +#: winecfg.rc:106 #, fuzzy msgid "Tooltip Text" msgstr "טקסט חלונית עצה" -#: winecfg.rc:103 +#: winecfg.rc:107 #, fuzzy msgid "Window Background" msgstr "רקע החלון" -#: winecfg.rc:104 +#: winecfg.rc:108 #, fuzzy msgid "Window Text" msgstr "טקסט בחלון" -#: winecfg.rc:105 +#: winecfg.rc:109 #, fuzzy msgid "Active Title Bar" msgstr "כותרת החלון הפעיל" -#: winecfg.rc:106 +#: winecfg.rc:110 #, fuzzy msgid "Active Title Text" msgstr "טקסט בכותרת של פעיל" -#: winecfg.rc:107 +#: winecfg.rc:111 #, fuzzy msgid "Inactive Title Bar" msgstr "סרגל כותרת של בלתי פעיל" -#: winecfg.rc:108 +#: winecfg.rc:112 #, fuzzy msgid "Inactive Title Text" msgstr "טקסט כותרת של בלתי פעיל" -#: winecfg.rc:109 +#: winecfg.rc:113 #, fuzzy msgid "Message Box Text" msgstr "טקסט בתיבת הודעות" -#: winecfg.rc:110 +#: winecfg.rc:114 #, fuzzy msgid "Application Workspace" msgstr "מרחב היישומים" -#: winecfg.rc:111 +#: winecfg.rc:115 #, fuzzy msgid "Window Frame" msgstr "מסגרת החלון" -#: winecfg.rc:112 +#: winecfg.rc:116 #, fuzzy msgid "Active Border" msgstr "מסגרת של פעיל" -#: winecfg.rc:113 +#: winecfg.rc:117 #, fuzzy msgid "Inactive Border" msgstr "מסגרת של בלתי פעיל" -#: winecfg.rc:114 +#: winecfg.rc:118 #, fuzzy msgid "Controls Shadow" msgstr "הצללת הפקדים" -#: winecfg.rc:115 +#: winecfg.rc:119 #, fuzzy msgid "Gray Text" msgstr "טקסט אפור" -#: winecfg.rc:116 +#: winecfg.rc:120 #, fuzzy msgid "Controls Highlight" msgstr "הדגשת פקדים" -#: winecfg.rc:117 +#: winecfg.rc:121 #, fuzzy msgid "Controls Dark Shadow" msgstr "הפקדים בהצללה כהה" -#: winecfg.rc:118 +#: winecfg.rc:122 #, fuzzy msgid "Controls Light" msgstr "פקדים בהירים" -#: winecfg.rc:119 +#: winecfg.rc:123 #, fuzzy msgid "Controls Alternate Background" msgstr "צבע רקע הפקדים משתנה" -#: winecfg.rc:120 +#: winecfg.rc:124 #, fuzzy msgid "Hot Tracked Item" msgstr "פריט במעקב חם" -#: winecfg.rc:121 +#: winecfg.rc:125 #, fuzzy msgid "Active Title Bar Gradient" msgstr "מדרג שורת כותרת של חלון פעיל" -#: winecfg.rc:122 +#: winecfg.rc:126 #, fuzzy msgid "Inactive Title Bar Gradient" msgstr "מדרג שורת כותרת של חלון בלתי פעיל" -#: winecfg.rc:123 +#: winecfg.rc:127 #, fuzzy msgid "Menu Highlight" msgstr "הדגשה בתפריט" -#: winecfg.rc:124 +#: winecfg.rc:128 #, fuzzy msgid "Menu Bar" msgstr "סרגל תפריטים" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/hi.po wine-staging-1.7.36~ubuntu12.04.1/po/hi.po --- wine-staging-1.7.35~ubuntu12.04.1/po/hi.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/hi.po 2015-02-08 20:31:28.000000000 +0000 @@ -43,8 +43,8 @@ msgid "&Modify..." msgstr "" -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "" @@ -63,7 +63,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -140,7 +140,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -525,7 +525,7 @@ msgid "Font St&yle:" msgstr "" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "" @@ -541,7 +541,7 @@ msgid "&Underline" msgstr "" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "" @@ -708,7 +708,7 @@ msgid "&to:" msgstr "" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "" @@ -2164,7 +2164,7 @@ msgid "&File name:" msgstr "" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "" @@ -3350,7 +3350,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "" @@ -6624,7 +6624,7 @@ msgid "Hyperlink Information" msgstr "" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "" @@ -7365,7 +7365,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "" @@ -7896,7 +7896,7 @@ msgid "&Open:" msgstr "" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "" @@ -7941,7 +7941,7 @@ msgid "Date deleted" msgstr "" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "" @@ -9210,7 +9210,7 @@ msgid "Digi&tal" msgstr "डिज़िटल (&t)" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "फ़ॉन्ट (&F)..." @@ -12279,7 +12279,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "" -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12287,229 +12287,241 @@ "option) any later version." msgstr "" -#: winecfg.rc:137 +#: winecfg.rc:141 #, fuzzy msgid "Windows registration information" msgstr "फ़ॉन्ट (&F)..." -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " "or per-application settings in those tabs as well." msgstr "" -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "" -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " "application)." msgstr "" -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "" -#: winecfg.rc:193 +#: winecfg.rc:197 #, fuzzy msgid "&Edit..." msgstr "फ़ॉन्ट (&F)..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "" -#: winecfg.rc:226 +#: winecfg.rc:230 msgid "Drive configuration" msgstr "" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "" -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "" -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "" -#: winecfg.rc:277 -msgid "Appearance" +#: winecfg.rc:275 +msgid "Speaker configuration" +msgstr "" + +#: winecfg.rc:276 +msgid "Device:" msgstr "" #: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 +msgid "Appearance" +msgstr "" + +#: winecfg.rc:287 msgid "&Theme:" msgstr "" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "" -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "" @@ -12589,6 +12601,22 @@ msgid "(System default)" msgstr "" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +msgid "Quadraphonic" +msgstr "" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -12690,128 +12718,128 @@ "Remember to click 'Add' in the Drives tab to create one!\n" msgstr "" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "" -#: winecfg.rc:105 +#: winecfg.rc:109 #, fuzzy msgid "Active Title Bar" msgstr "बिना शीर्षकपट्टी के (&W)" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/hr.po wine-staging-1.7.36~ubuntu12.04.1/po/hr.po --- wine-staging-1.7.35~ubuntu12.04.1/po/hr.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/hr.po 2015-02-08 20:31:28.000000000 +0000 @@ -47,8 +47,8 @@ msgid "&Modify..." msgstr "I&zmjeni..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "&Ukloni" @@ -67,7 +67,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -150,7 +150,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -539,7 +539,7 @@ msgid "Font St&yle:" msgstr "Sti&l Fonta:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "&Veličina:" @@ -555,7 +555,7 @@ msgid "&Underline" msgstr "Po&dcrtano" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "&Boja:" @@ -722,7 +722,7 @@ msgid "&to:" msgstr "&do:" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "Veli&čina:" @@ -2201,7 +2201,7 @@ msgid "&File name:" msgstr "Naziv &datoteke:" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "N&ađi..." @@ -3428,7 +3428,7 @@ msgid "Joysticks" msgstr "Joystici" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "&Isključi" @@ -6718,7 +6718,7 @@ msgid "Hyperlink Information" msgstr "Podaci o hipervezi" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "&Tip:" @@ -7544,7 +7544,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8072,7 +8072,7 @@ msgid "&Open:" msgstr "&Otvori:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "&Nađi..." @@ -8117,7 +8117,7 @@ msgid "Date deleted" msgstr "Datum brisanja" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Radna površina" @@ -9423,7 +9423,7 @@ msgid "Digi&tal" msgstr "&Digitalni" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Font..." @@ -12551,7 +12551,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "Wine postavke u %s se ažuriraju. Molimo, pričekajte..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12562,23 +12562,23 @@ "uvjetima GNU Lesser General Public License koja je izdana pod Free Software " "Foundation; verzija 2.1 licence ili (po svom izboru) neka kasnija verzija." -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "Informacija o Windows registraciji" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "&Vlasnik:" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "Organi&zacija:" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "Postavke aplikacije" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " @@ -12588,55 +12588,55 @@ "je povezan sa tabovima Biblioteke i Grafika kako bi dozvolio sistemske " "promjene ili za podešavanje aplikacija u tim istim tabovima." -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "&Dodaj aplikaciju..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "&Ukloni aplikaciju" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "&Verzija Windowsa:" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "Postavke prozora" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Automatski uhvati miš u ful&l-screen prozorima" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "Dozvoli upravitelju prozora &ukrašavanje prozora" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "Dozvoli upravitelju &prozora upravljanje prozorom" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "&Emulacija virutalnoe radne površine" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "&Veličina radne površine:" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "Rezolucija ekrana" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "Ovo je primjer teksta koristeći 10 Tahoma" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "DLL nadjačavanja" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12645,57 +12645,57 @@ "Biblioteke mogu biti podešene zasebno da budu ili ugrađene (omogućene od " "Wine-a) ili nativne (uzete od Windowsa ili od aplikacije)." -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "&Novo nadjačavanje biblioteke:" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "&Dodaj" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "Postojeća nad&jačavanja:" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "&Izmjeni..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "Izmjeni podešavanje" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "Redoslijed učitavanja" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "&Ugrađeno (Wine)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "&Nativno (Windows)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "Ugrađe&no pa nativno" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "Nativno &pa ugrađeno" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "Izaberi slovo pogona" -#: winecfg.rc:226 +#: winecfg.rc:230 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Wine konfiguracija" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -12703,95 +12703,111 @@ "Nije uspjelo povezivanje sa mount upraviteljem, konfiguracija pogona se ne " "može izmijeniti." -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "&Dodaj..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "Auto&detektiraj" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "&Putanja:" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "Pokaži &napredno" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "U&ređaj:" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "Na&đi..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "&Oznaka:" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "S&erijski:" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "Prikaži &dot datoteke" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "Driver dijagnostika" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "Podrazumijevano" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "Izlazni uređaj:" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "Izlazni uređaj za glas:" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "Ulazni uređaj:" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "Ulazni uređdaj za glas:" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "Is&probaj zvuk" -#: winecfg.rc:277 +#: winecfg.rc:275 +#, fuzzy +#| msgid "Wine configuration" +msgid "Speaker configuration" +msgstr "Wine konfiguracija" + +#: winecfg.rc:276 +#, fuzzy +#| msgid "De&vice:" +msgid "Device:" +msgstr "U&ređaj:" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 msgid "Appearance" msgstr "Izgled" -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "&Tema:" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "&Instaliraj temu..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "Stavka:" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "B&oja:" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "Mape" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "&Veza do:" @@ -12871,6 +12887,24 @@ msgid "(System default)" msgstr "(Sistemska putanja)" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +#, fuzzy +#| msgid "graphic" +msgid "Quadraphonic" +msgstr "grafika" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -12987,127 +13021,127 @@ "\n" "Kliknite 'Dodaj' u Pogoni tabu kako bi ga napravili!\n" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "Kontrole pozadine" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "Kontrole teksta" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "Pozadina menija" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "Tekst menija" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "Scrollbar" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "Odabir pozadine" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "Odabir teksta" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "Tooltip pozadine" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "Tooltip teksta" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "Pozadina prozora" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "Text prozora" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "Aktivni nazivni Bar" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "Aktivni nazivni Text" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "Neaktivni nazivni Bar" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "Neaktivni nazivni Text" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "Poruka Box Text" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "Radni prostor aplikacije" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "Okvir prozora" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "Aktivni rub" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "Neaktivni rub" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "Kontrola sjene" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "Sivi Text" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "Kontrola odabranog" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "Kontrola tamne sjene" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "Kontrola svijetla" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "Kontrola alternativne pozadine" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "Gradijent aktivne naslovne trake" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "Gradijent neaktivne naslovne trake" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "Isticanje izbornika" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "Traka izbornika" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/hu.po wine-staging-1.7.36~ubuntu12.04.1/po/hu.po --- wine-staging-1.7.35~ubuntu12.04.1/po/hu.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/hu.po 2015-02-08 20:31:28.000000000 +0000 @@ -47,8 +47,8 @@ msgid "&Modify..." msgstr "&Módosítás..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "E<ávolítás" @@ -67,7 +67,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -152,7 +152,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -553,7 +553,7 @@ msgid "Font St&yle:" msgstr "Betû&stílus:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "&Méret:" @@ -569,7 +569,7 @@ msgid "&Underline" msgstr "&Aláhúzott" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "Szín:" @@ -736,7 +736,7 @@ msgid "&to:" msgstr "Ed&dig:" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "&Méret:" @@ -2215,7 +2215,7 @@ msgid "&File name:" msgstr "&Fájlnév:" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "Tallózás..." @@ -3470,7 +3470,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "Tiltá&s" @@ -6774,7 +6774,7 @@ msgid "Hyperlink Information" msgstr "Hiperhivatkozás információ" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "&Típus:" @@ -7574,7 +7574,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8102,7 +8102,7 @@ msgid "&Open:" msgstr "&Megnyitás:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "&Tallózás..." @@ -8147,7 +8147,7 @@ msgid "Date deleted" msgstr "Törlési dátum" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Asztal" @@ -9598,7 +9598,7 @@ msgid "Digi&tal" msgstr "Digi&tális" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Betűtípus..." @@ -13013,7 +13013,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "Wine konfiguráció frissítődik %s, kérem várjon..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -13025,23 +13025,23 @@ "Free Software Foundation készített; mind a 2.1 verziójú licensz, vagy " "(választása szerint) bármely későbbi verzió használható." -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "Windows Regisztráció Információ" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "&Tulajdonos:" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "&Szervezet:" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "Alkalmazás beállítások" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " @@ -13052,55 +13052,55 @@ "tegye a rendszerszintű vagy alkalmazásonkénti beállításokat ezeken a füleken " "is." -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "&Alkalmazás hozzáadás..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "Alkalmazás &eltávolítás" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "&Windows verzió:" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "Ablak beállítások" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Automatikusan érzékeli az &egeret teljes képernyős ablak esetén" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "Megengedi az ablak kezelőnek, hogy &díszítse az ablakot" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "Az ablak kezelő kezelheti az ablakokat" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "Virtuális asztal emulálása" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "Asztal &méret:" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "Képernyő felbontás" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "Ez egy minta szöveg, amely 10 pontos Tahoma betűtípust használ" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "DLL felülbírálások" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -13110,57 +13110,57 @@ "hogy beépítettek (a Wine biztosítja), vagy natívak (a windowsból nyert, vagy " "az alkalmazás biztosítja)." -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "Új felülbírálás könyvtárhoz:" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "Hozzá&adás" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "Létező felülbírálások:" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "Sz&erkesztés..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "Felülbírálás szerkesztése" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "Betöltési sorrend" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "&Beépített (Wine)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "&Natív (Windows)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "Beépítet&t, natív" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "Natí&v, beépített" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "Válassza ki a meghajtó betűjelét" -#: winecfg.rc:226 +#: winecfg.rc:230 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Wine konfiguráció" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13168,95 +13168,111 @@ "Nem lehet kapcsolódni az eszközmenedzserhez, a meghajtó beállítást nem lehet " "szerkeszteni." -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "Hozzá&ad..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "Automata &felismerés" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "&Útvonal:" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "Haladó >>" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "Eszkö&z:" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "Tall&ózás..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "&Címke:" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "S&orozatszám:" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "Rejtett fájlok megjelenítése" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "Driver diagnosztika" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "Alapértékek" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "Kimeneti eszköz:" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "Hang kimeneti eszköz:" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "Bemeneti eszköz:" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "Hang bemeneti eszköz:" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "&Teszt hang" -#: winecfg.rc:277 +#: winecfg.rc:275 +#, fuzzy +#| msgid "Wine configuration" +msgid "Speaker configuration" +msgstr "Wine konfiguráció" + +#: winecfg.rc:276 +#, fuzzy +#| msgid "De&vice:" +msgid "Device:" +msgstr "Eszkö&z:" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 msgid "Appearance" msgstr "Megjelenés" -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "Téma:" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "Téma telepítése..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "&Elem:" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "Szín:" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "Rendszermappák" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "Mappa &útvonal:" @@ -13336,6 +13352,24 @@ msgid "(System default)" msgstr "(Rendszer alapértelmezett)" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +#, fuzzy +#| msgid "graphic" +msgid "Quadraphonic" +msgstr "grafika" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -13453,127 +13487,127 @@ "Emlékeztetőül, klikkeljen a 'Hozzáad'-ra a meghajtók fülön, hogy létrehozzon " "egyet!\n" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "Vezérlők háttere" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "Vezérlők szövege" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "Menü háttér" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "Menü szöveg" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "Görgetősáv" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "Beállítás há&ttérként" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "Kijelölt szöveg" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "Tooltip háttér" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "Tooptip szöveg" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "Ablak háttér" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "Ablak szöveg" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "Aktív címsor" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "Aktív címsor szöveg" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "Inaktív címsor" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "Inaktív címsor szöveg" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "Üzenetablak szöveg" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "Alkalmazás munkaterület" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "Ablak keret" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "Aktív keret" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "Inaktív keret" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "Vezérlők árnyékolása" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "Szürke szöveg" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "Vezérlők kiemelése" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "Vezérlők sötét árnyékolása" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "Vezérlők fénybeállítása" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "Vezérlőnként változó hátter" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "Kiemeltsáv elem" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "Aktív ablakcímsor áttetszóség" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "Inaktív ablakcímsor áttetszóség" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "Menü kiemelés" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "Menüsor" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/it.po wine-staging-1.7.36~ubuntu12.04.1/po/it.po --- wine-staging-1.7.35~ubuntu12.04.1/po/it.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/it.po 2015-02-08 20:31:28.000000000 +0000 @@ -52,8 +52,8 @@ msgid "&Modify..." msgstr "&Modifica..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "&Rimuovi" @@ -72,7 +72,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -157,7 +157,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -559,7 +559,7 @@ msgid "Font St&yle:" msgstr "&Stile:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "Dimen&sione:" @@ -575,7 +575,7 @@ msgid "&Underline" msgstr "S&ottolineato" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "&Colore:" @@ -742,7 +742,7 @@ msgid "&to:" msgstr "&a:" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "&Dimensione:" @@ -2225,7 +2225,7 @@ msgid "&File name:" msgstr "Nome del &file:" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "&Naviga..." @@ -3483,7 +3483,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "&Disabilita" @@ -6788,7 +6788,7 @@ msgid "Hyperlink Information" msgstr "Informazioni sull'iperlink" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "&Tipo:" @@ -7648,7 +7648,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8175,7 +8175,7 @@ msgid "&Open:" msgstr "&Apri:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "&Naviga..." @@ -8220,7 +8220,7 @@ msgid "Date deleted" msgstr "Data di eliminazione" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Scrivania" @@ -9682,7 +9682,7 @@ msgid "Digi&tal" msgstr "Digi&tale" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Carattere..." @@ -13105,7 +13105,7 @@ msgstr "" "La configurazione di Wine in %s è in aggiornamento, aspetta un momento..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -13117,23 +13117,23 @@ "dalla Free Software Foundation; sia la versione 2.1 della licenza, o (a tua " "scelta) qualunque altra versione più recente." -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "Informazioni di registrazione di Windows" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "&Proprietario:" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "&Organizzazione:" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "Impostazioni delle applicazioni" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " @@ -13144,55 +13144,55 @@ "cambiare le impostazioni a livello di sistema o per applicazione pure in " "quelle schede." -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "&Aggiungi applicazione..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "&Rimuovi applicazione" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "Versione di Windows:" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "Impostazioni delle finestre" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Cattura automaticamente il &mouse nelle finestre a schermo pieno" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "Permetti al gestore delle finestre di &decorare le finestre" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "Permetti al &gestore delle finestre di controllare le finestre" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "&Emula un desktop virtuale" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "Dimensione del desktop:" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "Risoluzione dello schermo" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "Questo è un testo di esempio che usa il carattere Tahoma a 10 punti" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "Sostituzioni di DLL" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -13202,57 +13202,57 @@ "essere integrate (fornite da Wine) o native (prese da Windows o fornite " "dall'applicazione)." -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "&Nuova sostituzione per la libreria:" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "&Aggiungi" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "&Sostituzioni esistenti:" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "&Modifica..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "Modifica sostituzione" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "Ordine di caricamento" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "&Integrata (Wine)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "&Nativa (Windows)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "In&tegrata poi nativa" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "N&ativa poi integrata" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "Seleziona la lettera dell'unità" -#: winecfg.rc:226 +#: winecfg.rc:230 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Configurazione di Wine" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13260,95 +13260,111 @@ "Impossibile connettersi al gestore delle unità, la configurazione dell'unità " "non può essere modificata." -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "Aggiungi..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "&Rileva automaticamente" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "&Percorso:" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "Mostra controlli &avanzati" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "&Unità:" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "Na&viga..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "&Etichetta:" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "Numero &seriale:" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "Mostra file &dot" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "Diagnostica del driver" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "Valori predefiniti" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "Unità output:" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "Unità output voce:" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "Unità input:" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "Unità input voce:" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "&Test dell'audio" -#: winecfg.rc:277 +#: winecfg.rc:275 +#, fuzzy +#| msgid "Wine configuration" +msgid "Speaker configuration" +msgstr "Configurazione di Wine" + +#: winecfg.rc:276 +#, fuzzy +#| msgid "De&vice:" +msgid "Device:" +msgstr "&Unità:" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 msgid "Appearance" msgstr "Aspetto" -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "&Tema:" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "&Installa un tema..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "Ogg&etto:" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "C&olore:" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "Cartelle" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "&Collega a:" @@ -13428,6 +13444,24 @@ msgid "(System default)" msgstr "(valore predefinito di sistema)" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +#, fuzzy +#| msgid "graphic" +msgid "Quadraphonic" +msgstr "immagine" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -13545,127 +13579,127 @@ "\n" "Ricordati di cliccare 'Aggiungi' nella sezione Unità per crearne uno!\n" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "Controlli - Sfondo" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "Controlli - Testo" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "Menù - Sfondo" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "Menù - Testo" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "Barra di scorrimento" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "Selezione - Sfondo" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "Selezione - Testo" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "Tooltip - Sfondo" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "Tooltip - Testo" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "Finestra - Sfondo" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "Finestra - Testo" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "Titolo attivo - Barra" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "Titolo attivo - Testo" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "Titolo inattivo - Barra" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "Titolo inattivo - Testo" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "Testo della casella di Messaggio" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "Spazio di lavoro dell'applicazione" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "Frame della finestra" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "Bordo attivo" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "Bordo inattivo" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "Controlli - Ombre" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "Testo disabilitato" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "Controlli - Selezione" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "Controlli - Ombre scure" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "Controlli - Luce" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "Controlli - Sfondo alternativo" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "Oggetto Hot Tracked" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "Titolo attivo - Gradiente della barra" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "Titolo inattivo - Gradiente della barra" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "Menù - Selezione" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "Menù - Barra" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/ja.po wine-staging-1.7.36~ubuntu12.04.1/po/ja.po --- wine-staging-1.7.35~ubuntu12.04.1/po/ja.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/ja.po 2015-02-08 20:31:28.000000000 +0000 @@ -5,7 +5,7 @@ "Project-Id-Version: Wine\n" "Report-Msgid-Bugs-To: http://bugs.winehq.org\n" "POT-Creation-Date: N/A\n" -"PO-Revision-Date: 2014-10-02 23:14+0900\n" +"PO-Revision-Date: 2015-02-05 00:17+0900\n" "Last-Translator: Akihiro Sagawa \n" "Language-Team: 日本語 <>\n" "Language: Japanese\n" @@ -48,8 +48,8 @@ msgid "&Modify..." msgstr "変更(&M)..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "削除(&R)" @@ -68,7 +68,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -151,7 +151,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -542,7 +542,7 @@ msgid "Font St&yle:" msgstr "スタイル(&Y):" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "サイズ(&S):" @@ -558,7 +558,7 @@ msgid "&Underline" msgstr "下線(&U)" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "配色(&C):" @@ -725,7 +725,7 @@ msgid "&to:" msgstr "ページまで(&T):" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "サイズ(&Z):" @@ -2202,7 +2202,7 @@ msgid "&File name:" msgstr "ファイル名(&F):" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "参照(&R)..." @@ -3431,7 +3431,7 @@ msgid "Joysticks" msgstr "ジョイスティック" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "無効化(&D)" @@ -6710,7 +6710,7 @@ msgid "Hyperlink Information" msgstr "ハイパーリンクの情報" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "タイプ(&T):" @@ -7492,7 +7492,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8019,7 +8019,7 @@ msgid "&Open:" msgstr "名前(&O):" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "参照(&B)..." @@ -8064,7 +8064,7 @@ msgid "Date deleted" msgstr "削除日" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "デスクトップ" @@ -9488,7 +9488,7 @@ msgid "Digi&tal" msgstr "デジタル(&T)" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "フォント(&F)..." @@ -12861,7 +12861,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "%s にある Wine 設定を更新しています。しばらくお待ちください..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12873,23 +12873,23 @@ "望によってはそれ以降の バージョン のうちどれか) の定める条件の下で 再頒布 ま" "たは 改変 することができます。" -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "Windows 登録情報" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "所有者(&O):" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "組織(&Z):" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "アプリケーション設定" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " @@ -12899,55 +12899,55 @@ "ます。 このタブはライブラリ及びグラフィック各タブと連動しますので、システム全" "体の設定や 個別アプリケーションの設定の変更が行えます。" -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "アプリケーションを追加(&A)..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "アプリケーションを削除(&R)" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "&Windows バージョン:" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "ウィンドウ設定" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "フルスクリーン ウィンドウでマウスを自動的に捕捉する(&M)" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "ウィンドウ マネージャがウィンドウを装飾するのを許可する(&D)" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "ウィンドウ マネージャがウィンドウを制御するのを許可する(&W)" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "仮想デスクトップをエミュレートする(&D)" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "デスクトップの大きさ(&Z):" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "画面の解像度(&R)" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "10 ポイントの Thamoa による見本です" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "DLL オーバーライド" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12956,150 +12956,162 @@ "ダイナミック リンク ライブラリ(DLL)は個別に 内蔵版(Wine提供) または ネイティ" "ブ版(Windows もしくはアプリケーション提供のもの)を選ぶことができます。" -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "ライブラリの新規オーバーライド(&N):" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "追加(&A)" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "既存のオーバーライド(&O):" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "編集(&E)..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "オーバーライドの編集" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "読込順序" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "内蔵版(Wine)(&B)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "ネイティブ版(Windows)(&N)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "内蔵版後にネイティブ版(&L)" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "ネイティブ版後に内蔵版(&V)" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "ドライブ レターを選択" -#: winecfg.rc:226 +#: winecfg.rc:230 msgid "Drive configuration" msgstr "ドライブの設定" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" "マウント マネージャへの接続に失敗したため、ドライブ設定は変更できません。" -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "追加(&A)..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "自動検出(&D)" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "パス(&P):" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "詳細を表示(&A)" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "デバイス(&V):" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "参照(&W)..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "ラベル(&L):" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "シリアル番号(&E):" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "ドット ファイルを表示する" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "ドライバ診断" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "デフォルト" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "出力デバイス:" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "音声出力デバイス:" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "入力デバイス:" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "音声入力デバイス:" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "音をテスト(&T)" -#: winecfg.rc:277 +#: winecfg.rc:275 +msgid "Speaker configuration" +msgstr "スピーカー 設定" + +#: winecfg.rc:276 +msgid "Device:" +msgstr "デバイス:" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "スピーカー:" + +#: winecfg.rc:286 msgid "Appearance" msgstr "外観" -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "テーマ(&T):" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "テーマのインストール(&I)..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "項目(&E):" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "色(&O):" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "フォルダ" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "リンク先(&L):" @@ -13179,6 +13191,22 @@ msgid "(System default)" msgstr "(システム デフォルト)" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "5.1 サラウンド" + +#: winecfg.rc:90 +msgid "Quadraphonic" +msgstr "4 チャンネル ステレオ" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "ステレオ" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "モノラル" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -13295,127 +13323,127 @@ "C ドライブを作成するためにドライブ タブ内の [追加] を忘れずにクリックしてくだ" "さい!\n" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "コントロールの背景" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "コントロールのテキスト" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "メニューの背景" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "メニューのテキスト" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "スクロール バー" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "選択項目の背景" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "選択項目のテキスト" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "ヒントの背景" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "ヒントのテキスト" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "ウィンドウの背景" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "ウィンドウのテキスト" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "アクティブ タイトル バー" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "アクティブ タイトルのテキスト" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "非アクティブ タイトル バー" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "非アクティブ タイトルのテキスト" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "メッセージ ボックスのテキスト" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "アプリケーション作業域" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "ウィンドウの境界" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "アクティブ境界" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "非アクティブ境界" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "コントロールの影" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "灰色テキスト" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "コントロールの明るい部分" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "コントロールの暗い影" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "コントロールの明かり" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "コントロールの別の背景" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "選択中のアイテム" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "アクティブ タイトル バーの階調" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "非アクティブ タイトル バーの階調" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "メニューの明るい部分" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "メニュー バー" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/ko.po wine-staging-1.7.36~ubuntu12.04.1/po/ko.po --- wine-staging-1.7.35~ubuntu12.04.1/po/ko.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/ko.po 2015-02-08 20:31:28.000000000 +0000 @@ -46,8 +46,8 @@ msgid "&Modify..." msgstr "고치기(&M)..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "제거(&R)" @@ -66,7 +66,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -149,7 +149,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -540,7 +540,7 @@ msgid "Font St&yle:" msgstr "글꼴 스타일(&Y):" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "크기(&S):" @@ -556,7 +556,7 @@ msgid "&Underline" msgstr "밑줄(&U)" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "색상(&C):" @@ -723,7 +723,7 @@ msgid "&to:" msgstr "끝(&T):" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "크기(&Z):" @@ -2200,7 +2200,7 @@ msgid "&File name:" msgstr "파일 이름(&F):" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "찾기(&R)..." @@ -3430,7 +3430,7 @@ msgid "Joysticks" msgstr "조이스틱" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "사용하지 않음(&D)" @@ -6720,7 +6720,7 @@ msgid "Hyperlink Information" msgstr "하이퍼링크 정보" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "형식(&T):" @@ -7545,7 +7545,7 @@ msgid "b" msgstr "비트" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8070,7 +8070,7 @@ msgid "&Open:" msgstr "열기(&O):" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "찾기(&B)..." @@ -8115,7 +8115,7 @@ msgid "Date deleted" msgstr "지워진 날짜" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "바탕화면" @@ -9525,7 +9525,7 @@ msgid "Digi&tal" msgstr "디지털(&T)" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "글꼴(&F)..." @@ -12889,7 +12889,7 @@ msgstr "" "Wine 설정 %s 이 업데이트되는 중입니다, 잠시만 기다려주시기 바랍니다..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12901,23 +12901,23 @@ "서 이 프로그램을 재배포 또는 수정할 수 있습니다. 라이센스의 버전은 2.1 또는 " "(선택적으로) 그 이후 버전을 따르면 됩니다." -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "윈도우즈 등록 정보" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "소유자(&O):" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "단체(&Z):" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "응용프로그램 설정" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " @@ -12927,55 +12927,55 @@ "이 탭은 시스템 전체뿐만 아니라 해당 탭의 각각의 응용프로그램 설정을 변경할 " "수 있도록 라이브러리 및 그래픽 탭에 연결되어 있습니다." -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "응용프로그램 추가(&A)..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "응용프로그램 제거(&R)" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "윈도우즈 버젼(&W):" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "창 설정" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "전체 화면 창에서 자동으로 마우스 잡기(&M)" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "창관리자가 Wine창을 꾸미도록 함(&D)" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "창관리자가 Wine창을 관리하도록 함(&W)" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "가상 데스크탑 흉내내기(&E)" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "데스크탑 크기(&S):" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "화면 해상도" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "DLL 덮어쓰기" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12984,152 +12984,168 @@ "동적 링크 라이브러리는 개별적으로 내장(Wine에 의해 제공)이나 네이티브(윈도우" "즈나 프로그램에 의해 제공)으로 지정될수 있습니다." -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "새로 덮어쓸 라이브러리(&N):" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "더하기(&A)" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "현재 덮어쓰기 목록(&O):" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "고치기(&E)..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "덮어쓰기 고치기" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "불러오기 순서" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "내장(&B)(Wine)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "네이티브(&N)(Win)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "내장, 네이티브(&L)" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "네이티브, 내장(&V)" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "드라이브 문자 선택" -#: winecfg.rc:226 +#: winecfg.rc:230 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Wine 설정" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" "연결 관리자가 연결하는 데 실패함, 이 드라이브 설정을 수정될 수 없습니다." -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "추가(&A)..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "자동찾기(&D)" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "경로(&P):" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "추가옵션 보이기(&A)" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "장치(&V):" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "찾아보기(&W)..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "라벨(&L):" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "시리얼(&E):" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "숨은 파일 보이기(&D)" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "드라이버 진단" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "기본" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "출력 장치:" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "음성 출력 장치:" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "입력 장치:" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "음성 입력 장치:" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "소리 테스트(&T)" -#: winecfg.rc:277 +#: winecfg.rc:275 +#, fuzzy +#| msgid "Wine configuration" +msgid "Speaker configuration" +msgstr "Wine 설정" + +#: winecfg.rc:276 +#, fuzzy +#| msgid "De&vice:" +msgid "Device:" +msgstr "장치(&V):" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 msgid "Appearance" msgstr "외양" -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "테마(&T):" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "테마 설치(&I)..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "목록(&E):" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "색상(&O):" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "폴더" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "연결 위치(&L):" @@ -13209,6 +13225,24 @@ msgid "(System default)" msgstr "(시스템 기본)" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +#, fuzzy +#| msgid "graphic" +msgid "Quadraphonic" +msgstr "그림" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -13325,127 +13359,127 @@ "\n" "드라이브 탭에서 '추가'를 클릭해서 만드는 것을 잊지 마십시오!\n" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "컨트롤 배경" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "컨트롤 문자" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "메뉴 배경" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "메뉴 문자" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "목록바" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "선택된 배경" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "선택된 문자" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "도구팁 배경" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "도구팁 문자" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "창 배경" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "창 문자" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "활성된 제목 막대" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "활성된 제목 문자" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "비활성된 제목 막대" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "비활성된 제목 문자" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "메세지 상자 텍스트" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "어플리케이션 작업공간" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "창 프레임" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "활성화된 창틀" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "비 활성화된 창틀" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "컨트롤 그함지" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "회색 문자" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "컨트롤 하이라이트" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "컨트롤 어두운 그림자" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "컨트롤 밝음" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "컨트롤 바뀔때 배경" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "핫 트랙된 아이템" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "활성화된 제목 바 색깔 변화" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "비활성화된 제목바 색깔 변화" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "메뉴 하이라이트" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "메뉴바" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/lt.po wine-staging-1.7.36~ubuntu12.04.1/po/lt.po --- wine-staging-1.7.35~ubuntu12.04.1/po/lt.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/lt.po 2015-02-08 20:31:28.000000000 +0000 @@ -1,11 +1,11 @@ # Lithuanian translations for Wine -# Aurimas Fišeras , 2011, 2012, 2013, 2014. +# Aurimas Fišeras , 2011, 2012, 2013, 2014, 2015. msgid "" msgstr "" "Project-Id-Version: Wine\n" "Report-Msgid-Bugs-To: http://bugs.winehq.org\n" "POT-Creation-Date: N/A\n" -"PO-Revision-Date: 2014-10-04 10:00+0300\n" +"PO-Revision-Date: 2015-02-03 19:00+0300\n" "Last-Translator: Aurimas Fišeras \n" "Language-Team: komp_lt@konf.lt\n" "Language: Lithuanian\n" @@ -49,8 +49,8 @@ msgid "&Modify..." msgstr "&Modifikuoti..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "Pa&šalinti" @@ -69,7 +69,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -152,7 +152,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -541,7 +541,7 @@ msgid "Font St&yle:" msgstr "Šrifto &stilius:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "&Dydis:" @@ -557,7 +557,7 @@ msgid "&Underline" msgstr "&Pabraukimas" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "&Spalva:" @@ -724,7 +724,7 @@ msgid "&to:" msgstr "iki:" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "D&ydis:" @@ -2205,7 +2205,7 @@ msgid "&File name:" msgstr "&Failas:" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "Pari&nkti..." @@ -3442,7 +3442,7 @@ msgid "Joysticks" msgstr "Vairasvirtės" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "&Išjungti" @@ -6720,7 +6720,7 @@ msgid "Hyperlink Information" msgstr "Saito informacija" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "&Tipas:" @@ -7505,7 +7505,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "tašk./col." @@ -8032,7 +8032,7 @@ msgid "&Open:" msgstr "&Atverti:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "&Parinkti..." @@ -8077,7 +8077,7 @@ msgid "Date deleted" msgstr "Pašalinimo data" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Darbalaukis" @@ -9504,7 +9504,7 @@ msgid "Digi&tal" msgstr "Skai&tmeninis" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "Š&riftas..." @@ -12881,7 +12881,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "„Wine“ konfigūracija (%s) atnaujinama, palaukite..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12893,23 +12893,23 @@ "kurios paskelbtos Laisvosios programinės įrangos fondo (FSF); 2.1-osios arba " "(Jūsų pasirinkimu) bet kurios vėlesnės licencijos versijos sąlygomis." -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "„Windows“ registracijos informacija" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "Savininkas:" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "Organizacija:" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "Programų nuostatos" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " @@ -12920,55 +12920,55 @@ "galima keisti sistemines nuostatas ar kiekvienos programos nuostatas " "atskirai." -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "&Pridėti programą..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "Pa&šalinti programą" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "„Windows“ &versija:" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "Langų nuostatos" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Automatiškai &užvaldyti pelę viso ekrano languose" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "Leisti langų tvarkytuvei &dekoruoti langus" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "Leisti langų tvarkytuvei &kontroliuoti langus" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "&Emuliuoti virtualų darbalaukį" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "Darbalaukio d&ydis:" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "Ekrano skiriamoji geba" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "Tai yra pavyzdinis tekstas naudojantis 10 taškų Tahoma" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "DLL nustelbimai" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12977,55 +12977,55 @@ "Kiekviena dinaminė biblioteka gali būti įtaisyta (pateikta su „Wine“) ar " "sava (paimta iš „Windows“ ar pateikta programos)." -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "&Naujas nustelbimas bibliotekai:" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "&Pridėti" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "Egzistuojantys n&ustelbimai:" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "&Redaguoti..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "Redaguoti nustelbimą" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "Įkėlimo tvarka" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "&Įtaisyta („Wine“)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "&Sava („Windows“)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "Į&taisyta, po to sava" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "S&ava, po to įtaisyta" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "Parinkite disko raidę" -#: winecfg.rc:226 +#: winecfg.rc:230 msgid "Drive configuration" msgstr "Diskų konfigūravimas" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13033,95 +13033,107 @@ "Nepavyko prisijungti prie diskų tvarkytuvės, diskų konfigūracija negali būti " "redaguojama." -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "&Pridėti..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "Automatiškai &aptikti" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "&Kelias:" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "Rodyti papil&domas" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "Įtai&sas:" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "Parinkti..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "Va&rdas:" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "N&umeris:" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "Rodyti &failus su tašku" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "Tvarkyklės diagnostika" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "Numatytosios reikšmės" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "Išvedimo įtaisas:" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "Balso išvedimo įtaisas:" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "Įvedimo įtaisas:" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "Balso įvedimo įtaisas:" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "&Testuoti garsą" -#: winecfg.rc:277 +#: winecfg.rc:275 +msgid "Speaker configuration" +msgstr "Garsiakalbių konfigūravimas" + +#: winecfg.rc:276 +msgid "Device:" +msgstr "Įtaisas:" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "Garsiakalbiai:" + +#: winecfg.rc:286 msgid "Appearance" msgstr "Išvaizda" -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "&Apipavidalinimas:" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "&Įdiegti apipavidalinimą..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "&Elementas:" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "S&palva:" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "Aplankai" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "S&usieti su:" @@ -13201,6 +13213,22 @@ msgid "(System default)" msgstr "(Sistemos numatytasis)" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "Erdvinis 5.1" + +#: winecfg.rc:90 +msgid "Quadraphonic" +msgstr "Kvadrofoninis" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "Stereofoninis" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "Monofoninis" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -13315,127 +13343,127 @@ "\n" "Nepamirškite paspausti „Pridėti“ diskų kortelėje, kad jį sukurtumėte!\n" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "Valdiklių fonas" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "Valdiklių tekstas" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "Meniu fonas" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "Meniu tekstas" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "Slankjuostė" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "Žymėjimo fonas" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "Žymėjimo tekstas" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "Patarimo fonas" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "Patarimo tekstas" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "Lango fonas" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "Lango tekstas" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "Aktyvi lango antraštės juosta" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "Aktyvios lango antraštės tekstas" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "Neaktyvi lango antraštės juosta" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "Neaktyvios lango antraštės tekstas" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "Pranešimo lango tekstas" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "Programos erdvė" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "Lango rėmelis" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "Aktyvi kraštinė" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "Neaktyvi kraštinė" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "Valdiklių šešėlis" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "Pilkas tekstas" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "Valdiklių paryškinimas" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "Valdiklių tamsus šešėlis" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "Valdiklių šviesumas" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "Valdiklių alternatyvus fonas" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "Sekamas elementas" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "Aktyvios lango antraštės gradientas" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "Neaktyvios lango antraštės gradientas" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "Meniu paryškinimas" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "Meniu juosta" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/ml.po wine-staging-1.7.36~ubuntu12.04.1/po/ml.po --- wine-staging-1.7.35~ubuntu12.04.1/po/ml.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/ml.po 2015-02-08 20:31:28.000000000 +0000 @@ -43,8 +43,8 @@ msgid "&Modify..." msgstr "" -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "" @@ -63,7 +63,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -140,7 +140,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -525,7 +525,7 @@ msgid "Font St&yle:" msgstr "" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "" @@ -541,7 +541,7 @@ msgid "&Underline" msgstr "" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "" @@ -708,7 +708,7 @@ msgid "&to:" msgstr "" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "" @@ -2164,7 +2164,7 @@ msgid "&File name:" msgstr "" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "" @@ -3350,7 +3350,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "" @@ -6624,7 +6624,7 @@ msgid "Hyperlink Information" msgstr "" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "" @@ -7365,7 +7365,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "" @@ -7896,7 +7896,7 @@ msgid "&Open:" msgstr "" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "" @@ -7941,7 +7941,7 @@ msgid "Date deleted" msgstr "" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "" @@ -9210,7 +9210,7 @@ msgid "Digi&tal" msgstr "_ഡിജിറ്റല്‍" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "_അക്ഷരസഞ്ചയം..." @@ -12279,7 +12279,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "" -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12287,229 +12287,241 @@ "option) any later version." msgstr "" -#: winecfg.rc:137 +#: winecfg.rc:141 #, fuzzy msgid "Windows registration information" msgstr "_അക്ഷരസഞ്ചയം..." -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " "or per-application settings in those tabs as well." msgstr "" -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "" -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " "application)." msgstr "" -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "" -#: winecfg.rc:193 +#: winecfg.rc:197 #, fuzzy msgid "&Edit..." msgstr "_അക്ഷരസഞ്ചയം..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "" -#: winecfg.rc:226 +#: winecfg.rc:230 msgid "Drive configuration" msgstr "" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "" -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "" -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "" -#: winecfg.rc:277 -msgid "Appearance" +#: winecfg.rc:275 +msgid "Speaker configuration" +msgstr "" + +#: winecfg.rc:276 +msgid "Device:" msgstr "" #: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 +msgid "Appearance" +msgstr "" + +#: winecfg.rc:287 msgid "&Theme:" msgstr "" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "" -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "" @@ -12589,6 +12601,22 @@ msgid "(System default)" msgstr "" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +msgid "Quadraphonic" +msgstr "" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -12690,128 +12718,128 @@ "Remember to click 'Add' in the Drives tab to create one!\n" msgstr "" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "" -#: winecfg.rc:105 +#: winecfg.rc:109 #, fuzzy msgid "Active Title Bar" msgstr "റ്റൈറ്റില്‍ബാര്‍ _ഇല്ലാതെ" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/nb_NO.po wine-staging-1.7.36~ubuntu12.04.1/po/nb_NO.po --- wine-staging-1.7.35~ubuntu12.04.1/po/nb_NO.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/nb_NO.po 2015-02-08 20:31:28.000000000 +0000 @@ -48,8 +48,8 @@ msgid "&Modify..." msgstr "&Endre..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "&Fjern" @@ -68,7 +68,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -151,7 +151,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -540,7 +540,7 @@ msgid "Font St&yle:" msgstr "Skriftst&il:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "Størrelse:" @@ -556,7 +556,7 @@ msgid "&Underline" msgstr "&Understreket" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "Farge:" @@ -723,7 +723,7 @@ msgid "&to:" msgstr "&Til:" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "Størrelse:" @@ -2202,7 +2202,7 @@ msgid "&File name:" msgstr "&Filnavn:" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "&Bla …" @@ -3447,7 +3447,7 @@ msgid "Joysticks" msgstr "Styrespaker" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "&Deaktiver" @@ -6735,7 +6735,7 @@ msgid "Hyperlink Information" msgstr "Informasjon om koblingen" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "&Type:" @@ -7562,7 +7562,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8089,7 +8089,7 @@ msgid "&Open:" msgstr "&Åpne:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "&Bla..." @@ -8134,7 +8134,7 @@ msgid "Date deleted" msgstr "Dato slettet" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Skrivebord" @@ -9553,7 +9553,7 @@ msgid "Digi&tal" msgstr "Digi&tal" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "Skri&ft..." @@ -12914,7 +12914,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "Vent mens Wine-oppsettet i «%s» blir oppdatert..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12926,23 +12926,23 @@ "Foundation», enten versjon 2.1 av denne Lisensen, eller (hvis du ønsker det) " "en nyere versjon." -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "Brukerinformasjon for Windows" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "Eier:" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "Organisasjon:" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "Programminnstillinger" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " @@ -12952,55 +12952,55 @@ "fanen er koblet med bibliotek- og grafikkfanene, sånn at du kan endre " "innstillinger for hele systemet eller enkelte programmer der også." -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "Legg til progr&am..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "Fje&rn program" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "&Windows-versjon:" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "Vinduinnstillinger" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Fang &musen automatisk i fullskjermvinduer" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "Tillat vindusbehandleren å &dekorere vinduer" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "Tillat vindusbehandleren å kontrollere vinduene" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "Vis et virtuelt skrivebord" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "Størrelse:" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "Skjermoppløsning" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "Forhåndsvisning av tekst med 10 punkters Tahoma" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "DLL-overstyring" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -13010,55 +13010,55 @@ "innebygget (fra Wine) eller innfødt (tatt fra Windows eller gitt av et " "program)." -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "Ny overstyring for bibliotek:" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "&Legg til" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "Gjeldende overstyringer:" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "R&ediger..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "Rediger overstyring" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "Lastingsrekkefølge" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "Inne&bygget (Wine)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "I&nnfødt (Windows)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "&Innebygget så innfødt" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "Innfdø&dt så innebygget" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "Velg stasjonsbokstav" -#: winecfg.rc:226 +#: winecfg.rc:230 msgid "Drive configuration" msgstr "Oppsett av stasjoner" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13066,95 +13066,111 @@ "Klarte ikke koble til monteringsbehandleren; diskstasjonene kan derfor ikke " "redigeres." -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "&Legg til..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "&Automatisk" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "&Sti:" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "Avansert visning" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "En&het:" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "&Bla..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "Vo&lumnavn:" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "S&erienummer:" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "Vis .-filer" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "Driverdiagnostikk" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "Standardverdier" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "Ut-enhet:" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "Ut-enhet for tale:" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "Inn-enhet:" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "Inn-enhet for tale:" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "&Test" -#: winecfg.rc:277 +#: winecfg.rc:275 +#, fuzzy +#| msgid "Wine configuration" +msgid "Speaker configuration" +msgstr "Oppsett av Wine" + +#: winecfg.rc:276 +#, fuzzy +#| msgid "De&vice:" +msgid "Device:" +msgstr "En&het:" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 msgid "Appearance" msgstr "Utseende" -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "Tema:" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "Installer tema..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "Element:" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "Farge:" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "Mappe" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "Pek til:" @@ -13234,6 +13250,24 @@ msgid "(System default)" msgstr "(Standard)" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +#, fuzzy +#| msgid "graphic" +msgid "Quadraphonic" +msgstr "grafikk" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -13347,127 +13381,127 @@ "\n" "Husk å trykke «Legg til» i stasjonsfanen for å lage en!\n" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "Kontrollerbakgrunn" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "Kontrollertekst" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "Menybakgrunn" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "Menytekst" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "Rullefelt" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "Bakgrunn for merking" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "Merket tekst" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "Bakgrunn for verktøytips" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "Tekst i verktøytips" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "Vindubakgrunn" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "Vinduteksts" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "Aktiv tittellinje" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "Aktiv titteltekst" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "Inaktiv tittellinje" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "Inaktiv titteltekst" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "Meldingsvindutekst" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "Arbeidsområde i program" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "Visrusramme" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "Aktiv kant" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "Inaktiv kant" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "Kontrollerskygge" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "Grå tekst" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "Merket kontroller" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "Mørk skygge i kontroller" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "Kontrollerlys" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "Bakgrunn for skiftende kontroller" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "Merket element" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "Gradient for aktiv tittellinje" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "Gradient for inaktiv tittellinje" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "Menymerking" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "Menylinje" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/nl.po wine-staging-1.7.36~ubuntu12.04.1/po/nl.po --- wine-staging-1.7.35~ubuntu12.04.1/po/nl.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/nl.po 2015-02-08 20:31:28.000000000 +0000 @@ -47,8 +47,8 @@ msgid "&Modify..." msgstr "&Wijzigen..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "&Verwijderen" @@ -67,7 +67,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -152,7 +152,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -542,7 +542,7 @@ msgid "Font St&yle:" msgstr "Teken&stijl:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "Tekstgrootte:" @@ -558,7 +558,7 @@ msgid "&Underline" msgstr "&Onderstrepen" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "Kleuren:" @@ -727,7 +727,7 @@ msgid "&to:" msgstr "&t/m:" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "Grootte:" @@ -2209,7 +2209,7 @@ msgid "&File name:" msgstr "Bestands&naam:" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "Bladeren..." @@ -3467,7 +3467,7 @@ msgid "Joysticks" msgstr "Joysticks" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "&Uitzetten" @@ -6761,7 +6761,7 @@ msgid "Hyperlink Information" msgstr "Webverwijzing Informatie" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "&Soort:" @@ -7623,7 +7623,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8150,7 +8150,7 @@ msgid "&Open:" msgstr "&Openen:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "&Bladeren..." @@ -8195,7 +8195,7 @@ msgid "Date deleted" msgstr "Datum verwijderd" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Bureaublad" @@ -9639,7 +9639,7 @@ msgid "Digi&tal" msgstr "&Digitaal" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Lettertype..." @@ -13068,7 +13068,7 @@ msgstr "" "De Wine configuratie in %s wordt bijgewerkt, even geduld alstublieft..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -13080,23 +13080,23 @@ "gepubliceerd door de Free Software Foundation; versie 2.1 van de licentie, " "of (naar keuze) een latere versie." -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "Windows registratie-informatie" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "Eigenaar:" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "Organisatie:" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "Toepassingsinstellingen" -#: winecfg.rc:149 +#: winecfg.rc:153 #, fuzzy msgid "" "Wine can mimic different Windows versions for each application. This tab is " @@ -13108,56 +13108,56 @@ "systeemwijde als applicatiespecifieke instellingen in deze tabs mogelijk te " "maken." -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "Toepassing toevoegen..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "Toepassing verwijderen" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "Windowsversie:" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "Vensterinstellingen" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Indien volledig scherm, vang de &muis automatisch af" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "Laat de window manager de vensters &decoreren" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "Laat de window manager de vensters beheren" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "Emuleer een virtueel bureaublad" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "Afmetingen:" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "Schermresolutie" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "Dit is een tekstvoorbeeld in Tahoma met puntgrootte 10" -#: winecfg.rc:185 +#: winecfg.rc:189 #, fuzzy msgid "DLL overrides" msgstr "DLL Overrides " -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -13167,57 +13167,57 @@ "dan wel \"native\" moet zijn. De instelling voor \"*\" geldt voor alle niet " "expliciet genoemde bestanden." -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "Nieuwe override voor dll:" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "&Toevoegen" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "Bestaande overrides:" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "&Bewerken..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "Override bewerken" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "Laadvolgorde" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "Inge&bouwd (Wine)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "Wi&ndows (MSWindows)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "Bui<in dan Native" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "Nati&ve dan Builtin" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "Selecteer Stationsletter" -#: winecfg.rc:226 +#: winecfg.rc:230 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Wine configuratie" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13225,95 +13225,111 @@ "Kon niet verbinden met de mount manager, de schijfconfiguratie kan niet " "worden bewerkt." -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "&Toevoegen..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "&Automatisch instellen" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "&Pad:" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "Toon uitgebreid" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "A&pparaat:" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "B&laderen..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "&Naam:" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "S&erienummer:" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "Toon \".\" bestanden" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "Aansturingsdiagnostiek" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "Standaardinstellingen" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "Uitvoer apparaat:" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "Stemuitvoer:" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "Invoer apparaat:" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "Steminvoer:" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "Geluidstest" -#: winecfg.rc:277 +#: winecfg.rc:275 +#, fuzzy +#| msgid "Wine configuration" +msgid "Speaker configuration" +msgstr "Wine configuratie" + +#: winecfg.rc:276 +#, fuzzy +#| msgid "De&vice:" +msgid "Device:" +msgstr "A&pparaat:" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 msgid "Appearance" msgstr "Uiterlijk" -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "Thema:" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "Thema installeren..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "Onderdeel:" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "Kleur:" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "Mappen" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "Verwijs naar:" @@ -13393,6 +13409,24 @@ msgid "(System default)" msgstr "(Standaardinstelling van het systeem)" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +#, fuzzy +#| msgid "graphic" +msgid "Quadraphonic" +msgstr "grafisch" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -13511,127 +13545,127 @@ "Vergeet niet om m.b.v. de knop 'Toevoegen' in de Stations tab een C station " "aan te maken!\n" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "Instellingen Achtergrond" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "Instellingen Tekst" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "Menu Achtergrond" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "Menu Tekst" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "Scrollbalk" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "Selectie Achtergrond" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "Selectie Tekst" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "Tooltip Achtergrond" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "Tooltip Tekst" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "Venster Achtergrond" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "Venster Tekst" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "Actieve Titelbalk" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "Actieve Titeltekst" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "Inactieve Titelbalk" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "Inactieve Titeltekst" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "Meldingsvenster Tekst" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "Applicatie Werkruimte" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "Vensterraamwerk" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "Actieve Rand" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "Inactieve Rand" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "Knopschaduw" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "Grijze Tekst" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "Knoppen Gemarkeerd" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "Knoppen Donkere Schaduw" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "Knoppen Licht" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "Knoppen Alternatieve Achtergrond" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "Hot-Tracked Onderdeel" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "Actieve Titelbalk Verloop" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "Inactieve Titelbalk Verloop" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "Menu Gemarkeerd" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "Menubalk" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/or.po wine-staging-1.7.36~ubuntu12.04.1/po/or.po --- wine-staging-1.7.35~ubuntu12.04.1/po/or.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/or.po 2015-02-08 20:31:28.000000000 +0000 @@ -43,8 +43,8 @@ msgid "&Modify..." msgstr "" -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "" @@ -63,7 +63,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -140,7 +140,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -525,7 +525,7 @@ msgid "Font St&yle:" msgstr "" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "" @@ -541,7 +541,7 @@ msgid "&Underline" msgstr "" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "" @@ -708,7 +708,7 @@ msgid "&to:" msgstr "" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "" @@ -2164,7 +2164,7 @@ msgid "&File name:" msgstr "" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "" @@ -3350,7 +3350,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "" @@ -6624,7 +6624,7 @@ msgid "Hyperlink Information" msgstr "" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "" @@ -7365,7 +7365,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "" @@ -7896,7 +7896,7 @@ msgid "&Open:" msgstr "" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "" @@ -7941,7 +7941,7 @@ msgid "Date deleted" msgstr "" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "" @@ -9210,7 +9210,7 @@ msgid "Digi&tal" msgstr "ଡିଜିଟାଲ (&)" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "ଅକ୍ଷରରୂପ (&F)..." @@ -12279,7 +12279,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "" -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12287,229 +12287,241 @@ "option) any later version." msgstr "" -#: winecfg.rc:137 +#: winecfg.rc:141 #, fuzzy msgid "Windows registration information" msgstr "ଅକ୍ଷରରୂପ (&F)..." -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " "or per-application settings in those tabs as well." msgstr "" -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "" -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " "application)." msgstr "" -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "" -#: winecfg.rc:193 +#: winecfg.rc:197 #, fuzzy msgid "&Edit..." msgstr "ଅକ୍ଷରରୂପ (&F)..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "" -#: winecfg.rc:226 +#: winecfg.rc:230 msgid "Drive configuration" msgstr "" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "" -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "" -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "" -#: winecfg.rc:277 -msgid "Appearance" +#: winecfg.rc:275 +msgid "Speaker configuration" +msgstr "" + +#: winecfg.rc:276 +msgid "Device:" msgstr "" #: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 +msgid "Appearance" +msgstr "" + +#: winecfg.rc:287 msgid "&Theme:" msgstr "" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "" -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "" @@ -12589,6 +12601,22 @@ msgid "(System default)" msgstr "" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +msgid "Quadraphonic" +msgstr "" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -12690,128 +12718,128 @@ "Remember to click 'Add' in the Drives tab to create one!\n" msgstr "" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "" -#: winecfg.rc:105 +#: winecfg.rc:109 #, fuzzy msgid "Active Title Bar" msgstr "ଶୀର୍ଷକ ପଟି ବିନା (&W)" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/pa.po wine-staging-1.7.36~ubuntu12.04.1/po/pa.po --- wine-staging-1.7.35~ubuntu12.04.1/po/pa.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/pa.po 2015-02-08 20:31:28.000000000 +0000 @@ -43,8 +43,8 @@ msgid "&Modify..." msgstr "" -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "" @@ -63,7 +63,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -140,7 +140,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -525,7 +525,7 @@ msgid "Font St&yle:" msgstr "" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "" @@ -541,7 +541,7 @@ msgid "&Underline" msgstr "" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "" @@ -708,7 +708,7 @@ msgid "&to:" msgstr "" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "" @@ -2164,7 +2164,7 @@ msgid "&File name:" msgstr "" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "" @@ -3350,7 +3350,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "" @@ -6624,7 +6624,7 @@ msgid "Hyperlink Information" msgstr "" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "" @@ -7365,7 +7365,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "" @@ -7896,7 +7896,7 @@ msgid "&Open:" msgstr "" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "" @@ -7941,7 +7941,7 @@ msgid "Date deleted" msgstr "" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "" @@ -9210,7 +9210,7 @@ msgid "Digi&tal" msgstr "ਡਿਜ਼ੀਟਲ(&t)" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "ਫੌਂਟ(&F)..." @@ -12279,7 +12279,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "" -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12287,229 +12287,241 @@ "option) any later version." msgstr "" -#: winecfg.rc:137 +#: winecfg.rc:141 #, fuzzy msgid "Windows registration information" msgstr "ਫੌਂਟ(&F)..." -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " "or per-application settings in those tabs as well." msgstr "" -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "" -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " "application)." msgstr "" -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "" -#: winecfg.rc:193 +#: winecfg.rc:197 #, fuzzy msgid "&Edit..." msgstr "ਫੌਂਟ(&F)..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "" -#: winecfg.rc:226 +#: winecfg.rc:230 msgid "Drive configuration" msgstr "" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "" -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "" -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "" -#: winecfg.rc:277 -msgid "Appearance" +#: winecfg.rc:275 +msgid "Speaker configuration" +msgstr "" + +#: winecfg.rc:276 +msgid "Device:" msgstr "" #: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 +msgid "Appearance" +msgstr "" + +#: winecfg.rc:287 msgid "&Theme:" msgstr "" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "" -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "" @@ -12589,6 +12601,22 @@ msgid "(System default)" msgstr "" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +msgid "Quadraphonic" +msgstr "" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -12690,128 +12718,128 @@ "Remember to click 'Add' in the Drives tab to create one!\n" msgstr "" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "" -#: winecfg.rc:105 +#: winecfg.rc:109 #, fuzzy msgid "Active Title Bar" msgstr "ਟਾਈਟਲਬਾਰ ਤੋਂ ਬਿਨਾਂ(&W)" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/pl.po wine-staging-1.7.36~ubuntu12.04.1/po/pl.po --- wine-staging-1.7.35~ubuntu12.04.1/po/pl.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/pl.po 2015-02-08 20:31:28.000000000 +0000 @@ -51,8 +51,8 @@ msgid "&Modify..." msgstr "Z&mień..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "&Usuń" @@ -71,7 +71,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -155,7 +155,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -545,7 +545,7 @@ msgid "Font St&yle:" msgstr "K&rój czcionki:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "&Rozmiar:" @@ -561,7 +561,7 @@ msgid "&Underline" msgstr "P&odkreślona" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "&Kolor:" @@ -728,7 +728,7 @@ msgid "&to:" msgstr "&do:" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "Wielkość:" @@ -2207,7 +2207,7 @@ msgid "&File name:" msgstr "&Nazwa pliku:" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "P&rzeglądaj..." @@ -3455,7 +3455,7 @@ msgid "Joysticks" msgstr "Joysticki" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "Wyłą&cz" @@ -6733,7 +6733,7 @@ msgid "Hyperlink Information" msgstr "Własności hiperłącza" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "&Typ:" @@ -7520,7 +7520,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8046,7 +8046,7 @@ msgid "&Open:" msgstr "&Otwórz:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "&Przeglądaj..." @@ -8091,7 +8091,7 @@ msgid "Date deleted" msgstr "Data usunięcia" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Pulpit" @@ -9535,7 +9535,7 @@ msgid "Digi&tal" msgstr "C&yfrowy" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Czcionka..." @@ -12923,7 +12923,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "Ustawienia Wine w %s są właśnie uaktualniane, proszę czekać..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12935,23 +12935,23 @@ "opublikowanej przez Free Software Foundation; licencji w wersji 2.1, lub " "(według własnego uznania) dowolnej późniejszej." -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "Informacje do rejestracji w Windows" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "Właściciel:" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "Organizacja:" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "Ustawienia aplikacji" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " @@ -12961,55 +12961,55 @@ "zakładce jest powiązany z zakładkami Biblioteki i Grafika - ustawienia tam " "również dotyczą wszystkich aplikacji lub tylko wybranej." -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "&Dodaj aplikację..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "&Usuń aplikację" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "&Wersja Windows:" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "Ustawienia okien" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Automatycznie przechwyć &mysz w oknach pełnoekranowych" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "Pozwól menedżerowi okien &dekorować okna" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "Pozwól menedżerowi okien &zarządzać oknami Wine" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "Emuluj wirtualny &pulpit" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "&Rozmiar pulpitu:" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "Rozdzielczość ekranu" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "Oto przykład zastosowania 10-punktowej czcionki Tahoma" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "Zastąpione biblioteki DLL" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -13019,55 +13019,55 @@ "(dostarczonej z Wine) czy natywnej (wziętej z Windows lub dostarczonej wraz " "z aplikacją)." -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "&Nowa reguła dla biblioteki:" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "Dod&aj" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "Istniejące reguły:" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "&Edycja..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "Edycja reguły" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "Kolejność wczytywania" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "Tylko &wbudowana (Wine)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "Tylko &natywna (Windows)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "Preferuj w&budowaną" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "Preferuj n&atywną" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "Wybierz literę napędu" -#: winecfg.rc:226 +#: winecfg.rc:230 msgid "Drive configuration" msgstr "Ustawienia dysków" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13075,95 +13075,111 @@ "Nieudane połączenie z programem do zarządzania montowaniem, nie można " "zmienić ustawień napędu." -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "Dod&aj..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "Wykryj &samoczynnie" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "&Ścieżka:" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "Opcje z&aawansowane >>" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "U&rządzenie:" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "Prze&glądaj..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "&Etykieta:" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "Numer s&eryjny:" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "Pokazuj pliki zaczynające się od kropki" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "Diagnostyka sterownika" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "Domyślne" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "Urządzenie wyjściowe:" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "Urządzenie wyjściowe głosu:" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "Urządzenie wejściowe:" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "Urządzenie wejściowe głosu:" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "Próba dźwięku" -#: winecfg.rc:277 +#: winecfg.rc:275 +#, fuzzy +#| msgid "Wine configuration" +msgid "Speaker configuration" +msgstr "Ustawienia Wine" + +#: winecfg.rc:276 +#, fuzzy +#| msgid "De&vice:" +msgid "Device:" +msgstr "U&rządzenie:" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 msgid "Appearance" msgstr "Wygląd" -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "Wys&trój:" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "Za&instaluj wystrój..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "El&ement:" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "K&olor:" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "Katalogi" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "Dowiązany do:" @@ -13243,6 +13259,24 @@ msgid "(System default)" msgstr "(Domyślne systemowe)" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +#, fuzzy +#| msgid "graphic" +msgid "Quadraphonic" +msgstr "grafika" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -13357,127 +13391,127 @@ "\n" "Nie zapomnij użyć 'Dodaj' w zakładce 'Dyski', aby go utworzyć!\n" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "Kontrolki - tło" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "Kontrolki - tekst" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "Tło menu" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "Tekst menu" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "Pasek przewijania" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "Tło zaznaczonego obszaru" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "Zaznaczony tekst" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "Tło podpowiedzi" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "Tekst podpowiedzi" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "Tło okna" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "Tekst okna" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "Tło nagłówka aktywnego okna" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "Tytuł aktywnego okna" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "Tło nagłówka nieaktywnego okna" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "Tytuł nieaktywnego okna" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "Tekst okien komunikatów" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "Wnętrze okna aplikacji" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "Ramka okna" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "Obramowanie aktywnego okna" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "Obramowanie nieaktywnego okna" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "Kontrolki - cień" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "Szary tekst" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "Kontrolki - podświetlenie" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "Kontrolki - głębszy cień" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "Kontrolki - jaśniejszy cień" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "Kontrolki - alternatywne tło" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "Śledzony element" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "Gradient nagłówka aktywnego okna" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "Gradient nagłówka nieaktywnego okna" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "Podświetlone menu" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "Pasek menu" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/pt_BR.po wine-staging-1.7.36~ubuntu12.04.1/po/pt_BR.po --- wine-staging-1.7.35~ubuntu12.04.1/po/pt_BR.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/pt_BR.po 2015-02-08 20:31:28.000000000 +0000 @@ -47,8 +47,8 @@ msgid "&Modify..." msgstr "&Modificar..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "&Remover" @@ -67,7 +67,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -151,7 +151,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -542,7 +542,7 @@ msgid "Font St&yle:" msgstr "&Estilo da Fonte:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "Taman&ho:" @@ -558,7 +558,7 @@ msgid "&Underline" msgstr "&Sublinhado" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "&Cor:" @@ -725,7 +725,7 @@ msgid "&to:" msgstr "&até:" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "Ta&manho:" @@ -2205,7 +2205,7 @@ msgid "&File name:" msgstr "Nome do &arquivo:" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "&Navegar..." @@ -3451,7 +3451,7 @@ msgid "Joysticks" msgstr "Controles" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "&Desativar" @@ -6730,7 +6730,7 @@ msgid "Hyperlink Information" msgstr "Informação do Hiperlink" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "&Tipo:" @@ -7517,7 +7517,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "ppp" @@ -8044,7 +8044,7 @@ msgid "&Open:" msgstr "&Abrir:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "&Procurar..." @@ -8089,7 +8089,7 @@ msgid "Date deleted" msgstr "Data de exclusão" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Área de Trabalho" @@ -9541,7 +9541,7 @@ msgid "Digi&tal" msgstr "Digi&tal" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Fonte..." @@ -12942,7 +12942,7 @@ msgstr "" "A configuração do Wine em %s está sendo atualizada, por favor, aguarde..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12954,23 +12954,23 @@ "Software Foundation; tanto na versão 2.1 desta licença ou (à sua escolha) " "qualquer versão posterior." -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "Informações de registro do Windows" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "&Proprietário:" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "&Organização:" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "Configurações de Aplicativo" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " @@ -12980,55 +12980,55 @@ "aba é ligada às abas Bibliotecas e Gráficos para permitir alterar " "configurações globais ou por aplicativo também nessas abas." -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "&Adicionar aplicativo..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "&Remover aplicativo" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "Versão do &Windows:" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "Configurações de Janela" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Capturar o &mouse automaticamente em janelas em tela cheia" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "Permitir que o gerenciador de janelas &decore as janelas" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "Permitir que o gerenciador de janelas &controle as janelas" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "&Emular uma área de trabalho virtual" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "Tamanho da Tela:" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "Resolução da Tela" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "Este é um texto exemplo usando Tahoma 10 pontos" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "Substituições de DLL" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -13038,55 +13038,55 @@ "embutidas (fornecidas pelo Wine) ou nativas (tiradas do Windows ou " "fornecidas pelo aplicativo)." -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "&Nova substituição para a biblioteca:" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "&Adicionar" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "Substituições e&xistentes:" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "&Editar..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "Editar Substituição" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "Ordem de Carregamento" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "&Embutida (Wine)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "&Nativa (Windows)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "E&mbutida depois Nativa" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "Nati&va depois Embutida" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "Selecione a Letra" -#: winecfg.rc:226 +#: winecfg.rc:230 msgid "Drive configuration" msgstr "Configuração de unidades" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13094,95 +13094,111 @@ "Falha de conexão com o gerenciador de montagem, a configuração da unidade " "não pôde ser alterada." -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "&Adicionar..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "Auto &Detectar" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "&Caminho:" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "&Avançado" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "Dispositi&vo:" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "Nave&gar..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "&Rótulo:" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "&Serial:" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "&Mostrar arquivos com ponto" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "Diagnósticos de driver" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "Dispositivos Padrões" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "Saída:" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "Saída de voz:" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "Entrada:" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "Entrada de voz:" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "&Testar Som" -#: winecfg.rc:277 +#: winecfg.rc:275 +#, fuzzy +#| msgid "Wine configuration" +msgid "Speaker configuration" +msgstr "Configuração do Wine" + +#: winecfg.rc:276 +#, fuzzy +#| msgid "De&vice:" +msgid "Device:" +msgstr "Dispositi&vo:" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 msgid "Appearance" msgstr "Aparência" -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "&Tema:" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "&Instalar tema..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "It&em:" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "C&or:" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "Pastas" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "&Atalho para:" @@ -13262,6 +13278,24 @@ msgid "(System default)" msgstr "(Padrão do sistema)" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +#, fuzzy +#| msgid "graphic" +msgid "Quadraphonic" +msgstr "gráfico" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -13376,127 +13410,127 @@ "\n" "Lembre-se de clicar em 'Adicionar' na aba Unidades para criar uma!\n" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "Fundo do Botão" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "Texto do Botão" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "Fundo do Menu" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "Texto do Menu" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "Barra de Rolagem" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "Fundo de Seleção" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "Texto de Seleção" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "Fundo da Dica" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "Texto da Dica" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "Fundo da Janela" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "Texto da Janela" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "Barra de Título Ativa" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "Texto de Título Ativo" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "Barra de Título Inativa" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "Texto de Título Inativo" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "Texto da Caixa de Mensagens" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "Área do Aplicativo" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "Corpo da Janela" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "Borda Ativa" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "Borda Inativa" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "Sombra dos Botões" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "Texto Inativo" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "Realce do Botão" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "Sombra Escura do Botão" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "Luz do Botão" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "Fundo Alternativo do Botão" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "Elemento Ativo" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "Gradiente da Barra Ativa" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "Gradiente da Barra Inativa" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "Realce de Menu" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "Barra de Menu" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/pt_PT.po wine-staging-1.7.36~ubuntu12.04.1/po/pt_PT.po --- wine-staging-1.7.35~ubuntu12.04.1/po/pt_PT.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/pt_PT.po 2015-02-08 20:31:28.000000000 +0000 @@ -47,8 +47,8 @@ msgid "&Modify..." msgstr "&Modificar..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "&Remover" @@ -67,7 +67,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -151,7 +151,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -542,7 +542,7 @@ msgid "Font St&yle:" msgstr "&Estilo do Tipo de Letra:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "&Tamanho:" @@ -558,7 +558,7 @@ msgid "&Underline" msgstr "&Sublinhado" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "&Cor:" @@ -725,7 +725,7 @@ msgid "&to:" msgstr "&até:" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "Tama&nho:" @@ -2206,7 +2206,7 @@ msgid "&File name:" msgstr "&Nome do ficheiro:" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "P&rocurar..." @@ -3450,7 +3450,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "&Desactivar" @@ -6724,7 +6724,7 @@ msgid "Hyperlink Information" msgstr "Informação da Hiperligação" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "&Tipo:" @@ -7486,7 +7486,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8014,7 +8014,7 @@ msgid "&Open:" msgstr "&Abrir:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "&Procurar..." @@ -8059,7 +8059,7 @@ msgid "Date deleted" msgstr "Data de exclusão" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Área de trabalho" @@ -9509,7 +9509,7 @@ msgid "Digi&tal" msgstr "Digi&tal" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "Tipo de &Letra..." @@ -12899,7 +12899,7 @@ msgstr "" "A configuração do Wine em %s está a ser actualizada, por favor aguarde..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12911,23 +12911,23 @@ "Programas Livres; também a versão 2.1 da Licença, ou (na sua opinião) " "qualquer versão posterior." -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "Informações de registro do Windows" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "&Proprietário:" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "&Organização:" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "Definições da aplicação" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " @@ -12937,55 +12937,55 @@ "Esta aba está ligada às abas de Bibliotecas e Gráficos para permitir alterar " "definições por aplicação ou no sistema também nessas abas." -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "&Adicionar aplicação..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "&Remover aplicação" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "Versão do &Windows:" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "Definições da Janela" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Captura automaticamente o &rato em janelas de ecrã-completo" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "Permite ao gestor de janelas &decorar as janelas" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "Permite ao &gestor de janelas controlar as janelas" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "Emular um ecrã &virtual" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "Tamanho do &ecrã:" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "Resolução do Ecrã" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "Este é um texto exemplo que usa o tipo de letra Tahoma 10 pontos" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "Substituição de DLL" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12995,57 +12995,57 @@ "para serem embutidas (fornecido pelo Wine) ou nativas (tiradas do Windows ou " "fornecidas pela aplicação)." -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "&Nova substituição para:" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "&Adicionar" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "Substituições E&xistentes:" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "&Editar..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "Editar Substituição" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "Ordem de Carregamento" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "Em&butida (Wine)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "&Nativa (Windows)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "E&mbutida depois Nativa" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "Nati&va depois Embutida" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "Seleccione a letra da drive" -#: winecfg.rc:226 +#: winecfg.rc:230 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Configuração Wine" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13053,95 +13053,111 @@ "Falhou a ligação ao gestor de unidades, a configuração da unidade não pode " "ser editada." -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "&Adicionar..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "Auto&detectar" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "&Localização:" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "&Avançado" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "Dispositi&vo:" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "P&rocurar..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "&Nome:" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "Nº S&erie:" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "Mostrar &ficheiros com pontos" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "Diagnósticos do controlador" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "Padrões" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "Dispositivo de saída:" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "Dispositivo de saída de voz:" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "Dispositivo de entrada:" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "Dispositivo de entrada de voz:" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "&Testar Som" -#: winecfg.rc:277 +#: winecfg.rc:275 +#, fuzzy +#| msgid "Wine configuration" +msgid "Speaker configuration" +msgstr "Configuração Wine" + +#: winecfg.rc:276 +#, fuzzy +#| msgid "De&vice:" +msgid "Device:" +msgstr "Dispositi&vo:" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 msgid "Appearance" msgstr "Aparência" -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "&Tema:" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "&Instalar tema..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "It&em:" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "C&or:" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "Pastas" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "&Ligar a:" @@ -13221,6 +13237,24 @@ msgid "(System default)" msgstr "(Padrão do sistema)" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +#, fuzzy +#| msgid "graphic" +msgid "Quadraphonic" +msgstr "gráfico" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -13336,127 +13370,127 @@ "Certifique-se que clica em 'Adicionar' no separador Unidades para criar " "uma!\n" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "Fundo dos Controlos" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "Texto dos Controlos" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "Fundo do Menu" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "Texto do Menu" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "Barra de Rolagem" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "Fundo de Selecção" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "Texto de Selecção" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "Fundo das Dicas" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "Texto das Dicas" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "Fundo das Janelas" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "Texto das Janelas" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "Barra de Título Activa" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "Texto de Título Activo" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "Barra de Título Inactiva" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "Texto de Título Inactivo" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "Texto da Caixa de Mensagem" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "Espaço de trabalho de aplicações" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "Quandro de janela" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "Margem ativa" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "Margem inativa" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "Controla sombra" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "Texto cinzento" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "Controla realce" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "Controla sombra escura" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "Controla luz" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "Controla fundo alternativo" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "Gradiente da barra de título ativa" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "Gradiente da barra de título inativa" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "Realce de menu" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "Barra de menu" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/rm.po wine-staging-1.7.36~ubuntu12.04.1/po/rm.po --- wine-staging-1.7.35~ubuntu12.04.1/po/rm.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/rm.po 2015-02-08 20:31:28.000000000 +0000 @@ -45,8 +45,8 @@ msgid "&Modify..." msgstr "Capchar" -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 #, fuzzy msgid "&Remove" msgstr "&Annotaziun..." @@ -67,7 +67,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -145,7 +145,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -538,7 +538,7 @@ msgid "Font St&yle:" msgstr "" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "" @@ -554,7 +554,7 @@ msgid "&Underline" msgstr "" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "" @@ -722,7 +722,7 @@ msgid "&to:" msgstr "" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "" @@ -2190,7 +2190,7 @@ msgid "&File name:" msgstr "&Datoteca" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "" @@ -3378,7 +3378,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "" @@ -6673,7 +6673,7 @@ msgid "Hyperlink Information" msgstr "INFUORMAZIUN" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "" @@ -7420,7 +7420,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "" @@ -7955,7 +7955,7 @@ msgid "&Open:" msgstr "&Rivir" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "" @@ -8000,7 +8000,7 @@ msgid "Date deleted" msgstr "" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "" @@ -9277,7 +9277,7 @@ msgid "Digi&tal" msgstr "" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "" @@ -12367,7 +12367,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "" -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12375,237 +12375,250 @@ "option) any later version." msgstr "" -#: winecfg.rc:137 +#: winecfg.rc:141 #, fuzzy msgid "Windows registration information" msgstr "INFUORMAZIUN" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "" -#: winecfg.rc:140 +#: winecfg.rc:144 #, fuzzy msgid "Organi&zation:" msgstr "INFUORMAZIUN" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " "or per-application settings in those tabs as well." msgstr "" -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "" -#: winecfg.rc:154 +#: winecfg.rc:158 #, fuzzy msgid "&Remove application" msgstr "&Annotaziun..." -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:185 +#: winecfg.rc:189 #, fuzzy msgid "DLL overrides" msgstr "&Lavurar" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " "application)." msgstr "" -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "" -#: winecfg.rc:193 +#: winecfg.rc:197 #, fuzzy msgid "&Edit..." msgstr "&Lavurar" -#: winecfg.rc:199 +#: winecfg.rc:203 #, fuzzy msgid "Edit Override" msgstr "&Lavurar" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "" -#: winecfg.rc:203 +#: winecfg.rc:207 #, fuzzy msgid "&Builtin (Wine)" msgstr "I&nfuormaziuns" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "" -#: winecfg.rc:226 +#: winecfg.rc:230 #, fuzzy msgid "Drive configuration" msgstr "INFUORMAZIUN" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "" -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "" -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "" -#: winecfg.rc:262 +#: winecfg.rc:266 #, fuzzy msgid "Output device:" msgstr "&Datoteca" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "" -#: winecfg.rc:277 -msgid "Appearance" +#: winecfg.rc:275 +#, fuzzy +msgid "Speaker configuration" +msgstr "INFUORMAZIUN" + +#: winecfg.rc:276 +msgid "Device:" msgstr "" #: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 +msgid "Appearance" +msgstr "" + +#: winecfg.rc:287 msgid "&Theme:" msgstr "" -#: winecfg.rc:280 +#: winecfg.rc:289 #, fuzzy msgid "&Install theme..." msgstr "&Annotaziun..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "" @@ -12687,6 +12700,22 @@ msgid "(System default)" msgstr "" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +msgid "Quadraphonic" +msgstr "" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -12788,127 +12817,127 @@ "Remember to click 'Add' in the Drives tab to create one!\n" msgstr "" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/ro.po wine-staging-1.7.36~ubuntu12.04.1/po/ro.po --- wine-staging-1.7.35~ubuntu12.04.1/po/ro.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/ro.po 2015-02-08 20:31:28.000000000 +0000 @@ -46,8 +46,8 @@ msgid "&Modify..." msgstr "&Modifică..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "&Elimină" @@ -66,7 +66,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -144,7 +144,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -525,7 +525,7 @@ msgid "Font St&yle:" msgstr "&Stil font:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "Mărime:" @@ -541,7 +541,7 @@ msgid "&Underline" msgstr "&Subliniat" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "Culoare:" @@ -708,7 +708,7 @@ msgid "&to:" msgstr "&la:" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "Mărime:" @@ -2185,7 +2185,7 @@ msgid "&File name:" msgstr "Nume &fișier:" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "&Navighează..." @@ -3419,7 +3419,7 @@ msgid "Joysticks" msgstr "Joystick-uri" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "&Dezactivează" @@ -6944,7 +6944,7 @@ msgid "Hyperlink Information" msgstr "Informații de hiperlegătură" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "&Tipul:" @@ -7742,7 +7742,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8269,7 +8269,7 @@ msgid "&Open:" msgstr "&Deschide:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "Navi&gare..." @@ -8314,7 +8314,7 @@ msgid "Date deleted" msgstr "Data ștergerii" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 #, fuzzy msgctxt "display name" msgid "Desktop" @@ -9768,7 +9768,7 @@ msgid "Digi&tal" msgstr "Digi&tal" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Font..." @@ -13107,7 +13107,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "Actualizez configurația Wine în %s, așteptați..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -13115,23 +13115,23 @@ "option) any later version." msgstr "" -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "Informații de înregistrare Windows" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "&Deținătorul:" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "Organi&zația:" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "Setări pentru aplicații" -#: winecfg.rc:149 +#: winecfg.rc:153 #, fuzzy msgid "" "Wine can mimic different Windows versions for each application. This tab is " @@ -13143,55 +13143,55 @@ "„Setări de fereastră” și permite schimbarea setărilor globale sau pe " "aplicație în această subfereastră." -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "&Adaugă o aplicație..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "&Șterge aplicația" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "Versiunea &Windows:" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "Setări de fereastră" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "Permite administratorului de ferestre să &decoreze ferestrele" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "Permite administratorului de ferestre să &administreze ferestrele" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "&Emulează un ecran virtual" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "Mărime ecran:" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "Rezoluție ecran" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "Suprascrieri DLL" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -13200,57 +13200,57 @@ "DLL-urile (Dynamic Link Libraries) pot fi setate individual ca builtin " "(furnizate de Wine) sau native (din Windows sau furnizate de aplicație)." -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "Suprascriere nouă pentru librăria:" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "&Adaugă" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "Suprascrieri existente:" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "&Editează..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "Editează suprascrierea" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "Ordinea de încărcare" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "&Builtin (Wine)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "&Native (Windows)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "Bui<in apoi Native" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "Nati&ve apoi Builtin" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "Selecția literei de disc" -#: winecfg.rc:226 +#: winecfg.rc:230 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Setări Wine" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13258,95 +13258,111 @@ "A eșuat conectarea la managerul de montare, configurația discurilor nu poate " "fi schimbată." -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "&Adaugă..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "&Detectează" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "&Calea:" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "Afișează opțiunile a&vansate" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "Dispoziti&v:" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "Navighează..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "&Etichetă:" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "N&umăr de serie:" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "Afișează &fișierele ascunse" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "&Testează sunetul" -#: winecfg.rc:277 +#: winecfg.rc:275 +#, fuzzy +#| msgid "Wine configuration" +msgid "Speaker configuration" +msgstr "Setări Wine" + +#: winecfg.rc:276 +#, fuzzy +#| msgid "De&vice:" +msgid "Device:" +msgstr "Dispoziti&v:" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 msgid "Appearance" msgstr "Aspect" -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "Tematică:" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "Instalează o tematică..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "Element:" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "Culoare:" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "Dosare" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "Leagă la:" @@ -13426,6 +13442,24 @@ msgid "(System default)" msgstr "(Setare implicită)" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +#, fuzzy +#| msgid "graphic" +msgid "Quadraphonic" +msgstr "grafică" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -13543,127 +13577,127 @@ "\n" "Nu uitați să o adăugați în subfereastra „Mapare de discuri”!\n" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "Fundal controale" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "Text controale" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "Fundal meniu" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "Text meniu" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "Bare de defilare" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "Fundal selecție" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "Text selecție" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "Fundal baloane de ajutor" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "Text baloane de ajutor" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "Fundal fereastră" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "Text fereastră" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "Bară de titlu activă" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "Text bară de titlu activă" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "Bară de titlu inactivă" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "Text bară de titlu inactivă" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "Text casetă de mesaje" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "Spațiul de lucru al aplicației" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "Cadru de fereastră" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "Margini active" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "Margini inactive" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "Umbră pentru controale" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "Text gri" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "Evidențiere controale" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "Umbră întunecată pentru controale" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "Lumină pentru controale" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "Fundal alternativ pentru controale" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "Element cu urmărire fierbinte" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "Gradient bară de titlu activă" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "Gradient bară de titlu inactivă" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "Evidențiere meniu" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "Bară de meniu" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/ru.po wine-staging-1.7.36~ubuntu12.04.1/po/ru.po --- wine-staging-1.7.35~ubuntu12.04.1/po/ru.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/ru.po 2015-02-08 20:31:28.000000000 +0000 @@ -47,8 +47,8 @@ msgid "&Modify..." msgstr "&Изменить..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "&Удалить" @@ -67,7 +67,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -152,7 +152,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -541,7 +541,7 @@ msgid "Font St&yle:" msgstr "&Начертание:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "Размер:" @@ -557,7 +557,7 @@ msgid "&Underline" msgstr "Под&чёркнутый" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "Цвет:" @@ -724,7 +724,7 @@ msgid "&to:" msgstr "&до:" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "Размер:" @@ -2201,7 +2201,7 @@ msgid "&File name:" msgstr "Имя &файла:" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "&Обзор..." @@ -3445,7 +3445,7 @@ msgid "Joysticks" msgstr "Джойстики" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "&Отключить" @@ -6722,7 +6722,7 @@ msgid "Hyperlink Information" msgstr "Информация о ссылке" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "&Тип:" @@ -7507,7 +7507,7 @@ msgid "b" msgstr "бит" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "т/дюйм" @@ -8034,7 +8034,7 @@ msgid "&Open:" msgstr "&Открыть:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "&Обзор..." @@ -8079,7 +8079,7 @@ msgid "Date deleted" msgstr "Время удаления" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Рабочий стол" @@ -9502,7 +9502,7 @@ msgid "Digi&tal" msgstr "&Цифровые" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Шрифт..." @@ -12875,7 +12875,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "Выполняется обновление конфигурации Wine %s. Пожалуйста, подождите..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12887,23 +12887,23 @@ "General Public License версии 2.1 или более поздней по вашему выбору. " "Лицензия опубликована Free Software Foundation." -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "Регистрационная информация Windows" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "Имя:" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "Организация:" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "Настройка приложений" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " @@ -12914,55 +12914,55 @@ "позволяет изменять настройки в этих вкладках как для определённого " "приложения, так и глобально." -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "&Добавить приложение..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "&Удалить приложение" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "&Версия Windows:" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "Настройки окон" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Автоматически &удерживать мышь в полноэкранных окнах" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "Разрешить менеджеру окон &декорировать окна" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "Разрешить менеджеру окон управлять &окнами Wine" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "&Эмулировать виртуальный рабочий стол" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "&Рабочий стол:" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "Разрешение экрана" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "Пример текста, шрифт Tahoma 10 пунктов" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "Замещения DLL" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12971,55 +12971,55 @@ "Здесь указывается, какую динамически подключаемую библиотеку (DLL) " "использовать: встроенную в Wine или стороннюю (из Windows)." -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "Новое замещение для библиотеки:" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "&Установить" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "Существующие замещения:" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "&Изменить..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "Изменить замещение" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "Порядок загрузки" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "&Встроенная (Wine)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "С&торонняя (Windows)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "В&строенная, затем сторонняя" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "Ст&оронняя, затем встроенная" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "Выберите букву диска" -#: winecfg.rc:226 +#: winecfg.rc:230 msgid "Drive configuration" msgstr "Настройка дисков" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13027,95 +13027,107 @@ "Невозможно соединиться с mount manager! Конфигурация дисков не будет " "редактироваться." -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "&Добавить..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "&Автоопределение" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "&Путь:" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "&Дополнительно" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "У&стройство:" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "Об&зор..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "&Метка:" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "Сер. &номер:" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "Показывать файлы, начинающиеся с точки" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "Диагностика драйвера" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "По умолчанию" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "Устройство вывода:" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "Уст-во речевого вывода:" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "Устройство ввода:" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "Уст-во речевого ввода:" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "&Проверить звук" -#: winecfg.rc:277 +#: winecfg.rc:275 +msgid "Speaker configuration" +msgstr "Конфигурация каналов" + +#: winecfg.rc:276 +msgid "Device:" +msgstr "Устройство:" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "Каналы:" + +#: winecfg.rc:286 msgid "Appearance" msgstr "Внешний вид" -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "&Тема:" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "Установить тему..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "Элемент:" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "Цвет:" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "Папки" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "Привязать к:" @@ -13185,7 +13197,7 @@ #: winecfg.rc:85 msgid "(None)" -msgstr "(Нет)" +msgstr "(нет)" #: winecfg.rc:86 msgid "Audio test failed!" @@ -13193,7 +13205,23 @@ #: winecfg.rc:88 msgid "(System default)" -msgstr "(По умолчанию)" +msgstr "(по умолчанию)" + +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "Объёмное звучание 5.1" + +#: winecfg.rc:90 +msgid "Quadraphonic" +msgstr "Квадрофония" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "Стерео" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "Моно" #: winecfg.rc:54 msgid "" @@ -13309,127 +13337,127 @@ "\n" "Не забудьте его создать!\n" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "Элементы управления - фон" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "Элементы управления - текст" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "Меню - фон" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "Меню - текст" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "Полоса прокрутки" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "Выделение - фон" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "Выделение - текст" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "Подсказка - фон" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "Подсказка - текст" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "Содержимое окна - фон" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "Содержимое окна - текст" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "Активное окно" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "Активное окно - текст" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "Пассивное окно" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "Пассивное окно - текст" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "Окно сообщения - текст" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "Содержимое окна MDI - фон" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "Окно - рамка" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "Активное окно - рамка" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "Пассивное окно - рамка" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "Элементы управления - тень" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "Недоступный элемент" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "Элементы управления - светлая рамка" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "Элементы управления - тёмная тень" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "Элементы управления - свет" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "Элементы управления - фон 2" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "Ссылка, Подсветка" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "Градиент активного окна" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "Градиент пассивного окна" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "Плоское меню - подсветка" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "Плоское меню - фон" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/sk.po wine-staging-1.7.36~ubuntu12.04.1/po/sk.po --- wine-staging-1.7.35~ubuntu12.04.1/po/sk.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/sk.po 2015-02-08 20:31:28.000000000 +0000 @@ -52,8 +52,8 @@ msgid "&Modify..." msgstr "&Zmeniť..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "&Odstrániť" @@ -72,7 +72,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -157,7 +157,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -559,7 +559,7 @@ msgid "Font St&yle:" msgstr "Š&týl písma:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "&Veľkosť:" @@ -575,7 +575,7 @@ msgid "&Underline" msgstr "&Podčiarknuté" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "&Farba:" @@ -742,7 +742,7 @@ msgid "&to:" msgstr "&do:" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "&Veľkosť:" @@ -2205,7 +2205,7 @@ msgid "&File name:" msgstr "&Súbor:" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "P&rechádzaj..." @@ -3383,7 +3383,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "&Zakázať" @@ -6722,7 +6722,7 @@ msgid "Hyperlink Information" msgstr "Informácie" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 #, fuzzy msgid "&Type:" msgstr "Typ" @@ -7497,7 +7497,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "" @@ -8049,7 +8049,7 @@ msgid "&Open:" msgstr "" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "" @@ -8094,7 +8094,7 @@ msgid "Date deleted" msgstr "" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 #, fuzzy msgctxt "display name" msgid "Desktop" @@ -9387,7 +9387,7 @@ msgid "Digi&tal" msgstr "Digi&tálne" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "" @@ -12513,7 +12513,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "Wine konfigurácia sa v %s aktualizuje, prosím počkajte..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12521,23 +12521,23 @@ "option) any later version." msgstr "" -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "Informácie o registrácii Windows" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "&Vlastník:" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "Organi&zácia:" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "Nastavenia aplikácie" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " @@ -12547,55 +12547,55 @@ "prepojená s Knižnice a Grafika kartami aby Vám dovolila zmeniť systémovo " "alebo pre konkrétnu aplikáciu nastavenia v týchto kartách." -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "&Pridať aplikáciu..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "&Odstrániť aplikáciu" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "&Verzia Windows:" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "Nastavenia okna" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "&Vytvoriť virtuálnu plochu" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "Veľkosť &plochy:" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "Rozlíšenie obrazovky" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "DLL prepísania" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12605,152 +12605,167 @@ "(poskytnuté z Wine) alebo natívne (prevziate z Windows alebo poskytnuté " "aplikáciou)." -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "&Nové prepísanie pre knižnicu:" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "&Pridať" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "Existujúce &prepísania:" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "&Upraviť..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "Upraviť prepísanie" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "Poradie načítavania" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "&Vstavané (Wine)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "&Natívne (Windows)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "Vst&avané potom natívne" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "Natí&vne potom vstavané" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "" -#: winecfg.rc:226 +#: winecfg.rc:230 #, fuzzy msgid "Drive configuration" msgstr "Informácie" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "&Pridať..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "Automatická &detekcia" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "&Cesta:" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "Ukáž &pokročilé" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "Za&riadenie:" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "Pre&chádzať..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "&Označenie:" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "Diagnostika ovládača" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "Predvolené" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "Výstupné zariadenie:" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "Hlasové výstupné zariadenie:" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "Vstupné zariadenie:" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "Hlasové vstupné zariadenie:" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "&Skúška zvuku" -#: winecfg.rc:277 +#: winecfg.rc:275 +#, fuzzy +msgid "Speaker configuration" +msgstr "Informácie" + +#: winecfg.rc:276 +#, fuzzy +#| msgid "De&vice:" +msgid "Device:" +msgstr "Za&riadenie:" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 msgid "Appearance" msgstr "Vzhľad" -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "" -#: winecfg.rc:280 +#: winecfg.rc:289 #, fuzzy msgid "&Install theme..." msgstr "&Skomentovať..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "" -#: winecfg.rc:293 +#: winecfg.rc:302 #, fuzzy msgid "Folders" msgstr "Systémové adresáre" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "" @@ -12834,6 +12849,22 @@ msgid "(System default)" msgstr "Systémová cesta" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +msgid "Quadraphonic" +msgstr "" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -12938,128 +12969,128 @@ "Remember to click 'Add' in the Drives tab to create one!\n" msgstr "" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "Pozadie okna" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "" -#: winecfg.rc:105 +#: winecfg.rc:109 #, fuzzy msgid "Active Title Bar" msgstr "&Bez titulkového pruhu" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/sl.po wine-staging-1.7.36~ubuntu12.04.1/po/sl.po --- wine-staging-1.7.35~ubuntu12.04.1/po/sl.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/sl.po 2015-02-08 20:31:28.000000000 +0000 @@ -52,8 +52,8 @@ msgid "&Modify..." msgstr "&Spremeni ..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "&Odstrani" @@ -72,7 +72,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -156,7 +156,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -558,7 +558,7 @@ msgid "Font St&yle:" msgstr "Slog pi&save:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "&Velikost:" @@ -574,7 +574,7 @@ msgid "&Underline" msgstr "P&odčrtano" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "&Barva:" @@ -741,7 +741,7 @@ msgid "&to:" msgstr "&do:" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "V&elikost:" @@ -2220,7 +2220,7 @@ msgid "&File name:" msgstr "&Ime datoteke:" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "B&rskaj ..." @@ -3472,7 +3472,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "&Onemogoči" @@ -6775,7 +6775,7 @@ msgid "Hyperlink Information" msgstr "Lastnosti hiperpovezave" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "&Vrsta:" @@ -7631,7 +7631,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8158,7 +8158,7 @@ msgid "&Open:" msgstr "&Odpri:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "&Brskaj ..." @@ -8203,7 +8203,7 @@ msgid "Date deleted" msgstr "Datum je bil izbrisan" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Namizje" @@ -9632,7 +9632,7 @@ msgid "Digi&tal" msgstr "Digi&talna ura" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Pisava ..." @@ -13038,7 +13038,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "Nastavitve programa Wine v %s se posodabljajo, prosimo počakajte ..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -13050,23 +13050,23 @@ "Software Foundation Ali pod različico licence 2.1 ali (po vaši želji) pod " "katerokoli novejšo različico." -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "Podatki o registraciji Windows" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "&Lastnik:" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "Organi&zacija:" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "Nastavitve programov" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " @@ -13077,55 +13077,55 @@ "spreminjanje nastavitev v teh dveh zavihkih tako za ves sistem kot za " "posamezne programe." -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "&Dodaj program ..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "&Odstrani program" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "&Različica Windows:" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "Nastavitve okna" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Samodejno zajemi &miško v celozaslonskih oknih" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "Dovoli upravljalniku oken, da okra&si okna" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "Dovoli upravljalniku &oken, da upravlja z Wine-ovimi okni" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "Posnemaj navidezno &namizje" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "&Velikost namizja:" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "Ločljivost zaslona" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "Vzorčno besedilo, napisano s pisavo Tahoma velikosti 10 točk" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "Prepisi DLL" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -13135,57 +13135,57 @@ "izviona ('native'; vzeta iz Windows ali nameščena skupaj s programom za " "Windows)." -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "&Nov prepis za knjižnico:" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "&Dodaj" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "Obstoječi &prepisi:" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "&Uredi ..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "Uredi prepis" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "Red nalaganja" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "&Vgrajena (Wine)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "&Izvorna (Windows)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "Vgra&jena, izvorna" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "I&zvorna, vgrajena" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "Izberite črko pogona" -#: winecfg.rc:226 +#: winecfg.rc:230 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Nastavitve Wine" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13193,95 +13193,111 @@ "Napaka med povezovanjem z upravljalnikom priklopov (mount manager); " "nastavitev pogonov ne bo mogoče urejati." -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "&Dodaj ..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "&Samodejno zaznaj" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "&Pot:" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "Pokaži &napredno" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "Na&prava:" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "&Brskaj ..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "&Oznaka:" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "Zapor&edna št.:" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "Pokaži &datoteke s piko" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "Diagnostika gonilnikov" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "Privzeto" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "Izhodna naprava:" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "Naprava zvočnega izhoda:" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "Vhodna naprava:" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "Naprava zvočnega vhoda:" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "&Preizkusi zvok" -#: winecfg.rc:277 +#: winecfg.rc:275 +#, fuzzy +#| msgid "Wine configuration" +msgid "Speaker configuration" +msgstr "Nastavitve Wine" + +#: winecfg.rc:276 +#, fuzzy +#| msgid "De&vice:" +msgid "Device:" +msgstr "Na&prava:" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 msgid "Appearance" msgstr "Videz" -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "&Tema:" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "&Namesti temo ..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "P&redmet:" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "B&arva:" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "Mape" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "&Poveži z:" @@ -13361,6 +13377,24 @@ msgid "(System default)" msgstr "(Sistemsko privzeto)" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +#, fuzzy +#| msgid "graphic" +msgid "Quadraphonic" +msgstr "grafika" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -13478,127 +13512,127 @@ "\n" "Če ga želite dodati, uporabite gumb 'Dodaj' v zavihku Pogoni!\n" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "Ozadje nadzornikov" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "Besedilo nadzornikov" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "Ozadje menija" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "Besedilo menija" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "Drsnik" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "Ozadje izbire" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "Besedilo izbire" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "Ozadje orodnega namiga" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "Besedilo orodnega namiga" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "Ozadje okna" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "Besedilo okna" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "Dejavna nazivna vrstica" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "Besedilo dejavnega naziva" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "Nedejavna nazivna vrstica" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "Besedilno nedejavnega naziva" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "Sporočilo polja z besedilom" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "Delovni prostor programa" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "Okvir okna" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "Dejaven rob" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "Nedejaven rob" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "Senca nadzornikov" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "Sivo besedilo" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "Poudarjanje nadzornikov" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "Temna senca nadzornikov" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "Svetlost nadzornikov" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "Nadomestno ozadje nadzornikov" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "Predmet s hitrim sledenjem" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "Preliv dejavne nazivne vrstice" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "Preliv nedejavne nazivne vrstice" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "Poudarjanje menija" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "Menijska vrstica" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/sr_RS@cyrillic.po wine-staging-1.7.36~ubuntu12.04.1/po/sr_RS@cyrillic.po --- wine-staging-1.7.35~ubuntu12.04.1/po/sr_RS@cyrillic.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/sr_RS@cyrillic.po 2015-02-08 20:31:28.000000000 +0000 @@ -47,8 +47,8 @@ msgid "&Modify..." msgstr "&Измени..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "&Уклони" @@ -67,7 +67,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -150,7 +150,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -546,7 +546,7 @@ msgid "Font St&yle:" msgstr "&Стил фонта:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "&Величина:" @@ -562,7 +562,7 @@ msgid "&Underline" msgstr "&Подвуци" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "&Боја:" @@ -731,7 +731,7 @@ msgid "&to:" msgstr "&до:" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "&Величина:" @@ -2226,7 +2226,7 @@ msgid "&File name:" msgstr "&Датотека" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 #, fuzzy msgid "B&rowse..." msgstr "" @@ -3467,7 +3467,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 #, fuzzy msgid "&Disable" msgstr "табела" @@ -7001,7 +7001,7 @@ msgid "Hyperlink Information" msgstr "Подаци о хипервези" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "&Врста:" @@ -7830,7 +7830,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "тпи" @@ -8372,7 +8372,7 @@ msgid "&Open:" msgstr "&Отвори:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "&Разгледај..." @@ -8417,7 +8417,7 @@ msgid "Date deleted" msgstr "Датум брисања" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 #, fuzzy msgctxt "display name" msgid "Desktop" @@ -9734,7 +9734,7 @@ msgid "Digi&tal" msgstr "&Дигитални" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Фонт..." @@ -12977,7 +12977,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "Wine поставке у %s се ажурирају. Молимо, сачекајте..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12985,176 +12985,176 @@ "option) any later version." msgstr "" -#: winecfg.rc:137 +#: winecfg.rc:141 #, fuzzy msgid "Windows registration information" msgstr "Подаци" -#: winecfg.rc:138 +#: winecfg.rc:142 #, fuzzy msgid "&Owner:" msgstr "Власник" -#: winecfg.rc:140 +#: winecfg.rc:144 #, fuzzy msgid "Organi&zation:" msgstr "анимација" -#: winecfg.rc:148 +#: winecfg.rc:152 #, fuzzy msgid "Application settings" msgstr "Програми" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " "or per-application settings in those tabs as well." msgstr "" -#: winecfg.rc:153 +#: winecfg.rc:157 #, fuzzy msgid "&Add application..." msgstr "програм" -#: winecfg.rc:154 +#: winecfg.rc:158 #, fuzzy msgid "&Remove application" msgstr "програм" -#: winecfg.rc:155 +#: winecfg.rc:159 #, fuzzy msgid "&Windows Version:" msgstr "&Прозор" -#: winecfg.rc:163 +#: winecfg.rc:167 #, fuzzy msgid "Window settings" msgstr "&Прозор" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "" -#: winecfg.rc:169 +#: winecfg.rc:173 #, fuzzy msgid "Desktop &size:" msgstr "Радна површина" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:185 +#: winecfg.rc:189 #, fuzzy msgid "DLL overrides" msgstr "&Уређивање" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " "application)." msgstr "" -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "" -#: winecfg.rc:193 +#: winecfg.rc:197 #, fuzzy msgid "&Edit..." msgstr "&Уређивање" -#: winecfg.rc:199 +#: winecfg.rc:203 #, fuzzy msgid "Edit Override" msgstr "&Уређивање" -#: winecfg.rc:202 +#: winecfg.rc:206 #, fuzzy msgid "Load order" msgstr "граница" -#: winecfg.rc:203 +#: winecfg.rc:207 #, fuzzy msgid "&Builtin (Wine)" msgstr "&О Бележници" -#: winecfg.rc:204 +#: winecfg.rc:208 #, fuzzy msgid "&Native (Windows)" msgstr "&Прозор" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "" -#: winecfg.rc:214 +#: winecfg.rc:218 #, fuzzy msgid "Select Drive Letter" msgstr "Изабери &све" -#: winecfg.rc:226 +#: winecfg.rc:230 #, fuzzy msgid "Drive configuration" msgstr "Подаци" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "" -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "" -#: winecfg.rc:245 +#: winecfg.rc:249 #, fuzzy msgid "Bro&wse..." msgstr "" @@ -13163,77 +13163,90 @@ "#-#-#-#-# sr_RS@cyrillic.po (Wine) #-#-#-#-#\n" "Разгледај" -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:261 +#: winecfg.rc:265 #, fuzzy msgid "Defaults" msgstr "Подразумевано" -#: winecfg.rc:262 +#: winecfg.rc:266 #, fuzzy msgid "Output device:" msgstr "&Назив одредишне датотеке:" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "" -#: winecfg.rc:270 +#: winecfg.rc:274 #, fuzzy msgid "&Test Sound" msgstr "звук" -#: winecfg.rc:277 -msgid "Appearance" +#: winecfg.rc:275 +#, fuzzy +msgid "Speaker configuration" +msgstr "Подаци" + +#: winecfg.rc:276 +msgid "Device:" msgstr "" #: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 +msgid "Appearance" +msgstr "" + +#: winecfg.rc:287 msgid "&Theme:" msgstr "" -#: winecfg.rc:280 +#: winecfg.rc:289 #, fuzzy msgid "&Install theme..." msgstr "Инсталирање..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "" -#: winecfg.rc:287 +#: winecfg.rc:296 #, fuzzy msgid "C&olor:" msgstr "&Колона" -#: winecfg.rc:293 +#: winecfg.rc:302 #, fuzzy msgid "Folders" msgstr "Нова фасцикла" -#: winecfg.rc:296 +#: winecfg.rc:305 #, fuzzy msgid "&Link to:" msgstr "Везе" @@ -13324,6 +13337,24 @@ msgid "(System default)" msgstr "Системска путања" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +#, fuzzy +#| msgid "graphic" +msgid "Quadraphonic" +msgstr "графика" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -13430,141 +13461,141 @@ "Remember to click 'Add' in the Drives tab to create one!\n" msgstr "" -#: winecfg.rc:93 +#: winecfg.rc:97 #, fuzzy msgid "Controls Background" msgstr "&Умножи позадину" -#: winecfg.rc:94 +#: winecfg.rc:98 #, fuzzy msgid "Controls Text" msgstr "Контрола" -#: winecfg.rc:96 +#: winecfg.rc:100 #, fuzzy msgid "Menu Background" msgstr "&Умножи позадину" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "" -#: winecfg.rc:98 +#: winecfg.rc:102 #, fuzzy msgid "Scrollbar" msgstr "трака за померање" -#: winecfg.rc:99 +#: winecfg.rc:103 #, fuzzy msgid "Selection Background" msgstr "Постави као позадину" -#: winecfg.rc:100 +#: winecfg.rc:104 #, fuzzy msgid "Selection Text" msgstr "Изабери &све" -#: winecfg.rc:101 +#: winecfg.rc:105 #, fuzzy msgid "Tooltip Background" msgstr "&Умножи позадину" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:103 +#: winecfg.rc:107 #, fuzzy msgid "Window Background" msgstr "&Умножи позадину" -#: winecfg.rc:104 +#: winecfg.rc:108 #, fuzzy msgid "Window Text" msgstr "&Прозор" -#: winecfg.rc:105 +#: winecfg.rc:109 #, fuzzy msgid "Active Title Bar" msgstr "насловна линија" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "" -#: winecfg.rc:110 +#: winecfg.rc:114 #, fuzzy msgid "Application Workspace" msgstr "Програми" -#: winecfg.rc:111 +#: winecfg.rc:115 #, fuzzy msgid "Window Frame" msgstr "&Прозор" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:118 #, fuzzy msgid "Controls Shadow" msgstr "Управљачки панел" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:122 #, fuzzy msgid "Controls Light" msgstr "Контрола" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "" -#: winecfg.rc:124 +#: winecfg.rc:128 #, fuzzy msgid "Menu Bar" msgstr "линија менија" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/sr_RS@latin.po wine-staging-1.7.36~ubuntu12.04.1/po/sr_RS@latin.po --- wine-staging-1.7.35~ubuntu12.04.1/po/sr_RS@latin.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/sr_RS@latin.po 2015-02-08 20:31:28.000000000 +0000 @@ -47,8 +47,8 @@ msgid "&Modify..." msgstr "&Izmeni..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "&Ukloni" @@ -67,7 +67,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -150,7 +150,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -589,7 +589,7 @@ msgid "Font St&yle:" msgstr "" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "&Veličina:" @@ -605,7 +605,7 @@ msgid "&Underline" msgstr "" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "&Boja:" @@ -789,7 +789,7 @@ msgid "&to:" msgstr "" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "Veli&čina:" @@ -2302,7 +2302,7 @@ msgid "&File name:" msgstr "&Datoteka" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "N&ađi..." @@ -3545,7 +3545,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "&Isključi" @@ -7095,7 +7095,7 @@ msgid "Hyperlink Information" msgstr "Podaci o hipervezi" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "&Ukucaj:" @@ -7928,7 +7928,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "tpi" @@ -8475,7 +8475,7 @@ msgid "&Open:" msgstr "&Otvori:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "&Nađi..." @@ -8520,7 +8520,7 @@ msgid "Date deleted" msgstr "Datum brisanja" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 #, fuzzy msgctxt "display name" msgid "Desktop" @@ -9838,7 +9838,7 @@ msgid "Digi&tal" msgstr "&Digitalni" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "" @@ -13129,7 +13129,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "Wine postavke u %s se ažuriraju. Molimo, sačekajte..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -13137,25 +13137,25 @@ "option) any later version." msgstr "" -#: winecfg.rc:137 +#: winecfg.rc:141 #, fuzzy msgid "Windows registration information" msgstr " Informacija o registraciji Windowsa " -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "&Vlasnik:" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "Organi&zacija:" -#: winecfg.rc:148 +#: winecfg.rc:152 #, fuzzy msgid "Application settings" msgstr " Podešavanje aplikacije " -#: winecfg.rc:149 +#: winecfg.rc:153 #, fuzzy msgid "" "Wine can mimic different Windows versions for each application. This tab is " @@ -13166,58 +13166,58 @@ "za Biblioteke i Grafika tabove da dozvoli sistemske promene ili za " "podešavanje aplikacija u istim tabovima." -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "&Dodaj aplikaciju..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "&Ukloni aplikaciju" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "&Verzija Windowsa:" -#: winecfg.rc:163 +#: winecfg.rc:167 #, fuzzy msgid "Window settings" msgstr " Podešavanje prozora " -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "Dozvoli temi da &ukrasi prozor" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "Dozvoli &menadžeru prozora da upravlja prozorom" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "&Emulacija veštačkog desktopa" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "Desktop &veličina:" -#: winecfg.rc:174 +#: winecfg.rc:178 #, fuzzy msgid "Screen resolution" msgstr " Rezolucija &Ekrana " -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "Ovo je osnovni tekst 10 Tahoma" -#: winecfg.rc:185 +#: winecfg.rc:189 #, fuzzy msgid "DLL overrides" msgstr " DLL Podešavanja " -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -13226,58 +13226,58 @@ "Biblioteke mogu biti podešene zasebno da budu ili builtin (omogućene od Wine-" "a) ili native (uzete od Windowsa ili od aplikacije)." -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "&Novo podešavanje biblioteke:" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "&Dodaj" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "Postojeća &podešavanja:" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "&Izmeni..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "Izmeni podešavanje" -#: winecfg.rc:202 +#: winecfg.rc:206 #, fuzzy msgid "Load order" msgstr " Redosled učitavanja " -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "&Builtin (Wine)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "&Native (Windows)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "Bui<in pa Native" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "Nati&ve pa Builtin" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "Izaberi slovo diska" -#: winecfg.rc:226 +#: winecfg.rc:230 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Wine konfiguracija" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13285,97 +13285,113 @@ "Uspelo povezivanje sa mount menadžerom, disk konfiguracija se ne može " "izmeniti." -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "&Dodaj..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "Auto&matski" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "&Putanja:" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "Pokaži &Napredno" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "Na&prava:" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "Na&đi..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "&Naziv:" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "S&erijski:" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "Prikaži &dot fajlove" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "&Probaj zvuk" -#: winecfg.rc:277 +#: winecfg.rc:275 +#, fuzzy +#| msgid "Wine configuration" +msgid "Speaker configuration" +msgstr "Wine konfiguracija" + +#: winecfg.rc:276 +#, fuzzy +#| msgid "De&vice:" +msgid "Device:" +msgstr "Na&prava:" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 #, fuzzy msgid "Appearance" msgstr " Izgled " -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "&Tema:" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "&Instaliraj teme..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "B&oja:" -#: winecfg.rc:293 +#: winecfg.rc:302 #, fuzzy msgid "Folders" msgstr "Fascikla:" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "&Veza do:" @@ -13462,6 +13478,24 @@ msgid "(System default)" msgstr "Sistemska putanja" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +#, fuzzy +#| msgid "graphic" +msgid "Quadraphonic" +msgstr "grafika" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -13581,127 +13615,127 @@ "\n" "Kliknite 'Dodaj' u diskovi tabu da napravite!\n" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "Kontrole pozadine" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "Kontrole teksta" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "Pozadina menija" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "Tekst menija" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "Odabir pozadine" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "Odabir teksta" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "Tooltip pozadina" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "Pozadina prozora" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "Text Prozora" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "Aktivni nazivni Bar" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "Aktivni nazivni Text" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "Neaktivni nazivni Bar" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "Neaktivni nazivni Text" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "Poruka Box Text" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "Radni prostor aplikacije" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "Ram prozora" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "Aktivna ivica" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "Neaktivna ivica" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "Kontrola senke" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "Sivi Text" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "Kontrola odabranog" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "Kontrola mracne senke" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "Kontrola svetla" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "Kontrola alternativne pozadine" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "Aktivni nazivni bar Gradient" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "Neaktivni nazivni bar Gradient" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "Meni osvetljenog" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "Meni Bar" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/sv.po wine-staging-1.7.36~ubuntu12.04.1/po/sv.po --- wine-staging-1.7.35~ubuntu12.04.1/po/sv.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/sv.po 2015-02-08 20:31:28.000000000 +0000 @@ -47,8 +47,8 @@ msgid "&Modify..." msgstr "&Ändra..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "Ta &bort" @@ -67,7 +67,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -150,7 +150,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -539,7 +539,7 @@ msgid "Font St&yle:" msgstr "Typsnittss&til:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "&Storlek:" @@ -555,7 +555,7 @@ msgid "&Underline" msgstr "&Understruken" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "&Färg:" @@ -722,7 +722,7 @@ msgid "&to:" msgstr "&till:" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "St&orlek:" @@ -2202,7 +2202,7 @@ msgid "&File name:" msgstr "&Filnamn:" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "B&läddra..." @@ -3430,7 +3430,7 @@ msgid "Joysticks" msgstr "Joysticks" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "&Inaktivera" @@ -6714,7 +6714,7 @@ msgid "Hyperlink Information" msgstr "Länkinformation" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "&Typ:" @@ -7526,7 +7526,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8053,7 +8053,7 @@ msgid "&Open:" msgstr "&Öppna:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "&Bläddra..." @@ -8098,7 +8098,7 @@ msgid "Date deleted" msgstr "Borttagningsdatum" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Skrivbord" @@ -9497,7 +9497,7 @@ msgid "Digi&tal" msgstr "Digi&tal" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "T&ypsnitt..." @@ -12799,7 +12799,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "Wine-inställningarna i %s uppdateras, var god vänta..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12811,23 +12811,23 @@ "publicerad av Free Software Foundation, antingen version 2.1 eller (om du så " "vill) någon senare version." -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "Registreringsinformation för Windows" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "Ägare:" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "Organisation:" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "Programinställningar" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " @@ -12838,55 +12838,55 @@ "inställningar i de flikarna också, antingen systemövergripande eller per " "program." -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "&Lägg till program..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "&Ta bort program" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "&Windows-version:" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "Fönsterinställningar" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Fånga &musen automatiskt i fullskärmsfönster" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "Tillåt fönsterhanteraren att &dekorera fönstren" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "Tillåt &fönsterhanteraren att styra fönstren" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "Emulera ett virtuellt skriv&bord" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "Storlek på &skrivbord:" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "Skärm&upplösning" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "Denna exempeltext använder 10-punkters Tahoma" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "DLL-åsidosättningar" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12896,55 +12896,55 @@ "(tillhandahålls av Wine) eller ursprungliga (tagna från Windows eller " "tillhandahålls av programmet)." -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "&Ny åsidosättning för bibliotek:" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "Lägg &till" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "Befintliga &åsidosättningar:" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "R&edigera..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "Redigera åsidosättning" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "Inläsningsordning" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "&Inbyggd (Wine)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "&Ursprunglig (Windows)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "Inb&yggd sedan Ursprunglig" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "Urs&prunglig sedan Inbyggd" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "Välj enhetsbokstav" -#: winecfg.rc:226 +#: winecfg.rc:230 msgid "Drive configuration" msgstr "Enhetskonfiguration" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -12952,95 +12952,111 @@ "Misslyckades med att ansluta till monteringshanteraren. " "Enhetskonfigurationen kan inte redigeras." -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "&Lägg till..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "Upptäck aut&omatiskt" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "&Sökväg:" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "Visa &avancerat" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "E&nhet:" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "&Bläddra..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "&Etikett:" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "S&erienr:" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "Visa &punktfiler" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "&Testa ljud" -#: winecfg.rc:277 +#: winecfg.rc:275 +#, fuzzy +#| msgid "Wine configuration" +msgid "Speaker configuration" +msgstr "Konfiguration av Wine" + +#: winecfg.rc:276 +#, fuzzy +#| msgid "De&vice:" +msgid "Device:" +msgstr "E&nhet:" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 msgid "Appearance" msgstr "Utseende" -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "&Tema:" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "&Installera tema..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "Ob&jekt:" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "Fä&rg:" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "Mappar" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "&Länka till:" @@ -13120,6 +13136,24 @@ msgid "(System default)" msgstr "(Systemstandard)" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +#, fuzzy +#| msgid "graphic" +msgid "Quadraphonic" +msgstr "grafik" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -13233,127 +13267,127 @@ "\n" "Kom ihåg att klicka på ‘Lägg till’ i fliken Enheter för att skapa en!\n" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "Bakgrund i kontroller" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "Text i kontroller" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "Menybakgrund" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "Menytext" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "Rullningslist" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "Bakgrund för markering" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "Text för markering" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "Bakgrund för verktygstips" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "Text för verktygstips" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "Fönsterbakgrund" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "Fönstertext" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "Aktiv titellist" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "Aktiv titeltext" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "Inaktiv titellist" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "Inaktiv titeltext" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "Text i meddelandefönster" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "Arbetsyta i program" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "Fönsterram" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "Aktiv kant" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "Inaktiv kant" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "Skugga i kontroller" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "Grå text" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "Markering i kontroller" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "Mörk skugga i kontroller" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "Ljus i kontroller" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "Alternativ bakgrund i kontroller" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "Hovrat föremål" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "Gradient för aktiv titellist" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "Gradient för inaktiv titellist" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "Menymarkering" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "Menyrad" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/te.po wine-staging-1.7.36~ubuntu12.04.1/po/te.po --- wine-staging-1.7.35~ubuntu12.04.1/po/te.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/te.po 2015-02-08 20:31:28.000000000 +0000 @@ -43,8 +43,8 @@ msgid "&Modify..." msgstr "" -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "" @@ -63,7 +63,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -140,7 +140,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -525,7 +525,7 @@ msgid "Font St&yle:" msgstr "" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "" @@ -541,7 +541,7 @@ msgid "&Underline" msgstr "" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "" @@ -708,7 +708,7 @@ msgid "&to:" msgstr "" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "" @@ -2164,7 +2164,7 @@ msgid "&File name:" msgstr "" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "" @@ -3350,7 +3350,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "" @@ -6624,7 +6624,7 @@ msgid "Hyperlink Information" msgstr "" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "" @@ -7365,7 +7365,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "" @@ -7896,7 +7896,7 @@ msgid "&Open:" msgstr "" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "" @@ -7941,7 +7941,7 @@ msgid "Date deleted" msgstr "" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "" @@ -9210,7 +9210,7 @@ msgid "Digi&tal" msgstr "డిజిటల్ (&t)" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "ఫాంట్ (&F)..." @@ -12279,7 +12279,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "" -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12287,229 +12287,241 @@ "option) any later version." msgstr "" -#: winecfg.rc:137 +#: winecfg.rc:141 #, fuzzy msgid "Windows registration information" msgstr "ఫాంట్... (&F)" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " "or per-application settings in those tabs as well." msgstr "" -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "" -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " "application)." msgstr "" -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "" -#: winecfg.rc:193 +#: winecfg.rc:197 #, fuzzy msgid "&Edit..." msgstr "ఫాంట్... (&F)" -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "" -#: winecfg.rc:226 +#: winecfg.rc:230 msgid "Drive configuration" msgstr "" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "" -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "" -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "" -#: winecfg.rc:277 -msgid "Appearance" +#: winecfg.rc:275 +msgid "Speaker configuration" +msgstr "" + +#: winecfg.rc:276 +msgid "Device:" msgstr "" #: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 +msgid "Appearance" +msgstr "" + +#: winecfg.rc:287 msgid "&Theme:" msgstr "" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "" -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "" @@ -12589,6 +12601,22 @@ msgid "(System default)" msgstr "" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +msgid "Quadraphonic" +msgstr "" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -12690,128 +12718,128 @@ "Remember to click 'Add' in the Drives tab to create one!\n" msgstr "" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "" -#: winecfg.rc:105 +#: winecfg.rc:109 #, fuzzy msgid "Active Title Bar" msgstr "శీర్షికపట్టీ లేకుండా (&W)" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/th.po wine-staging-1.7.36~ubuntu12.04.1/po/th.po --- wine-staging-1.7.35~ubuntu12.04.1/po/th.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/th.po 2015-02-08 20:31:28.000000000 +0000 @@ -43,8 +43,8 @@ msgid "&Modify..." msgstr "" -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "" @@ -64,7 +64,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -144,7 +144,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -524,7 +524,7 @@ msgid "Font St&yle:" msgstr "รูปแบบต้วอักษร:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "ขนาด:" @@ -540,7 +540,7 @@ msgid "&Underline" msgstr "ขีดเส้นใต้" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "สี:" @@ -709,7 +709,7 @@ msgid "&to:" msgstr "ส่งถึง:" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "ขนาด:" @@ -2180,7 +2180,7 @@ msgid "&File name:" msgstr "แฟ้ม" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "" @@ -3389,7 +3389,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "" @@ -6755,7 +6755,7 @@ msgid "Hyperlink Information" msgstr "รายละเอียด" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "" @@ -7520,7 +7520,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "" @@ -8056,7 +8056,7 @@ msgid "&Open:" msgstr "เปิด...\tCtrl+O" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "" @@ -8103,7 +8103,7 @@ msgid "Date deleted" msgstr "ลบ\tDel" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 #, fuzzy msgctxt "display name" msgid "Desktop" @@ -9391,7 +9391,7 @@ msgid "Digi&tal" msgstr "ดิจิตัล" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 #, fuzzy msgid "&Font..." msgstr "" @@ -12521,7 +12521,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "" -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12529,236 +12529,249 @@ "option) any later version." msgstr "" -#: winecfg.rc:137 +#: winecfg.rc:141 #, fuzzy msgid "Windows registration information" msgstr "รายละเอียด" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "" -#: winecfg.rc:140 +#: winecfg.rc:144 #, fuzzy msgid "Organi&zation:" msgstr "รายละเอียด" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " "or per-application settings in those tabs as well." msgstr "" -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "" -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "" -#: winecfg.rc:169 +#: winecfg.rc:173 #, fuzzy msgid "Desktop &size:" msgstr "พื้นที่ทำงาน" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " "application)." msgstr "" -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "" -#: winecfg.rc:193 +#: winecfg.rc:197 #, fuzzy msgid "&Edit..." msgstr "แก้ไข" -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "" -#: winecfg.rc:214 +#: winecfg.rc:218 #, fuzzy msgid "Select Drive Letter" msgstr "เลือกทั้งหมด\tCtrl+A" -#: winecfg.rc:226 +#: winecfg.rc:230 #, fuzzy msgid "Drive configuration" msgstr "รายละเอียด" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "" -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "" -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:261 +#: winecfg.rc:265 #, fuzzy msgid "Defaults" msgstr "เครื่องพิมพ์ปกติ; " -#: winecfg.rc:262 +#: winecfg.rc:266 #, fuzzy msgid "Output device:" msgstr "แฟ้ม" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "" -#: winecfg.rc:277 -msgid "Appearance" +#: winecfg.rc:275 +#, fuzzy +msgid "Speaker configuration" +msgstr "รายละเอียด" + +#: winecfg.rc:276 +msgid "Device:" msgstr "" #: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 +msgid "Appearance" +msgstr "" + +#: winecfg.rc:287 msgid "&Theme:" msgstr "" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "" -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "" -#: winecfg.rc:293 +#: winecfg.rc:302 #, fuzzy msgid "Folders" msgstr "ขอบกระดาษ" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "" @@ -12841,6 +12854,22 @@ msgid "(System default)" msgstr "" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +msgid "Quadraphonic" +msgstr "" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -12944,130 +12973,130 @@ "Remember to click 'Add' in the Drives tab to create one!\n" msgstr "" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "" -#: winecfg.rc:94 +#: winecfg.rc:98 #, fuzzy msgid "Controls Text" msgstr "เนื้อหา" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "" -#: winecfg.rc:100 +#: winecfg.rc:104 #, fuzzy msgid "Selection Text" msgstr "เลือกทั้งหมด\tCtrl+A" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "" -#: winecfg.rc:105 +#: winecfg.rc:109 #, fuzzy msgid "Active Title Bar" msgstr "แสดงแทบเมนู" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/tr.po wine-staging-1.7.36~ubuntu12.04.1/po/tr.po --- wine-staging-1.7.35~ubuntu12.04.1/po/tr.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/tr.po 2015-02-08 20:31:28.000000000 +0000 @@ -49,8 +49,8 @@ msgid "&Modify..." msgstr "&Değiştir..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "&Kaldır" @@ -69,7 +69,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -152,7 +152,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -542,7 +542,7 @@ msgid "Font St&yle:" msgstr "Yazı Tipi St&ili:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "&Boyut:" @@ -558,7 +558,7 @@ msgid "&Underline" msgstr "&Altı Çizili" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "&Renk:" @@ -725,7 +725,7 @@ msgid "&to:" msgstr "Biti&ş:" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "&Size:" @@ -2203,7 +2203,7 @@ msgid "&File name:" msgstr "&Dosya adı:" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "&Gözat..." @@ -3440,7 +3440,7 @@ msgid "Joysticks" msgstr "Oyun Kolları" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "&Etkisizleştir" @@ -6731,7 +6731,7 @@ msgid "Hyperlink Information" msgstr "Bağlantı Bilgisi" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "&Tür:" @@ -7555,7 +7555,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8082,7 +8082,7 @@ msgid "&Open:" msgstr "&Aç:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "&Gözat..." @@ -8127,7 +8127,7 @@ msgid "Date deleted" msgstr "Silinme tarihi" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Masaüstü" @@ -9551,7 +9551,7 @@ msgid "Digi&tal" msgstr "Sa&yısal" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Yazıtipi..." @@ -12855,7 +12855,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "%s içerisindeki Wine yapılandırması güncelleniyor, lütfen bekleyin..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12867,23 +12867,23 @@ "herhangi sonraki sürümü altında şartlara bağlı kalarak tekrar dağıtabilir ve/" "veya düzenlenebilir." -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "Windows kayıt bilgisi" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "Sahip:" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "Şirket:" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "Uygulama ayarları" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " @@ -12893,55 +12893,55 @@ "Kitaplıklar ve Grafik sekmeleri ile bağlantılı olup bu sekmelerde de sistem " "çapındaki veya uygulamaya özel ayarları yapmanıza izin verir." -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "Uygulama &Ekle..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "Uygulama &Kaldır" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "&Windows Sürümü:" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "Pencere ayarları" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Fareyi ta&m ekran pencerelerde otomatik olarak yakala" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "Pencere yöneticisinin pencereleri &düzenlemesine izin ver" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "Pencere yöneticisinin pencereleri yönetmesine izin ver" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "Sanal masaüstü kullan" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "Masaüstü büyüklüğü:" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "Ekran Çözünürlüğü" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "Bu, 10 nokta Tahoma kullanan örnek bir metindir" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "DLL Öncelikleri" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12951,152 +12951,168 @@ "(Windows'tan alınmış veya uygulama tarafından sağlanmış) olarak " "belirtilebilir." -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "Kitaplık için yeni öncelik:" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "&Ekle" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "Var olan öncelikler:" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "&Düzenle..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "Öncelik Düzenle" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "Yükleme Sırası" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "&Yerleşik (Wine)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "&Doğal (Windows)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "Önce Yer&leşik sonra Doğal" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "Önce D&oğal sonra Yerleşik" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "Sürücü Harfini Seçin" -#: winecfg.rc:226 +#: winecfg.rc:230 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Wine yapılandırması" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" "Bağlama yöneticisine bağlanılamadı, sürücü yapılandırması düzenlenemez." -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "&Ekle..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "Otomatik &Algıla" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "&Yol:" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "Gelişmiş Ayarlar" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "Ay&gıt:" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "Gö&zat..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "&Etiket:" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "S&eri No:" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "Noktayla başlayan dosyaları göster" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "Sürücü tanıları" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "Varsayılanlar" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "Çıktı aygıtı:" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "Ses çıkış aygıtı:" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "Girdi aygıtı:" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "Ses giriş aygıtı:" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "&Ses Testi" -#: winecfg.rc:277 +#: winecfg.rc:275 +#, fuzzy +#| msgid "Wine configuration" +msgid "Speaker configuration" +msgstr "Wine yapılandırması" + +#: winecfg.rc:276 +#, fuzzy +#| msgid "De&vice:" +msgid "Device:" +msgstr "Ay&gıt:" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 msgid "Appearance" msgstr "Görünüm" -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "Tema:" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "Tema kur..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "&Öğe:" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "Re&nk:" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "Klasörler" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "Hedef d&izin:" @@ -13176,6 +13192,24 @@ msgid "(System default)" msgstr "(Varsayılan sistem)" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +#, fuzzy +#| msgid "graphic" +msgid "Quadraphonic" +msgstr "grafik" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -13293,127 +13327,127 @@ "\n" "Bir tane oluşturmak için Sürücüler sekmesinden Ekle'yi tıklamayı unutmayın!\n" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "Arkaplanı Denetler" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "Metni Denetler" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "Menü Arkaplanı" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "Menü Metni" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "Kaydırma Çubuğu" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "Seçim Arkaplanı" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "Seçim Metni" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "İpucu Arkaplanı" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "İpucu Metni" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "Pencere Arkaplanı" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "Pencere Metni" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "Menü Belirtmesi" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "Menü çubuğu" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/uk.po wine-staging-1.7.36~ubuntu12.04.1/po/uk.po --- wine-staging-1.7.35~ubuntu12.04.1/po/uk.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/uk.po 2015-02-08 20:31:28.000000000 +0000 @@ -46,8 +46,8 @@ msgid "&Modify..." msgstr "&Змінити..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "&Видалити" @@ -66,7 +66,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -149,7 +149,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -537,7 +537,7 @@ msgid "Font St&yle:" msgstr "&Стиль:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "&Розмір:" @@ -553,7 +553,7 @@ msgid "&Underline" msgstr "&Підкреслений" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "&Колір:" @@ -720,7 +720,7 @@ msgid "&to:" msgstr "&до:" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "Ро&змір:" @@ -2201,7 +2201,7 @@ msgid "&File name:" msgstr "&Ім'я файлу:" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "&Огляд..." @@ -3441,7 +3441,7 @@ msgid "Joysticks" msgstr "Джойстик" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "Вим&кнути" @@ -6727,7 +6727,7 @@ msgid "Hyperlink Information" msgstr "Дані про Гіперпосилання" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "&Тип:" @@ -7585,7 +7585,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "точок на дюйм" @@ -8112,7 +8112,7 @@ msgid "&Open:" msgstr "&Відкрити:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "&Огляд..." @@ -8157,7 +8157,7 @@ msgid "Date deleted" msgstr "Дата видалення" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Стільниця" @@ -9582,7 +9582,7 @@ msgid "Digi&tal" msgstr "&Ци&фровий" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Шрифт..." @@ -12959,7 +12959,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "Оновлення конфігурації Wine в %s, будь-ласка, зачекайте..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12970,23 +12970,23 @@ "умов GNU Lesser General Public License, яка опублікована Free Software " "Foundation; версії 2.1 Ліцензії, чи (на ваш розсуд) новішої версії." -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "Реєстраційна інформація Windows" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "&Власник:" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "Органі&зація:" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "Налаштування програми" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " @@ -12996,55 +12996,55 @@ "пов'язана з вкладками Бібліотеки та Графіка, що дозволяє зміну налаштувань в " "цих вкладках як для окремої програми, так і глобально." -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "&Додати програму..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "&Видалити програму" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "&Версія Windows:" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "Параметри вікна" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Автоматично захоплювати &мишу у повноекранних вікнах" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "Дозволити менеджеру вікон &декорувати вікна" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "Дозволити менеджеру вікон &керувати вікнами" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "&Емулювати віртуальний робочий стіл" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "Розмір робочого &столу:" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "Розширення екрану" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "Приклад тексту. Шрифт Tahoma 10 пунктів" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "Заміщення DLL" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -13053,55 +13053,55 @@ "Тут вказується, яку динамічно під'єднувану бібліотеку (DLL) використовувати: " "вбудовану в Wine або сторонню (з Windows, чи надану разом з програмою)." -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "&Нове заміщення для бібліотеки:" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "&Додати" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "Існуючі &заміщення:" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "&Змінити..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "Змінити заміщення" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "Порядок завантаження" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "&Вбудована (Wine)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "&Стороння (Windows)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "В&будована, потім стороння" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "С&тороння, потім вбудована" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "Виберіть букву диску" -#: winecfg.rc:226 +#: winecfg.rc:230 msgid "Drive configuration" msgstr "Налаштування привода" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13109,95 +13109,111 @@ "Неможливо з'єднатися з менеджером монтування, конфігурація дисків не буде " "редагуватися." -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "&Додати..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "Автови&значення" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "&Шлях:" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "Показати &Додаткове" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "&Привід:" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "О&гляд..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "&Мітка:" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "&Сер.ном:" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "Показати &файли, що починаються з крапки" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "Діагностика драйвера" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "Типове" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "Пристрій виводу:" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "Пристрій виводу голосу:" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "Пристрій вводу:" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "Пристрій вводу голосу:" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "&Тест звуку" -#: winecfg.rc:277 +#: winecfg.rc:275 +#, fuzzy +#| msgid "Wine configuration" +msgid "Speaker configuration" +msgstr "Параметри Wine" + +#: winecfg.rc:276 +#, fuzzy +#| msgid "De&vice:" +msgid "Device:" +msgstr "&Привід:" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 msgid "Appearance" msgstr "Вигляд" -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "&Тема:" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "&Встановити тему..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "Е&лемент:" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "Ко&лір:" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "Теки" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "&Направити:" @@ -13277,6 +13293,24 @@ msgid "(System default)" msgstr "(Типовий системний)" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +#, fuzzy +#| msgid "graphic" +msgid "Quadraphonic" +msgstr "графіка" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -13391,127 +13425,127 @@ "\n" "Натисніть 'Додати' в закладці Диски щоб створити його!\n" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "Елементи керування - фон" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "Елементи керування - текст" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "Меню - фон" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "Меню - текст" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "Смуга прокручування" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "Виділення - фон" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "Виділення - текст" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "Підказка - фон" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "Підказка - текст" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "Вікно - фон" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "Вікно - текст" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "Заголовок акт. вікна" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "Заголовок акт. - текст" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "Заголовок неак. вікна" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "Заголовок неак. вікна - текст" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "Вікно повідомлення - текст" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "Робоче поле програми" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "Вікно - рамка" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "Активна рамка" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "Неактивна рамка" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "Елементи керування - тінь" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "Недоступний елемент - текст" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "Ел-ти керув. - світла рамка" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "Ел-ти керув. - темна тінь" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "Елементи керування - світло" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "Ел-ти керув. - інший фон" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "Посилання, Підсвічування" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "Градієнт заголовка акт. вікна" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "Град. заголовка неакт. вікна" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "Меню - підсвічування" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "Рядок меню" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/wa.po wine-staging-1.7.36~ubuntu12.04.1/po/wa.po --- wine-staging-1.7.35~ubuntu12.04.1/po/wa.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/wa.po 2015-02-08 20:31:28.000000000 +0000 @@ -45,8 +45,8 @@ msgid "&Modify..." msgstr "&Copyî..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 #, fuzzy msgid "&Remove" msgstr "&Sicrîre..." @@ -67,7 +67,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -147,7 +147,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -532,7 +532,7 @@ msgid "Font St&yle:" msgstr "S&tîle del fonte:" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "&Grandeu:" @@ -548,7 +548,7 @@ msgid "&Underline" msgstr "&Sorligné" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "&Coleur:" @@ -721,7 +721,7 @@ msgid "&to:" msgstr "" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "" @@ -2195,7 +2195,7 @@ msgid "&File name:" msgstr "&Fitchî" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "" @@ -3399,7 +3399,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "" @@ -6700,7 +6700,7 @@ msgid "Hyperlink Information" msgstr "Informåcion" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "" @@ -7451,7 +7451,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "" @@ -7991,7 +7991,7 @@ msgid "&Open:" msgstr "&Drovî:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "" @@ -8038,7 +8038,7 @@ msgid "Date deleted" msgstr "&Rafacer\tDel" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "" @@ -9322,7 +9322,7 @@ msgid "Digi&tal" msgstr "&Limerike" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 #, fuzzy msgid "&Font..." msgstr "" @@ -12428,7 +12428,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "" -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12436,236 +12436,249 @@ "option) any later version." msgstr "" -#: winecfg.rc:137 +#: winecfg.rc:141 #, fuzzy msgid "Windows registration information" msgstr "Informåcion" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " "or per-application settings in those tabs as well." msgstr "" -#: winecfg.rc:153 +#: winecfg.rc:157 #, fuzzy msgid "&Add application..." msgstr "&Options" -#: winecfg.rc:154 +#: winecfg.rc:158 #, fuzzy msgid "&Remove application" msgstr "&Sicrîre..." -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " "application)." msgstr "" -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "" -#: winecfg.rc:193 +#: winecfg.rc:197 #, fuzzy msgid "&Edit..." msgstr "&Candjî" -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "" -#: winecfg.rc:204 +#: winecfg.rc:208 #, fuzzy msgid "&Native (Windows)" msgstr "Å dfait di &Wine..." -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "" -#: winecfg.rc:226 +#: winecfg.rc:230 #, fuzzy msgid "Drive configuration" msgstr "Informåcion" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "" -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "" -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:261 +#: winecfg.rc:265 #, fuzzy msgid "Defaults" msgstr "Pådje &p" -#: winecfg.rc:262 +#: winecfg.rc:266 #, fuzzy msgid "Output device:" msgstr "&Fitchî" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "" -#: winecfg.rc:277 -msgid "Appearance" +#: winecfg.rc:275 +#, fuzzy +msgid "Speaker configuration" +msgstr "Informåcion" + +#: winecfg.rc:276 +msgid "Device:" msgstr "" #: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 +msgid "Appearance" +msgstr "" + +#: winecfg.rc:287 msgid "&Theme:" msgstr "" -#: winecfg.rc:280 +#: winecfg.rc:289 #, fuzzy msgid "&Install theme..." msgstr "&Sicrîre..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "" @@ -12746,6 +12759,22 @@ msgid "(System default)" msgstr "" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +msgid "Quadraphonic" +msgstr "" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -12847,128 +12876,128 @@ "Remember to click 'Add' in the Drives tab to create one!\n" msgstr "" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "" -#: winecfg.rc:105 +#: winecfg.rc:109 #, fuzzy msgid "Active Title Bar" msgstr "Sin bår di &Tite" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/wine.pot wine-staging-1.7.36~ubuntu12.04.1/po/wine.pot --- wine-staging-1.7.35~ubuntu12.04.1/po/wine.pot 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/wine.pot 2015-02-08 20:31:28.000000000 +0000 @@ -39,8 +39,8 @@ msgid "&Modify..." msgstr "" -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "" @@ -59,7 +59,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -135,7 +135,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -513,7 +513,7 @@ msgid "Font St&yle:" msgstr "" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "" @@ -529,7 +529,7 @@ msgid "&Underline" msgstr "" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "" @@ -696,7 +696,7 @@ msgid "&to:" msgstr "" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "" @@ -2143,7 +2143,7 @@ msgid "&File name:" msgstr "" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "" @@ -3312,7 +3312,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "" @@ -6584,7 +6584,7 @@ msgid "Hyperlink Information" msgstr "" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "" @@ -7321,7 +7321,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "" @@ -7844,7 +7844,7 @@ msgid "&Open:" msgstr "" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "" @@ -7889,7 +7889,7 @@ msgid "Date deleted" msgstr "" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "" @@ -9156,7 +9156,7 @@ msgid "Digi&tal" msgstr "" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "" @@ -12217,7 +12217,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "" -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12225,227 +12225,239 @@ "option) any later version." msgstr "" -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " "or per-application settings in those tabs as well." msgstr "" -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "" -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " "application)." msgstr "" -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "" -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "" -#: winecfg.rc:226 +#: winecfg.rc:230 msgid "Drive configuration" msgstr "" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "" -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "" -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "" -#: winecfg.rc:277 -msgid "Appearance" +#: winecfg.rc:275 +msgid "Speaker configuration" +msgstr "" + +#: winecfg.rc:276 +msgid "Device:" msgstr "" #: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 +msgid "Appearance" +msgstr "" + +#: winecfg.rc:287 msgid "&Theme:" msgstr "" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "" -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "" @@ -12525,6 +12537,22 @@ msgid "(System default)" msgstr "" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +msgid "Quadraphonic" +msgstr "" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -12626,127 +12654,127 @@ "Remember to click 'Add' in the Drives tab to create one!\n" msgstr "" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/zh_CN.po wine-staging-1.7.36~ubuntu12.04.1/po/zh_CN.po --- wine-staging-1.7.35~ubuntu12.04.1/po/zh_CN.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/zh_CN.po 2015-02-08 20:31:28.000000000 +0000 @@ -42,8 +42,8 @@ msgid "&Modify..." msgstr "" -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "删除(&R)" @@ -62,7 +62,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -142,7 +142,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -524,7 +524,7 @@ msgid "Font St&yle:" msgstr "字体样式(&Y):" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "大小(&S):" @@ -540,7 +540,7 @@ msgid "&Underline" msgstr "下划线(&U)" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "配色(&C):" @@ -707,7 +707,7 @@ msgid "&to:" msgstr "到(&T):" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "大小(&Z):" @@ -2173,7 +2173,7 @@ msgid "&File name:" msgstr "文件名(&F):" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "浏览(&R)..." @@ -3343,7 +3343,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "停用(&D)" @@ -6638,7 +6638,7 @@ msgid "Hyperlink Information" msgstr "超链接信息" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "类型(&T):" @@ -7420,7 +7420,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -7943,7 +7943,7 @@ msgid "&Open:" msgstr "打开(&O):" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "浏览(&B)..." @@ -7988,7 +7988,7 @@ msgid "Date deleted" msgstr "删除日期" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "桌面" @@ -9267,7 +9267,7 @@ msgid "Digi&tal" msgstr "数字时钟(&T)" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "字体(&F)..." @@ -12382,7 +12382,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "正在更新位于 %s 的 Wine 配置,请稍候……" -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12393,23 +12393,23 @@ "(LGPL)来对其进行添加、修改和重新发布。许可协议版本为2.1,您也可以选择采用更" "新的版本。" -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "Windows 注册信息" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "姓名:" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "单位:" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "应用程序设置" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " @@ -12418,55 +12418,55 @@ "对不同的程序,可以让 Wine 假装成不同版本的 Windows,也可以在“函数库”与“显" "示”标签页中作不同的设置。" -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "增加程序设置(&A)..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "删除程序设置(&R)" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "&Windows 版本:" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "窗口设置" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "全屏模式下自动捕获光标(&M)" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "允许窗口管理器装饰窗口(&D)" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "允许窗口管理器控制窗口(&W)" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "虚拟桌面(&D)" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "桌面大小(&S):" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "屏幕分辨率" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "这是使用 10 号 Tahoma 字体的示例文本" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "DLL 顶替" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12475,151 +12475,167 @@ "对各个动态链接库,可以选择使用 Wine 提供的内建版本,还是使用取自 Windows 或程" "序所提供的原装版本。" -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "新增函数库顶替(&N):" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "添加(&A)" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "已有的函数库顶替(&O):" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "编辑(&E)..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "编辑顶替" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "载入顺序" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "内建(Wine)(&B)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "原装(Windows)(&N)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "内建先于原装(&L)" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "原装先于内建(&V)" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "选择驱动器盘符" -#: winecfg.rc:226 +#: winecfg.rc:230 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Wine 设置" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "无法连接到挂载管理器。不能修改驱动器配置。" -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "添加(&A)..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "自动侦测(&D)" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "路径(&P):" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "显示高级选项(&A)" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "设备(&V):" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "浏览(&W)..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "卷标(&L):" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "序列号(&E):" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "显示隐藏文件(&D)" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "驱动程序诊断" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "默认值" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "输出设备:" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "语音输出设备:" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "输入设备:" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "语音输入设备:" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "测试音频(&T)" -#: winecfg.rc:277 +#: winecfg.rc:275 +#, fuzzy +#| msgid "Wine configuration" +msgid "Speaker configuration" +msgstr "Wine 设置" + +#: winecfg.rc:276 +#, fuzzy +#| msgid "De&vice:" +msgid "Device:" +msgstr "设备(&V):" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 msgid "Appearance" msgstr "外观" -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "主题(&T):" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "安装主题(&I)..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "物件(&E):" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "颜色(&O):" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "文件夹" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "映射至(&L):" @@ -12699,6 +12715,24 @@ msgid "(System default)" msgstr "(系统默认)" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +#, fuzzy +#| msgid "Graphics" +msgid "Quadraphonic" +msgstr "显示" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -12814,127 +12848,127 @@ "\n" "请记得点选“驱动器”标签的“添加”来建立它!\n" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "控件背景" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "控件文字" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "菜单背景" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "菜单文字" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "滚动条" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "选中的文字背景" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "选中的文字" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "工具提示背景" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "工具提示文字" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "窗口背景" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "窗口文字" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "活动窗口标题栏" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "活动窗口标题栏文字" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "非活动窗口标题栏" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "非活动窗口标题栏" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "消息框文字" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "应用程序工作区" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "焦点控件框架" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "活动窗口边界" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "非活动窗口边界" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "控件阴影" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "灰色文字" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "控件高亮" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "控件灰暗" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "控件光亮" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "控件切换背景" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "鼠标拖选框" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "活动窗口标题栏渐进目标色" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "非活动窗口标题栏渐进目标色" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "菜单高亮" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "菜单栏" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/po/zh_TW.po wine-staging-1.7.36~ubuntu12.04.1/po/zh_TW.po --- wine-staging-1.7.35~ubuntu12.04.1/po/zh_TW.po 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/po/zh_TW.po 2015-02-08 20:31:28.000000000 +0000 @@ -45,8 +45,8 @@ msgid "&Modify..." msgstr "修改(&M)..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:194 -#: winecfg.rc:231 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 +#: winecfg.rc:235 wordpad.rc:248 msgid "&Remove" msgstr "移除(&R)" @@ -65,7 +65,7 @@ #: oleview.rc:175 progman.rc:106 progman.rc:124 progman.rc:142 progman.rc:158 #: progman.rc:180 progman.rc:199 progman.rc:216 regedit.rc:247 regedit.rc:258 #: regedit.rc:271 regedit.rc:287 regedit.rc:300 regedit.rc:313 taskmgr.rc:442 -#: taskmgr.rc:517 winecfg.rc:208 winecfg.rc:218 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:212 winecfg.rc:222 wineconsole.rc:134 #: winefile.rc:131 winefile.rc:154 winefile.rc:184 winemine.rc:71 #: winemine.rc:81 winemine.rc:95 wordpad.rc:207 wordpad.rc:218 wordpad.rc:236 #: wordpad.rc:249 @@ -146,7 +146,7 @@ #: progman.rc:125 progman.rc:143 progman.rc:159 progman.rc:181 progman.rc:200 #: progman.rc:217 regedit.rc:248 regedit.rc:259 regedit.rc:272 regedit.rc:288 #: regedit.rc:301 regedit.rc:314 taskmgr.rc:443 taskmgr.rc:518 wineboot.rc:34 -#: winecfg.rc:209 winecfg.rc:219 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 #: winefile.rc:155 winefile.rc:185 winemine.rc:96 wordpad.rc:208 #: wordpad.rc:219 wordpad.rc:237 wordpad.rc:250 msgid "Cancel" @@ -529,7 +529,7 @@ msgid "Font St&yle:" msgstr "字型樣式(&Y):" -#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:283 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:292 msgid "&Size:" msgstr "大小(&S):" @@ -545,7 +545,7 @@ msgid "&Underline" msgstr "底線(&U)" -#: comdlg32.rc:268 winecfg.rc:281 +#: comdlg32.rc:268 winecfg.rc:290 msgid "&Color:" msgstr "配色(&C):" @@ -712,7 +712,7 @@ msgid "&to:" msgstr "到(&T):" -#: comdlg32.rc:415 winecfg.rc:289 +#: comdlg32.rc:415 winecfg.rc:298 msgid "Si&ze:" msgstr "大小(&Z):" @@ -2187,7 +2187,7 @@ msgid "&File name:" msgstr "檔案名稱(&F):" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:298 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 msgid "B&rowse..." msgstr "瀏覽(&R)..." @@ -3395,7 +3395,7 @@ msgid "Joysticks" msgstr "搖桿" -#: joy.rc:39 winecfg.rc:207 +#: joy.rc:39 winecfg.rc:211 msgid "&Disable" msgstr "停用(&D)" @@ -6683,7 +6683,7 @@ msgid "Hyperlink Information" msgstr "超連結資訊" -#: mshtml.rc:43 winecfg.rc:239 +#: mshtml.rc:43 winecfg.rc:243 msgid "&Type:" msgstr "類型(&T):" @@ -7499,7 +7499,7 @@ msgid "b" msgstr "位元" -#: sane.rc:34 wineps.rc:49 winecfg.rc:177 +#: sane.rc:34 wineps.rc:49 winecfg.rc:181 msgctxt "unit: dots/inch" msgid "dpi" msgstr "點/英吋" @@ -8024,7 +8024,7 @@ msgid "&Open:" msgstr "開啟(&O):" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:237 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 #: winefile.rc:133 msgid "&Browse..." msgstr "瀏覽(&B)..." @@ -8069,7 +8069,7 @@ msgid "Date deleted" msgstr "日期已刪除" -#: shell32.rc:156 winecfg.rc:95 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "桌面" @@ -9419,7 +9419,7 @@ msgid "Digi&tal" msgstr "數位時鐘(&T)" -#: clock.rc:35 notepad.rc:53 winecfg.rc:292 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "字型(&F)..." @@ -12769,7 +12769,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "正在更新 %s 的 Wine 設定,請稍候..." -#: winecfg.rc:135 +#: winecfg.rc:139 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU Lesser General Public License as published by the " @@ -12779,23 +12779,23 @@ "這個程式是自由軟體; 您可以遵照自由軟體基金會所制定的 GNU LGPL 2.1 版或者更新" "版本的許可條款, 來修改和重新散布這個程式。" -#: winecfg.rc:137 +#: winecfg.rc:141 msgid "Windows registration information" msgstr "Windows 註冊資訊" -#: winecfg.rc:138 +#: winecfg.rc:142 msgid "&Owner:" msgstr "姓名(&O):" -#: winecfg.rc:140 +#: winecfg.rc:144 msgid "Organi&zation:" msgstr "組織(&Z):" -#: winecfg.rc:148 +#: winecfg.rc:152 msgid "Application settings" msgstr "應用程式設定" -#: winecfg.rc:149 +#: winecfg.rc:153 msgid "" "Wine can mimic different Windows versions for each application. This tab is " "linked to the Libraries and Graphics tabs to allow you to change system-wide " @@ -12804,55 +12804,55 @@ "Wine 可以對不同程式偽裝成不同版本的 Windows。 「函式庫」與「顯示」分頁將連結" "到這個分頁, 除了調整預設設定, 也能調整個別程式的設定。" -#: winecfg.rc:153 +#: winecfg.rc:157 msgid "&Add application..." msgstr "新增程式設定(&A)..." -#: winecfg.rc:154 +#: winecfg.rc:158 msgid "&Remove application" msgstr "移除程式設定(&R)" -#: winecfg.rc:155 +#: winecfg.rc:159 msgid "&Windows Version:" msgstr "&Windows 版本:" -#: winecfg.rc:163 +#: winecfg.rc:167 msgid "Window settings" msgstr "視窗設定" -#: winecfg.rc:164 +#: winecfg.rc:168 msgid "Automatically capture the &mouse in full-screen windows" msgstr "自動在全螢幕視窗中捕捉滑鼠(&M)" -#: winecfg.rc:165 +#: winecfg.rc:169 msgid "Allow the window manager to &decorate the windows" msgstr "允許視窗管理器裝飾視窗(&D)" -#: winecfg.rc:166 +#: winecfg.rc:170 msgid "Allow the &window manager to control the windows" msgstr "允許視窗管理器控制視窗(&W)" -#: winecfg.rc:167 +#: winecfg.rc:171 msgid "&Emulate a virtual desktop" msgstr "模擬一個虛擬桌面(&E)" -#: winecfg.rc:169 +#: winecfg.rc:173 msgid "Desktop &size:" msgstr "桌面大小(&S):" -#: winecfg.rc:174 +#: winecfg.rc:178 msgid "Screen resolution" msgstr "螢幕解析度" -#: winecfg.rc:178 +#: winecfg.rc:182 msgid "This is a sample text using 10 point Tahoma" msgstr "這是使用 10 點 Tahoma 字型的範例文字" -#: winecfg.rc:185 +#: winecfg.rc:189 msgid "DLL overrides" msgstr "DLL 覆載" -#: winecfg.rc:186 +#: winecfg.rc:190 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12861,151 +12861,167 @@ "動態連結函式庫可以個別設定,來指定要使用 Wine 提供的內建版本,還是使用取自 " "Windows 或程式所提供的原生版本。" -#: winecfg.rc:188 +#: winecfg.rc:192 msgid "&New override for library:" msgstr "新增函式庫覆載(&N):" -#: winecfg.rc:190 wordpad.rc:247 +#: winecfg.rc:194 wordpad.rc:247 msgid "&Add" msgstr "新增(&A)" -#: winecfg.rc:191 +#: winecfg.rc:195 msgid "Existing &overrides:" msgstr "已有的函式庫覆載(&O):" -#: winecfg.rc:193 +#: winecfg.rc:197 msgid "&Edit..." msgstr "編輯(&E)..." -#: winecfg.rc:199 +#: winecfg.rc:203 msgid "Edit Override" msgstr "編輯覆載設定" -#: winecfg.rc:202 +#: winecfg.rc:206 msgid "Load order" msgstr "載入順序" -#: winecfg.rc:203 +#: winecfg.rc:207 msgid "&Builtin (Wine)" msgstr "內建(Wine)(&B)" -#: winecfg.rc:204 +#: winecfg.rc:208 msgid "&Native (Windows)" msgstr "原生(Windows)(&N)" -#: winecfg.rc:205 +#: winecfg.rc:209 msgid "Bui<in then Native" msgstr "內建先於原生(&L)" -#: winecfg.rc:206 +#: winecfg.rc:210 msgid "Nati&ve then Builtin" msgstr "原生先於內建(&V)" -#: winecfg.rc:214 +#: winecfg.rc:218 msgid "Select Drive Letter" msgstr "選擇儲存裝置代號" -#: winecfg.rc:226 +#: winecfg.rc:230 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Wine 設定" -#: winecfg.rc:227 +#: winecfg.rc:231 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "連線到掛載管理員時失敗,無法編輯磁碟組態。" -#: winecfg.rc:230 +#: winecfg.rc:234 msgid "&Add..." msgstr "加入(&A)..." -#: winecfg.rc:232 +#: winecfg.rc:236 msgid "Auto&detect" msgstr "自動偵測(&D)" -#: winecfg.rc:235 +#: winecfg.rc:239 msgid "&Path:" msgstr "路徑(&P):" -#: winecfg.rc:242 winecfg.rc:38 +#: winecfg.rc:246 winecfg.rc:38 msgid "Show &Advanced" msgstr "顯示進階選項(&A)" -#: winecfg.rc:243 +#: winecfg.rc:247 msgid "De&vice:" msgstr "裝置(&V):" -#: winecfg.rc:245 +#: winecfg.rc:249 msgid "Bro&wse..." msgstr "瀏覽(&W)..." -#: winecfg.rc:247 +#: winecfg.rc:251 msgid "&Label:" msgstr "標貼(&L):" -#: winecfg.rc:249 +#: winecfg.rc:253 msgid "S&erial:" msgstr "序號(&E):" -#: winecfg.rc:252 +#: winecfg.rc:256 msgid "Show &dot files" msgstr "顯示隱藏檔案(&D)" -#: winecfg.rc:259 +#: winecfg.rc:263 msgid "Driver diagnostics" msgstr "驅動程式資訊" -#: winecfg.rc:261 +#: winecfg.rc:265 msgid "Defaults" msgstr "預設" -#: winecfg.rc:262 +#: winecfg.rc:266 msgid "Output device:" msgstr "輸出裝置:" -#: winecfg.rc:263 +#: winecfg.rc:267 msgid "Voice output device:" msgstr "語音輸出裝置:" -#: winecfg.rc:264 +#: winecfg.rc:268 msgid "Input device:" msgstr "輸入裝置:" -#: winecfg.rc:265 +#: winecfg.rc:269 msgid "Voice input device:" msgstr "語音輸入裝置:" -#: winecfg.rc:270 +#: winecfg.rc:274 msgid "&Test Sound" msgstr "測試音效(&T)" -#: winecfg.rc:277 +#: winecfg.rc:275 +#, fuzzy +#| msgid "Wine configuration" +msgid "Speaker configuration" +msgstr "Wine 設定" + +#: winecfg.rc:276 +#, fuzzy +#| msgid "De&vice:" +msgid "Device:" +msgstr "裝置(&V):" + +#: winecfg.rc:278 +msgid "Speakers:" +msgstr "" + +#: winecfg.rc:286 msgid "Appearance" msgstr "外觀" -#: winecfg.rc:278 +#: winecfg.rc:287 msgid "&Theme:" msgstr "布景主題(&T):" -#: winecfg.rc:280 +#: winecfg.rc:289 msgid "&Install theme..." msgstr "安裝布景主題(&I)..." -#: winecfg.rc:285 +#: winecfg.rc:294 msgid "It&em:" msgstr "項目(&E):" -#: winecfg.rc:287 +#: winecfg.rc:296 msgid "C&olor:" msgstr "顏色(&O):" -#: winecfg.rc:293 +#: winecfg.rc:302 msgid "Folders" msgstr "資料夾" -#: winecfg.rc:296 +#: winecfg.rc:305 msgid "&Link to:" msgstr "連結至(&L):" @@ -13085,6 +13101,24 @@ msgid "(System default)" msgstr "(系統預設值)" +#: winecfg.rc:89 +msgid "5.1 Surround" +msgstr "" + +#: winecfg.rc:90 +#, fuzzy +#| msgid "graphic" +msgid "Quadraphonic" +msgstr "圖形" + +#: winecfg.rc:91 +msgid "Stereo" +msgstr "" + +#: winecfg.rc:92 +msgid "Mono" +msgstr "" + #: winecfg.rc:54 msgid "" "Changing the load order of this library is not recommended.\n" @@ -13201,127 +13235,127 @@ "\n" "請記得點選「儲存裝置」分頁的「加入」來建立一個新磁碟!\n" -#: winecfg.rc:93 +#: winecfg.rc:97 msgid "Controls Background" msgstr "按鈕背景" -#: winecfg.rc:94 +#: winecfg.rc:98 msgid "Controls Text" msgstr "按鈕文字" -#: winecfg.rc:96 +#: winecfg.rc:100 msgid "Menu Background" msgstr "功能表背景" -#: winecfg.rc:97 +#: winecfg.rc:101 msgid "Menu Text" msgstr "功能表文字" -#: winecfg.rc:98 +#: winecfg.rc:102 msgid "Scrollbar" msgstr "捲軸" -#: winecfg.rc:99 +#: winecfg.rc:103 msgid "Selection Background" msgstr "選擇區背景" -#: winecfg.rc:100 +#: winecfg.rc:104 msgid "Selection Text" msgstr "選擇區文字" -#: winecfg.rc:101 +#: winecfg.rc:105 msgid "Tooltip Background" msgstr "工具提示背景" -#: winecfg.rc:102 +#: winecfg.rc:106 msgid "Tooltip Text" msgstr "工具提示文字" -#: winecfg.rc:103 +#: winecfg.rc:107 msgid "Window Background" msgstr "視窗背景" -#: winecfg.rc:104 +#: winecfg.rc:108 msgid "Window Text" msgstr "視窗文字" -#: winecfg.rc:105 +#: winecfg.rc:109 msgid "Active Title Bar" msgstr "使用中標題列" -#: winecfg.rc:106 +#: winecfg.rc:110 msgid "Active Title Text" msgstr "使用中標題列文字" -#: winecfg.rc:107 +#: winecfg.rc:111 msgid "Inactive Title Bar" msgstr "非使用中標題列" -#: winecfg.rc:108 +#: winecfg.rc:112 msgid "Inactive Title Text" msgstr "非使用中標題列文字" -#: winecfg.rc:109 +#: winecfg.rc:113 msgid "Message Box Text" msgstr "訊息方塊文字" -#: winecfg.rc:110 +#: winecfg.rc:114 msgid "Application Workspace" msgstr "應用程式工作區" -#: winecfg.rc:111 +#: winecfg.rc:115 msgid "Window Frame" msgstr "視窗邊框" -#: winecfg.rc:112 +#: winecfg.rc:116 msgid "Active Border" msgstr "使用中邊框" -#: winecfg.rc:113 +#: winecfg.rc:117 msgid "Inactive Border" msgstr "非使用中邊框" -#: winecfg.rc:114 +#: winecfg.rc:118 msgid "Controls Shadow" msgstr "按鈕背景" -#: winecfg.rc:115 +#: winecfg.rc:119 msgid "Gray Text" msgstr "灰色文字" -#: winecfg.rc:116 +#: winecfg.rc:120 msgid "Controls Highlight" msgstr "按鈕高亮度" -#: winecfg.rc:117 +#: winecfg.rc:121 msgid "Controls Dark Shadow" msgstr "按鈕陰影" -#: winecfg.rc:118 +#: winecfg.rc:122 msgid "Controls Light" msgstr "按鈕亮度" -#: winecfg.rc:119 +#: winecfg.rc:123 msgid "Controls Alternate Background" msgstr "按鈕替換背景" -#: winecfg.rc:120 +#: winecfg.rc:124 msgid "Hot Tracked Item" msgstr "熱門軌段的項目" -#: winecfg.rc:121 +#: winecfg.rc:125 msgid "Active Title Bar Gradient" msgstr "使用中標題列梯度" -#: winecfg.rc:122 +#: winecfg.rc:126 msgid "Inactive Title Bar Gradient" msgstr "非使用中標題列梯度" -#: winecfg.rc:123 +#: winecfg.rc:127 msgid "Menu Highlight" msgstr "選單高亮度" -#: winecfg.rc:124 +#: winecfg.rc:128 msgid "Menu Bar" msgstr "選單列" diff -Nru wine-staging-1.7.35~ubuntu12.04.1/programs/cscript/Makefile.in wine-staging-1.7.36~ubuntu12.04.1/programs/cscript/Makefile.in --- wine-staging-1.7.35~ubuntu12.04.1/programs/cscript/Makefile.in 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/programs/cscript/Makefile.in 2015-02-08 20:31:28.000000000 +0000 @@ -1,6 +1,6 @@ MODULE = cscript.exe APPMODE = -mwindows -municode -IMPORTS = uuid shell32 oleaut32 ole32 advapi32 +IMPORTS = uuid shell32 oleaut32 ole32 user32 advapi32 EXTRADEFS = -DCSCRIPT_BUILD PARENTSRC = ../wscript diff -Nru wine-staging-1.7.35~ubuntu12.04.1/programs/winecfg/audio.c wine-staging-1.7.36~ubuntu12.04.1/programs/winecfg/audio.c --- wine-staging-1.7.35~ubuntu12.04.1/programs/winecfg/audio.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/programs/winecfg/audio.c 2015-02-08 20:31:28.000000000 +0000 @@ -45,6 +45,7 @@ #include "ole2.h" #include "initguid.h" +#include "propkey.h" #include "devpkey.h" #include "mmdeviceapi.h" #include "audioclient.h" @@ -58,6 +59,7 @@ struct DeviceInfo { WCHAR *id; PROPVARIANT name; + int speaker_config; }; static WCHAR g_drv_keyW[256] = {'S','o','f','t','w','a','r','e','\\', @@ -71,10 +73,25 @@ static UINT num_render_devs, num_capture_devs; static struct DeviceInfo *render_devs, *capture_devs; +static const struct +{ + int text_id; + DWORD speaker_mask; +} speaker_configs[] = +{ + { IDS_AUDIO_SPEAKER_5POINT1, KSAUDIO_SPEAKER_5POINT1 }, + { IDS_AUDIO_SPEAKER_QUAD, KSAUDIO_SPEAKER_QUAD }, + { IDS_AUDIO_SPEAKER_STEREO, KSAUDIO_SPEAKER_STEREO }, + { IDS_AUDIO_SPEAKER_MONO, KSAUDIO_SPEAKER_MONO }, + { 0, 0 } +}; + static BOOL load_device(IMMDevice *dev, struct DeviceInfo *info) { IPropertyStore *ps; HRESULT hr; + PROPVARIANT pv; + UINT i; hr = IMMDevice_GetId(dev, &info->id); if(FAILED(hr)){ @@ -93,13 +110,36 @@ hr = IPropertyStore_GetValue(ps, (PROPERTYKEY*)&DEVPKEY_Device_FriendlyName, &info->name); - IPropertyStore_Release(ps); if(FAILED(hr)){ CoTaskMemFree(info->id); info->id = NULL; + IPropertyStore_Release(ps); return FALSE; } + PropVariantInit(&pv); + + hr = IPropertyStore_GetValue(ps, + &PKEY_AudioEndpoint_PhysicalSpeakers, &pv); + + info->speaker_config = -1; + if(SUCCEEDED(hr) && pv.vt == VT_UI4){ + i = 0; + while (speaker_configs[i].text_id != 0) { + if ((speaker_configs[i].speaker_mask & pv.u.ulVal) == speaker_configs[i].speaker_mask) { + info->speaker_config = i; + break; + } + i++; + } + } + + /* fallback to stereo */ + if(info->speaker_config == -1) + info->speaker_config = 2; + + IPropertyStore_Release(ps); + return TRUE; } @@ -185,6 +225,7 @@ IMMDeviceEnumerator *devenum; BOOL have_driver = FALSE; HRESULT hr; + UINT i; WINE_TRACE("\n"); @@ -229,15 +270,31 @@ 0, (LPARAM)sysdefault_str); SendDlgItemMessageW(hDlg, IDC_VOICEIN_DEVICE, CB_SETCURSEL, 0, 0); + i = 0; + while (speaker_configs[i].text_id != 0) { + WCHAR speaker_str[256]; + + LoadStringW(GetModuleHandleW(NULL), speaker_configs[i].text_id, + speaker_str, sizeof(speaker_str) / sizeof(*speaker_str)); + + SendDlgItemMessageW(hDlg, IDC_SPEAKERCONFIG_SPEAKERS, CB_ADDSTRING, + 0, (LPARAM)speaker_str); + + i++; + } + if(have_driver){ WCHAR *reg_out_dev, *reg_vout_dev, *reg_in_dev, *reg_vin_dev; - UINT i; + BOOL default_dev_found = FALSE; reg_out_dev = get_reg_keyW(HKEY_CURRENT_USER, g_drv_keyW, reg_out_nameW, NULL); reg_vout_dev = get_reg_keyW(HKEY_CURRENT_USER, g_drv_keyW, reg_vout_nameW, NULL); reg_in_dev = get_reg_keyW(HKEY_CURRENT_USER, g_drv_keyW, reg_in_nameW, NULL); reg_vin_dev = get_reg_keyW(HKEY_CURRENT_USER, g_drv_keyW, reg_vin_nameW, NULL); + SendDlgItemMessageW(hDlg, IDC_SPEAKERCONFIG_DEVICE, CB_SETCURSEL, i, 0); + SendDlgItemMessageW(hDlg, IDC_SPEAKERCONFIG_SPEAKERS, CB_SETCURSEL, render_devs[i].speaker_config, 0); + for(i = 0; i < num_render_devs; ++i){ if(!render_devs[i].id) continue; @@ -246,8 +303,16 @@ 0, (LPARAM)render_devs[i].name.u.pwszVal); SendDlgItemMessageW(hDlg, IDC_AUDIOOUT_DEVICE, CB_SETITEMDATA, i + 1, (LPARAM)&render_devs[i]); - if(reg_out_dev && !lstrcmpW(render_devs[i].id, reg_out_dev)) + + SendDlgItemMessageW(hDlg, IDC_SPEAKERCONFIG_DEVICE, CB_ADDSTRING, + 0, (LPARAM)render_devs[i].name.u.pwszVal); + + if(reg_out_dev && !lstrcmpW(render_devs[i].id, reg_out_dev)){ SendDlgItemMessageW(hDlg, IDC_AUDIOOUT_DEVICE, CB_SETCURSEL, i + 1, 0); + SendDlgItemMessageW(hDlg, IDC_SPEAKERCONFIG_DEVICE, CB_SETCURSEL, i, 0); + SendDlgItemMessageW(hDlg, IDC_SPEAKERCONFIG_SPEAKERS, CB_SETCURSEL, render_devs[i].speaker_config, 0); + default_dev_found = TRUE; + } SendDlgItemMessageW(hDlg, IDC_VOICEOUT_DEVICE, CB_ADDSTRING, 0, (LPARAM)render_devs[i].name.u.pwszVal); @@ -257,6 +322,11 @@ SendDlgItemMessageW(hDlg, IDC_VOICEOUT_DEVICE, CB_SETCURSEL, i + 1, 0); } + if(!default_dev_found && num_render_devs > 0){ + SendDlgItemMessageW(hDlg, IDC_SPEAKERCONFIG_DEVICE, CB_SETCURSEL, 0, 0); + SendDlgItemMessageW(hDlg, IDC_SPEAKERCONFIG_SPEAKERS, CB_SETCURSEL, render_devs[0].speaker_config, 0); + } + for(i = 0; i < num_capture_devs; ++i){ if(!capture_devs[i].id) continue; @@ -317,6 +387,56 @@ } } +static void apply_speaker_configs(void) +{ + UINT i; + IMMDeviceEnumerator *devenum; + IMMDevice *dev; + IPropertyStore *ps; + PROPVARIANT pv; + HRESULT hr; + + hr = CoCreateInstance(&CLSID_MMDeviceEnumerator, NULL, + CLSCTX_INPROC_SERVER, &IID_IMMDeviceEnumerator, (void**)&devenum); + + if(FAILED(hr)){ + ERR("Unable to create MMDeviceEnumerator: 0x%08x\n", hr); + return; + } + + PropVariantInit(&pv); + pv.vt = VT_UI4; + + for (i = 0; i < num_render_devs; i++) { + hr = IMMDeviceEnumerator_GetDevice(devenum, render_devs[i].id, &dev); + + if(FAILED(hr)){ + WARN("Could not get MMDevice for %s: 0x%08x\n", wine_dbgstr_w(render_devs[i].id), hr); + continue; + } + + hr = IMMDevice_OpenPropertyStore(dev, STGM_WRITE, &ps); + + if(FAILED(hr)){ + WARN("Could not open property store for %s: 0x%08x\n", wine_dbgstr_w(render_devs[i].id), hr); + IMMDevice_Release(dev); + continue; + } + + pv.u.ulVal = speaker_configs[render_devs[i].speaker_config].speaker_mask; + + hr = IPropertyStore_SetValue(ps, &PKEY_AudioEndpoint_PhysicalSpeakers, &pv); + + if (FAILED(hr)) + WARN("IPropertyStore_SetValue failed for %s: 0x%08x\n", wine_dbgstr_w(render_devs[i].id), hr); + + IPropertyStore_Release(ps); + IMMDevice_Release(dev); + } + + IMMDeviceEnumerator_Release(devenum); +} + INT_PTR CALLBACK AudioDlgProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { @@ -350,6 +470,30 @@ SendMessageW(GetParent(hDlg), PSM_CHANGED, 0, 0); } break; + case IDC_SPEAKERCONFIG_DEVICE: + if(HIWORD(wParam) == CBN_SELCHANGE){ + UINT idx; + + idx = SendDlgItemMessageW(hDlg, IDC_SPEAKERCONFIG_DEVICE, CB_GETCURSEL, 0, 0); + + if(idx < num_render_devs){ + SendDlgItemMessageW(hDlg, IDC_SPEAKERCONFIG_SPEAKERS, CB_SETCURSEL, render_devs[idx].speaker_config, 0); + } + } + break; + case IDC_SPEAKERCONFIG_SPEAKERS: + if(HIWORD(wParam) == CBN_SELCHANGE){ + UINT dev, idx; + + idx = SendDlgItemMessageW(hDlg, IDC_SPEAKERCONFIG_SPEAKERS, CB_GETCURSEL, 0, 0); + dev = SendDlgItemMessageW(hDlg, IDC_SPEAKERCONFIG_DEVICE, CB_GETCURSEL, 0, 0); + + if(dev < num_render_devs){ + render_devs[dev].speaker_config = idx; + SendMessageW(GetParent(hDlg), PSM_CHANGED, 0, 0); + } + } + break; } break; @@ -363,6 +507,7 @@ SetWindowLongPtrW(hDlg, DWLP_MSGRESULT, FALSE); break; case PSN_APPLY: + apply_speaker_configs(); apply(); SetWindowLongPtrW(hDlg, DWLP_MSGRESULT, PSNRET_NOERROR); break; diff -Nru wine-staging-1.7.35~ubuntu12.04.1/programs/winecfg/resource.h wine-staging-1.7.36~ubuntu12.04.1/programs/winecfg/resource.h --- wine-staging-1.7.35~ubuntu12.04.1/programs/winecfg/resource.h 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/programs/winecfg/resource.h 2015-02-08 20:31:28.000000000 +0000 @@ -149,6 +149,12 @@ #define IDS_AUDIO_TEST_FAILED 1309 #define IDS_AUDIO_TEST_FAILED_TITLE 1310 #define IDS_AUDIO_SYSDEFAULT 1311 +#define IDC_SPEAKERCONFIG_DEVICE 1312 +#define IDC_SPEAKERCONFIG_SPEAKERS 1313 +#define IDS_AUDIO_SPEAKER_5POINT1 1314 +#define IDS_AUDIO_SPEAKER_QUAD 1315 +#define IDS_AUDIO_SPEAKER_STEREO 1316 +#define IDS_AUDIO_SPEAKER_MONO 1317 /* desktop integration tab */ #define IDC_THEME_COLORCOMBO 1401 diff -Nru wine-staging-1.7.35~ubuntu12.04.1/programs/winecfg/winecfg.rc wine-staging-1.7.36~ubuntu12.04.1/programs/winecfg/winecfg.rc --- wine-staging-1.7.35~ubuntu12.04.1/programs/winecfg/winecfg.rc 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/programs/winecfg/winecfg.rc 2015-02-08 20:31:28.000000000 +0000 @@ -85,6 +85,10 @@ IDS_AUDIO_TEST_FAILED "Audio test failed!" IDS_AUDIO_TEST_FAILED_TITLE "Error" IDS_AUDIO_SYSDEFAULT "(System default)" + IDS_AUDIO_SPEAKER_5POINT1 "5.1 Surround" + IDS_AUDIO_SPEAKER_QUAD "Quadraphonic" + IDS_AUDIO_SPEAKER_STEREO "Stereo" + IDS_AUDIO_SPEAKER_MONO "Mono" END STRINGTABLE @@ -267,6 +271,11 @@ COMBOBOX IDC_AUDIOIN_DEVICE,110,75,135,14,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_VOICEIN_DEVICE,110,91,135,14,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP PUSHBUTTON "&Test Sound",IDC_AUDIO_TEST,8,113,69,14 + GROUPBOX "Speaker configuration",IDC_STATIC,8,132,244,44 + LTEXT "Device:",IDC_STATIC,18,144,230,8 + COMBOBOX IDC_SPEAKERCONFIG_DEVICE,110,142,135,14,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "Speakers:",IDC_STATIC,18,160,230,8 + COMBOBOX IDC_SPEAKERCONFIG_SPEAKERS,110,158,135,14,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP END IDD_DESKTOP_INTEGRATION DIALOG 0, 0, 260, 220 diff -Nru wine-staging-1.7.35~ubuntu12.04.1/programs/wscript/host.c wine-staging-1.7.36~ubuntu12.04.1/programs/wscript/host.c --- wine-staging-1.7.35~ubuntu12.04.1/programs/wscript/host.c 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/programs/wscript/host.c 2015-02-08 20:31:28.000000000 +0000 @@ -30,6 +30,8 @@ #include #include +WINE_DEFAULT_DEBUG_CHANNEL(wscript); + #define BUILDVERSION 16535 static const WCHAR wshNameW[] = {'W','i','n','d','o','w','s',' ','S','c','r','i','p','t',' ','H','o','s','t',0}; @@ -42,7 +44,59 @@ VARIANT_FALSE; #endif -WINE_DEFAULT_DEBUG_CHANNEL(wscript); +static HRESULT to_string(VARIANT *src, BSTR *dst) +{ + VARIANT v; + HRESULT hres; + + static const WCHAR nullW[] = {'n','u','l','l',0}; + + if(V_VT(src) == VT_NULL) { + *dst = SysAllocString(nullW); + return *dst ? S_OK : E_OUTOFMEMORY; + } + + V_VT(&v) = VT_EMPTY; + hres = VariantChangeType(&v, src, 0, VT_BSTR); + if(FAILED(hres)) { + WARN("Could not convert argument %s to string\n", debugstr_variant(src)); + return hres; + } + + *dst = V_BSTR(&v); + return S_OK; +} + +static void print_string(const WCHAR *string) +{ + DWORD count, ret, len, lena; + char *buf; + + if(wshInteractive) { + static const WCHAR windows_script_hostW[] = + {'W','i','n','d','o','w','s',' ','S','c','r','i','p','t',' ','H','o','s','t',0}; + MessageBoxW(NULL, string, windows_script_hostW, MB_OK); + return; + } + + len = strlenW(string); + ret = WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), string, len, &count, NULL); + if(ret) { + static const WCHAR crnlW[] = {'\r','\n'}; + WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), crnlW, sizeof(crnlW)/sizeof(*crnlW), &count, NULL); + return; + } + + lena = WideCharToMultiByte(GetConsoleOutputCP(), 0, string, len, NULL, 0, NULL, NULL); + buf = heap_alloc(len); + if(!buf) + return; + + WideCharToMultiByte(GetConsoleOutputCP(), 0, string, len, buf, lena, NULL, NULL); + WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), buf, lena, &count, FALSE); + heap_free(buf); + WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), "\r\n", 2, &count, FALSE); +} static HRESULT WINAPI Host_QueryInterface(IHost *iface, REFIID riid, void **ppv) { @@ -263,8 +317,72 @@ static HRESULT WINAPI Host_Echo(IHost *iface, SAFEARRAY *args) { - WINE_FIXME("(%p)\n", args); - return E_NOTIMPL; + WCHAR *output = NULL, *ptr; + unsigned argc, i, len; + int ubound, lbound; + VARIANT *argv; + BSTR *strs; + HRESULT hres; + + TRACE("(%p)\n", args); + + if(SafeArrayGetDim(args) != 1) { + FIXME("Unsupported args dim %d\n", SafeArrayGetDim(args)); + return E_NOTIMPL; + } + + SafeArrayGetLBound(args, 1, &lbound); + SafeArrayGetUBound(args, 1, &ubound); + + hres = SafeArrayAccessData(args, (void**)&argv); + if(FAILED(hres)) + return hres; + + argc = ubound-lbound+1; + strs = heap_alloc_zero(argc*sizeof(*strs)); + if(!strs) { + SafeArrayUnaccessData(args); + return E_OUTOFMEMORY; + } + + /* Len of spaces between arguments. */ + len = argc-1; + + for(i=0; i < argc; i++) { + hres = to_string(argv+i, strs+i); + if(FAILED(hres)) + break; + + len += SysStringLen(strs[i]); + } + + SafeArrayUnaccessData(args); + if(SUCCEEDED(hres)) { + ptr = output = heap_alloc((len+1)*sizeof(WCHAR)); + if(output) { + for(i=0; i < argc; i++) { + if(i) + *ptr++ = ' '; + len = SysStringLen(strs[i]); + memcpy(ptr, strs[i], len*sizeof(WCHAR)); + ptr += len; + } + *ptr = 0; + }else { + hres = E_OUTOFMEMORY; + } + } + + for(i=0; i < argc; i++) + SysFreeString(strs[i]); + heap_free(strs); + if(FAILED(hres)) + return hres; + + print_string(output); + + heap_free(output); + return S_OK; } static HRESULT WINAPI Host_GetObject(IHost *iface, BSTR Pathname, BSTR ProgID, diff -Nru wine-staging-1.7.35~ubuntu12.04.1/programs/wscript/Makefile.in wine-staging-1.7.36~ubuntu12.04.1/programs/wscript/Makefile.in --- wine-staging-1.7.35~ubuntu12.04.1/programs/wscript/Makefile.in 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/programs/wscript/Makefile.in 2015-02-08 20:31:28.000000000 +0000 @@ -1,6 +1,6 @@ MODULE = wscript.exe APPMODE = -mwindows -municode -IMPORTS = uuid shell32 oleaut32 ole32 advapi32 +IMPORTS = uuid shell32 oleaut32 ole32 user32 advapi32 RC_SRCS = \ rsrc.rc diff -Nru wine-staging-1.7.35~ubuntu12.04.1/programs/wscript/wscript.h wine-staging-1.7.36~ubuntu12.04.1/programs/wscript/wscript.h --- wine-staging-1.7.35~ubuntu12.04.1/programs/wscript/wscript.h 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/programs/wscript/wscript.h 2015-02-08 20:31:28.000000000 +0000 @@ -33,3 +33,18 @@ extern int numOfArgs; extern VARIANT_BOOL wshInteractive; + +static inline void * __WINE_ALLOC_SIZE(1) heap_alloc(size_t len) +{ + return HeapAlloc(GetProcessHeap(), 0, len); +} + +static inline void * __WINE_ALLOC_SIZE(1) heap_alloc_zero(size_t len) +{ + return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len); +} + +static inline BOOL heap_free(void *mem) +{ + return HeapFree(GetProcessHeap(), 0, mem); +} diff -Nru wine-staging-1.7.35~ubuntu12.04.1/README.md wine-staging-1.7.36~ubuntu12.04.1/README.md --- wine-staging-1.7.35~ubuntu12.04.1/README.md 2015-01-24 15:32:20.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/README.md 2015-02-08 20:46:30.000000000 +0000 @@ -38,16 +38,19 @@ Included bug fixes and improvements =================================== -**Bugs fixed in Wine Staging 1.7.35 [146]:** +**Bugs fixed in Wine Staging 1.7.36 [167]:** * Add Dynamic DST exceptions for Israel Standard Time ([Wine Bug #36374](https://bugs.winehq.org/show_bug.cgi?id=36374)) * Add default ACLs for user shell folders +* Add implementation for CreateThreadpool ([Wine Bug #35192](https://bugs.winehq.org/show_bug.cgi?id=35192)) +* Add library override instead of closing winecfg when pressing ENTER over the combobox ([Wine Bug #12804](https://bugs.winehq.org/show_bug.cgi?id=12804)) * Add nvapi stubs required for GPU PhysX support +* Add performance library registry keys needed by MS SQL Server Management Studio Express 2008 R2 ([Wine Bug #33661](https://bugs.winehq.org/show_bug.cgi?id=33661)) * Add stub for D3DXComputeNormalMap * Add stub for D3DXComputeTangentFrameEx ([Wine Bug #31984](https://bugs.winehq.org/show_bug.cgi?id=31984)) * Add stub for D3DXIntersect -* Add stub for KeWaitForMultipleObjects * Add stub for NtSetLdtEntries/ZwSetLdtEntries ([Wine Bug #26268](https://bugs.winehq.org/show_bug.cgi?id=26268)) +* Add stub for ntoskrnl.KeWaitForMultipleObjects * Add stubs for D3DXCreateAnimationController interface * Add support for GetPropValue to PulseAudio backend * Adobe Reader needs ITextSelection_fnGetDuplicate implementation @@ -60,12 +63,12 @@ * Avseq crashes when multisampling is enabled ([Wine Bug #31998](https://bugs.winehq.org/show_bug.cgi?id=31998)) * Basic support for CUDA * Black & White needs DXTn software decoding support ([Wine Bug #14939](https://bugs.winehq.org/show_bug.cgi?id=14939)) +* Call DriverUnload function when unloading a device driver. * Child of Light expects FindConnectionPoint to succeed and increase the refcount ([Wine Bug #36408](https://bugs.winehq.org/show_bug.cgi?id=36408)) * CreateProcess does not prioritize the working directory over the system search path ([Wine Bug #23934](https://bugs.winehq.org/show_bug.cgi?id=23934)) * D3DCompileShader should filter specific warning messages ([Wine Bug #33770](https://bugs.winehq.org/show_bug.cgi?id=33770)) * Do not append duplicate NULL characters when importing keys with regedit ([Wine Bug #37575](https://bugs.winehq.org/show_bug.cgi?id=37575)) * Do not fail when a used context is passed to wglShareLists ([Wine Bug #11436](https://bugs.winehq.org/show_bug.cgi?id=11436)) -* Don't fill KdHelp structure for usermode applications ([Wine Bug #37272](https://bugs.winehq.org/show_bug.cgi?id=37272)) * Emulate access to KI_USER_SHARED_DATA kernel page on x86_64 ([Wine Bug #33849](https://bugs.winehq.org/show_bug.cgi?id=33849)) * Ensure NtProtectVirtualMemory and NtCreateSection are on separate pages ([Wine Bug #33162](https://bugs.winehq.org/show_bug.cgi?id=33162)) * Ensure X11 input events are handled even without explicit message loop ([Wine Bug #8854](https://bugs.winehq.org/show_bug.cgi?id=8854)) @@ -74,7 +77,9 @@ * FEAR 1 installer expects basic_string_wchar_dtor to return NULL ([Wine Bug #37358](https://bugs.winehq.org/show_bug.cgi?id=37358)) * Fix NULL dereference in ICSeqCompressFrameStart ([Wine Bug #27595](https://bugs.winehq.org/show_bug.cgi?id=27595)) * Fix access violation when calling GetStringTypeW with NULL src. ([Wine Bug #37759](https://bugs.winehq.org/show_bug.cgi?id=37759)) +* Fix arguments for OSMesaMakeCurrent when using 16 bit formats * Fix black screen on startup introduced by pixelformat changes. ([Wine Bug #35950](https://bugs.winehq.org/show_bug.cgi?id=35950)) +* Fix check for end_frame in RtlUnwindEx on x86_64. ([Wine Bug #34254](https://bugs.winehq.org/show_bug.cgi?id=34254)) * Fix comparison of punctuation characters in lstrcmp ([Wine Bug #10767](https://bugs.winehq.org/show_bug.cgi?id=10767)) * Fix condition mask handling in RtlVerifyVersionInfo ([Wine Bug #36143](https://bugs.winehq.org/show_bug.cgi?id=36143)) * Fix crash in Space Rangers2 caused by missing DXTn support ([Wine Bug #24983](https://bugs.winehq.org/show_bug.cgi?id=24983)) @@ -84,6 +89,7 @@ * Fix flickering introduced by pixelformat changes. ([Wine Bug #35718](https://bugs.winehq.org/show_bug.cgi?id=35718)) * Fix for ConnectNamedPort return value in overlapped mode ([Wine Bug #16550](https://bugs.winehq.org/show_bug.cgi?id=16550)) * Fix for programs leaking wndproc slots ([Wine Bug #32451](https://bugs.winehq.org/show_bug.cgi?id=32451)) +* Fix graphical corruption in FarCry 3 with NVIDIA drivers ([Wine Bug #35062](https://bugs.winehq.org/show_bug.cgi?id=35062)) * Fix gray screen on startup introduced by pixelformat changes. ([Wine Bug #35975](https://bugs.winehq.org/show_bug.cgi?id=35975)) * Fix handling of empty section and key name for profile files. ([Wine Bug #8036](https://bugs.winehq.org/show_bug.cgi?id=8036)) * Fix handling of invert_y in DrawTextExW ([Wine Bug #22109](https://bugs.winehq.org/show_bug.cgi?id=22109)) @@ -91,6 +97,7 @@ * Fix init of LONGLONG variable with a negative value in TGA decoder * Fix issues with dragging layers between images in Adobe Photoshop 7.0 ([Wine Bug #12007](https://bugs.winehq.org/show_bug.cgi?id=12007)) * Fix missing video introduced by pixelformat changes. ([Wine Bug #36900](https://bugs.winehq.org/show_bug.cgi?id=36900)) +* Fix mouse jittering in Planetside 2 ([Wine Bug #32913](https://bugs.winehq.org/show_bug.cgi?id=32913)) * Fix parameters for ConvertToIndexedBlendedMesh stub ([Wine Bug #36449](https://bugs.winehq.org/show_bug.cgi?id=36449)) * Fix possible segfault in pulse_rd_loop of PulseAudio backend * Fix return value of ScrollWindowEx for invisible windows ([Wine Bug #37706](https://bugs.winehq.org/show_bug.cgi?id=37706)) @@ -98,6 +105,7 @@ * Fix unintentional leaks with ntdll internals * Fix wined3d performance drop introduced by pixelformat changes. ([Wine Bug #35655](https://bugs.winehq.org/show_bug.cgi?id=35655)) * Fix wrong colors in Wolfenstein (2009) ([Wine Bug #34692](https://bugs.winehq.org/show_bug.cgi?id=34692)) +* Fix wrong defition of ntoskrnl.IoReleaseCancelSpinLock function. * Games For Windows Live 1.x expects a valid linker version in the PE header ([Wine Bug #28768](https://bugs.winehq.org/show_bug.cgi?id=28768)) * GetMonitorInfo returns the same name for all monitors ([Wine Bug #37709](https://bugs.winehq.org/show_bug.cgi?id=37709)) * GetSecurityInfo returns NULL DACL for process object ([Wine Bug #15980](https://bugs.winehq.org/show_bug.cgi?id=15980)) @@ -108,16 +116,27 @@ * Implement ID3DXEffect::FindNextValidTechnique ([Wine Bug #34101](https://bugs.winehq.org/show_bug.cgi?id=34101)) * Implement IDXGIOutput::GetDesc * Implement a Microsoft Yahei replacement font ([Wine Bug #13829](https://bugs.winehq.org/show_bug.cgi?id=13829)) +* Implement additional stubs for vcomp dlls ([Wine Bug #31640](https://bugs.winehq.org/show_bug.cgi?id=31640)) * Implement an Arial replacement font ([Wine Bug #32323](https://bugs.winehq.org/show_bug.cgi?id=32323)) * Implement exclusive mode in PulseAudio backend ([Wine Bug #37042](https://bugs.winehq.org/show_bug.cgi?id=37042)) * Implement ntoskrnl driver testing framework. * Implement semi-stub for IDirectPlayVoiceClient::GetCompressionTypes ([Wine Bug #29238](https://bugs.winehq.org/show_bug.cgi?id=29238)) +* Implement stub for ntoskrnl.IoGetAttachedDeviceReference +* Implement stub for ntoskrnl.KeDelayExecutionThread. +* Implement stubs for ntoskrnl.Ex{Acquire,Release}FastMutexUnsafe +* Implement stubs for ntoskrnl.ObReferenceObjectByPointer and ntoskrnl.ObDereferenceObject +* Implement threadpool timers ([Wine Bug #37306](https://bugs.winehq.org/show_bug.cgi?id=37306)) +* Implement threadpool wait objects +* Implement threadpool work items ([Wine Bug #32531](https://bugs.winehq.org/show_bug.cgi?id=32531)) +* Improve stub for AEV_GetVolumeRange ([Wine Bug #35658](https://bugs.winehq.org/show_bug.cgi?id=35658)) * Improvement for heap allocation performance +* Jedi Knight: Dark Forces II crashes with winmm set to native ([Wine Bug #37983](https://bugs.winehq.org/show_bug.cgi?id=37983)) * Lego Stunt Rally requires DXTn software de/encoding support ([Wine Bug #25486](https://bugs.winehq.org/show_bug.cgi?id=25486)) * Limit cross thread access to ImmSet* functions ([Wine Bug #35361](https://bugs.winehq.org/show_bug.cgi?id=35361)) * Lockfree algorithm for filedescriptor cache (improves file access speed) * MSVCRT crashes when NULL is passed as string to atof or strtod ([Wine Bug #32550](https://bugs.winehq.org/show_bug.cgi?id=32550)) * Make it possible to change media center / tablet pc status ([Wine Bug #18732](https://bugs.winehq.org/show_bug.cgi?id=18732)) +* MediaCoder needs CUDA for video encoding ([Wine Bug #37664](https://bugs.winehq.org/show_bug.cgi?id=37664)) * Multiple applications need EnumDisplayDevicesW implementation ([Wine Bug #34978](https://bugs.winehq.org/show_bug.cgi?id=34978)) * Multiple applications start wrong executable if whitespace present in name ([Wine Bug #19666](https://bugs.winehq.org/show_bug.cgi?id=19666)) * Need for Speed 3 installer requires devices in HKEY_DYN_DATA ([Wine Bug #7115](https://bugs.winehq.org/show_bug.cgi?id=7115)) @@ -133,6 +152,7 @@ * Scrolling causes mouse and screen to lock in Call to Power II ([Wine Bug #34559](https://bugs.winehq.org/show_bug.cgi?id=34559)) * Send WM_PAINT event during dialog creation ([Wine Bug #35652](https://bugs.winehq.org/show_bug.cgi?id=35652)) * Set last error when GetRawInputDeviceList fails ([Wine Bug #37667](https://bugs.winehq.org/show_bug.cgi?id=37667)) +* Silverlight needs support for file ACLs ([Wine Bug #31858](https://bugs.winehq.org/show_bug.cgi?id=31858)) * Super Mario 3: Mario Forever fails to load keyboard mapping from profile files. ([Wine Bug #18099](https://bugs.winehq.org/show_bug.cgi?id=18099)) * Support for AllocateAndGetTcpExTableFromStack ([Wine Bug #34372](https://bugs.winehq.org/show_bug.cgi?id=34372)) * Support for BindImageEx ([Wine Bug #3591](https://bugs.winehq.org/show_bug.cgi?id=3591)) @@ -154,6 +174,7 @@ * Support for Junction Points ([Wine Bug #12401](https://bugs.winehq.org/show_bug.cgi?id=12401)) * Support for KF_FLAG_DEFAULT_PATH in SHGetKnownFolderPath ([Wine Bug #30385](https://bugs.winehq.org/show_bug.cgi?id=30385)) * Support for LoadIconMetric ([Wine Bug #35375](https://bugs.winehq.org/show_bug.cgi?id=35375)) +* Support for NVIDIA video encoder library (nvencodeapi) * Support for NtQuerySection ([Wine Bug #37338](https://bugs.winehq.org/show_bug.cgi?id=37338)) * Support for NtSetInformationFile class FileDispositionInformation ([Wine Bug #30397](https://bugs.winehq.org/show_bug.cgi?id=30397)) * Support for PulseAudio backend for audio ([Wine Bug #10495](https://bugs.winehq.org/show_bug.cgi?id=10495)) @@ -172,7 +193,7 @@ * Support for pasting HTML from Unix applications ([Wine Bug #7372](https://bugs.winehq.org/show_bug.cgi?id=7372)) * Support for process ACLs ([Wine Bug #22006](https://bugs.winehq.org/show_bug.cgi?id=22006)) * Support for setcap on wine-preloader ([Wine Bug #26256](https://bugs.winehq.org/show_bug.cgi?id=26256)) -* Support for stored file ACLs ([Wine Bug #31858](https://bugs.winehq.org/show_bug.cgi?id=31858)) +* Support for stored file ACLs ([Wine Bug #33576](https://bugs.winehq.org/show_bug.cgi?id=33576)) * Try harder to get the host name address in getaddrinfo() ([Wine Bug #29609](https://bugs.winehq.org/show_bug.cgi?id=29609)) * Tumblebugs 2 requires DXTn software encoding support ([Wine Bug #29586](https://bugs.winehq.org/show_bug.cgi?id=29586)) * Update a XIM candidate position when cursor location changes ([Wine Bug #30938](https://bugs.winehq.org/show_bug.cgi?id=30938)) diff -Nru wine-staging-1.7.35~ubuntu12.04.1/tools/buildimage wine-staging-1.7.36~ubuntu12.04.1/tools/buildimage --- wine-staging-1.7.35~ubuntu12.04.1/tools/buildimage 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/tools/buildimage 2015-02-08 20:31:28.000000000 +0000 @@ -107,7 +107,7 @@ $width = $attr{'width'}; $height = $attr{'height'}; - if(defined($x) and defined($x)) { + if(defined($x) and defined($y)) { if($x =~ /\d*/ and $y =~ /\d*/) { shell $convert, $renderedSVGFileName, "-crop", "${width}x${height}+$x+$y", $pngFileName; } @@ -141,7 +141,12 @@ } # Render the SVG image -shell $rsvg, $svgFileName, $renderedSVGFileName; +my @rsvgCmd; +push(@rsvgCmd, $rsvg); +push(@rsvgCmd, $svgFileName); +push(@rsvgCmd, "-o") if ($rsvg eq "rsvg-convert"); +push(@rsvgCmd, $renderedSVGFileName); +shell @rsvgCmd; # Render the images in the SVG my $parser = new XML::Parser( diff -Nru wine-staging-1.7.35~ubuntu12.04.1/VERSION wine-staging-1.7.36~ubuntu12.04.1/VERSION --- wine-staging-1.7.35~ubuntu12.04.1/VERSION 2015-01-24 15:16:52.000000000 +0000 +++ wine-staging-1.7.36~ubuntu12.04.1/VERSION 2015-02-08 20:31:28.000000000 +0000 @@ -1 +1 @@ -Wine version 1.7.35 +Wine version 1.7.36