diff -Nru wine-staging-1.7.40~ubuntu12.04.1/ANNOUNCE wine-staging-1.7.41~ubuntu12.04.1/ANNOUNCE --- wine-staging-1.7.40~ubuntu12.04.1/ANNOUNCE 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/ANNOUNCE 2015-04-18 23:36:02.000000000 +0000 @@ -1,18 +1,16 @@ -The Wine development release 1.7.40 is now available. +The Wine development release 1.7.41 is now available. What's new in this release (see below for details): - - Support for kernel job objects. - - Various fixes to the ListView control. - - Better support for OOB data in Windows Sockets. - - Support for DIB images in the OLE data cache. - - Improved support for MSI patches. - - Some fixes for ACL file permissions. + - More Known Folders supported in the shell. + - Some more support for kernel job objects. + - More MSI patches improvements. + - Some theming fixes. - Various bug fixes. The source is available from the following locations: - http://prdownloads.sourceforge.net/wine/wine-1.7.40.tar.bz2 - http://mirrors.ibiblio.org/wine/source/1.7/wine-1.7.40.tar.bz2 + http://prdownloads.sourceforge.net/wine/wine-1.7.41.tar.bz2 + http://mirrors.ibiblio.org/wine/source/1.7/wine-1.7.41.tar.bz2 Binary packages for various distributions will be available from: @@ -28,439 +26,283 @@ ---------------------------------------------------------------- -Bugs fixed in 1.7.40 (total 29): +Bugs fixed in 1.7.41 (total 41): - 19231 Trine Demo fails to start without native d3dx9_36 - 21433 InqScribe: Installed fine, but no output or UI response when running installed app - 22139 CDBurnerXP 3.0.x produces a "fail" message after choosing a mode - 26223 Multiple apps and games need wmvcore.dll.WMCreateReader implementation (Nail'd demo) - 26748 World Series of Poker crashes when starting up a game - 30648 SEGA Genesis / Mega Drive Classic Collection (Steam) crashes on startup - 30723 Playchess listview control is broken - 31579 Microsoft Visio 2007-2010 crashes on exit (unload of msctf component with ThreadMgr/CBT hook still alive) - 32361 epson stylus t13 installer problem: wine: Unimplemented function setupx.dll16.DiOpenClassRegKey - 33164 row-resize / col-resize cursor is wrong (Listview) - 34254 Wine64 seh:RtlUnwindEx error with c++ exception handling - 35135 Air Video Server HD 1.x crashes on startup (NULL SERVER_INFO_101.sv101_comment returned from NetServerGetInfo) - 36133 valgrind shows some leaks in gdiplus/tests/image.c - 36190 comdlg32/itemdlg shows a ton of valgrind warnings - 36305 valgrind shows a possible leak in netapi32/tests/access.c - 36332 Total Commander 8.x: moving files between folders renders them inaccessible (SetNamedSecurityInfo) - 36656 valgrind shows an unintialized write in comdlg32/tests/itemdlg.c - 36709 Multiple applications/games from Windows 7 need slc.SLGetWindowsInformationDWORD semi-stub/implementation - 36842 Can't set a static crontrol's text to empty by passing NULL pointer - 37731 Montezuma's Revenge Remake fails with fatal error when quitting the game - 37960 Paint.NET 4.0.5 does not install: unimplemented function KERNEL32.dll.QueryThreadCycleTime - 38205 Unreal Tournament 3 Black Edition installer fails after the language selection - 38238 user32:input right-clicks outside its windows - 38248 Worms World Party (w/SetCooperativeLevel workaround/hacks) and older versions of Worms Armageddon black screen on startup - 38256 Myst Online Uru Live: too dark/missing textures - 38261 Playchess doesn't install anymore - 38282 Header control fails to update/synchronize listview when columns order changes - 38288 Wrong pointer in icnsformat.c IcnsFrameEncode_WriteSource - 38317 winetricks xna31 fails + 11364 WinRar doesn't fully utilize CPU cores in the multithreaded (SMP) mode + 20041 DirectPlay8 requires some IP_ADAPTER_UNICAST_ADDRESS parameters to be correct in GetAdaptersAddresses (Rise of Nations, Two Worlds, Cultures Northland) + 23481 Network game in Heroes 3 doesn't work + 26333 Star Wars: Galactic Battlegrounds: Clone Campaigns 1.0x crashes on pressing 'Multiplayer' -> 'Show Games' + 28754 valgrind shows an uninitialized value in comdlg32/tests/itemdlg.ok, update_layout() + 28769 shell32/shellpath tests: test_knownFolders() triggers use-after-free and invalid free in foldermanager + 31264 iTunes will not connect to the iTunes music store + 32719 WinISIS 1.5.3 crashes when opening a database + 33723 EA Origin needs job objects + 33914 Pokemon uranium Crashes + 34820 Path of Exile fails to start in windowed mode (crashes on resize) + 35337 GOG.com installer--a small line appears on the progress bar after some time + 36331 Rhapsody 2 installer renders app folder inaccessible (SetNamedSecurityInfo with 'everyone' access) + 36809 valgrind shows an unitialized variable in dlls/dmscript/tests/dmscript.c + 36821 Multi Theft Auto: San Andreas 1.3.5 'FairplayKD.sys' driver continuously spams terminal due to 'PsLookupProcessByProcessId' stub + 36897 No sound recording + 37103 Wine incorrectly handles UNIX group permissions + 37150 python 3.1.1: test_math failed + 37527 Multiple games and applications fail to connect/login via SSL, reporting 'schannel failed to setup sequence detection' (Desura client, Darkfall, ARMA II multiplayer) + 37689 Sumatra PDF 3.0 crashes when opening .epub and .mobi files + 37750 Assassin's Creed: graphical issues in the menus and in-game + 37851 Call of Duty 4: colors and textures are not rendered correctly + 37956 Photoshop (CS6/CC) 64bit crash when you press "cancel" button + 38041 GTAVC abruptly switches sound from left speaker to right when steering a car + 38058 Resident Evil Revelations missing scene objects + 38132 Multiple .NET 4.x WPF applications need 'IDWriteTextAnalyzer::AnalyzeNumberSubstitution' method implementation in Win7 mode (sb0t v.5, Samsung Smart View 2.0) + 38134 Uplay v5.x: can't log in (Uplay hangs with the login screen) + 38206 Sound clicks in Blizzard's "Heroes of the Storm" and "Diablo 3", and also some slightly annoying clicking in "World of Tanks". + 38297 Prince of Persia: Warrior Within: rendering issues + 38330 DraftSight registration submission causes page fault (fixme:wbemprox:client_security_SetBlanket) + 38340 iexplore crashes after follow links. + 38341 Photoshop CS6 crash at startup + 38344 Invalid memory access in get_registry_locale_info() + 38348 _wsopen_s does not respect the pmode parameter when O_CREAT is set + 38351 Ninite downloader fails to install application + 38353 DIRT3 crashes after showing racing results screen (ToUnicodeEx should accept NULL pointer as keystate) + 38361 Dead Space 2 (Steam) crashes at the screen + 38366 Outlast crashes with ARB shaders enabled + 38372 Midnight Mysteries: The Salem Witch Trials crashes on start (SO_ERROR returns zero instead of ECONNREFUSED after connect attempt fails) + 38387 Multiple .NET 4.x WPF applications abort with 'Unrecoverable system error' in Win7 mode (dwrite font family resolution must be case-insentive) + 38410 ws2_32 fails compile without IPX ---------------------------------------------------------------- -Changes since 1.7.39: +Changes since 1.7.40: -Aaryaman Vasishta (1): - d3drm: Fix hard-coded HRESULT return in Direct3DRMFrame_create. - -Alexandre Julliard (11): - server: Fix the string type in traces for I/O completion names. - dsound: Fix an error return code. - server: Post a notification to the desktop window when a top-level window is destroyed. - explorer: Cleanup system tray icons when their owner is destroyed instead of polling. - winex11: Cleanup system tray icons when their owner is destroyed instead of polling. - user32: Remove left-over freeing of the edit text with ES_PASSWORD. - comctl32: Print full flag values in traces. - msacm32: Print full flag values in traces. - riched20/tests: Print full flag values in traces. - user32/tests: Print full flag values in traces. - winmm: Print full flag values in traces. - -Alistair Leslie-Hughes (2): - odbccp32: Implement SQLWritePrivateProfileStringA/W. - msctf: Always return FALSE in DllCanUnloadNow. - -Andrew Cook (15): - kernel32/tests: Add tests for IsProcessInJob. - kernel32/tests: Add tests for TerminateJobObject. - kernel32/tests: Add tests for QueryInformationJobObject. - kernel32/tests: Add tests for job object completion ports. - kernel32/tests: Add tests for JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE. - kernel32/tests: Add tests for JOB_OBJECT_LIMIT_BREAKAWAY_OK. - kernel32/tests: Add tests for job inheritance. - kernel32/tests: Extend IsProcessInJob tests. - server: Implement CreateJobObject. - server: Implement AssignProcessToJobObject. - server: Implement IsProcessInJob. - server: Implement job limit flags. - server: Implement job inheritance. - server: Implement io completion messages for job objects. - server: Track handle count of objects. - -Andrew Eikum (2): - oleaut32: Allow typelib filenames longer than MAX_PATH. - wineoss.drv: Don't skip over position updates of less than one fragment. - -Andrey Gusev (1): - d3dx9_36: Assorted spelling and typos fixes. - -André Hentschel (5): - include: Add more header guards. - ntdll: Add support for FreeBSD on ARM. - ntdll: Fix CPU level on ARM. - ntdll: Get available CPU info from FreeBSD on ARM. - loader: Run checks also on ARM Linux. - -Aric Stewart (2): - wineqtdecoder: Unload the AsyncReader on movie processing failure. - winmm: sndPlaySound can play resource sounds. - -Austin English (2): - kernel32: Add a stub for QueryThreadCycleTime. - include: Add initial mfapi.h. - -Bruno Jesus (13): - netapi32/tests: Fix a memory leak (Valgrind). - netapi32: Return an empty comment instead of NULL pointer in NetServerGetInfo. - winmm/tests: Add a basic joystick interactive test. - ws2_32: Don't try to receive data in an OOB_INLINED socket with MSG_OOB. - ws2_32: Convert send/recv flags to native system. - ws2_32: Add a helper to check if a socket is bound or not. - ws2_32: Ensure sockets in exceptfds get set when an error occurs. - ws2_32: Do not poll unbound descriptors. - ws2_32: Check for OOB data in select() calls when not OOB_INLINED. - ws2_32/tests: Add more WSAEnumNetworkEvents tests. - ws2_32/tests: Skip part of OOB test to unfreeze NT4 test. - ws2_32: Fix return value when receiving with MSG_OOB without data to read. - ws2_32: Better trace setsockopt/getsockopt. - -Christoph von Wittich (2): - riched20: EM_SETSEL should not return 0. - riched20: Handle SCF_WORD. - -David Hedberg (1): - comdlg32: Only attempt to update the layout if the dialog window exists. - -David Naylor (2): - configure: Recognise host starting in 'amd64'. - configure: Explicitly set host_cpu for 'amd64'. - -Dmitry Timoshkov (1): - shell32: Update version information to match XP values. - -Erich Hoover (1): - advapi32/tests: Add tests for inheriting ACL attributes. - -François Gouget (40): - taskschd: Remove an unneeded NONAMELESSUNION directive. - storage.dll16: Remove an unneeded NONAMELESSSTRUCT directive. - system.drv16: Remove an unneeded NONAMELESSSTRUCT directive. - toolhelp.dll16: Remove unneeded NONAMELESSXXX directives. - twain_32: Remove unneeded NONAMELESSXXX directives. - msctf: Mark internal symbols with hidden visibility. - msi: Mark internal symbols with hidden visibility. - msxml3: Mark internal symbols with hidden visibility. - ddraw/tests: Fix compilation on systems that don't support nameless unions. - urlmon: Remove unneeded NONAMELESSXXX directives. - wineoss.drv: Remove an uneeded NONAMELESSUNION directive. - usbd.sys: Remove an unneeded NONAMELESSSTRUCT directive. - user32: Remove an unneeded NONAMELESSSTRUCT directive. - windowscodecs: Remove unneeded NONAMELESSXXX directives. - mshtml: Mark internal symbols with hidden visibility. - oleaut32: Mark internal symbols with hidden visibility. - opengl32: Mark internal symbols with hidden visibility. - riched20: Mark internal symbols with hidden visibility. - winex11.drv: Remove unneeded NONAMELESSXXX directives. - wininet: Remove an unneeded NONAMELESSSTRUCT directive. - winspool.drv: Remove unneeded NONAMELESSXXX directives. - winmm: Remove unneeded NONAMELESSSTRUCT directives. - explorer: Remove an uneeded NONAMELESSUNION directive. - secur32: Mark internal symbols with hidden visibility. - sxs: Mark internal symbols with hidden visibility. - user32: Mark internal symbols with hidden visibility. - wbemprox: Mark internal symbols with hidden visibility. - winedbg: Remove unneeded NONAMELESSXXX directives. - rpcss: Remove unneeded NONAMELESSXXX directives. - regedit: Remove an unneeded NONAMELESSSTRUCT directive. - winecfg: Remove unneeded NONAMELESSXXX directives. - wineconsole: Remove an unneeded NONAMELESSSTRUCT directive. - wineps.drv: Mark internal symbols with hidden visibility. - wininet; Mark internal symbols with hidden visibility. - wmp: Mark internal symbols with hidden visibility. - shell32: Point the 'My Documents' symbolic link to the XDG or OS X 'Documents' folder if they exist. - widl: Remove unneeded NONAMELESSXXX directives. - winedump: Remove unneeded NONAMELESSXXX directives. - winhlp32: Remove an unneeded NONAMELESSSTRUCT directive. - winefile: Remove an unneeded NONAMELESSUNION directive. - -Frédéric Delanoy (1): - Assorted spelling/grammar fixes. - -Hans Leidekker (17): - msi: Fall back to the database summary information stream in MSI_OpenPackageW. - msi: Avoid allocating a database handle only to retrieve the summary information. - msi: Use the last sequence number specified for patch media when updating media records. - msi: Check the component enabled flag earlier. - msi: Skip files from the original media if a patch is applied. - msi: Check file state before installing global assemblies. - msi: Import mspatcha instead of loading it dynamically. - msi: Store the disk id for file patches. - msi: Don't apply file patches in the cabinet extraction callback. - msi: Don't mark global assembly files as installed when they are extracted. - msi: Clean up handling of temporary files. - msi: Get rid of global variables the cabinet extraction callbacks. - wbemprox: Make sure to allocate sufficient memory in resize_table. - wbemprox: Fix a memory leak. - wbemprox: Implement more properties of Win32_Processor. - wbemprox: Implement more properties of Win32_VideoController. - wbemprox: Add a partial implementation of Win32_Printer. - -Henri Verbeet (35): - wined3d: Store shader output signatures as a wined3d_shader_signature structure. - wined3d: Store shader input signatures as a wined3d_shader_signature structure. - wined3d: Merge some common shader initialization code into shader_init(). - wined3d: Take the input slot into account when handling WINED3D_APPEND_ALIGNED_ELEMENT. - d3d10core: Also pass unused input layout elements to wined3d. - wined3d: Implement d3d10 style instance data step rates. - wined3d: Use the "sysval_semantic" field instead of "semantic_name" to recognize SV_POSITION. - wined3d: Add support for SV_InstanceID. - d3d10core: Implement d3d10_device_DrawInstanced(). - d3d10core/tests: Add a test for D3D10_APPEND_ALIGNED_ELEMENT. - d2d1: Properly take the source offset into account in d2d_d3d_render_target_DrawBitmap(). - d2d1: Implement d2d_state_block_GetTextRenderingParams(). - d2d1: Implement d2d_state_block_SetTextRenderingParams(). - d2d1: Implement d2d_state_block_GetDescription(). - d2d1: Implement d2d_state_block_SetDescription(). - d2d1: Implement d2d_d3d_render_target_GetFactory(). - d2d1: Implement d2d_d3d_render_target_SetTextRenderingParams(). - d2d1: Implement d2d_d3d_render_target_GetTextRenderingParams(). - d2d1: Implement d2d_d3d_render_target_SetAntialiasMode(). - d2d1: Implement d2d_d3d_render_target_GetAntialiasMode(). - d2d1: Implement d2d_d3d_render_target_SetTextAntialiasMode(). - d2d1: Implement d2d_d3d_render_target_GetTextAntialiasMode(). - d2d1: Implement d2d_d3d_render_target_SetTags(). - d2d1: Implement d2d_d3d_render_target_GetTags(). - d2d1: Use a D2D1_DRAWING_STATE_DESCRIPTION structure to store render target drawing state. - d2d1: Implement d2d_d3d_render_target_SaveDrawingState(). - d2d1: Implement d2d_d3d_render_target_RestoreDrawingState(). - d2d1/tests: Add a test for ID2D1DrawingStateBlock. - d2d1: Do not multiply color brush RGB values with the brush opacity. - wined3d: Add support for half-integer pixel centers. - d2d1/tests: Add a test for color brushes. - wined3d: Take WINED3D_PIXEL_CENTER_INTEGER into account when calculating vpos. - wined3d: Use GLSL 1.30 for SM4 shaders when available. - d3d10core/tests: Port the d3d9 vPos test to d3d10. - d2d1: Fix a typo in the determinant calculation in d2d_d3d_render_target_FillRectangle(). - -Hugh McMaster (2): - netstat: Fix incorrect comment. - attrib: Fix incorrect comment. - -Huw D. M. Davies (10): - ole32: Read the class id from the top-level storage object. - ole32: A cache entry should hold the stream its data is from, not the top-level storage. - ole32: Split the data loading into a couple of helpers. - ole32: Add support for parsing the 'CONTENTS' stream. - ole32: Separate metafile loading into a helper function. - ole32: Add support for loading dibs. - ole32: Add support for retrieving extents of dib format. - ole32: Add support for drawing the dib format. - ole32: Implement QueryGetData(). - ole32/tests: Add tests for loading a dib 'CONTENTS' stream. - -Jacek Caban (11): - mshtml.idl: Added IHTMLSelectionObject2 declaration. - mshtml: Added IHTMLSelectionObject2 stub implementation. - dxgi.idl: Added DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL declaration. - d3d11_1.idl: Added some missing declarations. - dxgi1_2.idl: Added IDXGIFactory2 declaration. - wininet: Pass timeout as DWORD in setsockopt calls. - d3d11sdklayers.idl: Added ID3D11Debug declaration. - dxgi1_2.idl: Added IDXGIAdapter2 declaration. - d3d11.idl: Added D3D11_FEATURE_DATA_D3D11_OPTIONS declaration. - d3d11_1.idl: Fixed ClearView argument (missing const). - wmsdkidl.idl: Added IWMReaderAdvanced* declarations. - -Jinhui Chen (1): - winex11.drv: Fix row-resize/col-resize mapping to X cursor. - -Ken Thomases (4): - winmm: For Mac, fix joyGetPosEx() to put number of buttons pressed in dwButtonNumber field. - winemac: Allow the user to attempt to resize a maximized window and try to restore it if they do. - winemac: Restore a maximized window if a user tries to move it by dragging its title bar. - winemac: Cleanup system tray icons when their owner is destroyed instead of polling. - -Mark Harmstone (5): - comctl32: Use correct font for themed headers. - ntdll: Treat strings as case-insensitive in find_window_class. - comctl32: Redraw themed button on WM_ENABLE. - winecfg: Style updown control with UDS_ALIGNRIGHT. - winecfg: Add manifest. - -Matteo Bruni (12): - wined3d: Use a separate STATE_VIEWPORT state handler in the GLSL pipeline. - wined3d: Introduce a get_projection_matrix() function. - wined3d: Introduce a get_texture_matrix() function. - wined3d: Don't use the builtin FFP uniform for the normal matrix. - d3d9/tests: Add more lighting tests. - d3d8/tests: Add more lighting tests. - wined3d: Don't use the builtin FFP uniform for the projection matrix. - ddraw: D3DLIGHT lights default to active. - ddraw: Make sure AddLight properly activates lights. - ddraw: Make sure to activate / deactivate the light on D3DLIGHT_ACTIVE flag changes. - ddraw: D3DRENDERSTATE_NORMALIZENORMALS doesn't exist before d3d7. - ddraw: Enable WINED3D_RS_NORMALIZENORMALS on d3d versions older than d3d7. - -Michael Müller (4): - netprofm: Add stubbed IConnectionPoint interface. - netprofm/tests: Add tests for ConnectionPointContainer::FindConnectionPoint. - ntdll: Define a couple more information classes. - kernel32/tests: Add tests for GetFinalPathNameByHandleA/W. - -Michael Stefaniuc (15): - mscoree: Use SUCCEEDED instead of !FAILED. - taskschd: Print the debug string instead of the pointer value. - mshtml: Print the debug string instead of the pointer value. - qcap: Print the debug string instead of the pointer value. - scrrun: Print the debug string instead of the pointer value. - schedsvc: Drop WINE_ prefix from ERR(). - fntcache: Drop WINE_ prefix from FIXME/TRACE. - taskschd/tests: Test the correct return value. - mshtml/tests: Actually test the return of IHTMLTable_get_width(). - windowscodecs/tests: Actually test the return of IWICBitmap_GetSize(). - winhttp/tests: Test the correct return code. - d3drm/tests: Test the correct return code. - wmp: Forward from a Release to a Release method. - gdiplus: The result of a comparison is already a BOOL. - winealsa.drv: The result of a comparison is already a BOOL. - -Nikolay Sivov (35): - comctl32/listview: Update view on style change only if LVS_TYPEMASK styles have changed. - user32/static: Allow setting NULL text. - scrrun: Added support for interface pointers as keys for dictionary. - scrrun: Added support for VT_DATE keys, and BYREF float key types. - scrrun: Support BYREF types for integer keys. - comctl32/tooltips: Allow NULL hinst value when fetching text from resources. - ole32: Return interface pointers instead of impl pointers from QI. - ole32/tests: Return interface pointer instead of impl pointer from QI. - msi: Return interface pointer instead of impl pointer. - dwrite: Forward IDWriteTextLayout::GetMetrics() to IDWriteTextLayout2::GetMetrics(). - comctl32: Claim success in InitializeFlatSB(). - comctl32/tests: Listview doesn't subclass its header. - taskmgr: Simplify setting extended style for a list. - rpcrt4/tests: Use status definitions instead of numeric values. - rpcrt4: Fix RpcMgmtStopServerListening() return value when we're not listening. - po: Corrected Russian translation. - dwrite: Pass sideways run flag to shaping methods. - comctl32/listview: Fix item focus rectangle to use proper label/selection bounds. - comctl32/listview: Fix focus rectangle for LVS_EX_FULLROWSELECT case. - comctl32/listview: Fix scrolling in LV_VIEW_DETAILS view. - comctl32/listview: Always forward LVM_GETCOLUMNORDERARRAY to header. - comctl32/listview: Remove outdated TODO comment. - dwrite: Initial implementation of DetermineMinWidth(). - dwrite: Return CreateStreamFromKey() failure code from Analyze(). - comctl32/listview: Support header item image/bitmap in LVSCW_AUTOSIZE_USEHEADER case. - comctl32/listview: Use defined name instead of magic value. - comctl32/listview: Always forward HDM_SETORDERARRAY to a header. - taskmgr: Set column order through listview. - comctl32/dsa: Implement DSA_Clone(). - comctl32/dsa: Implement DSA_GetSize(). - dwrite: Update to IDWriteRenderingParams2. - wincodecs: Use valid bitmap cache option. - msxml3: Explicitly list acceptable libxml2->msxml node types for unknode. - comctl32/tests: Fix couple of metrics tests that fail on some systems. - dwrite: Fix cluster width and length calculation. - -Pierre Schweitzer (3): - setupapi: Implement SetupOpenLog(), SetupCloseLog(). - setupapi: Implement SetupLogErrorA(), SetupLogErrorW(). - setupapi/tests: Add tests for the SetupOpenLog(), SetupLogErrorA(), SetupCloseLog() functions. - -Piotr Caban (21): - oleacc: Added Client_get_accChild implementation. - oleacc: Added client IEnumVARIANT stub. - oleacc: Added window IEnumVARIANT stub. - oleacc: Added client IEnumVARIANT::{Reset,Skip,Next} implementation. - oleacc: Added client IEnumVARIANT tests. - oleacc: Added AccessibleChildren implementation. - oleacc: Added AccessibleChildren tests. - msvcrt/tests: Add atan, tanh and exp tests on invalid arguments. - msvcrt: Fix NAN handling in printf. - msvcrt/tests: Use NAN and INFINITY definitions from port.h in printf tests. - user32/tests: Don't send mouse clicks to other process windows in input tests. - msvcp90/tests: Use NAN and INFINITY definitions from port.h in Ctraits::_Isnan tests. - advapi: Don't use CreateFile when opening file with possibly empty DACL. - server: Make directory DACL entries inheritable. - advapi32: Add SetNamedSecurityInfo test with empty DACL. - advapi32/tests: Add test for mapping DACL to permission. - advapi32: Add DACL inheritance support in SetSecurityInfo. - ntdll: Improve parameter validation in RtlAddAce. - server: Fix DACL to permissions conversion. - msvcr120: Add some missing exports on i386 architecture. - advapi32: Handle NULL DACL in SetSecurityInfo. - -Sebastian Lackner (12): - gdiplus: Add missing returns in initialize_decoder_wic (Coverity). - user32: Use C_ASSERT to ensure user_thread_info fits into TEB->Win32ClientInfo. - browseui: Avoid race-conditions when progress dialog is released before thread terminates. - ntoskrnl: Emulate 'mov Eb, Gb' instruction on x86 processor architecture. - wiaservc: Return pointer to vtbl instead of implementation in wiadevmgr_Constructor. - kernel32/tests: Allow multiple subprocess commands in process tests. - kernel32/tests: Add tests for adding a terminated process to a job object. - advapi32/tests: Repeat ACL inheritance tests for NtCreateFile. - advapi32/tests: Add tests for NtCreateFile inheritance when security descriptor is set. - advapi32/tests: Merge common code to test DACL descriptors in a helper function. - advapi32/tests: Add tests for CreateFile with set security descriptor. - ntdll: Fix various bugs RtlUnwindEx on x86_64. - -Sergey Isakov (1): - windowscodecs: Fix wrong pointer to formal parameter. - -Shuai Meng (2): - vbscript: Implemented Oct. - vbscript: Fixed Hex. - -Stefan Dösinger (15): - ddraw: Update the palette before presents to the NULL window. - ddraw/tests: The testbot applies color keying without a key. - ddraw/tests: Correct executebuffer offsets. - wined3d: Improve color fixups in atifs shaders. - wined3d: Check for conversion changes in the atifs fragment pipeline. - wined3d: Add per-context private data for fragment pipelines. - wined3d: Avoid constant collision in atifs. - ddraw/tests: Make sure color keying is on in test_texturemapblend. - ddraw/tests: Port test_color_fill to earlier versions. - wined3d: Implement per stage constants in atifs. - wined3d: Give tex_type and its values a better name. - wined3d: Pass a wined3d_ffp_texture_type enum to blit shader functions. - wined3d: Use bitfields in struct arbfp_blit_type. - wined3d: Pass a struct arbfp_blit_type to the blit shader generation functions. - wined3d: Define a constant for the blit texture size parameter. +Aaryaman Vasishta (4): + d3drm: Fix IDirect3DRMFrame2::QueryInterface returning incorrect HRESULT. + d3drm: Add more interfaces to be queried from IDirect3DRMFrame2::QueryInterface. + d3drm/tests: Make get_refcount return ULONG instead of int. + d3drm/tests: Add QueryInterface tests for IDirect3DRMFrame{1-3}. + +Alexandre Julliard (2): + ws2_32: Include wsnwlink.h even without IPX support. + msvcp60: Merge more I/O stream code with msvcp90 to reduce the differences. + +Alistair Leslie-Hughes (1): + dpnet: Convert Address components to use an array. + +Andrew Cook (2): + ntdll: Return success for JobObjectBasicUIRestrictions. + server: Implement TerminateJobObject. + +Andrew Eikum (12): + gdiplus: Avoid unnecessary pre-multiplied alpha conversions in GdipDrawImagePointsRect. + wineoss.drv: Cap reported OSS fill level to expected level. + shell32: Support setting and retrieving KnownFolder parsing names. + shell32: Add more knownfolder definitions. + shell32: Allocate returned array in IKnownFolderManager::GetFolderIds. + shell32: Add more knownfolders. + shell32: Add more knownfolders. + shell32: Add more knownfolders. + shell32: Add more knownfolders. + dsound: Stricter validation for formats in secondary buffers. + winecfg: Use a listview for speaker configuration. + dsound/tests: Don't perform ALAW test on secondary buffers. + +Aric Stewart (1): + dinput: Add JoystickID to the Instance Name. + +Bruno Jesus (19): + ws2_32: Fix copy & paste error in fd_sets_to_poll (Coverity). + ws2_32: Better trace shutdown(). + ws2_32: Shortcut socket() to WSASocketW instead of WSASocketA. + netapi32: Better stub NetStatisticsGet(). + gdi32: Support negative count values in GetBitmapBits. + ws2_32/tests: Add some more select() related tests. + ws2_32: Add a more generic function to retrieve socket errors from server. + ws2_32: Handle SO_ERROR manually in getsockopt(). + secur32: Don't try to set an empty target name in schan_InitializeSecurityContextW. + ws2_32/tests: Add tests about retrieving the local address of an interface bound socket. + ws2_32: Restore the local socket address that was bound with filter for getsockname(). + include: Update iptypes.h with the old XP IP_ADAPTER_ADDRESSES structure. + ws2_32/tests: Add more select() tests. + ws2_32/tests: Add one more SO_ERROR test. + ws2_32: Convert EBADF errno to ENOTSOCK. + include: Add a missing field to IP_ADAPTER_ADDRESSES_LH. + iphlpapi/tests: Add more test_GetAdaptersAddresses tests. + iphlpapi: Update the buffer size only if required in GetAdaptersAddresses. + iphlpapi: Stub more IP_ADAPTER_UNICAST_ADDRESS fields in GetAdaptersAddresses. + +Daniel Lehman (1): + wininet: Trace loaded proxy settings. + +François Gouget (2): + shell32: Add support for the OS X 'My Stuff' folders. + windowscodecs/tests: Fix compilation on systems that don't support nameless unions. + +Gerald Pfeifer (1): + wininet: Avoid four instances of "logical not is only applied to the to the left hand side". + +Grazvydas Ignotas (2): + dbghelp: Detect if return address information is missing. + include: Add a few missing entries in wingdi.h. + +Hans Leidekker (10): + fusion: Support buffer size queries in IAssemblyName::GetName. + fusion: Fix insufficient buffer size handling in IAssemblyName::GetDisplayName. + msi: Don't read past the end of the patch list in MsiApplyMultiplePatchesW. + msi: Take the component action into account for file patches. + msi: Assume that file patches from registered MSI patches have already been applied. + msi: Add support for patching global assembly files. + msi: Improve the check for files obsoleted by patches. + msi: Perform a suffix match on the volume name. + advapi32: Support parsing mandatory label ACE strings. + server: Accept mandatory label ACEs. + +Henri Verbeet (14): + d3d9/tests: Test D3DPRESENT_PARAMETERS after a successful reset. + d3d8/tests: Test D3DPRESENT_PARAMETERS after a successful reset. + d3d9: Merge most of d3d9_device_Reset() and d3d9_device_ResetEx(). + d3d9: Update the backbuffer D3DPRESENT_PARAMETERS after a successful reset. + d3d8: Update the BackBufferCount after a successful reset. + wined3d: Use the display format if WINED3DFMT_UNKNOWN is passed as backbuffer format for windowed mode resets. + wined3d: Bind sampler objects to the correct texture stage. + wined3d: Properly handle WINED3DSIH_DP2 in the GLSL shader backend. + d2d1: Take the world transform into account when calculating the bitmap brush texcoord transform. + d2d1: Add opacity support to bitmap brushes. + wined3d: Bind the texture before calling wined3d_volume_upload_data() in wined3d_volume_load_location(). + wined3d: Use wined3d_texture_bind_and_dirtify() in device_update_volume(). + wined3d: Use wined3d_texture_bind_and_dirtify() in wined3d_texture_upload_data(). + wined3d: Get rid of context_invalidate_active_texture(). + +Hugh McMaster (1): + wineconsole: Do not truncate argument strings larger than 256 bytes. + +Igor Kotrasinski (1): + dsound: Fix conning formula to correctly interpolate volume. + +Jacek Caban (7): + wmvcore: Added IWMReaderAdvanced* stub implementation. + wmsdkidl.idl: Added WMCreateReader declaration. + mshtml: Increment ref count in QI(IID_HTMLPluginContainer) call. + mshtml: Use debugstr_mshtml_guid in object and embed element implementation. + textstor.idl: Added missing GXFPF_* constants. + msxml3: Create unknode object only for node types supported by msxml. + mshtml: Use NS_Alloc and NS_Free directly instead of via nsIMemory. + +Jason Overland (1): + winecfg: Add owner to file picker dialogs, making them modal. + +Jianqiu Zhang (1): + include: Add declaration for FILE_FS_FULL_SIZE_INFORMATION. + +Joachim Priesner (1): + wined3d: Load ModelView matrix for glLightfv calls. + +Julius Schwartzenberg (1): + dwrite: Font search is case insensitive. + +Marcus Meissner (3): + comctl32: Avoid integer overflow (Coverity). + d3drm: Avoid potential double free (Coverity). + wininet: Avoid memory leak in error exit (Coverity). + +Mark Harmstone (11): + include: Add MUI constants to winnls.h. + kernel32: Stub out GetFileMUIPath. + uxtheme: Fix off-by-one error in array size. + include: Update value of MAX_INTLIST_COUNT in uxtheme.h. + include: Add SM_CXPADDEDBORDER to winuser.h. + comctl32: Fix drawing of buddy background for updown controls. + uxtheme: Fix colour errors in UXTHEME_StretchBlt. + uxtheme: Fix a copy-paste error which mean that GetThemeString would always fail. + uxtheme: Free properties when theme file closed. + uxtheme: Fix typo making fonts italic. + uxtheme: Resize source image if destination smaller than margins. + +Maxime Lombard (1): + wined3d: Add support for Nvidia GTX 970M. + +Michael Müller (1): + ws2_32: Don't return an error in WS_select when EINTR happens during timeout. + +Nikolay Sivov (19): + dwrite: Add cluster metrics entry for inline objects too. + dmscript: Implement GetClassID() for IDirectMusicTrack. + ole32: Remove a couple of interface casts. + browseui: Return interface pointer instead of impl pointer. + scrrun: Implement GetSpecialFolder(). + dwrite: Return S_OK from AnalyzeNumberSubstitution(). + shell32: Fix allocation size (Valgrind). + shell32: Cleanup item array creation code. + shell32: Remove a couple of redundant lines. + shell32: Cleanup IShellItem creation calls. + scrrun: Fix iterating through per-bucket pair list (Valgrind). + winealsa: Fix a leak of a silence buffer (Valgrind). + mmdevapi: Fix returned format leak (Valgrind). + rpcrt4/tests: Fix a minor leak (Valgrind). + shlwapi/tests: Fix uninitialized memory reads (Valgrind). + oleaut32/tests: Skip cache tests if it's disabled. + rpcss: Fix a protseq string leak (Valgrind). + wshom.ocx/tests: Fix a BSTR leak (Valgrind). + usp10/tests: Fix some leaks on error path (Valgrind). + +Patrick Rudolph (1): + gdi32: Add stub functions. + +Piotr Caban (2): + msvcr120: Added strtoll and strtoull exports. + msvcrt: Don't ignore pmode attribute in _wsopen_s. + +Sebastian Lackner (17): + include: Automatically detect if tests are running under Wine when WINETEST_PLATFORM is not specified. + kernel32: Fix calculation of returned buffer in get_registry_locale_info. + user32: Check for NULL pointer in ToUnicodeEx. + user32/tests: Add tests for ToUnicodeEx with a NULL pointer as keystate. + user32/tests: Add tests for ToAscii. + secur32: Return more context attributes in schan_InitializeSecurityContextW. + ntoskrnl: Avoid repeated FIXME messages in PsLookupProcessByProcessId. + user32: Move key state cache into a separate struct. + user32: Invalidate key state cache globally after running LL hooks. + kernel32: Add stub for PowerCreateRequest. + kernel32: Add stub for PowerSetRequest. + kernel32: Add stub for PowerClearRequest. + kernel32/tests: Add tests for waiting on an job object. + server: Implement waiting for job objects. + wined3d: Fix typo in init_output_registers. + wined3d: Fix a typo in vertexshader_init. + ws2_32: Add a missing call to release_sock_fd. + +Stas Cymbalov (1): + dsound: Fix angle to sound source calculation. + +Stefan Dösinger (16): + wined3d: Use a shader for unconverted blits. + wined3d: Add a function for wined3d_gl_resource_type to texture target conversion. + wined3d: Move surface_convert_color_to_float to utils.c. + wined3d: Add more formats to wined3d_format_convert_color_to_float. + wined3d: Set color keys through the command stream. + wined3d: Allow ARB blits from converted surfaces. + wined3d: Implement color keying in arbfp_blit. + wined3d: Implement color keying in the glsl fragment pipeline. + wined3d: Match blitter and fragment processing color keying capabilities. + wined3d: Move alpha test states to the fragment pipeline. + wined3d: Simplify alpha test and color keying in GLSL. + wined3d: Handle color key dirtification in wined3d_cs_exec_set_texture. + wined3d: Use finer grained colorkey state invalidation. + wined3d: Implement color keying in the ARB fixed function pipeline. + wined3d: Move fixed function draw blits out of surface_blt_special. + wined3d: Call arbfp_blit_surface and ffp_blit_blit_surface through the blit interfaces. Thomas Faber (5): - wscript: Correctly use CommandLineToArgvW. - gdi32: Avoid uninitialized variable use in EnumEnhMetaFile (MSVC). - setupapi/tests: Avoid side-effect in an assert. - user32/tests: Avoid side-effect in an assert. - winegstreamer: Avoid side-effects in asserts. - -Vincent Povirk (8): - gdiplus: Fonts in UnitWorld shouldn't be scaled to the page unit. - gdiplus: Apply page scale to pen thickness. - gdiplus: Handle large input rect in GdipMeasureCharacterRanges. - gdiplus: Fix blend_colors when alpha channel differs. - mscoree: Remove the runtime version selection logic and just use 4.0. - gdiplus: Add support for reading PNG tEXt metadata. - windowscodecs: Implement PngDecoder_Block_GetCount. - windowscodecs: Implement PngDecoder_Block_GetReaderByIndex. - -Zheng Chen (2): - msvcrt: Correct atan/exp/tanh errno setting. - msvcrt: Fix _copysign bugs for NAN/INF. + include: Use correct UUIDs for IAudioMute, IAudioAutoGainControl and DevTopologyLib (MIDL). + include: Add missing retval attribute to propget output parameters (MIDL). + include: Do not use out attribute for non-pointer parameters in shdeprecated.idl (MIDL). + include: Fix MIDL build in mshtml.idl. + mshtml: Remove nsIDOMWindowUtils::SetCriticalDisplayPortForElement. + +Vincent Povirk (5): + gdiplus: Fix leak in png metadata reader. + windowscodecs: Add test for PNG gAMA metadata. + windowscodecs: Implement PNG gAMA metadata reader. + gdiplus: Add support for reading png gAMA chunks. + windowscodecs: Fix crash when PNG decoder is freed without successful init. -- Alexandre Julliard diff -Nru wine-staging-1.7.40~ubuntu12.04.1/AUTHORS wine-staging-1.7.41~ubuntu12.04.1/AUTHORS --- wine-staging-1.7.40~ubuntu12.04.1/AUTHORS 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/AUTHORS 2015-04-18 23:36:02.000000000 +0000 @@ -541,6 +541,7 @@ Ian Schmidt Igor Egorov Igor Grahek +Igor Kotrasinski Igor Paliychuk Igor Stepin Igor Tarasov @@ -604,6 +605,7 @@ Jason Green Jason Mawdsley Jason McMullan +Jason Overland Jason Phillips Jau-Horng Chen Javier Cantero @@ -649,6 +651,7 @@ Jesse Litton Jess Haas Jiang Yike +Jianqiu Zhang Jim Aston Jim Cameron Jimen Ching @@ -1290,6 +1293,7 @@ Slava Monich Slaven Rezic Srivatsa Kanchi, R +Stas Cymbalov Stas Sergeev Stefan Brüns Stefan Dösinger diff -Nru wine-staging-1.7.40~ubuntu12.04.1/configure wine-staging-1.7.41~ubuntu12.04.1/configure --- wine-staging-1.7.40~ubuntu12.04.1/configure 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/configure 2015-04-18 23:36:02.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.40. +# Generated by GNU Autoconf 2.69 for Wine 1.7.41. # # Report bugs to . # @@ -580,8 +580,8 @@ # Identity of this package. PACKAGE_NAME='Wine' PACKAGE_TARNAME='wine' -PACKAGE_VERSION='1.7.40' -PACKAGE_STRING='Wine 1.7.40' +PACKAGE_VERSION='1.7.41' +PACKAGE_STRING='Wine 1.7.41' PACKAGE_BUGREPORT='wine-devel@winehq.org' PACKAGE_URL='http://www.winehq.org' @@ -2022,7 +2022,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.40 to adapt to many kinds of systems. +\`configure' configures Wine 1.7.41 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -2091,7 +2091,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Wine 1.7.40:";; + short | recursive ) echo "Configuration of Wine 1.7.41:";; esac cat <<\_ACEOF @@ -2287,7 +2287,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Wine configure 1.7.40 +Wine configure 1.7.41 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2805,7 +2805,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.40, which was +It was created by Wine $as_me 1.7.41, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -18476,7 +18476,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.40, which was +This file was extended by Wine $as_me 1.7.41, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -18547,7 +18547,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.40 +Wine config.status 1.7.41 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/debian/bzr-builder.manifest wine-staging-1.7.41~ubuntu12.04.1/debian/bzr-builder.manifest --- wine-staging-1.7.40~ubuntu12.04.1/debian/bzr-builder.manifest 2015-04-05 00:34:11.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/debian/bzr-builder.manifest 2015-04-19 00:27:48.000000000 +0000 @@ -1,3 +1,3 @@ -# bzr-builder format 0.4 deb-version 1.7.40 -lp:wine revid:git-v1:22b6a2c01d8551a8fb753bc41eb36ad370840176 -merge compholio-release-package lp:wine-compholio revid:git-v1:9e0bb28fcb2ef67e582060c8686433c0610a30a4 +# bzr-builder format 0.4 deb-version 1.7.41 +lp:wine revid:git-v1:25f0606e84bef7d60ea5c681d19b368660cab8e3 +merge compholio-release-package lp:wine-compholio revid:git-v1:c282ffecac9bce761eb379711e544db6aca9e11d diff -Nru wine-staging-1.7.40~ubuntu12.04.1/debian/changelog wine-staging-1.7.41~ubuntu12.04.1/debian/changelog --- wine-staging-1.7.40~ubuntu12.04.1/debian/changelog 2015-04-05 00:34:11.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/debian/changelog 2015-04-19 00:27:48.000000000 +0000 @@ -1,8 +1,42 @@ -wine-staging (1.7.40~ubuntu12.04.1) precise; urgency=low +wine-staging (1.7.41~ubuntu12.04.1) precise; urgency=low * Auto build. - -- Sebastian Lackner Sun, 05 Apr 2015 00:34:11 +0000 + -- Sebastian Lackner Sun, 19 Apr 2015 00:27:48 +0000 + +wine-staging (1.7.41) unstable; urgency=low + * Updated server-PeekMessage patchset to reset message filter in accept_hardware_message call (fixes Wine Staging Bug #211). + * Updated ntdll-FileDispositionInformation patchset to block deleting mapped files (by Qian Hong, fixes Wine Staging Bug #228). + * Various improvements to the ACL patchsets. + * Disable DXVA2 controls in winecfg when support is not compiled in. + * Added patch to enable/disable EAX support via winecfg. + * Added patch with stub for setupapi.SetupDiSetDeviceInstallParamsW. + * Added first part of patchset containing various improvements for LsaLookupSids. + * Added patch to calculate msvcrt exponential math operations with higher precision. + * Added patch to fix regression caused by blacklisting supported OpenGL extensions. + * Added patch to reset device state in SysKeyboard*Impl_Acquire. + * Added patch to properly handle closing sockets during a select call. + * Added patch for support of process specific debug channels. + * Added patch to recognize localhost as local machine in wbemprox. + * Added patch to implement support for wbemprox Win32_SystemEnclosure table. + * Added patch to fix handling of opening read-only files for FILE_DELETE_ON_CLOSE. + * Added patch for implementation of mfplat.MFTRegister. + * Added patch for stub of ntdll.WinSqmIsOptedIn. + * Added patch for ProfileList\ registry subkey. + * Added patch to avoid crash when trying to bind mshtml event scripts to window. + * Added tests for RtlIpv6AddressToString and RtlIpv6AddressToStringEx. + * Removed patches to fix invalid memory access in get_registry_locale_info (accepted upstream). + * Removed patches to avoid repeated FIXMEs in PsLookupProcessByProcessId stub (accepted upstream). + * Removed patches to return more context attributes in schan_InitializeSecurityContextW (accepted upstream). + * Removed patches to allow NULL pointer as keystate in ToUnicodeEx (accepted upstream). + * Removed patches to avoid returning an error in WS_select when EINTR happens during timeout (accepted upstream). + * Partially remove advapi32-Revert_DACL patches. + * Removed additional patches for job object support (accepted upstream). + * Removed patchset to invalidate the key state cache after calling LL hooks (accepted upstream). + * Removed patches for PowerRequest stub functions (accepted upstream). + * Removed patch to fix compatibility with gnutls28 (accepted upstream). + * Removed patch to increase wineconsole commandline buffer size (fixed upstream). + -- Sebastian Lackner Sun, 19 Apr 2015 01:16:43 +0200 wine-staging (1.7.40) unstable; urgency=low * Update dsound fast mixer patchset to use integer math. diff -Nru wine-staging-1.7.40~ubuntu12.04.1/debian/tools/patchupdate.py wine-staging-1.7.41~ubuntu12.04.1/debian/tools/patchupdate.py --- wine-staging-1.7.40~ubuntu12.04.1/debian/tools/patchupdate.py 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/debian/tools/patchupdate.py 2015-04-18 23:54:01.000000000 +0000 @@ -47,6 +47,8 @@ cached_patch_result = {} class config(object): + path_cache = ".patchupdate.cache" + path_patches = "patches" path_changelog = "debian/changelog" path_wine = "debian/tools/wine" @@ -115,8 +117,9 @@ def _save_dict(filename, value): """Save a Python dictionary object to a file.""" - with open(filename, "wb") as fp: + with open("%s.new" % filename, "wb") as fp: pickle.dump(value, fp, pickle.HIGHEST_PROTOCOL) + os.rename("%s.new" % filename, filename) def _sha256(fp): """Calculate sha256sum from a file descriptor.""" @@ -320,7 +323,7 @@ if revision is None: once = True for bugid, bug in sorted(_winebugs_query(all_bugids).items()): - if bug['bug_status'] not in ["UNCONFIRMED", "NEW", "REOPENED"]: + if bug['bug_status'] not in ["UNCONFIRMED", "NEW", "ASSIGNED", "REOPENED"]: if once: print "" print "WARNING: The following bugs might require attention:" @@ -364,7 +367,7 @@ return False def get_wine_file(filename): - """Return the hash and optionally the content of a file.""" + """Return the content of a file.""" entry = "%s:%s" % (latest_wine_commit, filename) result = tempfile.NamedTemporaryFile() try: @@ -501,43 +504,41 @@ modified_files[f].append(i) # Check dependencies + dependency_cache = _load_dict(config.path_cache) pool = multiprocessing.pool.ThreadPool(processes=4) try: - - # Checking all dependencies takes a very long time, so to improve development speed, - # run a first quick check with all patches enabled. - with progressbar.ProgressBar(desc="pre-check ...", total=len(modified_files)) as progress: - for k, (filename, indices) in enumerate(modified_files.iteritems()): - - # If one of patches is a binary patch, then we cannot / won't verify it - require dependencies in this case - if contains_binary_patch(all_patches, indices, filename): - if not causal_time_relation_any(all_patches, indices): - raise PatchUpdaterError("Because of binary patch modifying file %s the following patches need explicit dependencies: %s" % - (filename, ", ".join([all_patches[i].name for i in indices]))) - continue - - original = get_wine_file(filename) - selected_patches = select_patches(all_patches, indices, filename) - set_apply = [(i, all_patches[i]) for i in indices] - - try: - for i, patch in set_apply: - original = patchutils.apply_patch(original, selected_patches[i][1], fuzz=0) - except patchutils.PatchApplyError: - progress.finish("") - raise PatchUpdaterError("Changes to file %s don't apply: %s" % - (filename, ", ".join([all_patches[i].name for i in indices]))) - progress.update(k) - - # More detailed checks, required to make sure that dependencies are set correctly for filename, indices in modified_files.iteritems(): + # If one of patches is a binary patch, then we cannot / won't verify it - require dependencies in this case if contains_binary_patch(all_patches, indices, filename): + if not causal_time_relation_any(all_patches, indices): + raise PatchUpdaterError("Because of binary patch modifying file %s the following patches need explicit dependencies: %s" % + (filename, ", ".join([all_patches[i].name for i in indices]))) continue original_content = get_wine_file(filename) + original_hash = _sha256(original_content) selected_patches = select_patches(all_patches, indices, filename) + # Generate a unique id based on the original content, the selected patches + # and the dependency information. Since this information only has to be compared + # we can throw it into a single hash. + m = hashlib.sha256() + m.update(original_hash) + for i in indices: + m.update("P%s" % selected_patches[i][0]) + for j in indices: + if causal_time_smaller(all_patches[j].verify_time, all_patches[i].verify_time): + m.update("D%s" % selected_patches[j][0]) + unique_hash = m.digest() + + # Skip checks if it matches the information from the cache + try: + if dependency_cache[filename] == unique_hash: + continue + except KeyError: + pass + # Show a progress bar while applying the patches - this task might take some time chunk_size = 20 with progressbar.ProgressBar(desc=filename, total=2 ** len(indices) / chunk_size) as progress: @@ -555,7 +556,7 @@ try: original = original_content - for i, patch in set_apply: + for i, _ in set_apply: original = patchutils.apply_patch(original, selected_patches[i][1], fuzz=0) except patchutils.PatchApplyError: return False @@ -575,8 +576,13 @@ raise PatchUpdaterError("Changes to file %s don't apply: %s" % (filename, ", ".join([all_patches[i].name for i in indices]))) progress.update(k) + + # Update the dependency cache + dependency_cache[filename] = unique_hash + finally: pool.close() + _save_dict(config.path_cache, dependency_cache) # Generate code for helper functions lines = [] diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/advapi32/security.c wine-staging-1.7.41~ubuntu12.04.1/dlls/advapi32/security.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/advapi32/security.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/advapi32/security.c 2015-04-18 23:36:02.000000000 +0000 @@ -311,6 +311,10 @@ static const WCHAR SDDL_GENERIC_WRITE[] = {'G','W',0}; static const WCHAR SDDL_GENERIC_EXECUTE[] = {'G','X',0}; +static const WCHAR SDDL_NO_READ_UP[] = {'N','R',0}; +static const WCHAR SDDL_NO_WRITE_UP[] = {'N','W',0}; +static const WCHAR SDDL_NO_EXECUTE_UP[] = {'N','X',0}; + /* * ACL flags */ @@ -325,6 +329,7 @@ static const WCHAR SDDL_ACCESS_DENIED[] = {'D',0}; static const WCHAR SDDL_AUDIT[] = {'A','U',0}; static const WCHAR SDDL_ALARM[] = {'A','L',0}; +static const WCHAR SDDL_MANDATORY_LABEL[] = {'M','L',0}; /* * ACE flags @@ -4147,6 +4152,7 @@ { SDDL_AUDIT, SYSTEM_AUDIT_ACE_TYPE }, { SDDL_ACCESS_ALLOWED, ACCESS_ALLOWED_ACE_TYPE }, { SDDL_ACCESS_DENIED, ACCESS_DENIED_ACE_TYPE }, + { SDDL_MANDATORY_LABEL,SYSTEM_MANDATORY_LABEL_ACE_TYPE }, /* { SDDL_OBJECT_ACCESS_ALLOWED, ACCESS_ALLOWED_OBJECT_ACE_TYPE }, { SDDL_OBJECT_ACCESS_DENIED, ACCESS_DENIED_OBJECT_ACE_TYPE }, @@ -4257,6 +4263,10 @@ { SDDL_KEY_READ, KEY_READ }, { SDDL_KEY_WRITE, KEY_WRITE }, { SDDL_KEY_EXECUTE, KEY_EXECUTE }, + + { SDDL_NO_READ_UP, SYSTEM_MANDATORY_LABEL_NO_READ_UP }, + { SDDL_NO_WRITE_UP, SYSTEM_MANDATORY_LABEL_NO_WRITE_UP }, + { SDDL_NO_EXECUTE_UP, SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP }, { NULL, 0 }, }; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/advapi32/tests/security.c wine-staging-1.7.41~ubuntu12.04.1/dlls/advapi32/tests/security.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/advapi32/tests/security.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/advapi32/tests/security.c 2015-04-18 23:36:02.000000000 +0000 @@ -3901,6 +3901,13 @@ Blank, SDDL_REVISION_1, &pSD, NULL); ok(ret, "ConvertStringSecurityDescriptorToSecurityDescriptor failed with error %d\n", GetLastError()); LocalFree(pSD); + + SetLastError(0xdeadbeef); + ret = pConvertStringSecurityDescriptorToSecurityDescriptorA( + "D:P(A;;GRGW;;;BA)(A;;GRGW;;;S-1-5-21-0-0-0-1000)S:(ML;;NWNR;;;S-1-16-12288)", SDDL_REVISION_1, &pSD, NULL); + ok(ret || broken(!ret && GetLastError() == ERROR_INVALID_DATATYPE) /* win2k */, + "ConvertStringSecurityDescriptorToSecurityDescriptor failed with error %u\n", GetLastError()); + if (ret) LocalFree(pSD); } static void test_ConvertSecurityDescriptorToString(void) diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/api-ms-win-core-localization-l1-2-0/api-ms-win-core-localization-l1-2-0.spec wine-staging-1.7.41~ubuntu12.04.1/dlls/api-ms-win-core-localization-l1-2-0/api-ms-win-core-localization-l1-2-0.spec --- wine-staging-1.7.40~ubuntu12.04.1/dlls/api-ms-win-core-localization-l1-2-0/api-ms-win-core-localization-l1-2-0.spec 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/api-ms-win-core-localization-l1-2-0/api-ms-win-core-localization-l1-2-0.spec 2015-04-18 23:36:02.000000000 +0000 @@ -12,7 +12,7 @@ @ stdcall GetCalendarInfoEx(wstr long ptr long ptr long ptr) kernel32.GetCalendarInfoEx @ stdcall GetCalendarInfoW(long long long ptr long ptr) kernel32.GetCalendarInfoW @ stub GetFileMUIInfo -@ stub GetFileMUIPath +@ stdcall GetFileMUIPath(long wstr wstr ptr ptr ptr ptr) kernel32.GetFileMUIPath @ stdcall GetGeoInfoW(long long ptr long long) kernel32.GetGeoInfoW @ stdcall GetLocaleInfoA(long long ptr long) kernel32.GetLocaleInfoA @ stdcall GetLocaleInfoEx(wstr long ptr long) kernel32.GetLocaleInfoEx diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/api-ms-win-core-localization-l1-2-1/api-ms-win-core-localization-l1-2-1.spec wine-staging-1.7.41~ubuntu12.04.1/dlls/api-ms-win-core-localization-l1-2-1/api-ms-win-core-localization-l1-2-1.spec --- wine-staging-1.7.40~ubuntu12.04.1/dlls/api-ms-win-core-localization-l1-2-1/api-ms-win-core-localization-l1-2-1.spec 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/api-ms-win-core-localization-l1-2-1/api-ms-win-core-localization-l1-2-1.spec 2015-04-18 23:36:02.000000000 +0000 @@ -13,7 +13,7 @@ @ stdcall GetCalendarInfoEx(wstr long ptr long ptr long ptr) kernel32.GetCalendarInfoEx @ stdcall GetCalendarInfoW(long long long ptr long ptr) kernel32.GetCalendarInfoW @ stub GetFileMUIInfo -@ stub GetFileMUIPath +@ stdcall GetFileMUIPath(long wstr wstr ptr ptr ptr ptr) kernel32.GetFileMUIPath @ stdcall GetGeoInfoW(long long ptr long long) kernel32.GetGeoInfoW @ stdcall GetLocaleInfoA(long long ptr long) kernel32.GetLocaleInfoA @ stdcall GetLocaleInfoEx(wstr long ptr long) kernel32.GetLocaleInfoEx diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/browseui/aclmulti.c wine-staging-1.7.41~ubuntu12.04.1/dlls/browseui/aclmulti.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/browseui/aclmulti.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/browseui/aclmulti.c 2015-04-18 23:36:02.000000000 +0000 @@ -325,7 +325,7 @@ This->refCount = 1; TRACE("returning %p\n", This); - *ppOut = (IUnknown *)This; + *ppOut = (IUnknown *)&This->IEnumString_iface; BROWSEUI_refCount++; return S_OK; } diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/browseui/aclsource.c wine-staging-1.7.41~ubuntu12.04.1/dlls/browseui/aclsource.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/browseui/aclsource.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/browseui/aclsource.c 2015-04-18 23:36:02.000000000 +0000 @@ -147,6 +147,6 @@ This->refCount = 1; TRACE("returning %p\n", This); - *ppOut = (IUnknown *)This; + *ppOut = (IUnknown *)&This->IACList2_iface; return S_OK; } diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/browseui/compcatcachedaemon.c wine-staging-1.7.41~ubuntu12.04.1/dlls/browseui/compcatcachedaemon.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/browseui/compcatcachedaemon.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/browseui/compcatcachedaemon.c 2015-04-18 23:36:02.000000000 +0000 @@ -158,7 +158,7 @@ This->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": CompCatCacheDaemon.cs"); TRACE("returning %p\n", This); - *ppOut = (IUnknown *)This; + *ppOut = (IUnknown *)&This->IRunnableTask_iface; InterlockedIncrement(&BROWSEUI_refCount); return S_OK; } diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/browseui/progressdlg.c wine-staging-1.7.41~ubuntu12.04.1/dlls/browseui/progressdlg.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/browseui/progressdlg.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/browseui/progressdlg.c 2015-04-18 23:36:02.000000000 +0000 @@ -579,7 +579,7 @@ This->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": ProgressDialog.cs"); TRACE("returning %p\n", This); - *ppOut = (IUnknown *)This; + *ppOut = (IUnknown *)&This->IProgressDialog_iface; InterlockedIncrement(&BROWSEUI_refCount); return S_OK; } diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/comctl32/dsa.c wine-staging-1.7.41~ubuntu12.04.1/dlls/comctl32/dsa.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/comctl32/dsa.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/comctl32/dsa.c 2015-04-18 23:36:02.000000000 +0000 @@ -488,5 +488,5 @@ if (!hdsa) return 0; - return sizeof(*hdsa) + hdsa->nMaxCount*hdsa->nItemSize; + return sizeof(*hdsa) + (ULONGLONG)hdsa->nMaxCount*hdsa->nItemSize; } diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/comctl32/updown.c wine-staging-1.7.41~ubuntu12.04.1/dlls/comctl32/updown.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/comctl32/updown.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/comctl32/updown.c 2015-04-18 23:36:02.000000000 +0000 @@ -366,12 +366,18 @@ */ static BOOL UPDOWN_DrawBuddyBackground (const UPDOWN_INFO *infoPtr, HDC hdc) { - RECT br; + RECT br, r; HTHEME buddyTheme = GetWindowTheme (infoPtr->Buddy); if (!buddyTheme) return FALSE; - GetClientRect (infoPtr->Buddy, &br); - MapWindowPoints (infoPtr->Buddy, infoPtr->Self, (POINT*)&br, 2); + GetWindowRect (infoPtr->Buddy, &br); + MapWindowPoints (NULL, infoPtr->Self, (POINT*)&br, 2); + GetClientRect (infoPtr->Self, &r); + + if (infoPtr->dwStyle & UDS_ALIGNLEFT) + br.left = r.left; + else if (infoPtr->dwStyle & UDS_ALIGNRIGHT) + br.right = r.right; /* FIXME: take disabled etc. into account */ DrawThemeBackground (buddyTheme, hdc, 0, 0, &br, NULL); return TRUE; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/d2d1/render_target.c wine-staging-1.7.41~ubuntu12.04.1/dlls/d2d1/render_target.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/d2d1/render_target.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/d2d1/render_target.c 2015-04-18 23:36:02.000000000 +0000 @@ -32,6 +32,18 @@ D2D1_DRAW_TEXT_OPTIONS options; }; +static void d2d_matrix_multiply(D2D_MATRIX_3X2_F *a, const D2D_MATRIX_3X2_F *b) +{ + D2D_MATRIX_3X2_F tmp = *a; + + a->_11 = tmp._11 * b->_11 + tmp._12 * b->_21; + a->_12 = tmp._11 * b->_12 + tmp._12 * b->_22; + a->_21 = tmp._21 * b->_11 + tmp._22 * b->_21; + a->_22 = tmp._21 * b->_12 + tmp._22 * b->_22; + a->_31 = tmp._31 * b->_11 + tmp._32 * b->_21 + b->_31; + a->_32 = tmp._31 * b->_12 + tmp._32 * b->_22 + b->_32; +} + static void d2d_point_transform(D2D1_POINT_2F *dst, const D2D1_MATRIX_3X2_F *matrix, float x, float y) { dst->x = x * matrix->_11 + y * matrix->_21 + matrix->_31; @@ -543,7 +555,7 @@ { float _11, _21, _31, pad0; float _12, _22, _32, pad1; - } transform, transform_inverse; + } transform; TRACE("iface %p, rect %p, brush %p.\n", iface, rect, brush); @@ -598,38 +610,50 @@ if (brush_impl->type == D2D_BRUSH_TYPE_BITMAP) { struct d2d_bitmap *bitmap = brush_impl->u.bitmap.bitmap; - float rt_scale, rt_bitmap_scale, d; + D2D_MATRIX_3X2_F w, b; + float dpi_scale, d; ps = render_target->rect_bitmap_ps; + /* Scale for dpi. */ + w = render_target->drawing_state.transform; + dpi_scale = render_target->dpi_x / 96.0f; + w._11 *= dpi_scale; + w._21 *= dpi_scale; + w._31 *= dpi_scale; + dpi_scale = render_target->dpi_y / 96.0f; + w._12 *= dpi_scale; + w._22 *= dpi_scale; + w._32 *= dpi_scale; + /* 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; + b = brush_impl->transform; + dpi_scale = bitmap->pixel_size.width * (bitmap->dpi_x / 96.0f); + b._11 *= dpi_scale; + b._21 *= dpi_scale; + dpi_scale = bitmap->pixel_size.height * (bitmap->dpi_y / 96.0f); + b._12 *= dpi_scale; + b._22 *= dpi_scale; + + d2d_matrix_multiply(&b, &w); /* 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._12; + d = b._11 * b._22 - b._21 * b._12; 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; + transform._11 = b._22 / d; + transform._21 = -b._21 / d; + transform._31 = (b._21 * b._32 - b._31 * b._22) / d; + transform._12 = -b._12 / d; + transform._22 = b._11 / d; + transform._32 = -(b._11 * b._32 - b._31 * b._12) / d; } + transform.pad1 = brush_impl->opacity; - buffer_desc.ByteWidth = sizeof(transform_inverse); - buffer_data.pSysMem = &transform_inverse; + buffer_desc.ByteWidth = sizeof(transform); + buffer_data.pSysMem = &transform; } else { @@ -1373,27 +1397,39 @@ { #if 0 float3x2 transform; + float opacity; + SamplerState s; Texture2D t; float4 main(float4 position : SV_POSITION) : SV_Target { - return t.Sample(s, mul(float3(position.xy, 1.0), transform)); + float2 texcoord; + float4 ret; + + texcoord.x = position.x * transform._11 + position.y * transform._21 + transform._31; + texcoord.y = position.x * transform._12 + position.y * transform._22 + transform._32; + ret = t.Sample(s, texcoord); + ret.a *= opacity; + + return ret; } #endif - 0x43425844, 0x20fce5be, 0x138fa37f, 0x9554f03f, 0x3dbe9c02, 0x00000001, 0x00000184, 0x00000003, + 0x43425844, 0x9a5f9280, 0xa5351c23, 0x15d6e760, 0xce35bcc3, 0x00000001, 0x000001d0, 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, + 0x00000000, 0x0000000f, 0x545f5653, 0x65677261, 0xabab0074, 0x52444853, 0x00000134, 0x00000040, + 0x0000004d, 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, + 0x03000065, 0x001020f2, 0x00000000, 0x02000068, 0x00000001, 0x0800000f, 0x00100012, 0x00000000, + 0x00101046, 0x00000000, 0x00208046, 0x00000000, 0x00000000, 0x08000000, 0x00100012, 0x00000000, + 0x0010000a, 0x00000000, 0x0020802a, 0x00000000, 0x00000000, 0x0800000f, 0x00100042, 0x00000000, + 0x00101046, 0x00000000, 0x00208046, 0x00000000, 0x00000001, 0x08000000, 0x00100022, 0x00000000, + 0x0010002a, 0x00000000, 0x0020802a, 0x00000000, 0x00000001, 0x09000045, 0x001000f2, 0x00000000, + 0x00100046, 0x00000000, 0x00107e46, 0x00000000, 0x00106000, 0x00000000, 0x08000038, 0x00102082, + 0x00000000, 0x0010003a, 0x00000000, 0x0020803a, 0x00000000, 0x00000001, 0x05000036, 0x00102072, + 0x00000000, 0x00100246, 0x00000000, 0x0100003e, }; static const struct { diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/d3d8/device.c wine-staging-1.7.41~ubuntu12.04.1/dlls/d3d8/device.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/d3d8/device.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/d3d8/device.c 2015-04-18 23:36:02.000000000 +0000 @@ -670,6 +670,7 @@ if (SUCCEEDED(hr = wined3d_device_reset(device->wined3d_device, &swapchain_desc, NULL, reset_enum_callback, TRUE))) { + present_parameters->BackBufferCount = swapchain_desc.backbuffer_count; wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_POINTSIZE_MIN, 0); device->device_state = D3D8_DEVICE_STATE_OK; } diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/d3d8/tests/device.c wine-staging-1.7.41~ubuntu12.04.1/dlls/d3d8/tests/device.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/d3d8/tests/device.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/d3d8/tests/device.c 2015-04-18 23:36:02.000000000 +0000 @@ -1119,6 +1119,7 @@ UINT height, orig_height = GetSystemMetrics(SM_CYSCREEN); IDirect3DDevice8 *device1 = NULL; IDirect3DDevice8 *device2 = NULL; + struct device_desc device_desc; D3DDISPLAYMODE d3ddm, d3ddm2; D3DSURFACE_DESC surface_desc; D3DPRESENT_PARAMETERS d3dpp; @@ -1202,20 +1203,13 @@ i = 0; if (modes[i].w == orig_width && modes[i].h == orig_height) ++i; - memset(&d3dpp, 0, sizeof(d3dpp)); - d3dpp.Windowed = FALSE; - d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; - d3dpp.BackBufferWidth = modes[i].w; - d3dpp.BackBufferHeight = modes[i].h; - d3dpp.BackBufferFormat = d3ddm.Format; - d3dpp.EnableAutoDepthStencil = TRUE; - d3dpp.AutoDepthStencilFormat = D3DFMT_D24S8; - - hr = IDirect3D8_CreateDevice(d3d8, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, - window, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &device1); - if (FAILED(hr)) + device_desc.width = modes[i].w; + device_desc.height = modes[i].h; + device_desc.device_window = window; + device_desc.flags = CREATE_DEVICE_FULLSCREEN | CREATE_DEVICE_SWVP_ONLY; + if (!(device1 = create_device(d3d8, window, &device_desc))) { - skip("Failed to create device, hr %#x.\n", hr); + skip("Failed to create a D3D device, skipping tests.\n"); goto cleanup; } hr = IDirect3DDevice8_TestCooperativeLevel(device1); @@ -1305,7 +1299,7 @@ d3dpp.Windowed = TRUE; d3dpp.BackBufferWidth = 400; d3dpp.BackBufferHeight = 300; - d3dpp.BackBufferFormat = d3ddm.Format; + d3dpp.BackBufferFormat = D3DFMT_A8R8G8B8; hr = IDirect3DDevice8_Reset(device1, &d3dpp); ok(SUCCEEDED(hr), "Reset failed, hr %#x.\n", hr); hr = IDirect3DDevice8_TestCooperativeLevel(device1); @@ -1361,6 +1355,23 @@ hr = IDirect3DDevice8_TestCooperativeLevel(device1); ok(SUCCEEDED(hr), "TestCooperativeLevel failed, hr %#x.\n", hr); + ok(!d3dpp.BackBufferWidth, "Got unexpected BackBufferWidth %u.\n", d3dpp.BackBufferWidth); + ok(!d3dpp.BackBufferHeight, "Got unexpected BackBufferHeight %u.\n", d3dpp.BackBufferHeight); + ok(d3dpp.BackBufferFormat == d3ddm.Format, "Got unexpected BackBufferFormat %#x, expected %#x.\n", + d3dpp.BackBufferFormat, d3ddm.Format); + ok(d3dpp.BackBufferCount == 1, "Got unexpected BackBufferCount %u.\n", d3dpp.BackBufferCount); + ok(!d3dpp.MultiSampleType, "Got unexpected MultiSampleType %u.\n", d3dpp.MultiSampleType); + ok(d3dpp.SwapEffect == D3DSWAPEFFECT_DISCARD, "Got unexpected SwapEffect %#x.\n", d3dpp.SwapEffect); + ok(!d3dpp.hDeviceWindow, "Got unexpected hDeviceWindow %p.\n", d3dpp.hDeviceWindow); + ok(d3dpp.Windowed, "Got unexpected Windowed %#x.\n", d3dpp.Windowed); + ok(!d3dpp.EnableAutoDepthStencil, "Got unexpected EnableAutoDepthStencil %#x.\n", d3dpp.EnableAutoDepthStencil); + ok(!d3dpp.AutoDepthStencilFormat, "Got unexpected AutoDepthStencilFormat %#x.\n", d3dpp.AutoDepthStencilFormat); + ok(!d3dpp.Flags, "Got unexpected Flags %#x.\n", d3dpp.Flags); + ok(!d3dpp.FullScreen_RefreshRateInHz, "Got unexpected FullScreen_RefreshRateInHz %u.\n", + d3dpp.FullScreen_RefreshRateInHz); + ok(!d3dpp.FullScreen_PresentationInterval, "Got unexpected FullScreen_PresentationInterval %#x.\n", + d3dpp.FullScreen_PresentationInterval); + memset(&vp, 0, sizeof(vp)); hr = IDirect3DDevice8_GetViewport(device1, &vp); ok(SUCCEEDED(hr), "GetViewport failed, hr %#x.\n", hr); @@ -1378,6 +1389,9 @@ ok(SUCCEEDED(hr), "GetRenderTarget failed, hr %#x.\n", hr); hr = IDirect3DSurface8_GetDesc(surface, &surface_desc); ok(hr == D3D_OK, "GetDesc failed, hr %#x.\n", hr); + ok(surface_desc.Format == d3ddm.Format, "Got unexpected Format %#x, expected %#x.\n", + surface_desc.Format, d3ddm.Format); + ok(!surface_desc.MultiSampleType, "Got unexpected MultiSampleType %u.\n", d3dpp.MultiSampleType); ok(surface_desc.Width == 200, "Back buffer width is %u, expected 200.\n", surface_desc.Width); ok(surface_desc.Height == 150, "Back buffer height is %u, expected 150.\n", surface_desc.Height); IDirect3DSurface8_Release(surface); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/d3d9/device.c wine-staging-1.7.41~ubuntu12.04.1/dlls/d3d9/device.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/d3d9/device.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/d3d9/device.c 2015-04-18 23:36:02.000000000 +0000 @@ -626,21 +626,28 @@ return D3D_OK; } -static HRESULT WINAPI DECLSPEC_HOTPATCH d3d9_device_Reset(IDirect3DDevice9Ex *iface, - D3DPRESENT_PARAMETERS *present_parameters) +static HRESULT d3d9_device_reset(struct d3d9_device *device, + D3DPRESENT_PARAMETERS *present_parameters, D3DDISPLAYMODEEX *mode) { - struct d3d9_device *device = impl_from_IDirect3DDevice9Ex(iface); struct wined3d_swapchain_desc swapchain_desc; + struct wined3d_display_mode wined3d_mode; HRESULT hr; - TRACE("iface %p, present_parameters %p.\n", iface, present_parameters); - if (!device->d3d_parent->extended && device->device_state == D3D9_DEVICE_STATE_LOST) { WARN("App not active, returning D3DERR_DEVICELOST.\n"); return D3DERR_DEVICELOST; } + if (mode) + { + wined3d_mode.width = mode->Width; + wined3d_mode.height = mode->Height; + wined3d_mode.refresh_rate = mode->RefreshRate; + wined3d_mode.format_id = wined3dformat_from_d3dformat(mode->Format); + wined3d_mode.scanline_ordering = mode->ScanLineOrdering; + } + wined3d_mutex_lock(); if (device->vertex_buffer) @@ -649,6 +656,7 @@ device->vertex_buffer = NULL; device->vertex_buffer_size = 0; } + if (device->index_buffer) { wined3d_buffer_decref(device->index_buffer); @@ -657,17 +665,40 @@ } wined3d_swapchain_desc_from_present_parameters(&swapchain_desc, present_parameters); - hr = wined3d_device_reset(device->wined3d_device, &swapchain_desc, - NULL, reset_enum_callback, !device->d3d_parent->extended); - if (FAILED(hr) && !device->d3d_parent->extended) - device->device_state = D3D9_DEVICE_STATE_NOT_RESET; - else + if (SUCCEEDED(hr = wined3d_device_reset(device->wined3d_device, &swapchain_desc, + mode ? &wined3d_mode : NULL, reset_enum_callback, !device->d3d_parent->extended))) + { + struct wined3d_swapchain *wined3d_swapchain; + + wined3d_swapchain = wined3d_device_get_swapchain(device->wined3d_device, 0); + wined3d_swapchain_get_desc(wined3d_swapchain, &swapchain_desc); + present_parameters->BackBufferWidth = swapchain_desc.backbuffer_width; + present_parameters->BackBufferHeight = swapchain_desc.backbuffer_height; + present_parameters->BackBufferFormat = d3dformat_from_wined3dformat(swapchain_desc.backbuffer_format); + present_parameters->BackBufferCount = swapchain_desc.backbuffer_count; + device->device_state = D3D9_DEVICE_STATE_OK; + } + else if (!device->d3d_parent->extended) + { + device->device_state = D3D9_DEVICE_STATE_NOT_RESET; + } + wined3d_mutex_unlock(); return hr; } +static HRESULT WINAPI DECLSPEC_HOTPATCH d3d9_device_Reset(IDirect3DDevice9Ex *iface, + D3DPRESENT_PARAMETERS *present_parameters) +{ + struct d3d9_device *device = impl_from_IDirect3DDevice9Ex(iface); + + TRACE("iface %p, present_parameters %p.\n", iface, present_parameters); + + return d3d9_device_reset(device, present_parameters, NULL); +} + static HRESULT WINAPI DECLSPEC_HOTPATCH d3d9_device_Present(IDirect3DDevice9Ex *iface, const RECT *src_rect, const RECT *dst_rect, HWND dst_window_override, const RGNDATA *dirty_region) { @@ -3253,42 +3284,10 @@ D3DPRESENT_PARAMETERS *present_parameters, D3DDISPLAYMODEEX *mode) { struct d3d9_device *device = impl_from_IDirect3DDevice9Ex(iface); - struct wined3d_swapchain_desc swapchain_desc; - struct wined3d_display_mode wined3d_mode; - HRESULT hr; TRACE("iface %p, present_parameters %p, mode %p.\n", iface, present_parameters, mode); - if (mode) - { - wined3d_mode.width = mode->Width; - wined3d_mode.height = mode->Height; - wined3d_mode.refresh_rate = mode->RefreshRate; - wined3d_mode.format_id = wined3dformat_from_d3dformat(mode->Format); - wined3d_mode.scanline_ordering = mode->ScanLineOrdering; - } - - wined3d_mutex_lock(); - - if (device->vertex_buffer) - { - wined3d_buffer_decref(device->vertex_buffer); - device->vertex_buffer = NULL; - device->vertex_buffer_size = 0; - } - if (device->index_buffer) - { - wined3d_buffer_decref(device->index_buffer); - device->index_buffer = NULL; - device->index_buffer_size = 0; - } - - wined3d_swapchain_desc_from_present_parameters(&swapchain_desc, present_parameters); - hr = wined3d_device_reset(device->wined3d_device, &swapchain_desc, - mode ? &wined3d_mode : NULL, reset_enum_callback, FALSE); - wined3d_mutex_unlock(); - - return hr; + return d3d9_device_reset(device, present_parameters, mode); } static HRESULT WINAPI d3d9_device_GetDisplayModeEx(IDirect3DDevice9Ex *iface, diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/d3d9/tests/d3d9ex.c wine-staging-1.7.41~ubuntu12.04.1/dlls/d3d9/tests/d3d9ex.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/d3d9/tests/d3d9ex.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/d3d9/tests/d3d9ex.c 2015-04-18 23:36:02.000000000 +0000 @@ -1012,6 +1012,7 @@ d3dpp.Windowed = TRUE; d3dpp.BackBufferWidth = 400; d3dpp.BackBufferHeight = 300; + d3dpp.BackBufferFormat = D3DFMT_A8R8G8B8; hr = IDirect3DDevice9Ex_Reset(device, &d3dpp); ok(SUCCEEDED(hr), "Failed to reset device, hr %#x.\n", hr); hr = IDirect3DDevice9Ex_TestCooperativeLevel(device); @@ -1055,11 +1056,29 @@ d3dpp.Windowed = TRUE; d3dpp.BackBufferWidth = 0; d3dpp.BackBufferHeight = 0; + d3dpp.BackBufferFormat = D3DFMT_UNKNOWN; hr = IDirect3DDevice9Ex_Reset(device, &d3dpp); ok(SUCCEEDED(hr), "Failed to reset device, hr %#x.\n", hr); hr = IDirect3DDevice9Ex_TestCooperativeLevel(device); ok(hr == D3D_OK, "Got unexpected cooperative level %#x.\n", hr); + ok(d3dpp.BackBufferWidth == 200, "Got unexpected BackBufferWidth %u.\n", d3dpp.BackBufferWidth); + ok(d3dpp.BackBufferHeight == 150, "Got unexpected BackBufferHeight %u.\n", d3dpp.BackBufferHeight); + ok(d3dpp.BackBufferFormat == d3ddm.Format, "Got unexpected BackBufferFormat %#x, expected %#x.\n", + d3dpp.BackBufferFormat, d3ddm.Format); + ok(d3dpp.BackBufferCount == 1, "Got unexpected BackBufferCount %u.\n", d3dpp.BackBufferCount); + ok(!d3dpp.MultiSampleType, "Got unexpected MultiSampleType %u.\n", d3dpp.MultiSampleType); + ok(!d3dpp.MultiSampleQuality, "Got unexpected MultiSampleQuality %u.\n", d3dpp.MultiSampleQuality); + ok(d3dpp.SwapEffect == D3DSWAPEFFECT_DISCARD, "Got unexpected SwapEffect %#x.\n", d3dpp.SwapEffect); + ok(!d3dpp.hDeviceWindow, "Got unexpected hDeviceWindow %p.\n", d3dpp.hDeviceWindow); + ok(d3dpp.Windowed, "Got unexpected Windowed %#x.\n", d3dpp.Windowed); + ok(!d3dpp.EnableAutoDepthStencil, "Got unexpected EnableAutoDepthStencil %#x.\n", d3dpp.EnableAutoDepthStencil); + ok(!d3dpp.AutoDepthStencilFormat, "Got unexpected AutoDepthStencilFormat %#x.\n", d3dpp.AutoDepthStencilFormat); + ok(!d3dpp.Flags, "Got unexpected Flags %#x.\n", d3dpp.Flags); + ok(!d3dpp.FullScreen_RefreshRateInHz, "Got unexpected FullScreen_RefreshRateInHz %u.\n", + d3dpp.FullScreen_RefreshRateInHz); + ok(!d3dpp.PresentationInterval, "Got unexpected PresentationInterval %#x.\n", d3dpp.PresentationInterval); + hr = IDirect3DDevice9Ex_GetScissorRect(device, &rect); ok(SUCCEEDED(hr), "Failed to get scissor rect, hr %#x.\n", hr); ok(rect.left == 0 && rect.top == 0 && rect.right == 200 && rect.bottom == 150, @@ -1081,6 +1100,20 @@ ok(SUCCEEDED(hr), "Failed to get present parameters, hr %#x.\n", hr); ok(d3dpp.BackBufferWidth == 200, "Got unexpected backbuffer width %u.\n", d3dpp.BackBufferWidth); ok(d3dpp.BackBufferHeight == 150, "Got unexpected backbuffer height %u.\n", d3dpp.BackBufferHeight); + ok(d3dpp.BackBufferFormat == d3ddm.Format, "Got unexpected BackBufferFormat %#x, expected %#x.\n", + d3dpp.BackBufferFormat, d3ddm.Format); + ok(d3dpp.BackBufferCount == 1, "Got unexpected BackBufferCount %u.\n", d3dpp.BackBufferCount); + ok(!d3dpp.MultiSampleType, "Got unexpected MultiSampleType %u.\n", d3dpp.MultiSampleType); + ok(!d3dpp.MultiSampleQuality, "Got unexpected MultiSampleQuality %u.\n", d3dpp.MultiSampleQuality); + ok(d3dpp.SwapEffect == D3DSWAPEFFECT_DISCARD, "Got unexpected SwapEffect %#x.\n", d3dpp.SwapEffect); + ok(d3dpp.hDeviceWindow == window, "Got unexpected hDeviceWindow %p, expected %p.\n", d3dpp.hDeviceWindow, window); + ok(d3dpp.Windowed, "Got unexpected Windowed %#x.\n", d3dpp.Windowed); + ok(!d3dpp.EnableAutoDepthStencil, "Got unexpected EnableAutoDepthStencil %#x.\n", d3dpp.EnableAutoDepthStencil); + ok(!d3dpp.AutoDepthStencilFormat, "Got unexpected AutoDepthStencilFormat %#x.\n", d3dpp.AutoDepthStencilFormat); + ok(!d3dpp.Flags, "Got unexpected Flags %#x.\n", d3dpp.Flags); + ok(!d3dpp.FullScreen_RefreshRateInHz, "Got unexpected FullScreen_RefreshRateInHz %u.\n", + d3dpp.FullScreen_RefreshRateInHz); + ok(!d3dpp.PresentationInterval, "Got unexpected PresentationInterval %#x.\n", d3dpp.PresentationInterval); IDirect3DSwapChain9_Release(swapchain); memset(&d3dpp, 0, sizeof(d3dpp)); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/d3d9/tests/device.c wine-staging-1.7.41~ubuntu12.04.1/dlls/d3d9/tests/device.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/d3d9/tests/device.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/d3d9/tests/device.c 2015-04-18 23:36:02.000000000 +0000 @@ -1651,7 +1651,6 @@ D3DVIEWPORT9 vp; DWORD width, orig_width = GetSystemMetrics(SM_CXSCREEN); DWORD height, orig_height = GetSystemMetrics(SM_CYSCREEN); - IDirect3DSwapChain9 *pSwapchain; IDirect3DSurface9 *surface; IDirect3DTexture9 *texture; IDirect3DVertexShader9 *shader; @@ -1659,6 +1658,8 @@ D3DLOCKED_RECT lockrect; IDirect3DDevice9 *device1 = NULL; IDirect3DDevice9 *device2 = NULL; + IDirect3DSwapChain9 *swapchain; + struct device_desc device_desc; IDirect3D9 *d3d; D3DCAPS9 caps; DWORD value; @@ -1716,20 +1717,13 @@ i = 0; if (modes[i].w == orig_width && modes[i].h == orig_height) ++i; - ZeroMemory( &d3dpp, sizeof(d3dpp) ); - d3dpp.Windowed = FALSE; - d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; - d3dpp.BackBufferWidth = modes[i].w; - d3dpp.BackBufferHeight = modes[i].h; - d3dpp.BackBufferFormat = d3ddm.Format; - d3dpp.EnableAutoDepthStencil = TRUE; - d3dpp.AutoDepthStencilFormat = D3DFMT_D24S8; - - hr = IDirect3D9_CreateDevice(d3d, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, - hwnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &device1); - if (FAILED(hr)) + device_desc.width = modes[i].w; + device_desc.height = modes[i].h; + device_desc.device_window = hwnd; + device_desc.flags = CREATE_DEVICE_FULLSCREEN | CREATE_DEVICE_SWVP_ONLY; + if (!(device1 = create_device(d3d, hwnd, &device_desc))) { - skip("could not create device, IDirect3D9_CreateDevice returned %#x\n", hr); + skip("Failed to create a D3D device, skipping tests.\n"); goto cleanup; } hr = IDirect3DDevice9_TestCooperativeLevel(device1); @@ -1802,28 +1796,23 @@ ok(width == modes[i].w, "Screen width is %u, expected %u\n", width, modes[i].w); ok(height == modes[i].h, "Screen height is %u, expected %u\n", height, modes[i].h); - hr = IDirect3DDevice9_GetSwapChain(device1, 0, &pSwapchain); - ok(hr == D3D_OK, "IDirect3DDevice9_GetSwapChain returned %08x\n", hr); - if(SUCCEEDED(hr)) - { - ZeroMemory(&d3dpp, sizeof(d3dpp)); - hr = IDirect3DSwapChain9_GetPresentParameters(pSwapchain, &d3dpp); - ok(hr == D3D_OK, "IDirect3DSwapChain9_GetPresentParameters returned %08x\n", hr); - if(SUCCEEDED(hr)) - { - ok(d3dpp.BackBufferWidth == modes[i].w, "Back buffer width is %u, expected %u\n", - d3dpp.BackBufferWidth, modes[i].w); - ok(d3dpp.BackBufferHeight == modes[i].h, "Back buffer height is %u, expected %u\n", - d3dpp.BackBufferHeight, modes[i].h); - } - IDirect3DSwapChain9_Release(pSwapchain); - } + hr = IDirect3DDevice9_GetSwapChain(device1, 0, &swapchain); + ok(SUCCEEDED(hr), "Failed to get swapchain, hr %#x.\n", hr); + memset(&d3dpp, 0, sizeof(d3dpp)); + hr = IDirect3DSwapChain9_GetPresentParameters(swapchain, &d3dpp); + ok(SUCCEEDED(hr), "Failed to get present parameters, hr %#x.\n", hr); + ok(d3dpp.BackBufferWidth == modes[i].w, "Got unexpected BackBufferWidth %u, expected %u.\n", + d3dpp.BackBufferWidth, modes[i].w); + ok(d3dpp.BackBufferHeight == modes[i].h, "Got unexpected BackBufferHeight %u, expected %u.\n", + d3dpp.BackBufferHeight, modes[i].h); + IDirect3DSwapChain9_Release(swapchain); ZeroMemory( &d3dpp, sizeof(d3dpp) ); d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.Windowed = TRUE; d3dpp.BackBufferWidth = 400; d3dpp.BackBufferHeight = 300; + d3dpp.BackBufferFormat = D3DFMT_A8R8G8B8; hr = IDirect3DDevice9_Reset(device1, &d3dpp); ok(hr == D3D_OK, "IDirect3DDevice9_Reset failed with %08x\n", hr); hr = IDirect3DDevice9_TestCooperativeLevel(device1); @@ -1847,20 +1836,14 @@ ok(vp.MaxZ == 1, "D3DVIEWPORT->MaxZ = %f\n", vp.MaxZ); } - hr = IDirect3DDevice9_GetSwapChain(device1, 0, &pSwapchain); - ok(hr == D3D_OK, "IDirect3DDevice9_GetSwapChain returned %08x\n", hr); - if(SUCCEEDED(hr)) - { - ZeroMemory(&d3dpp, sizeof(d3dpp)); - hr = IDirect3DSwapChain9_GetPresentParameters(pSwapchain, &d3dpp); - ok(hr == D3D_OK, "IDirect3DSwapChain9_GetPresentParameters returned %08x\n", hr); - if(SUCCEEDED(hr)) - { - ok(d3dpp.BackBufferWidth == 400, "Back buffer width is %d\n", d3dpp.BackBufferWidth); - ok(d3dpp.BackBufferHeight == 300, "Back buffer height is %d\n", d3dpp.BackBufferHeight); - } - IDirect3DSwapChain9_Release(pSwapchain); - } + hr = IDirect3DDevice9_GetSwapChain(device1, 0, &swapchain); + ok(SUCCEEDED(hr), "Failed to get swapchain, hr %#x.\n", hr); + memset(&d3dpp, 0, sizeof(d3dpp)); + hr = IDirect3DSwapChain9_GetPresentParameters(swapchain, &d3dpp); + ok(SUCCEEDED(hr), "Failed to get present parameters, hr %#x.\n", hr); + ok(d3dpp.BackBufferWidth == 400, "Got unexpected BackBufferWidth %u.\n", d3dpp.BackBufferWidth); + ok(d3dpp.BackBufferHeight == 300, "Got unexpected BackBufferHeight %u.\n", d3dpp.BackBufferHeight); + IDirect3DSwapChain9_Release(swapchain); winrect.left = 0; winrect.top = 0; @@ -1878,11 +1861,29 @@ d3dpp.Windowed = TRUE; d3dpp.BackBufferWidth = 0; d3dpp.BackBufferHeight = 0; + d3dpp.BackBufferFormat = D3DFMT_UNKNOWN; hr = IDirect3DDevice9_Reset(device1, &d3dpp); ok(hr == D3D_OK, "IDirect3DDevice9_Reset failed with %08x\n", hr); hr = IDirect3DDevice9_TestCooperativeLevel(device1); ok(hr == D3D_OK, "IDirect3DDevice9_TestCooperativeLevel after a successful reset returned %#x\n", hr); + ok(d3dpp.BackBufferWidth == 200, "Got unexpected BackBufferWidth %u.\n", d3dpp.BackBufferWidth); + ok(d3dpp.BackBufferHeight == 150, "Got unexpected BackBufferHeight %u.\n", d3dpp.BackBufferHeight); + ok(d3dpp.BackBufferFormat == d3ddm.Format, "Got unexpected BackBufferFormat %#x, expected %#x.\n", + d3dpp.BackBufferFormat, d3ddm.Format); + ok(d3dpp.BackBufferCount == 1, "Got unexpected BackBufferCount %u.\n", d3dpp.BackBufferCount); + ok(!d3dpp.MultiSampleType, "Got unexpected MultiSampleType %u.\n", d3dpp.MultiSampleType); + ok(!d3dpp.MultiSampleQuality, "Got unexpected MultiSampleQuality %u.\n", d3dpp.MultiSampleQuality); + ok(d3dpp.SwapEffect == D3DSWAPEFFECT_DISCARD, "Got unexpected SwapEffect %#x.\n", d3dpp.SwapEffect); + ok(!d3dpp.hDeviceWindow, "Got unexpected hDeviceWindow %p.\n", d3dpp.hDeviceWindow); + ok(d3dpp.Windowed, "Got unexpected Windowed %#x.\n", d3dpp.Windowed); + ok(!d3dpp.EnableAutoDepthStencil, "Got unexpected EnableAutoDepthStencil %#x.\n", d3dpp.EnableAutoDepthStencil); + ok(!d3dpp.AutoDepthStencilFormat, "Got unexpected AutoDepthStencilFormat %#x.\n", d3dpp.AutoDepthStencilFormat); + ok(!d3dpp.Flags, "Got unexpected Flags %#x.\n", d3dpp.Flags); + ok(!d3dpp.FullScreen_RefreshRateInHz, "Got unexpected FullScreen_RefreshRateInHz %u.\n", + d3dpp.FullScreen_RefreshRateInHz); + ok(!d3dpp.PresentationInterval, "Got unexpected PresentationInterval %#x.\n", d3dpp.PresentationInterval); + ZeroMemory(&vp, sizeof(vp)); hr = IDirect3DDevice9_GetViewport(device1, &vp); ok(hr == D3D_OK, "IDirect3DDevice9_GetViewport failed with %08x\n", hr); @@ -1896,20 +1897,28 @@ ok(vp.MaxZ == 1, "D3DVIEWPORT->MaxZ = %f\n", vp.MaxZ); } - hr = IDirect3DDevice9_GetSwapChain(device1, 0, &pSwapchain); - ok(hr == D3D_OK, "IDirect3DDevice9_GetSwapChain returned %08x\n", hr); - if(SUCCEEDED(hr)) - { - ZeroMemory(&d3dpp, sizeof(d3dpp)); - hr = IDirect3DSwapChain9_GetPresentParameters(pSwapchain, &d3dpp); - ok(hr == D3D_OK, "IDirect3DSwapChain9_GetPresentParameters returned %08x\n", hr); - if(SUCCEEDED(hr)) - { - ok(d3dpp.BackBufferWidth == 200, "Back buffer width is %d\n", d3dpp.BackBufferWidth); - ok(d3dpp.BackBufferHeight == 150, "Back buffer height is %d\n", d3dpp.BackBufferHeight); - } - IDirect3DSwapChain9_Release(pSwapchain); - } + hr = IDirect3DDevice9_GetSwapChain(device1, 0, &swapchain); + ok(SUCCEEDED(hr), "Failed to get swapchain, hr %#x.\n", hr); + memset(&d3dpp, 0, sizeof(d3dpp)); + hr = IDirect3DSwapChain9_GetPresentParameters(swapchain, &d3dpp); + ok(SUCCEEDED(hr), "Failed to get present parameters, hr %#x.\n", hr); + ok(d3dpp.BackBufferWidth == 200, "Got unexpected BackBufferWidth %u.\n", d3dpp.BackBufferWidth); + ok(d3dpp.BackBufferHeight == 150, "Got unexpected BackBufferHeight %u.\n", d3dpp.BackBufferHeight); + ok(d3dpp.BackBufferFormat == d3ddm.Format, "Got unexpected BackBufferFormat %#x, expected %#x.\n", + d3dpp.BackBufferFormat, d3ddm.Format); + ok(d3dpp.BackBufferCount == 1, "Got unexpected BackBufferCount %u.\n", d3dpp.BackBufferCount); + ok(!d3dpp.MultiSampleType, "Got unexpected MultiSampleType %u.\n", d3dpp.MultiSampleType); + ok(!d3dpp.MultiSampleQuality, "Got unexpected MultiSampleQuality %u.\n", d3dpp.MultiSampleQuality); + ok(d3dpp.SwapEffect == D3DSWAPEFFECT_DISCARD, "Got unexpected SwapEffect %#x.\n", d3dpp.SwapEffect); + ok(d3dpp.hDeviceWindow == hwnd, "Got unexpected hDeviceWindow %p, expected %p.\n", d3dpp.hDeviceWindow, hwnd); + ok(d3dpp.Windowed, "Got unexpected Windowed %#x.\n", d3dpp.Windowed); + ok(!d3dpp.EnableAutoDepthStencil, "Got unexpected EnableAutoDepthStencil %#x.\n", d3dpp.EnableAutoDepthStencil); + ok(!d3dpp.AutoDepthStencilFormat, "Got unexpected AutoDepthStencilFormat %#x.\n", d3dpp.AutoDepthStencilFormat); + ok(!d3dpp.Flags, "Got unexpected Flags %#x.\n", d3dpp.Flags); + ok(!d3dpp.FullScreen_RefreshRateInHz, "Got unexpected FullScreen_RefreshRateInHz %u.\n", + d3dpp.FullScreen_RefreshRateInHz); + ok(!d3dpp.PresentationInterval, "Got unexpected PresentationInterval %#x.\n", d3dpp.PresentationInterval); + IDirect3DSwapChain9_Release(swapchain); ZeroMemory( &d3dpp, sizeof(d3dpp) ); d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/d3drm/frame.c wine-staging-1.7.41~ubuntu12.04.1/dlls/d3drm/frame.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/d3drm/frame.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/d3drm/frame.c 2015-04-18 23:36:02.000000000 +0000 @@ -472,6 +472,8 @@ if (IsEqualGUID(riid, &IID_IDirect3DRMFrame2) || IsEqualGUID(riid, &IID_IDirect3DRMFrame) + || IsEqualGUID(riid, &IID_IDirect3DRMObject) + || IsEqualGUID(riid, &IID_IDirect3DRMVisual) || IsEqualGUID(riid, &IID_IUnknown)) { *out = &frame->IDirect3DRMFrame2_iface; @@ -483,8 +485,8 @@ else { *out = NULL; - WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(riid)); - return E_NOINTERFACE; + WARN("%s not implemented, returning CLASS_E_CLASSNOTAVAILABLE.\n", debugstr_guid(riid)); + return CLASS_E_CLASSNOTAVAILABLE; } IUnknown_AddRef((IUnknown *)*out); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/d3drm/meshbuilder.c wine-staging-1.7.41~ubuntu12.04.1/dlls/d3drm/meshbuilder.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/d3drm/meshbuilder.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/d3drm/meshbuilder.c 2015-04-18 23:36:02.000000000 +0000 @@ -356,7 +356,9 @@ } mesh_builder->nb_materials = 0; HeapFree(GetProcessHeap(), 0, mesh_builder->materials); + mesh_builder->materials = NULL; HeapFree(GetProcessHeap(), 0, mesh_builder->material_indices); + mesh_builder->material_indices = NULL; } static HRESULT WINAPI d3drm_mesh_builder2_QueryInterface(IDirect3DRMMeshBuilder2 *iface, REFIID riid, void **out) diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/d3drm/tests/d3drm.c wine-staging-1.7.41~ubuntu12.04.1/dlls/d3drm/tests/d3drm.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/d3drm/tests/d3drm.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/d3drm/tests/d3drm.c 2015-04-18 23:36:02.000000000 +0000 @@ -33,7 +33,7 @@ ok(count == rc_new, "Invalid refcount. Expected %d got %d\n", rc_new, count); \ } -static int get_refcount(IUnknown *object) +static ULONG get_refcount(IUnknown *object) { IUnknown_AddRef( object ); return IUnknown_Release( object ); @@ -1841,6 +1841,123 @@ IDirect3DRM_Release(d3drm); } +static void test_frame_qi(void) +{ + static const struct qi_test tests[] = + { + { &IID_IDirect3DRMFrame3, &IID_IUnknown, S_OK, FALSE }, + { &IID_IDirect3DRMFrame2, &IID_IUnknown, S_OK, FALSE }, + { &IID_IDirect3DRMFrame, &IID_IUnknown, S_OK, FALSE }, + { &IID_IDirect3DRM, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMDevice, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMObject, &IID_IUnknown, S_OK, FALSE }, + { &IID_IDirect3DRMDevice2, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMDevice3, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMViewport, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMViewport2, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRM3, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRM2, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMVisual, &IID_IUnknown, S_OK, FALSE }, + { &IID_IDirect3DRMMesh, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMMeshBuilder, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMMeshBuilder2, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMMeshBuilder3, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMFace, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMFace2, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMLight, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMTexture, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMTexture2, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMTexture3, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMWrap, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMMaterial, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMMaterial2, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMAnimation, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMAnimation2, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMAnimationSet, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMAnimationSet2, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMObjectArray, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMDeviceArray, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMViewportArray, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMFrameArray, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMVisualArray, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMLightArray, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMPickedArray, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMFaceArray, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMAnimationArray, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMUserVisual, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMShadow, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMShadow2, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMInterpolator, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMProgressiveMesh, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMPicked2Array, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DRMClippedVisual, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirectDrawClipper, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirectDrawSurface7, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirectDrawSurface4, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirectDrawSurface3, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirectDrawSurface2, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirectDrawSurface, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DDevice7, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DDevice3, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DDevice2, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DDevice, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3D7, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3D3, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3D2, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3D, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirectDraw7, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirectDraw4, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirectDraw3, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirectDraw2, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirectDraw, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IDirect3DLight, NULL, CLASS_E_CLASSNOTAVAILABLE, FALSE }, + { &IID_IUnknown, &IID_IUnknown, S_OK, FALSE }, + }; + HRESULT hr; + IDirect3DRM *d3drm1; + IDirect3DRM2 *d3drm2; + IDirect3DRM3 *d3drm3; + IDirect3DRMFrame *frame1; + IDirect3DRMFrame2 *frame2; + IDirect3DRMFrame3 *frame3; + IUnknown *unknown; + + hr = Direct3DRMCreate(&d3drm1); + ok(hr == D3DRM_OK, "Cannot get IDirect3DRM interface (hr = %x)\n", hr); + + hr = IDirect3DRM_CreateFrame(d3drm1, NULL, &frame1); + ok(hr == D3DRM_OK, "Failed to create frame1 (hr = %x)\n", hr); + IDirect3DRMFrame_QueryInterface(frame1, &IID_IUnknown, (void **)&unknown); + ok(hr == D3DRM_OK, "Failed to create IUnknown from frame1 (hr = %x)\n", hr); + IDirect3DRMFrame_Release(frame1); + test_qi("frame1_qi", unknown, &IID_IUnknown, tests, sizeof(tests) / sizeof(*tests)); + IUnknown_Release(unknown); + + hr = IDirect3DRM_QueryInterface(d3drm1, &IID_IDirect3DRM2, (void **)&d3drm2); + ok(hr == D3DRM_OK, "Cannot get IDirect3DRM2 interface (hr = %x).\n", hr); + hr = IDirect3DRM2_CreateFrame(d3drm2, NULL, &frame2); + ok(hr == D3DRM_OK, "Failed to create frame2 (hr = %x)\n", hr); + IDirect3DRMFrame2_QueryInterface(frame2, &IID_IUnknown, (void **)&unknown); + ok(hr == D3DRM_OK, "Failed to create IUnknown from frame2 (hr = %x)\n", hr); + IDirect3DRMFrame2_Release(frame2); + test_qi("frame2_qi", unknown, &IID_IUnknown, tests, sizeof(tests) / sizeof(*tests)); + IUnknown_Release(unknown); + + hr = IDirect3DRM_QueryInterface(d3drm1, &IID_IDirect3DRM3, (void **)&d3drm3); + ok(hr == D3DRM_OK, "Cannot get IDirect3DRM3 interface (hr = %x).\n", hr); + hr = IDirect3DRM3_CreateFrame(d3drm3, NULL, &frame3); + ok(hr == D3DRM_OK, "Failed to create frame3 (hr = %x)\n", hr); + IDirect3DRMFrame3_QueryInterface(frame3, &IID_IUnknown, (void **)&unknown); + ok(hr == D3DRM_OK, "Failed to create IUnknown from frame3 (hr = %x)\n", hr); + IDirect3DRMFrame3_Release(frame3); + test_qi("frame3_qi", unknown, &IID_IUnknown, tests, sizeof(tests) / sizeof(*tests)); + IUnknown_Release(unknown); + + IDirect3DRM3_Release(d3drm3); + IDirect3DRM2_Release(d3drm2); + IDirect3DRM_Release(d3drm1); +} + START_TEST(d3drm) { test_MeshBuilder(); @@ -1857,4 +1974,5 @@ test_d3drm_load(); test_frame_mesh_materials(); test_d3drm_qi(); + test_frame_qi(); } diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/dbghelp/dwarf.c wine-staging-1.7.41~ubuntu12.04.1/dlls/dbghelp/dwarf.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/dbghelp/dwarf.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/dbghelp/dwarf.c 2015-04-18 23:36:02.000000000 +0000 @@ -3271,6 +3271,10 @@ if (end) fde_ctx.data = end; execute_cfa_instructions(&fde_ctx, ip, &info); + + /* if there is no information about retaddr, use default unwinder */ + if (info.state.rules[info.retaddr_reg] == RULE_UNSET) return FALSE; + apply_frame_state(pair.effective, csw, context, &info.state, cfa); return TRUE; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/ddraw/tests/ddraw1.c wine-staging-1.7.41~ubuntu12.04.1/dlls/ddraw/tests/ddraw1.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/ddraw/tests/ddraw1.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/ddraw/tests/ddraw1.c 2015-04-18 23:36:02.000000000 +0000 @@ -1329,14 +1329,9 @@ ok(SUCCEEDED(hr), "Failed to end scene, hr %#x.\n", hr); color = get_surface_color(rt, 320, 240); - if (i == 2) - todo_wine ok(compare_color(color, tests[i].result1, 1) || compare_color(color, tests[i].result1_broken, 1), - "Expected color 0x%08x for test %u, got 0x%08x.\n", - tests[i].result1, i, color); - else - ok(compare_color(color, tests[i].result1, 1) || compare_color(color, tests[i].result1_broken, 1), - "Expected color 0x%08x for test %u, got 0x%08x.\n", - tests[i].result1, i, color); + ok(compare_color(color, tests[i].result1, 1) || compare_color(color, tests[i].result1_broken, 1), + "Expected color 0x%08x for test %u, got 0x%08x.\n", + tests[i].result1, i, color); U5(fx).dwFillColor = 0xff0000ff; hr = IDirectDrawSurface_Blt(surface, NULL, NULL, NULL, DDBLT_COLORFILL | DDBLT_WAIT, &fx); @@ -1353,14 +1348,9 @@ /* This tests that fragments that are masked out by the color key are * discarded, instead of just fully transparent. */ color = get_surface_color(rt, 320, 240); - if (i == 2) - todo_wine ok(compare_color(color, tests[i].result2, 1) || compare_color(color, tests[i].result2_broken, 1), - "Expected color 0x%08x for test %u, got 0x%08x.\n", - tests[i].result2, i, color); - else - ok(compare_color(color, tests[i].result2, 1) || compare_color(color, tests[i].result2_broken, 1), - "Expected color 0x%08x for test %u, got 0x%08x.\n", - tests[i].result2, i, color); + ok(compare_color(color, tests[i].result2, 1) || compare_color(color, tests[i].result2_broken, 1), + "Expected color 0x%08x for test %u, got 0x%08x.\n", + tests[i].result2, i, color); } IDirectDrawSurface_Release(rt); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/ddraw/tests/ddraw2.c wine-staging-1.7.41~ubuntu12.04.1/dlls/ddraw/tests/ddraw2.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/ddraw/tests/ddraw2.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/ddraw/tests/ddraw2.c 2015-04-18 23:36:02.000000000 +0000 @@ -1577,14 +1577,9 @@ ok(SUCCEEDED(hr), "Failed to end scene, hr %#x.\n", hr); color = get_surface_color(rt, 320, 240); - if (i == 2) - todo_wine ok(compare_color(color, tests[i].result1, 1) || compare_color(color, tests[i].result1_broken, 1), - "Expected color 0x%08x for test %u, got 0x%08x.\n", - tests[i].result1, i, color); - else - ok(compare_color(color, tests[i].result1, 1) || compare_color(color, tests[i].result1_broken, 1), - "Expected color 0x%08x for test %u, got 0x%08x.\n", - tests[i].result1, i, color); + ok(compare_color(color, tests[i].result1, 1) || compare_color(color, tests[i].result1_broken, 1), + "Expected color 0x%08x for test %u, got 0x%08x.\n", + tests[i].result1, i, color); U5(fx).dwFillColor = 0xff0000ff; hr = IDirectDrawSurface_Blt(surface, NULL, NULL, NULL, DDBLT_COLORFILL | DDBLT_WAIT, &fx); @@ -1600,14 +1595,9 @@ /* This tests that fragments that are masked out by the color key are * discarded, instead of just fully transparent. */ color = get_surface_color(rt, 320, 240); - if (i == 2) - todo_wine ok(compare_color(color, tests[i].result2, 1) || compare_color(color, tests[i].result2_broken, 1), - "Expected color 0x%08x for test %u, got 0x%08x.\n", - tests[i].result2, i, color); - else - ok(compare_color(color, tests[i].result2, 1) || compare_color(color, tests[i].result2_broken, 1), - "Expected color 0x%08x for test %u, got 0x%08x.\n", - tests[i].result2, i, color); + ok(compare_color(color, tests[i].result2, 1) || compare_color(color, tests[i].result2_broken, 1), + "Expected color 0x%08x for test %u, got 0x%08x.\n", + tests[i].result2, i, color); } IDirectDrawSurface_Release(rt); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/ddraw/tests/ddraw4.c wine-staging-1.7.41~ubuntu12.04.1/dlls/ddraw/tests/ddraw4.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/ddraw/tests/ddraw4.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/ddraw/tests/ddraw4.c 2015-04-18 23:36:02.000000000 +0000 @@ -1766,14 +1766,9 @@ ok(SUCCEEDED(hr), "Failed to end scene, hr %#x.\n", hr); color = get_surface_color(rt, 320, 240); - if (i == 2) - todo_wine ok(compare_color(color, tests[i].result1, 1) || compare_color(color, tests[i].result1_broken, 1), - "Expected color 0x%08x for test %u, got 0x%08x.\n", - tests[i].result1, i, color); - else - ok(compare_color(color, tests[i].result1, 1) || compare_color(color, tests[i].result1_broken, 1), - "Expected color 0x%08x for test %u, got 0x%08x.\n", - tests[i].result1, i, color); + ok(compare_color(color, tests[i].result1, 1) || compare_color(color, tests[i].result1_broken, 1), + "Expected color 0x%08x for test %u, got 0x%08x.\n", + tests[i].result1, i, color); U5(fx).dwFillColor = 0xff0000ff; hr = IDirectDrawSurface4_Blt(surface, NULL, NULL, NULL, DDBLT_COLORFILL | DDBLT_WAIT, &fx); @@ -1789,14 +1784,9 @@ /* This tests that fragments that are masked out by the color key are * discarded, instead of just fully transparent. */ color = get_surface_color(rt, 320, 240); - if (i == 2) - todo_wine ok(compare_color(color, tests[i].result2, 1) || compare_color(color, tests[i].result2_broken, 1), - "Expected color 0x%08x for test %u, got 0x%08x.\n", - tests[i].result2, i, color); - else - ok(compare_color(color, tests[i].result2, 1) || compare_color(color, tests[i].result2_broken, 1), - "Expected color 0x%08x for test %u, got 0x%08x.\n", - tests[i].result2, i, color); + ok(compare_color(color, tests[i].result2, 1) || compare_color(color, tests[i].result2_broken, 1), + "Expected color 0x%08x for test %u, got 0x%08x.\n", + tests[i].result2, i, color); } IDirectDrawSurface4_Release(rt); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/ddraw/tests/ddraw7.c wine-staging-1.7.41~ubuntu12.04.1/dlls/ddraw/tests/ddraw7.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/ddraw/tests/ddraw7.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/ddraw/tests/ddraw7.c 2015-04-18 23:36:02.000000000 +0000 @@ -1471,14 +1471,9 @@ ok(SUCCEEDED(hr), "Failed to end scene, hr %#x.\n", hr); color = get_surface_color(rt, 320, 240); - if (i == 2) - todo_wine ok(compare_color(color, tests[i].result1, 1) || compare_color(color, tests[i].result1_broken, 1), - "Expected color 0x%08x for test %u, got 0x%08x.\n", - tests[i].result1, i, color); - else - ok(compare_color(color, tests[i].result1, 1) || compare_color(color, tests[i].result1_broken, 1), - "Expected color 0x%08x for test %u, got 0x%08x.\n", - tests[i].result1, i, color); + ok(compare_color(color, tests[i].result1, 1) || compare_color(color, tests[i].result1_broken, 1), + "Expected color 0x%08x for test %u, got 0x%08x.\n", + tests[i].result1, i, color); U5(fx).dwFillColor = 0xff0000ff; hr = IDirectDrawSurface7_Blt(texture, NULL, NULL, NULL, DDBLT_COLORFILL | DDBLT_WAIT, &fx); @@ -1494,14 +1489,9 @@ /* This tests that fragments that are masked out by the color key are * discarded, instead of just fully transparent. */ color = get_surface_color(rt, 320, 240); - if (i == 2) - todo_wine ok(compare_color(color, tests[i].result2, 1) || compare_color(color, tests[i].result2_broken, 1), - "Expected color 0x%08x for test %u, got 0x%08x.\n", - tests[i].result2, i, color); - else - ok(compare_color(color, tests[i].result2, 1) || compare_color(color, tests[i].result2_broken, 1), - "Expected color 0x%08x for test %u, got 0x%08x.\n", - tests[i].result2, i, color); + ok(compare_color(color, tests[i].result2, 1) || compare_color(color, tests[i].result2_broken, 1), + "Expected color 0x%08x for test %u, got 0x%08x.\n", + tests[i].result2, i, color); } IDirectDrawSurface7_Release(rt); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/dinput/joystick.c wine-staging-1.7.41~ubuntu12.04.1/dlls/dinput/joystick.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/dinput/joystick.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/dinput/joystick.c 2015-04-18 23:36:02.000000000 +0000 @@ -26,6 +26,8 @@ * force feedback */ +#include + #include "joystick_private.h" #include "wine/debug.h" #include "winreg.h" @@ -608,6 +610,8 @@ LPDIDEVICEINSTANCEA pdidi) { JoystickGenericImpl *This = impl_from_IDirectInputDevice8A(iface); + DIPROPDWORD pd; + DWORD index = 0; TRACE("(%p,%p)\n", iface, pdidi); @@ -622,12 +626,20 @@ return DIERR_INVALIDPARAM; } + /* Try to get joystick index */ + pd.diph.dwSize = sizeof(pd); + pd.diph.dwHeaderSize = sizeof(pd.diph); + pd.diph.dwObj = 0; + pd.diph.dwHow = DIPH_DEVICE; + if (SUCCEEDED(IDirectInputDevice2_GetProperty(iface, DIPROP_JOYSTICKID, &pd.diph))) + index = pd.dwData; + /* Return joystick */ pdidi->guidInstance = This->guidInstance; pdidi->guidProduct = This->guidProduct; /* we only support traditional joysticks for now */ pdidi->dwDevType = This->devcaps.dwDevType; - strcpy(pdidi->tszInstanceName, "Joystick"); + snprintf(pdidi->tszInstanceName, MAX_PATH, "Joystick %d", index); strcpy(pdidi->tszProductName, This->name); if (pdidi->dwSize > sizeof(DIDEVICEINSTANCE_DX3A)) { pdidi->guidFFDriver = GUID_NULL; @@ -646,6 +658,9 @@ LPDIDEVICEINSTANCEW pdidi) { JoystickGenericImpl *This = impl_from_IDirectInputDevice8W(iface); + CHAR buffer[MAX_PATH]; + DIPROPDWORD pd; + DWORD index = 0; TRACE("(%p,%p)\n", iface, pdidi); @@ -655,12 +670,21 @@ return DIERR_INVALIDPARAM; } + /* Try to get joystick index */ + pd.diph.dwSize = sizeof(pd); + pd.diph.dwHeaderSize = sizeof(pd.diph); + pd.diph.dwObj = 0; + pd.diph.dwHow = DIPH_DEVICE; + if (SUCCEEDED(IDirectInputDevice2_GetProperty(iface, DIPROP_JOYSTICKID, &pd.diph))) + index = pd.dwData; + /* Return joystick */ pdidi->guidInstance = This->guidInstance; pdidi->guidProduct = This->guidProduct; /* we only support traditional joysticks for now */ pdidi->dwDevType = This->devcaps.dwDevType; - MultiByteToWideChar(CP_ACP, 0, "Joystick", -1, pdidi->tszInstanceName, MAX_PATH); + snprintf(buffer, sizeof(buffer), "Joystick %d", index); + MultiByteToWideChar(CP_ACP, 0, buffer, -1, pdidi->tszInstanceName, MAX_PATH); MultiByteToWideChar(CP_ACP, 0, This->name, -1, pdidi->tszProductName, MAX_PATH); if (pdidi->dwSize > sizeof(DIDEVICEINSTANCE_DX3W)) { pdidi->guidFFDriver = GUID_NULL; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/dmscript/scripttrack.c wine-staging-1.7.41~ubuntu12.04.1/dlls/dmscript/scripttrack.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/dmscript/scripttrack.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/dmscript/scripttrack.c 2015-04-18 23:36:02.000000000 +0000 @@ -264,7 +264,15 @@ static HRESULT WINAPI IPersistStreamImpl_GetClassID(IPersistStream *iface, CLSID *pClassID) { - return E_NOTIMPL; + DirectMusicScriptTrack *This = impl_from_IPersistStream(iface); + + TRACE("(%p, %p)\n", This, pClassID); + + if (!pClassID) + return E_POINTER; + + *pClassID = This->desc.guidClass; + return S_OK; } static HRESULT WINAPI IPersistStreamImpl_IsDirty(IPersistStream *iface) @@ -319,7 +327,7 @@ track->IDirectMusicTrack8_iface.lpVtbl = &dmtrack8_vtbl; track->IPersistStream_iface.lpVtbl = &persist_vtbl; track->desc.dwSize = sizeof(track->desc); - track->desc.dwValidData |= DMUS_OBJ_CLASS; + track->desc.dwValidData = DMUS_OBJ_CLASS; track->desc.guidClass = CLSID_DirectMusicScriptTrack; track->ref = 1; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/dmscript/tests/dmscript.c wine-staging-1.7.41~ubuntu12.04.1/dlls/dmscript/tests/dmscript.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/dmscript/tests/dmscript.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/dmscript/tests/dmscript.c 2015-04-18 23:36:02.000000000 +0000 @@ -217,9 +217,13 @@ /* IPersistStream */ hr = IDirectMusicTrack_QueryInterface(dmt, &IID_IPersistStream, (void**)&ps); ok(hr == S_OK, "QueryInterface for IID_IPersistStream failed: %08x\n", hr); + + hr = IPersistStream_GetClassID(ps, NULL); + ok(hr == E_POINTER, "got 0x%08x\n", hr); + hr = IPersistStream_GetClassID(ps, &class); - todo_wine ok(hr == S_OK, "IPersistStream_GetClassID failed: %08x\n", hr); - todo_wine ok(IsEqualGUID(&class, &CLSID_DirectMusicScriptTrack), + ok(hr == S_OK, "IPersistStream_GetClassID failed: %08x\n", hr); + ok(IsEqualGUID(&class, &CLSID_DirectMusicScriptTrack), "Expected class CLSID_DirectMusicScriptTrack got %s\n", wine_dbgstr_guid(&class)); /* Unimplemented IPersistStream methods */ diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/dpnet/address.c wine-staging-1.7.41~ubuntu12.04.1/dlls/dpnet/address.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/dpnet/address.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/dpnet/address.c 2015-04-18 23:36:02.000000000 +0000 @@ -44,6 +44,11 @@ return HeapAlloc(GetProcessHeap(), 0, len); } +static inline void *heap_realloc(void *mem, size_t len) +{ + return HeapReAlloc( GetProcessHeap(), 0, mem, len); +} + static inline BOOL heap_free(void *mem) { return HeapFree(GetProcessHeap(), 0, mem); @@ -74,6 +79,28 @@ return ret; } +static BOOL add_component(IDirectPlay8AddressImpl *This, struct component *item) +{ + if(This->comp_count == This->comp_array_size) + { + struct component **temp; + + temp = heap_realloc(This->components, sizeof(*temp) * This->comp_array_size * 2 ); + if(!temp) + { + return FALSE; + } + + This->comp_array_size *= 2; + This->components = temp; + } + + This->components[This->comp_count] = item; + This->comp_count++; + + return TRUE; +} + static inline IDirectPlay8AddressImpl *impl_from_IDirectPlay8Address(IDirectPlay8Address *iface) { return CONTAINING_RECORD(iface, IDirectPlay8AddressImpl, IDirectPlay8Address_iface); @@ -112,10 +139,13 @@ if (!ref) { - struct component *entry, *entry2; + struct component *entry; + DWORD i; - LIST_FOR_EACH_ENTRY_SAFE(entry, entry2, &This->components, struct component, entry) + for(i=0; i < This->comp_count; i++) { + entry = This->components[i]; + switch(entry->type) { case DPNA_DATATYPE_STRING: @@ -129,10 +159,11 @@ break; } - HeapFree(GetProcessHeap(), 0, entry); + heap_free(entry); } - HeapFree(GetProcessHeap(), 0, This); + heap_free(This->components); + heap_free(This); } return ref; } @@ -192,13 +223,15 @@ if(hr == S_OK) { IDirectPlay8AddressImpl *DupThis = impl_from_IDirectPlay8Address(dup); - struct component *entry; + DWORD i; DupThis->SP_guid = This->SP_guid; DupThis->init = This->init; - LIST_FOR_EACH_ENTRY(entry, &This->components, struct component, entry) + for(i=0; i < This->comp_count; i++) { + struct component *entry = This->components[i]; + hr = IDirectPlay8Address_AddComponent(dup, entry->name, &entry->data, entry->size, entry->type); if(hr != S_OK) ERR("Failed to copy component: %s - 0x%08x\n", debugstr_w(entry->name), hr); @@ -308,7 +341,7 @@ if(!pdwNumComponents) return DPNERR_INVALIDPOINTER; - *pdwNumComponents = list_count(&This->components); + *pdwNumComponents = This->comp_count; return DPN_OK; } @@ -318,14 +351,17 @@ { IDirectPlay8AddressImpl *This = impl_from_IDirectPlay8Address(iface); struct component *entry; + DWORD i; TRACE("(%p)->(%p %p %p %p)\n", This, pwszName, pvBuffer, pdwBufferSize, pdwDataType); if(!pwszName || !pdwBufferSize || !pdwDataType || (!pvBuffer && pdwBufferSize)) return E_POINTER; - LIST_FOR_EACH_ENTRY(entry, &This->components, struct component, entry) + for(i=0; i < This->comp_count; i++) { + entry = This->components[i]; + if (lstrcmpW(pwszName, entry->name) == 0) { TRACE("Found %s\n", debugstr_w(pwszName)); @@ -381,6 +417,7 @@ IDirectPlay8AddressImpl *This = impl_from_IDirectPlay8Address(iface); struct component *entry; BOOL found = FALSE; + DWORD i; TRACE("(%p, %s, %p, %u, %x)\n", This, debugstr_w(pwszName), lpvData, dwDataSize, dwDataType); @@ -419,15 +456,17 @@ break; } - LIST_FOR_EACH_ENTRY(entry, &This->components, struct component, entry) + for(i=0; i < This->comp_count; i++) { + entry = This->components[i]; + if (lstrcmpW(pwszName, entry->name) == 0) { TRACE("Found %s\n", debugstr_w(pwszName)); found = TRUE; if(entry->type == DPNA_DATATYPE_STRING_ANSI) - heap_free(entry->data.ansi); + heap_free(entry->data.ansi); else if(entry->type == DPNA_DATATYPE_STRING) heap_free(entry->data.string); else if(entry->type == DPNA_DATATYPE_BINARY) @@ -441,9 +480,22 @@ { /* Create a new one */ entry = heap_alloc(sizeof(struct component)); + if(!entry) + return E_OUTOFMEMORY; + entry->name = heap_strdupW(pwszName); + if(!entry->name) + { + heap_free(entry); + return E_OUTOFMEMORY; + } - list_add_tail(&This->components, &entry->entry); + if(!add_component(This, entry)) + { + heap_free(entry->name); + heap_free(entry); + return E_OUTOFMEMORY; + } } switch (dwDataType) @@ -532,7 +584,7 @@ TRACE("(%p, %s, %p)\n", pUnkOuter, debugstr_guid(riid), ppobj); - *ppobj = NULL; + *ppobj = NULL; client = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectPlay8AddressImpl)); if (!client) @@ -540,8 +592,13 @@ client->IDirectPlay8Address_iface.lpVtbl = &DirectPlay8Address_Vtbl; client->ref = 1; - - list_init(&client->components); + client->comp_array_size = 4; + client->components = heap_alloc( sizeof(*client->components) * client->comp_array_size ); + if(!client->components) + { + heap_free(client); + return E_OUTOFMEMORY; + } ret = IDirectPlay8AddressImpl_QueryInterface(&client->IDirectPlay8Address_iface, riid, ppobj); IDirectPlay8AddressImpl_Release(&client->IDirectPlay8Address_iface); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/dpnet/dpnet_private.h wine-staging-1.7.41~ubuntu12.04.1/dlls/dpnet/dpnet_private.h --- wine-staging-1.7.40~ubuntu12.04.1/dlls/dpnet/dpnet_private.h 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/dpnet/dpnet_private.h 2015-04-18 23:36:02.000000000 +0000 @@ -91,7 +91,9 @@ GUID SP_guid; BOOL init; - struct list components; + struct component **components; + DWORD comp_count; + DWORD comp_array_size; }; /***************************************************************************** diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/dsound/dsound.c wine-staging-1.7.41~ubuntu12.04.1/dlls/dsound/dsound.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/dsound/dsound.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/dsound/dsound.c 2015-04-18 23:36:02.000000000 +0000 @@ -470,17 +470,32 @@ } } else { IDirectSoundBufferImpl * dsb; - WAVEFORMATEXTENSIBLE *pwfxe; if (dsbd->lpwfxFormat == NULL) { WARN("invalid parameter: dsbd->lpwfxFormat can't be NULL for " "secondary buffer\n"); return DSERR_INVALIDPARAM; } - pwfxe = (WAVEFORMATEXTENSIBLE*)dsbd->lpwfxFormat; - if (pwfxe->Format.wFormatTag == WAVE_FORMAT_EXTENSIBLE) + if(dsbd->lpwfxFormat->wFormatTag != WAVE_FORMAT_PCM && + dsbd->lpwfxFormat->wFormatTag != WAVE_FORMAT_IEEE_FLOAT && + dsbd->lpwfxFormat->wFormatTag != WAVE_FORMAT_EXTENSIBLE) { + WARN("We can't mix this format: 0x%x\n", dsbd->lpwfxFormat->wFormatTag); + return E_NOTIMPL; + } + + if(dsbd->lpwfxFormat->wBitsPerSample < 8 || dsbd->lpwfxFormat->wBitsPerSample % 8 != 0 || + dsbd->lpwfxFormat->nChannels == 0 || dsbd->lpwfxFormat->nSamplesPerSec == 0 || + dsbd->lpwfxFormat->nAvgBytesPerSec == 0 || + dsbd->lpwfxFormat->nBlockAlign != dsbd->lpwfxFormat->nChannels * dsbd->lpwfxFormat->wBitsPerSample / 8) { + WARN("Format inconsistency\n"); + return DSERR_INVALIDPARAM; + } + + if (dsbd->lpwfxFormat->wFormatTag == WAVE_FORMAT_EXTENSIBLE) { + WAVEFORMATEXTENSIBLE *pwfxe = (WAVEFORMATEXTENSIBLE*)dsbd->lpwfxFormat; + /* check if cbSize is at least 22 bytes */ if (pwfxe->Format.cbSize < (sizeof(WAVEFORMATEXTENSIBLE) - sizeof(WAVEFORMATEX))) { @@ -510,8 +525,7 @@ } if (pwfxe->Samples.wValidBitsPerSample && pwfxe->Samples.wValidBitsPerSample < dsbd->lpwfxFormat->wBitsPerSample) { - FIXME("Non-packed formats not supported right now: %d/%d\n", pwfxe->Samples.wValidBitsPerSample, dsbd->lpwfxFormat->wBitsPerSample); - return DSERR_CONTROLUNAVAIL; + WARN("Non-packed formats may not function : %d/%d\n", pwfxe->Samples.wValidBitsPerSample, dsbd->lpwfxFormat->wBitsPerSample); } } diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/dsound/sound3d.c wine-staging-1.7.41~ubuntu12.04.1/dlls/dsound/sound3d.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/dsound/sound3d.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/dsound/sound3d.c 2015-04-18 23:36:02.000000000 +0000 @@ -112,7 +112,6 @@ cos = product/(la*lb); angle = acos(cos); - if (cos < 0.0f) { angle -= M_PI; } TRACE("angle between (%f,%f,%f) and (%f,%f,%f) = %f radians (%f degrees)\n", a->x, a->y, a->z, b->x, b->y, b->z, angle, RadToDeg(angle)); return angle; @@ -243,7 +242,7 @@ if (flAngle > dwOutsideConeAngle) flAngle = dwOutsideConeAngle; /* this probably isn't the right thing, but it's ok for the time being */ - lVolume += ((dsb->ds3db_ds3db.lConeOutsideVolume)/((dwOutsideConeAngle) - (dwInsideConeAngle))) * flAngle; + lVolume += ((flAngle - dwInsideConeAngle)/(dwOutsideConeAngle - dwInsideConeAngle)) * dsb->ds3db_ds3db.lConeOutsideVolume; } TRACE("conning: Angle = %f deg; InsideConeAngle(/2) = %d deg; OutsideConeAngle(/2) = %d deg; ConeOutsideVolume = %d => adjusting volume to %f\n", flAngle, dsb->ds3db_ds3db.dwInsideConeAngle/2, dsb->ds3db_ds3db.dwOutsideConeAngle/2, dsb->ds3db_ds3db.lConeOutsideVolume, lVolume); @@ -264,16 +263,20 @@ else { vLeft = VectorProduct(&dsb->device->ds3dl.vOrientFront, &dsb->device->ds3dl.vOrientTop); - flAngle = AngleBetweenVectorsRad(&dsb->device->ds3dl.vOrientFront, &vDistance); - flAngle2 = AngleBetweenVectorsRad(&vLeft, &vDistance); - - /* AngleBetweenVectorsRad performs a dot product, which gives us the cosine of the angle - * between two vectors. Unfortunately, because cos(theta) = cos(-theta), we've no idea from - * this whether the sound is to our left or to our right. We have to perform another dot - * product, with a vector at right angles to the initial one, to get the correct angle. - * The angle should be between -180 degrees and 180 degrees. */ - if (flAngle < 0.0f) { flAngle += M_PI; } - if (flAngle2 > 0.0f) { flAngle = -flAngle; } + /* To calculate angle to sound source we need to: + * 1) Get angle between vDistance and a plane on which angle to sound source should be 0. + * Such a plane is given by vectors vOrientFront and vOrientTop, and angle between vector + * and a plane equals to M_PI_2 - angle between vector and normal to this plane (vLeft in this case). + * 2) Determine if the source is behind or in front of us by calculating angle between vDistance + * and vOrientFront. + */ + flAngle = AngleBetweenVectorsRad(&vLeft, &vDistance); + flAngle2 = AngleBetweenVectorsRad(&dsb->device->ds3dl.vOrientFront, &vDistance); + if (flAngle2 > M_PI_2) + flAngle = -flAngle; + flAngle -= M_PI_2; + if (flAngle < -M_PI) + flAngle += 2*M_PI; } TRACE("panning: Angle = %f rad, lPan = %d\n", flAngle, dsb->volpan.lPan); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/dsound/tests/dsound.c wine-staging-1.7.41~ubuntu12.04.1/dlls/dsound/tests/dsound.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/dsound/tests/dsound.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/dsound/tests/dsound.c 2015-04-18 23:36:02.000000000 +0000 @@ -1233,11 +1233,263 @@ return rc; } +static HRESULT do_invalid_fmt_test(IDirectSound *dso, + IDirectSoundBuffer *buf, WAVEFORMATEX *wfx, IDirectSoundBuffer **out_buf) +{ + HRESULT rc; + *out_buf = NULL; + if(!buf){ + DSBUFFERDESC bufdesc; + ZeroMemory(&bufdesc, sizeof(bufdesc)); + bufdesc.dwSize = sizeof(bufdesc); + bufdesc.dwFlags = DSBCAPS_CTRLPOSITIONNOTIFY; + bufdesc.dwBufferBytes = 4096; + bufdesc.lpwfxFormat = wfx; + rc = IDirectSound_CreateSoundBuffer(dso, &bufdesc, out_buf, NULL); + }else{ + rc = IDirectSoundBuffer_SetFormat(buf, wfx); + if(SUCCEEDED(rc)){ + IDirectSoundBuffer_AddRef(buf); + *out_buf = buf; + } + } + return rc; +} + +/* if no buffer is given, use CreateSoundBuffer instead of SetFormat */ +static void perform_invalid_fmt_tests(const char *testname, IDirectSound *dso, IDirectSoundBuffer *buf) +{ + WAVEFORMATEX wfx; + WAVEFORMATEXTENSIBLE fmtex; + HRESULT rc; + IDirectSoundBuffer *got_buf; + + wfx.wFormatTag = WAVE_FORMAT_PCM; + wfx.nChannels = 0; + wfx.nSamplesPerSec = 44100; + wfx.wBitsPerSample = 16; + wfx.nBlockAlign = wfx.nChannels * wfx.wBitsPerSample / 8; + wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; + rc = do_invalid_fmt_test(dso, buf, &wfx, &got_buf); + ok(rc == E_INVALIDARG, "%s: SetFormat: %08x\n", testname, rc); + + wfx.nChannels = 2; + wfx.nSamplesPerSec = 44100; + wfx.wBitsPerSample = 0; + wfx.nBlockAlign = wfx.nChannels * wfx.wBitsPerSample / 8; + wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; + rc = do_invalid_fmt_test(dso, buf, &wfx, &got_buf); + ok(rc == E_INVALIDARG, "%s: SetFormat: %08x\n", testname, rc); + + wfx.nChannels = 2; + wfx.nSamplesPerSec = 44100; + wfx.wBitsPerSample = 2; + wfx.nBlockAlign = wfx.nChannels * wfx.wBitsPerSample / 8; + wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; + rc = do_invalid_fmt_test(dso, buf, &wfx, &got_buf); + ok(rc == E_INVALIDARG, "%s: SetFormat: %08x\n", testname, rc); + + wfx.nChannels = 2; + wfx.nSamplesPerSec = 44100; + wfx.wBitsPerSample = 12; + wfx.nBlockAlign = wfx.nChannels * wfx.wBitsPerSample / 8; + wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; + rc = do_invalid_fmt_test(dso, buf, &wfx, &got_buf); + ok(rc == E_INVALIDARG, "%s: SetFormat: %08x\n", testname, rc); + + wfx.nChannels = 2; + wfx.nSamplesPerSec = 0; + wfx.wBitsPerSample = 16; + wfx.nBlockAlign = wfx.nChannels * wfx.wBitsPerSample / 8; + wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; + rc = do_invalid_fmt_test(dso, buf, &wfx, &got_buf); + ok(rc == E_INVALIDARG, "%s: SetFormat: %08x\n", testname, rc); + + wfx.nChannels = 2; + wfx.nSamplesPerSec = 44100; + wfx.wBitsPerSample = 16; + wfx.nBlockAlign = 0; + wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; + rc = do_invalid_fmt_test(dso, buf, &wfx, &got_buf); + ok(rc == E_INVALIDARG, "%s: SetFormat: %08x\n", testname, rc); + + wfx.nChannels = 2; + wfx.nSamplesPerSec = 44100; + wfx.wBitsPerSample = 16; + wfx.nBlockAlign = wfx.nChannels * wfx.wBitsPerSample / 8; + wfx.nAvgBytesPerSec = 0; + rc = do_invalid_fmt_test(dso, buf, &wfx, &got_buf); + ok(rc == E_INVALIDARG, "%s: SetFormat: %08x\n", testname, rc); + + wfx.nChannels = 2; + wfx.nSamplesPerSec = 44100; + wfx.wBitsPerSample = 16; + wfx.nBlockAlign = (wfx.nChannels * wfx.wBitsPerSample / 8) - 1; + wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; + rc = do_invalid_fmt_test(dso, buf, &wfx, &got_buf); + ok(rc == E_INVALIDARG, "%s: SetFormat: %08x\n", testname, rc); + + wfx.nChannels = 2; + wfx.nSamplesPerSec = 44100; + wfx.wBitsPerSample = 16; + wfx.nBlockAlign = (wfx.nChannels * wfx.wBitsPerSample / 8) + 1; + wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; + rc = do_invalid_fmt_test(dso, buf, &wfx, &got_buf); + ok(rc == E_INVALIDARG, "%s: SetFormat: %08x\n", testname, rc); + + wfx.nChannels = 2; + wfx.nSamplesPerSec = 44100; + wfx.wBitsPerSample = 16; + wfx.nBlockAlign = wfx.nChannels * wfx.wBitsPerSample / 8; + wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign + 1; + rc = do_invalid_fmt_test(dso, buf, &wfx, &got_buf); + ok(rc == S_OK, "%s: SetFormat: %08x\n", testname, rc); + + rc = IDirectSoundBuffer_GetFormat(got_buf, &wfx, sizeof(wfx), NULL); + ok(rc == S_OK, "%s: GetFormat: %08x\n", testname, rc); + ok(wfx.wFormatTag == WAVE_FORMAT_PCM, "%s: format: 0x%x\n", testname, wfx.wFormatTag); + ok(wfx.nChannels == 2, "%s: channels: %u\n", testname, wfx.nChannels); + ok(wfx.nSamplesPerSec == 44100, "%s: rate: %u\n", testname, wfx.nSamplesPerSec); + ok(wfx.wBitsPerSample == 16, "%s: bps: %u\n", testname, wfx.wBitsPerSample); + ok(wfx.nBlockAlign == 4, "%s: blockalign: %u\n", testname, wfx.nBlockAlign); + ok(wfx.nAvgBytesPerSec == 44100 * 4 + 1, "%s: avgbytes: %u\n", testname, wfx.nAvgBytesPerSec); + IDirectSoundBuffer_Release(got_buf); + + wfx.nChannels = 2; + wfx.nSamplesPerSec = 44100; + wfx.wBitsPerSample = 16; + wfx.nBlockAlign = wfx.nChannels * wfx.wBitsPerSample / 8; + wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign - 1; + rc = do_invalid_fmt_test(dso, buf, &wfx, &got_buf); + ok(rc == S_OK, "%s: SetFormat: %08x\n", testname, rc); + + rc = IDirectSoundBuffer_GetFormat(got_buf, &wfx, sizeof(wfx), NULL); + ok(rc == S_OK, "%s: GetFormat: %08x\n", testname, rc); + ok(wfx.wFormatTag == WAVE_FORMAT_PCM, "%s: format: 0x%x\n", testname, wfx.wFormatTag); + ok(wfx.nChannels == 2, "%s: channels: %u\n", testname, wfx.nChannels); + ok(wfx.nSamplesPerSec == 44100, "%s: rate: %u\n", testname, wfx.nSamplesPerSec); + ok(wfx.wBitsPerSample == 16, "%s: bps: %u\n", testname, wfx.wBitsPerSample); + ok(wfx.nBlockAlign == 4, "%s: blockalign: %u\n", testname, wfx.nBlockAlign); + ok(wfx.nAvgBytesPerSec == 44100 * 4 - 1, "%s: avgbytes: %u\n", testname, wfx.nAvgBytesPerSec); + IDirectSoundBuffer_Release(got_buf); + + wfx.nChannels = 2; + wfx.nSamplesPerSec = 44100; + wfx.wBitsPerSample = 16; + wfx.nBlockAlign = wfx.nChannels * wfx.wBitsPerSample / 8; + wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign + 1; + rc = do_invalid_fmt_test(dso, buf, &wfx, &got_buf); + ok(rc == S_OK, "%s: SetFormat: %08x\n", testname, rc); + + rc = IDirectSoundBuffer_GetFormat(got_buf, &wfx, sizeof(wfx), NULL); + ok(rc == S_OK, "%s: GetFormat: %08x\n", testname, rc); + ok(wfx.wFormatTag == WAVE_FORMAT_PCM, "%s: format: 0x%x\n", testname, wfx.wFormatTag); + ok(wfx.nChannels == 2, "%s: channels: %u\n", testname, wfx.nChannels); + ok(wfx.nSamplesPerSec == 44100, "%s: rate: %u\n", testname, wfx.nSamplesPerSec); + ok(wfx.wBitsPerSample == 16, "%s: bps: %u\n", testname, wfx.wBitsPerSample); + ok(wfx.nBlockAlign == 4, "%s: blockalign: %u\n", testname, wfx.nBlockAlign); + ok(wfx.nAvgBytesPerSec == 44100 * 4 + 1, "%s: avgbytes: %u\n", testname, wfx.nAvgBytesPerSec); + IDirectSoundBuffer_Release(got_buf); + + if(buf){ + wfx.wFormatTag = WAVE_FORMAT_ALAW; + wfx.nChannels = 2; + wfx.nSamplesPerSec = 44100; + wfx.wBitsPerSample = 16; + wfx.nBlockAlign = wfx.nChannels * wfx.wBitsPerSample / 8; + wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; + rc = do_invalid_fmt_test(dso, buf, &wfx, &got_buf); + ok(rc == S_OK, "%s: SetFormat: %08x\n", testname, rc); + + if(got_buf){ + rc = IDirectSoundBuffer_GetFormat(got_buf, &wfx, sizeof(wfx), NULL); + ok(rc == S_OK, "%s: GetFormat: %08x\n", testname, rc); + ok(wfx.wFormatTag == WAVE_FORMAT_ALAW, "%s: format: 0x%x\n", testname, wfx.wFormatTag); + ok(wfx.nChannels == 2, "%s: channels: %u\n", testname, wfx.nChannels); + ok(wfx.nSamplesPerSec == 44100, "%s: rate: %u\n", testname, wfx.nSamplesPerSec); + ok(wfx.wBitsPerSample == 16, "%s: bps: %u\n", testname, wfx.wBitsPerSample); + ok(wfx.nBlockAlign == 4, "%s: blockalign: %u\n", testname, wfx.nBlockAlign); + ok(wfx.nAvgBytesPerSec == 44100 * 4, "%s: avgbytes: %u\n", testname, wfx.nAvgBytesPerSec); + IDirectSoundBuffer_Release(got_buf); + } + } + + if(!gotdx8){ + win_skip("Not doing the WAVE_FORMAT_EXTENSIBLE tests\n"); + return; + } + + fmtex.Format.cbSize = sizeof(WAVEFORMATEXTENSIBLE) - sizeof(WAVEFORMATEX); + fmtex.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE; + fmtex.Format.nChannels = 2; + fmtex.Format.nSamplesPerSec = 44100; + fmtex.Format.wBitsPerSample = 16; + fmtex.Format.nBlockAlign = fmtex.Format.nChannels * fmtex.Format.wBitsPerSample / 8; + fmtex.Format.nAvgBytesPerSec = fmtex.Format.nSamplesPerSec * fmtex.Format.nBlockAlign; + fmtex.Samples.wValidBitsPerSample = 0; + fmtex.dwChannelMask = SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT; + fmtex.SubFormat = KSDATAFORMAT_SUBTYPE_PCM; + rc = do_invalid_fmt_test(dso, buf, (WAVEFORMATEX*)&fmtex, &got_buf); + ok(rc == S_OK, "%s: SetFormat: %08x\n", testname, rc); + + rc = IDirectSoundBuffer_GetFormat(got_buf, (WAVEFORMATEX*)&fmtex, sizeof(fmtex), NULL); + ok(rc == S_OK, "%s: GetFormat: %08x\n", testname, rc); + ok(fmtex.Format.wFormatTag == WAVE_FORMAT_EXTENSIBLE, "%s: format: 0x%x\n", testname, fmtex.Format.wFormatTag); + ok(fmtex.Format.nChannels == 2, "%s: channels: %u\n", testname, fmtex.Format.nChannels); + ok(fmtex.Format.nSamplesPerSec == 44100, "%s: rate: %u\n", testname, fmtex.Format.nSamplesPerSec); + ok(fmtex.Format.wBitsPerSample == 16, "%s: bps: %u\n", testname, fmtex.Format.wBitsPerSample); + ok(fmtex.Format.nBlockAlign == 4, "%s: blockalign: %u\n", testname, fmtex.Format.nBlockAlign); + ok(fmtex.Format.nAvgBytesPerSec == 44100 * 4, "%s: avgbytes: %u\n", testname, fmtex.Format.nAvgBytesPerSec); + ok(fmtex.Samples.wValidBitsPerSample == 0 || /* <= XP */ + fmtex.Samples.wValidBitsPerSample == 16, /* >= Vista */ + "%s: validbits: %u\n", testname, fmtex.Samples.wValidBitsPerSample); + ok(IsEqualGUID(&fmtex.SubFormat, &KSDATAFORMAT_SUBTYPE_PCM), "%s: subtype incorrect\n", testname); + IDirectSoundBuffer_Release(got_buf); + + fmtex.Format.cbSize = sizeof(WAVEFORMATEXTENSIBLE) - sizeof(WAVEFORMATEX); + fmtex.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE; + fmtex.Format.nChannels = 2; + fmtex.Format.nSamplesPerSec = 44100; + fmtex.Format.wBitsPerSample = 24; + fmtex.Format.nBlockAlign = fmtex.Format.nChannels * fmtex.Format.wBitsPerSample / 8; + fmtex.Format.nAvgBytesPerSec = fmtex.Format.nSamplesPerSec * fmtex.Format.nBlockAlign; + fmtex.Samples.wValidBitsPerSample = 20; + fmtex.dwChannelMask = SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT; + fmtex.SubFormat = KSDATAFORMAT_SUBTYPE_PCM; + rc = do_invalid_fmt_test(dso, buf, (WAVEFORMATEX*)&fmtex, &got_buf); + ok(rc == S_OK, "%s: SetFormat: %08x\n", testname, rc); + + rc = IDirectSoundBuffer_GetFormat(got_buf, (WAVEFORMATEX*)&fmtex, sizeof(fmtex), NULL); + ok(rc == S_OK, "%s: GetFormat: %08x\n", testname, rc); + ok(fmtex.Format.wFormatTag == WAVE_FORMAT_EXTENSIBLE, "%s: format: 0x%x\n", testname, fmtex.Format.wFormatTag); + ok(fmtex.Format.nChannels == 2, "%s: channels: %u\n", testname, fmtex.Format.nChannels); + ok(fmtex.Format.nSamplesPerSec == 44100, "%s: rate: %u\n", testname, fmtex.Format.nSamplesPerSec); + ok(fmtex.Format.wBitsPerSample == 24, "%s: bps: %u\n", testname, fmtex.Format.wBitsPerSample); + ok(fmtex.Format.nBlockAlign == 6, "%s: blockalign: %u\n", testname, fmtex.Format.nBlockAlign); + ok(fmtex.Format.nAvgBytesPerSec == 44100 * 6, "%s: avgbytes: %u\n", testname, fmtex.Format.nAvgBytesPerSec); + ok(fmtex.Samples.wValidBitsPerSample == 20, "%s: validbits: %u\n", testname, fmtex.Samples.wValidBitsPerSample); + ok(IsEqualGUID(&fmtex.SubFormat, &KSDATAFORMAT_SUBTYPE_PCM), "%s: subtype incorrect\n", testname); + IDirectSoundBuffer_Release(got_buf); + + fmtex.Format.cbSize = sizeof(WAVEFORMATEXTENSIBLE) - sizeof(WAVEFORMATEX); + fmtex.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE; + fmtex.Format.nChannels = 2; + fmtex.Format.nSamplesPerSec = 44100; + fmtex.Format.wBitsPerSample = 24; + fmtex.Format.nBlockAlign = fmtex.Format.nChannels * fmtex.Format.wBitsPerSample / 8; + fmtex.Format.nAvgBytesPerSec = fmtex.Format.nSamplesPerSec * fmtex.Format.nBlockAlign; + fmtex.Samples.wValidBitsPerSample = 32; + fmtex.dwChannelMask = SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT; + fmtex.SubFormat = KSDATAFORMAT_SUBTYPE_PCM; + rc = do_invalid_fmt_test(dso, buf, (WAVEFORMATEX*)&fmtex, &got_buf); + ok(rc == E_INVALIDARG, "%s: SetFormat: %08x\n", testname, rc); +} + static HRESULT test_invalid_fmts(LPGUID lpGuid) { HRESULT rc; LPDIRECTSOUND dso=NULL; - LPDIRECTSOUNDBUFFER primary=NULL; + LPDIRECTSOUNDBUFFER buffer=NULL; DSBUFFERDESC bufdesc; /* Create the DirectSound object */ @@ -1259,228 +1511,16 @@ ZeroMemory(&bufdesc, sizeof(bufdesc)); bufdesc.dwSize=sizeof(bufdesc); bufdesc.dwFlags=DSBCAPS_PRIMARYBUFFER; - rc=IDirectSound_CreateSoundBuffer(dso,&bufdesc,&primary,NULL); - ok(rc==DS_OK && primary!=NULL,"IDirectSound_CreateSoundBuffer() failed " + rc=IDirectSound_CreateSoundBuffer(dso,&bufdesc,&buffer,NULL); + ok(rc==DS_OK && buffer!=NULL,"IDirectSound_CreateSoundBuffer() failed " "to create a primary buffer %08x\n",rc); - - if (rc==DS_OK && primary!=NULL) { - WAVEFORMATEX wfx; - WAVEFORMATEXTENSIBLE fmtex; - - wfx.wFormatTag = WAVE_FORMAT_PCM; - wfx.nChannels = 0; - wfx.nSamplesPerSec = 44100; - wfx.wBitsPerSample = 16; - wfx.nBlockAlign = wfx.nChannels * wfx.wBitsPerSample / 8; - wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; - rc = IDirectSoundBuffer_SetFormat(primary, &wfx); - ok(rc == E_INVALIDARG, "SetFormat: %08x\n", rc); - - wfx.nChannels = 2; - wfx.nSamplesPerSec = 44100; - wfx.wBitsPerSample = 0; - wfx.nBlockAlign = wfx.nChannels * wfx.wBitsPerSample / 8; - wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; - rc = IDirectSoundBuffer_SetFormat(primary, &wfx); - ok(rc == E_INVALIDARG, "SetFormat: %08x\n", rc); - - wfx.nChannels = 2; - wfx.nSamplesPerSec = 44100; - wfx.wBitsPerSample = 2; - wfx.nBlockAlign = wfx.nChannels * wfx.wBitsPerSample / 8; - wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; - rc = IDirectSoundBuffer_SetFormat(primary, &wfx); - ok(rc == E_INVALIDARG, "SetFormat: %08x\n", rc); - - wfx.nChannels = 2; - wfx.nSamplesPerSec = 44100; - wfx.wBitsPerSample = 12; - wfx.nBlockAlign = wfx.nChannels * wfx.wBitsPerSample / 8; - wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; - rc = IDirectSoundBuffer_SetFormat(primary, &wfx); - ok(rc == E_INVALIDARG, "SetFormat: %08x\n", rc); - - wfx.nChannels = 2; - wfx.nSamplesPerSec = 0; - wfx.wBitsPerSample = 16; - wfx.nBlockAlign = wfx.nChannels * wfx.wBitsPerSample / 8; - wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; - rc = IDirectSoundBuffer_SetFormat(primary, &wfx); - ok(rc == E_INVALIDARG, "SetFormat: %08x\n", rc); - - wfx.nChannels = 2; - wfx.nSamplesPerSec = 44100; - wfx.wBitsPerSample = 16; - wfx.nBlockAlign = 0; - wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; - rc = IDirectSoundBuffer_SetFormat(primary, &wfx); - ok(rc == E_INVALIDARG, "SetFormat: %08x\n", rc); - - wfx.nChannels = 2; - wfx.nSamplesPerSec = 44100; - wfx.wBitsPerSample = 16; - wfx.nBlockAlign = wfx.nChannels * wfx.wBitsPerSample / 8; - wfx.nAvgBytesPerSec = 0; - rc = IDirectSoundBuffer_SetFormat(primary, &wfx); - ok(rc == E_INVALIDARG, "SetFormat: %08x\n", rc); - - wfx.nChannels = 2; - wfx.nSamplesPerSec = 44100; - wfx.wBitsPerSample = 16; - wfx.nBlockAlign = (wfx.nChannels * wfx.wBitsPerSample / 8) - 1; - wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; - rc = IDirectSoundBuffer_SetFormat(primary, &wfx); - ok(rc == E_INVALIDARG, "SetFormat: %08x\n", rc); - - wfx.nChannels = 2; - wfx.nSamplesPerSec = 44100; - wfx.wBitsPerSample = 16; - wfx.nBlockAlign = (wfx.nChannels * wfx.wBitsPerSample / 8) + 1; - wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; - rc = IDirectSoundBuffer_SetFormat(primary, &wfx); - ok(rc == E_INVALIDARG, "SetFormat: %08x\n", rc); - - wfx.nChannels = 2; - wfx.nSamplesPerSec = 44100; - wfx.wBitsPerSample = 16; - wfx.nBlockAlign = wfx.nChannels * wfx.wBitsPerSample / 8; - wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign + 1; - rc = IDirectSoundBuffer_SetFormat(primary, &wfx); - ok(rc == S_OK, "SetFormat: %08x\n", rc); - - rc = IDirectSoundBuffer_GetFormat(primary, &wfx, sizeof(wfx), NULL); - ok(rc == S_OK, "GetFormat: %08x\n", rc); - ok(wfx.wFormatTag == WAVE_FORMAT_PCM, "format: 0x%x\n", wfx.wFormatTag); - ok(wfx.nChannels == 2, "channels: %u\n", wfx.nChannels); - ok(wfx.nSamplesPerSec == 44100, "rate: %u\n", wfx.nSamplesPerSec); - ok(wfx.wBitsPerSample == 16, "bps: %u\n", wfx.wBitsPerSample); - ok(wfx.nBlockAlign == 4, "blockalign: %u\n", wfx.nBlockAlign); - ok(wfx.nAvgBytesPerSec == 44100 * 4 + 1, "avgbytes: %u\n", wfx.nAvgBytesPerSec); - - wfx.nChannels = 2; - wfx.nSamplesPerSec = 44100; - wfx.wBitsPerSample = 16; - wfx.nBlockAlign = wfx.nChannels * wfx.wBitsPerSample / 8; - wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign - 1; - rc = IDirectSoundBuffer_SetFormat(primary, &wfx); - ok(rc == S_OK, "SetFormat: %08x\n", rc); - - rc = IDirectSoundBuffer_GetFormat(primary, &wfx, sizeof(wfx), NULL); - ok(rc == S_OK, "GetFormat: %08x\n", rc); - ok(wfx.wFormatTag == WAVE_FORMAT_PCM, "format: 0x%x\n", wfx.wFormatTag); - ok(wfx.nChannels == 2, "channels: %u\n", wfx.nChannels); - ok(wfx.nSamplesPerSec == 44100, "rate: %u\n", wfx.nSamplesPerSec); - ok(wfx.wBitsPerSample == 16, "bps: %u\n", wfx.wBitsPerSample); - ok(wfx.nBlockAlign == 4, "blockalign: %u\n", wfx.nBlockAlign); - ok(wfx.nAvgBytesPerSec == 44100 * 4 - 1, "avgbytes: %u\n", wfx.nAvgBytesPerSec); - - wfx.nChannels = 2; - wfx.nSamplesPerSec = 44100; - wfx.wBitsPerSample = 16; - wfx.nBlockAlign = wfx.nChannels * wfx.wBitsPerSample / 8; - wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign + 1; - rc = IDirectSoundBuffer_SetFormat(primary, &wfx); - ok(rc == S_OK, "SetFormat: %08x\n", rc); - - rc = IDirectSoundBuffer_GetFormat(primary, &wfx, sizeof(wfx), NULL); - ok(rc == S_OK, "GetFormat: %08x\n", rc); - ok(wfx.wFormatTag == WAVE_FORMAT_PCM, "format: 0x%x\n", wfx.wFormatTag); - ok(wfx.nChannels == 2, "channels: %u\n", wfx.nChannels); - ok(wfx.nSamplesPerSec == 44100, "rate: %u\n", wfx.nSamplesPerSec); - ok(wfx.wBitsPerSample == 16, "bps: %u\n", wfx.wBitsPerSample); - ok(wfx.nBlockAlign == 4, "blockalign: %u\n", wfx.nBlockAlign); - ok(wfx.nAvgBytesPerSec == 44100 * 4 + 1, "avgbytes: %u\n", wfx.nAvgBytesPerSec); - - wfx.wFormatTag = WAVE_FORMAT_ALAW; - wfx.nChannels = 2; - wfx.nSamplesPerSec = 44100; - wfx.wBitsPerSample = 16; - wfx.nBlockAlign = wfx.nChannels * wfx.wBitsPerSample / 8; - wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; - rc = IDirectSoundBuffer_SetFormat(primary, &wfx); - ok(rc == S_OK, "SetFormat: %08x\n", rc); - - rc = IDirectSoundBuffer_GetFormat(primary, &wfx, sizeof(wfx), NULL); - ok(rc == S_OK, "GetFormat: %08x\n", rc); - ok(wfx.wFormatTag == WAVE_FORMAT_ALAW, "format: 0x%x\n", wfx.wFormatTag); - ok(wfx.nChannels == 2, "channels: %u\n", wfx.nChannels); - ok(wfx.nSamplesPerSec == 44100, "rate: %u\n", wfx.nSamplesPerSec); - ok(wfx.wBitsPerSample == 16, "bps: %u\n", wfx.wBitsPerSample); - ok(wfx.nBlockAlign == 4, "blockalign: %u\n", wfx.nBlockAlign); - ok(wfx.nAvgBytesPerSec == 44100 * 4, "avgbytes: %u\n", wfx.nAvgBytesPerSec); - - if(!gotdx8){ - win_skip("Not doing the WAVE_FORMAT_EXTENSIBLE tests\n"); - goto done; - } - - fmtex.Format.cbSize = sizeof(WAVEFORMATEXTENSIBLE) - sizeof(WAVEFORMATEX); - fmtex.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE; - fmtex.Format.nChannels = 2; - fmtex.Format.nSamplesPerSec = 44100; - fmtex.Format.wBitsPerSample = 16; - fmtex.Format.nBlockAlign = fmtex.Format.nChannels * fmtex.Format.wBitsPerSample / 8; - fmtex.Format.nAvgBytesPerSec = fmtex.Format.nSamplesPerSec * fmtex.Format.nBlockAlign; - fmtex.Samples.wValidBitsPerSample = 0; - fmtex.dwChannelMask = SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT; - fmtex.SubFormat = KSDATAFORMAT_SUBTYPE_PCM; - rc = IDirectSoundBuffer_SetFormat(primary, (WAVEFORMATEX*)&fmtex); - ok(rc == S_OK, "SetFormat: %08x\n", rc); - - rc = IDirectSoundBuffer_GetFormat(primary, (WAVEFORMATEX*)&fmtex, sizeof(fmtex), NULL); - ok(rc == S_OK, "GetFormat: %08x\n", rc); - ok(fmtex.Format.wFormatTag == WAVE_FORMAT_EXTENSIBLE, "format: 0x%x\n", fmtex.Format.wFormatTag); - ok(fmtex.Format.nChannels == 2, "channels: %u\n", fmtex.Format.nChannels); - ok(fmtex.Format.nSamplesPerSec == 44100, "rate: %u\n", fmtex.Format.nSamplesPerSec); - ok(fmtex.Format.wBitsPerSample == 16, "bps: %u\n", fmtex.Format.wBitsPerSample); - ok(fmtex.Format.nBlockAlign == 4, "blockalign: %u\n", fmtex.Format.nBlockAlign); - ok(fmtex.Format.nAvgBytesPerSec == 44100 * 4, "avgbytes: %u\n", fmtex.Format.nAvgBytesPerSec); - ok(fmtex.Samples.wValidBitsPerSample == 0 || /* <= XP */ - fmtex.Samples.wValidBitsPerSample == 16, /* >= Vista */ - "validbits: %u\n", fmtex.Samples.wValidBitsPerSample); - ok(IsEqualGUID(&fmtex.SubFormat, &KSDATAFORMAT_SUBTYPE_PCM), "subtype incorrect\n"); - - fmtex.Format.cbSize = sizeof(WAVEFORMATEXTENSIBLE) - sizeof(WAVEFORMATEX); - fmtex.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE; - fmtex.Format.nChannels = 2; - fmtex.Format.nSamplesPerSec = 44100; - fmtex.Format.wBitsPerSample = 24; - fmtex.Format.nBlockAlign = fmtex.Format.nChannels * fmtex.Format.wBitsPerSample / 8; - fmtex.Format.nAvgBytesPerSec = fmtex.Format.nSamplesPerSec * fmtex.Format.nBlockAlign; - fmtex.Samples.wValidBitsPerSample = 20; - fmtex.dwChannelMask = SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT; - fmtex.SubFormat = KSDATAFORMAT_SUBTYPE_PCM; - rc = IDirectSoundBuffer_SetFormat(primary, (WAVEFORMATEX*)&fmtex); - ok(rc == S_OK, "SetFormat: %08x\n", rc); - - rc = IDirectSoundBuffer_GetFormat(primary, (WAVEFORMATEX*)&fmtex, sizeof(fmtex), NULL); - ok(rc == S_OK, "GetFormat: %08x\n", rc); - ok(fmtex.Format.wFormatTag == WAVE_FORMAT_EXTENSIBLE, "format: 0x%x\n", fmtex.Format.wFormatTag); - ok(fmtex.Format.nChannels == 2, "channels: %u\n", fmtex.Format.nChannels); - ok(fmtex.Format.nSamplesPerSec == 44100, "rate: %u\n", fmtex.Format.nSamplesPerSec); - ok(fmtex.Format.wBitsPerSample == 24, "bps: %u\n", fmtex.Format.wBitsPerSample); - ok(fmtex.Format.nBlockAlign == 6, "blockalign: %u\n", fmtex.Format.nBlockAlign); - ok(fmtex.Format.nAvgBytesPerSec == 44100 * 6, "avgbytes: %u\n", fmtex.Format.nAvgBytesPerSec); - ok(fmtex.Samples.wValidBitsPerSample == 20, "validbits: %u\n", fmtex.Samples.wValidBitsPerSample); - ok(IsEqualGUID(&fmtex.SubFormat, &KSDATAFORMAT_SUBTYPE_PCM), "subtype incorrect\n"); - - fmtex.Format.cbSize = sizeof(WAVEFORMATEXTENSIBLE) - sizeof(WAVEFORMATEX); - fmtex.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE; - fmtex.Format.nChannels = 2; - fmtex.Format.nSamplesPerSec = 44100; - fmtex.Format.wBitsPerSample = 24; - fmtex.Format.nBlockAlign = fmtex.Format.nChannels * fmtex.Format.wBitsPerSample / 8; - fmtex.Format.nAvgBytesPerSec = fmtex.Format.nSamplesPerSec * fmtex.Format.nBlockAlign; - fmtex.Samples.wValidBitsPerSample = 32; - fmtex.dwChannelMask = SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT; - fmtex.SubFormat = KSDATAFORMAT_SUBTYPE_PCM; - rc = IDirectSoundBuffer_SetFormat(primary, (WAVEFORMATEX*)&fmtex); - ok(rc == E_INVALIDARG, "SetFormat: %08x\n", rc); - - IDirectSoundBuffer_Release(primary); + if (rc==DS_OK && buffer!=NULL) { + perform_invalid_fmt_tests("primary", dso, buffer); + IDirectSoundBuffer_Release(buffer); } -done: + perform_invalid_fmt_tests("secondary", dso, NULL); + IDirectSound_Release(dso); return S_OK; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/dwrite/analyzer.c wine-staging-1.7.41~ubuntu12.04.1/dlls/dwrite/analyzer.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/dwrite/analyzer.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/dwrite/analyzer.c 2015-04-18 23:36:02.000000000 +0000 @@ -776,7 +776,7 @@ IDWriteTextAnalysisSource* source, UINT32 position, UINT32 length, IDWriteTextAnalysisSink* sink) { FIXME("(%p %u %u %p): stub\n", source, position, length, sink); - return E_NOTIMPL; + return S_OK; } static HRESULT WINAPI dwritetextanalyzer_AnalyzeLineBreakpoints(IDWriteTextAnalyzer2 *iface, diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/dwrite/font.c wine-staging-1.7.41~ubuntu12.04.1/dlls/dwrite/font.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/dwrite/font.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/dwrite/font.c 2015-04-18 23:36:02.000000000 +0000 @@ -1431,7 +1431,7 @@ 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)) + if (SUCCEEDED(hr) && !strcmpiW(buffer, name)) return i; } } diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/dwrite/layout.c wine-staging-1.7.41~ubuntu12.04.1/dlls/dwrite/layout.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/dwrite/layout.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/dwrite/layout.c 2015-04-18 23:36:02.000000000 +0000 @@ -110,8 +110,17 @@ WCHAR *fontfamily; }; -struct layout_run { - struct list entry; +enum layout_run_kind { + LAYOUT_RUN_REGULAR, + LAYOUT_RUN_INLINE +}; + +struct inline_object_run { + IDWriteInlineObject *object; + UINT16 length; +}; + +struct regular_layout_run { DWRITE_GLYPH_RUN_DESCRIPTION descr; DWRITE_GLYPH_RUN run; DWRITE_SCRIPT_ANALYSIS sa; @@ -121,6 +130,15 @@ DWRITE_GLYPH_OFFSET *offsets; }; +struct layout_run { + struct list entry; + enum layout_run_kind kind; + union { + struct inline_object_run object; + struct regular_layout_run regular; + } u; +}; + enum layout_recompute_mask { RECOMPUTE_NOMINAL_RUNS = 1 << 0, RECOMPUTE_MINIMAL_WIDTH = 1 << 1, @@ -223,7 +241,7 @@ return CONTAINING_RECORD(iface, struct dwrite_typography, IDWriteTypography_iface); } -static inline const char *debugstr_run(const struct layout_run *run) +static inline const char *debugstr_run(const struct regular_layout_run *run) { return wine_dbg_sprintf("[%u,%u]", run->descr.textPosition, run->descr.textPosition + run->descr.stringLength); @@ -247,35 +265,19 @@ return S_OK; } -static struct layout_run *alloc_layout_run(void) +static struct layout_run *alloc_layout_run(enum layout_run_kind kind) { struct layout_run *ret; ret = heap_alloc(sizeof(*ret)); if (!ret) return NULL; - ret->descr.localeName = NULL; - ret->descr.string = NULL; - ret->descr.stringLength = 0; - ret->descr.clusterMap = NULL; - ret->descr.textPosition = 0; - - ret->run.fontFace = NULL; - ret->run.fontEmSize = 0.0; - ret->run.glyphCount = 0; - ret->run.glyphIndices = NULL; - ret->run.glyphAdvances = NULL; - ret->run.glyphOffsets = NULL; - ret->run.isSideways = FALSE; - ret->run.bidiLevel = 0; - - ret->sa.script = Script_Unknown; - ret->sa.shapes = DWRITE_SCRIPT_SHAPES_DEFAULT; - - ret->glyphs = NULL; - ret->clustermap = NULL; - ret->advances = NULL; - ret->offsets = NULL; + memset(ret, 0, sizeof(*ret)); + ret->kind = kind; + if (kind == LAYOUT_RUN_REGULAR) { + ret->u.regular.sa.script = Script_Unknown; + ret->u.regular.sa.shapes = DWRITE_SCRIPT_SHAPES_DEFAULT; + } return ret; } @@ -285,12 +287,14 @@ struct layout_run *cur, *cur2; LIST_FOR_EACH_ENTRY_SAFE(cur, cur2, &layout->runs, struct layout_run, entry) { list_remove(&cur->entry); - if (cur->run.fontFace) - IDWriteFontFace_Release(cur->run.fontFace); - heap_free(cur->glyphs); - heap_free(cur->clustermap); - heap_free(cur->advances); - heap_free(cur->offsets); + if (cur->kind == LAYOUT_RUN_REGULAR) { + if (cur->u.regular.run.fontFace) + IDWriteFontFace_Release(cur->u.regular.run.fontFace); + heap_free(cur->u.regular.glyphs); + heap_free(cur->u.regular.clustermap); + heap_free(cur->u.regular.advances); + heap_free(cur->u.regular.offsets); + } heap_free(cur); } } @@ -369,7 +373,7 @@ return layout->nominal_breakpoints[pos]; } -static inline void init_cluster_metrics(const struct dwrite_textlayout *layout, const struct layout_run *run, +static inline void init_cluster_metrics(const struct dwrite_textlayout *layout, const struct regular_layout_run *run, UINT16 start_glyph, UINT16 stop_glyph, UINT32 stop_position, DWRITE_CLUSTER_METRICS *metrics) { UINT8 breakcondition; @@ -402,7 +406,7 @@ codepoint initially. */ -static void layout_set_cluster_metrics(struct dwrite_textlayout *layout, const struct layout_run *run, UINT32 *cluster) +static void layout_set_cluster_metrics(struct dwrite_textlayout *layout, const struct regular_layout_run *run, UINT32 *cluster) { DWRITE_CLUSTER_METRICS *metrics = &layout->clusters[*cluster]; UINT32 i, start = 0; @@ -433,7 +437,7 @@ { IDWriteTextAnalyzer *analyzer; struct layout_range *range; - struct layout_run *run; + struct layout_run *r; UINT32 cluster = 0; HRESULT hr; @@ -454,6 +458,14 @@ hr = layout_update_breakpoints_range(layout, range); if (FAILED(hr)) return hr; + + r = alloc_layout_run(LAYOUT_RUN_INLINE); + if (!r) + return E_OUTOFMEMORY; + + r->u.object.object = range->object; + r->u.object.length = range->range.length; + list_add_tail(&layout->runs, &r->entry); continue; } @@ -471,14 +483,43 @@ } /* fill run info */ - LIST_FOR_EACH_ENTRY(run, &layout->runs, struct layout_run, entry) { + LIST_FOR_EACH_ENTRY(r, &layout->runs, struct layout_run, entry) { DWRITE_SHAPING_GLYPH_PROPERTIES *glyph_props = NULL; DWRITE_SHAPING_TEXT_PROPERTIES *text_props = NULL; + struct regular_layout_run *run = &r->u.regular; IDWriteFontFamily *family; UINT32 index, max_count; IDWriteFont *font; BOOL exists = TRUE; + /* we need to do very little in case of inline objects */ + if (r->kind == LAYOUT_RUN_INLINE) { + DWRITE_CLUSTER_METRICS *metrics = &layout->clusters[cluster]; + DWRITE_INLINE_OBJECT_METRICS inlinemetrics; + + metrics->width = 0.0; + metrics->length = r->u.object.length; + metrics->canWrapLineAfter = FALSE; + metrics->isWhitespace = FALSE; + metrics->isNewline = FALSE; + metrics->isSoftHyphen = FALSE; + metrics->isRightToLeft = FALSE; + metrics->padding = 0; + cluster++; + + /* TODO: is it fatal if GetMetrics() fails? */ + hr = IDWriteInlineObject_GetMetrics(r->u.object.object, &inlinemetrics); + if (FAILED(hr)) { + FIXME("failed to get inline object metrics, 0x%08x\n", hr); + continue; + } + metrics->width = inlinemetrics.width; + + /* FIXME: use resolved breakpoints in this case too */ + + continue; + } + range = get_layout_range_by_pos(layout, run->descr.textPosition); hr = IDWriteFontCollection_FindFamilyName(range->collection, range->fontfamily, &index, &exists); @@ -575,7 +616,6 @@ run->run.glyphAdvances = run->advances; run->run.glyphOffsets = run->offsets; - /* now set cluster metrics */ layout_set_cluster_metrics(layout, run, &cluster); continue; @@ -636,8 +676,11 @@ struct layout_run *cur; LIST_FOR_EACH_ENTRY(cur, &layout->runs, struct layout_run, entry) { - TRACE("run [%u,%u], len %u, bidilevel %u\n", cur->descr.textPosition, cur->descr.textPosition+cur->descr.stringLength-1, - cur->descr.stringLength, cur->run.bidiLevel); + if (cur->kind == LAYOUT_RUN_INLINE) + TRACE("run inline object %p, len %u\n", cur->u.object.object, cur->u.object.length); + else + TRACE("run [%u,%u], len %u, bidilevel %u\n", cur->u.regular.descr.textPosition, cur->u.regular.descr.textPosition + + cur->u.regular.descr.stringLength-1, cur->u.regular.descr.stringLength, cur->u.regular.run.bidiLevel); } } @@ -2394,15 +2437,15 @@ TRACE("%u %u script=%d\n", position, length, sa->script); - run = alloc_layout_run(); + run = alloc_layout_run(LAYOUT_RUN_REGULAR); if (!run) return E_OUTOFMEMORY; - run->descr.string = &layout->str[position]; - run->descr.stringLength = length; - run->descr.textPosition = position; - run->sa = *sa; - list_add_head(&layout->runs, &run->entry); + run->u.regular.descr.string = &layout->str[position]; + run->u.regular.descr.stringLength = length; + run->u.regular.descr.textPosition = position; + run->u.regular.sa = *sa; + list_add_tail(&layout->runs, &run->entry); return S_OK; } @@ -2422,11 +2465,15 @@ UINT32 length, UINT8 explicitLevel, UINT8 resolvedLevel) { struct dwrite_textlayout *layout = impl_from_IDWriteTextAnalysisSink(iface); - struct layout_run *cur; + struct layout_run *cur_run; - LIST_FOR_EACH_ENTRY(cur, &layout->runs, struct layout_run, entry) { + LIST_FOR_EACH_ENTRY(cur_run, &layout->runs, struct layout_run, entry) { + struct regular_layout_run *cur = &cur_run->u.regular; struct layout_run *run, *run2; + if (cur_run->kind == LAYOUT_RUN_INLINE) + continue; + /* FIXME: levels are reported in a natural forward direction, so start loop from a run we ended on */ if (position < cur->descr.textPosition || position > cur->descr.textPosition + cur->descr.stringLength) continue; @@ -2446,32 +2493,32 @@ } /* now starting point is in a run, so it splits it */ - run = alloc_layout_run(); + run = alloc_layout_run(LAYOUT_RUN_REGULAR); if (!run) return E_OUTOFMEMORY; - *run = *cur; - run->descr.textPosition = position; - run->descr.stringLength = cur->descr.stringLength - position + cur->descr.textPosition; - run->descr.string = &layout->str[position]; - run->run.bidiLevel = resolvedLevel; + *run = *cur_run; + run->u.regular.descr.textPosition = position; + run->u.regular.descr.stringLength = cur->descr.stringLength - position + cur->descr.textPosition; + run->u.regular.descr.string = &layout->str[position]; + run->u.regular.run.bidiLevel = resolvedLevel; cur->descr.stringLength -= position - cur->descr.textPosition; - list_add_after(&cur->entry, &run->entry); + list_add_after(&cur_run->entry, &run->entry); - if (position + length == run->descr.textPosition + run->descr.stringLength) + if (position + length == run->u.regular.descr.textPosition + run->u.regular.descr.stringLength) break; /* split second time */ - run2 = alloc_layout_run(); + run2 = alloc_layout_run(LAYOUT_RUN_REGULAR); if (!run2) return E_OUTOFMEMORY; - *run2 = *cur; - run2->descr.textPosition = run->descr.textPosition + run->descr.stringLength; - run2->descr.stringLength = cur->descr.textPosition + cur->descr.stringLength - position - length; - run2->descr.string = &layout->str[run2->descr.textPosition]; - run->descr.stringLength -= run2->descr.stringLength; + *run2 = *cur_run; + run2->u.regular.descr.textPosition = run->u.regular.descr.textPosition + run->u.regular.descr.stringLength; + run2->u.regular.descr.stringLength = cur->descr.textPosition + cur->descr.stringLength - position - length; + run2->u.regular.descr.string = &layout->str[run2->u.regular.descr.textPosition]; + run->u.regular.descr.stringLength -= run2->u.regular.descr.stringLength; list_add_after(&run->entry, &run2->entry); break; @@ -2782,7 +2829,8 @@ { struct dwrite_trimmingsign *This = impl_from_IDWriteInlineObject(iface); FIXME("(%p)->(%p): stub\n", This, metrics); - return E_NOTIMPL; + memset(metrics, 0, sizeof(*metrics)); + return S_OK; } static HRESULT WINAPI dwritetrimmingsign_GetOverhangMetrics(IDWriteInlineObject *iface, DWRITE_OVERHANG_METRICS *overhangs) diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/dwrite/tests/font.c wine-staging-1.7.41~ubuntu12.04.1/dlls/dwrite/tests/font.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/dwrite/tests/font.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/dwrite/tests/font.c 2015-04-18 23:36:02.000000000 +0000 @@ -58,6 +58,8 @@ static const WCHAR test_fontfile[] = {'w','i','n','e','_','t','e','s','t','_','f','o','n','t','.','t','t','f',0}; static const WCHAR tahomaW[] = {'T','a','h','o','m','a',0}; +static const WCHAR tahomaUppercaseW[] = {'T','A','H','O','M','A',0}; +static const WCHAR tahomaStrangecaseW[] = {'t','A','h','O','m','A',0}; static const WCHAR blahW[] = {'B','l','a','h','!',0}; static IDWriteFactory *create_factory(void) @@ -1375,6 +1377,20 @@ ok(hr == S_OK, "got 0x%08x\n", hr); ok(ret, "got %d\n", ret); ok(i != (UINT32)-1, "got %u\n", i); + + ret = FALSE; + i = (UINT32)-1; + hr = IDWriteFontCollection_FindFamilyName(collection, tahomaUppercaseW, &i, &ret); + ok(hr == S_OK, "got 0x%08x\n", hr); + ok(ret, "got %d\n", ret); + ok(i != (UINT32)-1, "got %u\n", i); + + ret = FALSE; + i = (UINT32)-1; + hr = IDWriteFontCollection_FindFamilyName(collection, tahomaStrangecaseW, &i, &ret); + ok(hr == S_OK, "got 0x%08x\n", hr); + ok(ret, "got %d\n", ret); + ok(i != (UINT32)-1, "got %u\n", i); /* get back local file loader */ hr = IDWriteFontCollection_GetFontFamily(collection, i, &family); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/dwrite/tests/layout.c wine-staging-1.7.41~ubuntu12.04.1/dlls/dwrite/tests/layout.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/dwrite/tests/layout.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/dwrite/tests/layout.c 2015-04-18 23:36:02.000000000 +0000 @@ -1038,23 +1038,21 @@ count = 0; hr = IDWriteTextLayout_GetClusterMetrics(layout, NULL, 0, &count); ok(hr == E_NOT_SUFFICIENT_BUFFER, "got 0x%08x\n", hr); -todo_wine ok(count == 3, "got %u\n", count); count = 0; memset(&metrics, 0, sizeof(metrics)); hr = IDWriteTextLayout_GetClusterMetrics(layout, metrics, 1, &count); ok(hr == E_NOT_SUFFICIENT_BUFFER, "got 0x%08x\n", hr); -todo_wine { ok(count == 3, "got %u\n", count); ok(metrics[0].length == 2, "got %u\n", metrics[0].length); -} + hr = IDWriteInlineObject_GetMetrics(trimm, &inline_metrics); -todo_wine { ok(hr == S_OK, "got 0x%08x\n", hr); - ok(inline_metrics.width == metrics[0].width, "got %.2f, expected %.2f\n", inline_metrics.width, - metrics[0].width); -} +todo_wine + ok(inline_metrics.width > 0.0 && inline_metrics.width == metrics[0].width, "got %.2f, expected %.2f\n", + inline_metrics.width, metrics[0].width); + IDWriteInlineObject_Release(trimm); IDWriteTextLayout_Release(layout); IDWriteTextFormat_Release(format); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/fusion/asmname.c wine-staging-1.7.41~ubuntu12.04.1/dlls/fusion/asmname.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/fusion/asmname.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/fusion/asmname.c 2015-04-18 23:36:02.000000000 +0000 @@ -228,12 +228,10 @@ LPDWORD pccDisplayName, DWORD dwDisplayFlags) { + static const WCHAR equals[] = {'=',0}; IAssemblyNameImpl *name = impl_from_IAssemblyName(iface); - WCHAR verstr[30]; + WCHAR verstr[30], *cultureval = NULL; DWORD size; - LPWSTR cultureval = 0; - - static const WCHAR equals[] = {'=',0}; TRACE("(%p, %p, %p, %d)\n", iface, szDisplayName, pccDisplayName, dwDisplayFlags); @@ -243,9 +241,15 @@ if (!name->displayname || !*name->displayname) return FUSION_E_INVALID_NAME; - size = min(*pccDisplayName, lstrlenW(name->displayname) + 1); + size = strlenW(name->displayname) + 1; - lstrcpynW(szDisplayName, name->displayname, size); + if (*pccDisplayName < size) + { + *pccDisplayName = size; + return E_NOT_SUFFICIENT_BUFFER; + } + + if (szDisplayName) strcpyW(szDisplayName, name->displayname); *pccDisplayName = size; return S_OK; @@ -369,19 +373,24 @@ WCHAR *pwzName) { IAssemblyNameImpl *name = impl_from_IAssemblyName(iface); + DWORD len; TRACE("(%p, %p, %p)\n", iface, lpcwBuffer, pwzName); - if (!name->name) + if (name->name) + len = strlenW(name->name) + 1; + else + len = 0; + + if (*lpcwBuffer < len) { - *pwzName = '\0'; - *lpcwBuffer = 0; - return S_OK; + *lpcwBuffer = len; + return E_NOT_SUFFICIENT_BUFFER; } + if (!name->name) lpcwBuffer[0] = 0; + else strcpyW(pwzName, name->name); - lstrcpyW(pwzName, name->name); - *lpcwBuffer = lstrlenW(pwzName) + 1; - + *lpcwBuffer = len; return S_OK; } diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/fusion/tests/asmname.c wine-staging-1.7.41~ubuntu12.04.1/dlls/fusion/tests/asmname.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/fusion/tests/asmname.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/fusion/tests/asmname.c 2015-04-18 23:36:02.000000000 +0000 @@ -421,12 +421,12 @@ broken(hr == E_INVALIDARG), /* .NET 1.x */ "Expected FUSION_E_INVALID_NAME, got %08x\n", hr); + str[0] = 'a'; size = MAX_PATH; - str[0] = '\0'; hr = IAssemblyName_GetName(name, &size, str); - ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - ok(!str[0], "Expected empty name\n"); - ok(size == 0, "Expected 0, got %d\n", size); + ok(hr == S_OK, "got %08x\n", hr); + ok(str[0] == 'a', "got %c\n", str[0]); + ok(!size, "got %u\n", size); hi = 0xbeefcace; lo = 0xcafebabe; @@ -457,6 +457,26 @@ broken(hr == S_OK), /* .NET 1.x */ "Expected FUSION_E_INVALID_NAME, got %08x\n", hr); + size = 0; + hr = IAssemblyName_GetName(name, &size, NULL); + ok(hr == E_NOT_SUFFICIENT_BUFFER, "got %08x\n", hr); + ok(size == 1, "got %u\n", size); + + if (0) /* crash */ + { + str[0] = '\0'; + hr = IAssemblyName_GetName(name, NULL, str); + ok(hr == E_NOT_SUFFICIENT_BUFFER, "got %08x\n", hr); + ok(!str[0], "got %c\n", str[0]); + } + + size = 0; + str[0] = '\0'; + hr = IAssemblyName_GetName(name, &size, str); + ok(hr == E_NOT_SUFFICIENT_BUFFER, "got %08x\n", hr); + ok(!str[0], "got %c\n", str[0]); + ok(size == 1, "got %u\n", size); + size = MAX_PATH; str[0] = '\0'; hr = IAssemblyName_GetName(name, &size, str); @@ -488,12 +508,36 @@ ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); ok(name != NULL, "Expected non-NULL name\n"); + size = 0; + hr = IAssemblyName_GetDisplayName(name, NULL, &size, 0); + ok(hr == E_NOT_SUFFICIENT_BUFFER, "got %08x\n", hr); + ok(size == 5, "got %u\n", size); + + size = 3; + hr = IAssemblyName_GetDisplayName(name, NULL, &size, 0); + ok(hr == E_NOT_SUFFICIENT_BUFFER || broken(hr == E_INVALIDARG), "got %08x\n", hr); + ok(size == 5 || broken(size == 3), "got %u\n", size); + + size = 3; + str[0] = 'a'; + hr = IAssemblyName_GetDisplayName(name, str, &size, 0); + ok(hr == E_NOT_SUFFICIENT_BUFFER, "got %08x\n", hr); + ok(str[0] == 'a', "got %c\n", str[0]); + ok(size == 5, "got %u\n", size); + size = MAX_PATH; hr = IAssemblyName_GetDisplayName(name, str, &size, ASM_DISPLAYF_FULL); ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); ok_aw("wine", str); ok(size == 5, "Expected 5, got %d\n", size); + size = 0; + str[0] = 0; + hr = IAssemblyName_GetName(name, &size, str); + ok(hr == E_NOT_SUFFICIENT_BUFFER, "got %08x\n", hr); + ok(!str[0], "got %c\n", str[0]); + ok(size == 5, "got %u\n", size); + size = MAX_PATH; str[0] = '\0'; hr = IAssemblyName_GetName(name, &size, str); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/gdi32/bitmap.c wine-staging-1.7.41~ubuntu12.04.1/dlls/gdi32/bitmap.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/gdi32/bitmap.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/gdi32/bitmap.c 2015-04-18 23:36:02.000000000 +0000 @@ -253,7 +253,7 @@ dst_stride = get_bitmap_stride( bmp->dib.dsBm.bmWidth, bmp->dib.dsBm.bmBitsPixel ); ret = max = dst_stride * bmp->dib.dsBm.bmHeight; if (!bits) goto done; - if (count > max) count = max; + if (count < 0 || count > max) count = max; ret = count; src.visrect.left = 0; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/gdi32/driver.c wine-staging-1.7.41~ubuntu12.04.1/dlls/gdi32/driver.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/gdi32/driver.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/gdi32/driver.c 2015-04-18 23:36:02.000000000 +0000 @@ -30,6 +30,7 @@ #include "winbase.h" #include "ddrawgdi.h" #include "wine/winbase16.h" +#include "winternl.h" #include "gdi_private.h" #include "wine/unicode.h" @@ -1153,3 +1154,21 @@ FIXME("stub\n"); return 0; } + +/****************************************************************************** + * D3DKMTOpenAdapterFromHdc [GDI32.@] + */ +NTSTATUS WINAPI D3DKMTOpenAdapterFromHdc( void *pData ) +{ + FIXME("(%p): stub\n", pData); + return STATUS_NO_MEMORY; +} + +/****************************************************************************** + * D3DKMTEscape [GDI32.@] + */ +NTSTATUS WINAPI D3DKMTEscape( const void *pData ) +{ + FIXME("(%p): stub\n", pData); + return STATUS_NO_MEMORY; +} diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/gdi32/gdi32.spec wine-staging-1.7.41~ubuntu12.04.1/dlls/gdi32/gdi32.spec --- wine-staging-1.7.40~ubuntu12.04.1/dlls/gdi32/gdi32.spec 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/gdi32/gdi32.spec 2015-04-18 23:36:02.000000000 +0000 @@ -80,6 +80,8 @@ @ stdcall CreateScalableFontResourceA(long str str str) @ stdcall CreateScalableFontResourceW(long wstr wstr wstr) @ stdcall CreateSolidBrush(long) +@ stdcall D3DKMTEscape(ptr) +@ stdcall D3DKMTOpenAdapterFromHdc(ptr) @ stdcall DPtoLP(long ptr long) @ stdcall DeleteColorSpace(long) @ stdcall DeleteDC(long) diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/gdi32/tests/bitmap.c wine-staging-1.7.41~ubuntu12.04.1/dlls/gdi32/tests/bitmap.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/gdi32/tests/bitmap.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/gdi32/tests/bitmap.c 2015-04-18 23:36:02.000000000 +0000 @@ -56,8 +56,9 @@ { BITMAP bm; BITMAP bma[2]; - INT ret, width_bytes; + INT ret, width_bytes, i; BYTE buf[512], buf_cmp[512]; + INT test_size[] = {0 /*first value will be changed */, 0, -1, -1000, ~0, sizeof(buf)}; ret = GetObjectW(hbm, sizeof(bm), &bm); ok(ret == sizeof(bm), "GetObject returned %d\n", ret); @@ -75,17 +76,28 @@ assert(sizeof(buf) == sizeof(buf_cmp)); SetLastError(0xdeadbeef); - ret = GetBitmapBits(hbm, 0, NULL); - ok(ret == bm.bmWidthBytes * bm.bmHeight, "%d != %d\n", ret, bm.bmWidthBytes * bm.bmHeight); + test_size[0] = bm.bmWidthBytes * bm.bmHeight; + /* NULL output buffer with different count values */ + for (i = 0; i < sizeof(test_size) / sizeof(test_size[0]); i++) + { + ret = GetBitmapBits(hbm, test_size[i], NULL); + ok(ret == bm.bmWidthBytes * bm.bmHeight, "%d != %d\n", ret, bm.bmWidthBytes * bm.bmHeight); + } memset(buf_cmp, 0xAA, sizeof(buf_cmp)); memset(buf_cmp, 0, bm.bmWidthBytes * bm.bmHeight); - memset(buf, 0xAA, sizeof(buf)); - ret = GetBitmapBits(hbm, sizeof(buf), buf); - ok(ret == bm.bmWidthBytes * bm.bmHeight, "%d != %d\n", ret, bm.bmWidthBytes * bm.bmHeight); - ok(!memcmp(buf, buf_cmp, sizeof(buf)), - "buffers do not match, depth %d\n", bmih->biBitCount); + /* Correct output buffer with different count values */ + for (i = 0; i < sizeof(test_size) / sizeof(test_size[0]); i++) + { + int expect = i == 1 ? 0 : bm.bmWidthBytes * bm.bmHeight; + memset(buf, 0xAA, sizeof(buf)); + ret = GetBitmapBits(hbm, test_size[i], buf); + ok(ret == expect, "Test[%d]: %d != %d\n", i, ret, expect); + if (expect) + ok(!memcmp(buf, buf_cmp, sizeof(buf)), + "Test[%d]: buffers do not match, depth %d\n", i, bmih->biBitCount); + } /* test various buffer sizes for GetObject */ ret = GetObjectW(hbm, sizeof(*bma) * 2, bma); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/gdiplus/gdiplus_private.h wine-staging-1.7.41~ubuntu12.04.1/dlls/gdiplus/gdiplus_private.h --- wine-staging-1.7.40~ubuntu12.04.1/dlls/gdiplus/gdiplus_private.h 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/gdiplus/gdiplus_private.h 2015-04-18 23:36:02.000000000 +0000 @@ -121,6 +121,26 @@ return (a<<24)|(r<<16)|(g<<8)|b; } +/* fg is premult, bg and return value are not */ +static inline ARGB color_over_fgpremult(ARGB bg, ARGB fg) +{ + BYTE b, g, r, a; + BYTE bg_alpha, fg_alpha; + + fg_alpha = (fg>>24)&0xff; + + if (fg_alpha == 0) return bg; + + bg_alpha = (((bg>>24)&0xff) * (0xff-fg_alpha)) / 0xff; + + a = bg_alpha + fg_alpha; + b = ((bg&0xff)*bg_alpha + (fg&0xff)*0xff)/a; + g = (((bg>>8)&0xff)*bg_alpha + ((fg>>8)&0xff)*0xff)/a; + r = (((bg>>16)&0xff)*bg_alpha + ((fg>>16)&0xff)*0xff)/a; + + return (a<<24)|(r<<16)|(g<<8)|b; +} + extern const char *debugstr_rectf(const RectF* rc) DECLSPEC_HIDDEN; extern const char *debugstr_pointf(const PointF* pt) DECLSPEC_HIDDEN; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/gdiplus/graphics.c wine-staging-1.7.41~ubuntu12.04.1/dlls/gdiplus/graphics.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/gdiplus/graphics.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/gdiplus/graphics.c 2015-04-18 23:36:02.000000000 +0000 @@ -354,9 +354,9 @@ return GdipGetRegionHRgn(graphics->clip, NULL, hrgn); } -/* Draw non-premultiplied ARGB data to the given graphics object */ +/* Draw ARGB data to the given graphics object */ static GpStatus alpha_blend_bmp_pixels(GpGraphics *graphics, INT dst_x, INT dst_y, - const BYTE *src, INT src_width, INT src_height, INT src_stride) + const BYTE *src, INT src_width, INT src_height, INT src_stride, const PixelFormat fmt) { GpBitmap *dst_bitmap = (GpBitmap*)graphics->image; INT x, y; @@ -372,7 +372,10 @@ continue; GdipBitmapGetPixel(dst_bitmap, x+dst_x, y+dst_y, &dst_color); - GdipBitmapSetPixel(dst_bitmap, x+dst_x, y+dst_y, color_over(dst_color, src_color)); + if (fmt & PixelFormatPAlpha) + GdipBitmapSetPixel(dst_bitmap, x+dst_x, y+dst_y, color_over_fgpremult(dst_color, src_color)); + else + GdipBitmapSetPixel(dst_bitmap, x+dst_x, y+dst_y, color_over(dst_color, src_color)); } } @@ -380,7 +383,7 @@ } static GpStatus alpha_blend_hdc_pixels(GpGraphics *graphics, INT dst_x, INT dst_y, - const BYTE *src, INT src_width, INT src_height, INT src_stride) + const BYTE *src, INT src_width, INT src_height, INT src_stride, PixelFormat fmt) { HDC hdc; HBITMAP hbitmap; @@ -404,7 +407,8 @@ hbitmap = CreateDIBSection(hdc, (BITMAPINFO*)&bih, DIB_RGB_COLORS, (void**)&temp_bits, NULL, 0); - if (GetDeviceCaps(graphics->hdc, SHADEBLENDCAPS) == SB_NONE) + if (GetDeviceCaps(graphics->hdc, SHADEBLENDCAPS) == SB_NONE || + fmt & PixelFormatPAlpha) memcpy(temp_bits, src, src_width * src_height * 4); else convert_32bppARGB_to_32bppPARGB(src_width, src_height, temp_bits, @@ -420,7 +424,7 @@ } static GpStatus alpha_blend_pixels_hrgn(GpGraphics *graphics, INT dst_x, INT dst_y, - const BYTE *src, INT src_width, INT src_height, INT src_stride, HRGN hregion) + const BYTE *src, INT src_width, INT src_height, INT src_stride, HRGN hregion, PixelFormat fmt) { GpStatus stat=Ok; @@ -470,7 +474,7 @@ stat = alpha_blend_bmp_pixels(graphics, rects[i].left, rects[i].top, &src[(rects[i].left - dst_x) * 4 + (rects[i].top - dst_y) * src_stride], rects[i].right - rects[i].left, rects[i].bottom - rects[i].top, - src_stride); + src_stride, fmt); } GdipFree(rgndata); @@ -503,7 +507,7 @@ ExtSelectClipRgn(graphics->hdc, hregion, RGN_AND); stat = alpha_blend_hdc_pixels(graphics, dst_x, dst_y, src, src_width, - src_height, src_stride); + src_height, src_stride, fmt); RestoreDC(graphics->hdc, save); @@ -514,9 +518,9 @@ } static GpStatus alpha_blend_pixels(GpGraphics *graphics, INT dst_x, INT dst_y, - const BYTE *src, INT src_width, INT src_height, INT src_stride) + const BYTE *src, INT src_width, INT src_height, INT src_stride, PixelFormat fmt) { - return alpha_blend_pixels_hrgn(graphics, dst_x, dst_y, src, src_width, src_height, src_stride, NULL); + return alpha_blend_pixels_hrgn(graphics, dst_x, dst_y, src, src_width, src_height, src_stride, NULL, fmt); } static ARGB blend_colors(ARGB start, ARGB end, REAL position) @@ -656,8 +660,9 @@ return (r == g) && (g == b); } -static void apply_image_attributes(const GpImageAttributes *attributes, LPBYTE data, - UINT width, UINT height, INT stride, ColorAdjustType type) +/* returns preferred pixel format for the applied attributes */ +static PixelFormat apply_image_attributes(const GpImageAttributes *attributes, LPBYTE data, + UINT width, UINT height, INT stride, ColorAdjustType type, PixelFormat fmt) { UINT x, y; INT i; @@ -669,6 +674,9 @@ BYTE min_blue, min_green, min_red; BYTE max_blue, max_green, max_red; + if (!data || fmt != PixelFormat32bppARGB) + return PixelFormat32bppARGB; + if (attributes->colorkeys[type].enabled) key = &attributes->colorkeys[type]; else @@ -702,6 +710,9 @@ { const struct color_remap_table *table; + if (!data || fmt != PixelFormat32bppARGB) + return PixelFormat32bppARGB; + if (attributes->colorremaptables[type].enabled) table = &attributes->colorremaptables[type]; else @@ -731,6 +742,9 @@ int gray_matrix[5][5]; BOOL identity; + if (!data || fmt != PixelFormat32bppARGB) + return PixelFormat32bppARGB; + if (attributes->colormatrices[type].enabled) colormatrices = &attributes->colormatrices[type]; else @@ -769,6 +783,9 @@ { REAL gamma; + if (!data || fmt != PixelFormat32bppARGB) + return PixelFormat32bppARGB; + if (attributes->gamma_enabled[type]) gamma = attributes->gamma[type]; else @@ -793,6 +810,8 @@ *src_color = (*src_color & 0xff000000) | (red << 16) | (green << 8) | blue; } } + + return fmt; } /* Given a bitmap and its source rectangle, find the smallest rectangle in the @@ -1237,7 +1256,7 @@ if (stat == Ok) apply_image_attributes(fill->imageattributes, fill->bitmap_bits, bitmap->width, bitmap->height, - src_stride, ColorAdjustTypeBitmap); + src_stride, ColorAdjustTypeBitmap, lockeddata.PixelFormat); if (stat != Ok) { @@ -2990,15 +3009,18 @@ return OutOfMemory; src_stride = sizeof(ARGB) * src_area.Width; - /* Read the bits we need from the source bitmap into an ARGB buffer. */ + /* Read the bits we need from the source bitmap into a compatible buffer. */ lockeddata.Width = src_area.Width; lockeddata.Height = src_area.Height; lockeddata.Stride = src_stride; - lockeddata.PixelFormat = PixelFormat32bppARGB; lockeddata.Scan0 = src_data; + if (!do_resampling && bitmap->format == PixelFormat32bppPARGB) + lockeddata.PixelFormat = apply_image_attributes(imageAttributes, NULL, 0, 0, 0, ColorAdjustTypeBitmap, bitmap->format); + else + lockeddata.PixelFormat = PixelFormat32bppARGB; stat = GdipBitmapLockBits(bitmap, &src_area, ImageLockModeRead|ImageLockModeUserInputBuf, - PixelFormat32bppARGB, &lockeddata); + lockeddata.PixelFormat, &lockeddata); if (stat == Ok) stat = GdipBitmapUnlockBits(bitmap, &lockeddata); @@ -3011,7 +3033,7 @@ apply_image_attributes(imageAttributes, src_data, src_area.Width, src_area.Height, - src_stride, ColorAdjustTypeBitmap); + src_stride, ColorAdjustTypeBitmap, lockeddata.PixelFormat); if (do_resampling) { @@ -3059,7 +3081,8 @@ } stat = alpha_blend_pixels(graphics, dst_area.left, dst_area.top, - dst_data, dst_area.right - dst_area.left, dst_area.bottom - dst_area.top, dst_stride); + dst_data, dst_area.right - dst_area.left, dst_area.bottom - dst_area.top, dst_stride, + lockeddata.PixelFormat); GdipFree(src_data); @@ -4009,7 +4032,8 @@ if (stat == Ok) stat = alpha_blend_pixels_hrgn(graphics, gp_bound_rect.X, gp_bound_rect.Y, (BYTE*)pixel_data, gp_bound_rect.Width, - gp_bound_rect.Height, gp_bound_rect.Width * 4, hregion); + gp_bound_rect.Height, gp_bound_rect.Width * 4, hregion, + PixelFormat32bppARGB); GdipFree(pixel_data); } @@ -5811,7 +5835,7 @@ /* Write the changed pixels to the real target. */ alpha_blend_pixels(graphics, 0, 0, graphics->temp_bits, graphics->temp_hbitmap_width, graphics->temp_hbitmap_height, - graphics->temp_hbitmap_width * 4); + graphics->temp_hbitmap_width * 4, PixelFormat32bppARGB); /* Clean up. */ DeleteDC(graphics->temp_hdc); @@ -6366,7 +6390,7 @@ /* draw the result */ stat = alpha_blend_pixels(graphics, min_x, min_y, pixel_data, pixel_area.Width, - pixel_area.Height, pixel_data_stride); + pixel_area.Height, pixel_data_stride, PixelFormat32bppARGB); GdipFree(pixel_data); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/gdiplus/image.c wine-staging-1.7.41~ubuntu12.04.1/dlls/gdiplus/image.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/gdiplus/image.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/gdiplus/image.c 2015-04-18 23:36:02.000000000 +0000 @@ -3436,6 +3436,29 @@ return item; } +static ULONG get_ulong_by_index(IWICMetadataReader* reader, ULONG index) +{ + PROPVARIANT value; + HRESULT hr; + ULONG result=0; + + hr = IWICMetadataReader_GetValueByIndex(reader, index, NULL, NULL, &value); + if (SUCCEEDED(hr)) + { + switch (value.vt) + { + case VT_UI4: + result = value.u.ulVal; + break; + default: + ERR("unhandled case %u\n", value.vt); + break; + } + PropVariantClear(&value); + } + return result; +} + static void png_metadata_reader(GpBitmap *bitmap, IWICBitmapDecoder *decoder, UINT active_frame) { HRESULT hr; @@ -3456,6 +3479,7 @@ { "Source", PropertyTagEquipModel }, { "Comment", PropertyTagExifUserComment }, }; + BOOL seen_gamma=FALSE; hr = IWICBitmapDecoder_GetFrame(decoder, active_frame, &frame); if (hr != S_OK) return; @@ -3494,6 +3518,7 @@ item = create_prop(keywords[j].propid, &value); if (item) add_property(bitmap, item); + GdipFree(item); } } @@ -3501,6 +3526,28 @@ PropVariantClear(&value); } } + else if (SUCCEEDED(hr) && IsEqualGUID(&GUID_MetadataFormatChunkgAMA, &format)) + { + PropertyItem* item; + + if (!seen_gamma) + { + item = GdipAlloc(sizeof(PropertyItem) + sizeof(ULONG) * 2); + if (item) + { + ULONG *rational; + item->length = sizeof(ULONG) * 2; + item->type = PropertyTagTypeRational; + item->id = PropertyTagGamma; + rational = item->value = item + 1; + rational[0] = 100000; + rational[1] = get_ulong_by_index(reader, 0); + add_property(bitmap, item); + seen_gamma = TRUE; + GdipFree(item); + } + } + } IWICMetadataReader_Release(reader); } diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/iphlpapi/iphlpapi_main.c wine-staging-1.7.41~ubuntu12.04.1/dlls/iphlpapi/iphlpapi_main.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/iphlpapi/iphlpapi_main.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/iphlpapi/iphlpapi_main.c 2015-04-18 23:36:02.000000000 +0000 @@ -784,6 +784,31 @@ return row; } +static void fill_unicast_addr_data(IP_ADAPTER_ADDRESSES *aa, IP_ADAPTER_UNICAST_ADDRESS *ua) +{ + /* Actually this information should be read somewhere from the system + * but it doesn't matter much for the bugs found so far. + * This information is required for DirectPlay8 games. */ + if (aa->IfType != IF_TYPE_SOFTWARE_LOOPBACK) + { + ua->PrefixOrigin = IpPrefixOriginDhcp; + ua->SuffixOrigin = IpSuffixOriginDhcp; + } + else + { + ua->PrefixOrigin = IpPrefixOriginManual; + ua->SuffixOrigin = IpSuffixOriginManual; + } + + /* The address is not duplicated in the network */ + ua->DadState = IpDadStatePreferred; + + /* Some address life time values, required even for non-dhcp addresses */ + ua->ValidLifetime = 60000; + ua->PreferredLifetime = 60000; + ua->LeaseLifetime = 60000; +} + static ULONG adapterAddressesFromIndex(ULONG family, ULONG flags, IF_INDEX index, IP_ADAPTER_ADDRESSES *aa, ULONG *size) { @@ -884,6 +909,13 @@ TRACE("%s: %d IPv4 addresses, %d IPv6 addresses:\n", name, num_v4addrs, num_v6addrs); + + buflen = MAX_INTERFACE_PHYSADDR; + getInterfacePhysicalByIndex(index, &buflen, aa->PhysicalAddress, &type); + aa->PhysicalAddressLength = buflen; + aa->IfType = typeFromMibType(type); + aa->ConnectionType = connectionTypeFromMibType(type); + if (num_v4_gateways) { PMIB_IPFORWARDROW adapterRow; @@ -930,6 +962,7 @@ sa->sin_port = 0; TRACE("IPv4 %d/%d: %s\n", i + 1, num_v4addrs, debugstr_ipv4(&sa->sin_addr.S_un.S_addr, addr_buf)); + fill_unicast_addr_data(aa, ua); ptr += ua->u.s.Length + ua->Address.iSockaddrLength; if (i < num_v4addrs - 1) @@ -967,6 +1000,7 @@ memcpy(sa, v6addrs[i].lpSockaddr, sizeof(*sa)); TRACE("IPv6 %d/%d: %s\n", i + 1, num_v6addrs, debugstr_ipv6(sa, addr_buf)); + fill_unicast_addr_data(aa, ua); ptr += ua->u.s.Length + ua->Address.iSockaddrLength; if (i < num_v6addrs - 1) @@ -1071,12 +1105,6 @@ } } - buflen = MAX_INTERFACE_PHYSADDR; - getInterfacePhysicalByIndex(index, &buflen, aa->PhysicalAddress, &type); - aa->PhysicalAddressLength = buflen; - aa->IfType = typeFromMibType(type); - aa->ConnectionType = connectionTypeFromMibType(type); - getInterfaceMtuByName(name, &aa->Mtu); getInterfaceStatusByName(name, &status); @@ -1382,8 +1410,10 @@ ret = ERROR_SUCCESS; } else + { ret = ERROR_BUFFER_OVERFLOW; - *buflen = total_size; + *buflen = total_size; + } TRACE("num adapters %u\n", table->numIndexes); HeapFree(GetProcessHeap(), 0, table); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/iphlpapi/tests/iphlpapi.c wine-staging-1.7.41~ubuntu12.04.1/dlls/iphlpapi/tests/iphlpapi.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/iphlpapi/tests/iphlpapi.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/iphlpapi/tests/iphlpapi.c 2015-04-18 23:36:02.000000000 +0000 @@ -129,6 +129,16 @@ return buffer; } +static inline const char* debugstr_longlong(ULONGLONG ll) +{ + static char string[17]; + if (sizeof(ll) > sizeof(unsigned long) && ll >> 32) + sprintf(string, "%lx%08lx", (unsigned long)(ll >> 32), (unsigned long)ll); + else + sprintf(string, "%lx", (unsigned long)ll); + return string; +} + /* still-to-be-tested 98-only functions: GetUniDirectionalAdapterInfo @@ -1298,7 +1308,7 @@ static void test_GetAdaptersAddresses(void) { - ULONG ret, size; + ULONG ret, size, osize, i; IP_ADAPTER_ADDRESSES *aa, *ptr; IP_ADAPTER_UNICAST_ADDRESS *ua; @@ -1320,16 +1330,28 @@ ptr = HeapAlloc(GetProcessHeap(), 0, size); ret = pGetAdaptersAddresses(AF_UNSPEC, 0, NULL, ptr, &size); ok(!ret, "expected ERROR_SUCCESS got %u\n", ret); + HeapFree(GetProcessHeap(), 0, ptr); + + /* higher size must not be changed to lower size */ + size *= 2; + osize = size; + ptr = HeapAlloc(GetProcessHeap(), 0, osize); + ret = pGetAdaptersAddresses(AF_UNSPEC, 0, NULL, ptr, &osize); + ok(!ret, "expected ERROR_SUCCESS got %u\n", ret); + ok(osize == size, "expected %d, got %d\n", size, osize); for (aa = ptr; !ret && aa; aa = aa->Next) { + char temp[128]; + + ok(S(U(*aa)).Length == sizeof(IP_ADAPTER_ADDRESSES_LH) || + S(U(*aa)).Length == sizeof(IP_ADAPTER_ADDRESSES_XP), + "Unknown structure size of %u bytes\n", S(U(*aa)).Length); ok(aa->DnsSuffix != NULL, "DnsSuffix is not a valid pointer\n"); ok(aa->Description != NULL, "Description is not a valid pointer\n"); ok(aa->FriendlyName != NULL, "FriendlyName is not a valid pointer\n"); - if (winetest_debug <= 1) - continue; - + trace("\n"); trace("Length: %u\n", S(U(*aa)).Length); trace("IfIndex: %u\n", S(U(*aa)).IfIndex); trace("Next: %p\n", aa->Next); @@ -1338,6 +1360,21 @@ ua = aa->FirstUnicastAddress; while (ua) { + ok(ua->PrefixOrigin != IpPrefixOriginOther, + "bad address config value %d\n", ua->PrefixOrigin); + ok(ua->SuffixOrigin != IpSuffixOriginOther, + "bad address config value %d\n", ua->PrefixOrigin); + /* Address configured manually or from DHCP server? */ + if (ua->PrefixOrigin == IpPrefixOriginManual || + ua->PrefixOrigin == IpPrefixOriginDhcp) + { + ok(ua->ValidLifetime, "expected non-zero value\n"); + ok(ua->PreferredLifetime, "expected non-zero value\n"); + ok(ua->LeaseLifetime, "expected non-zero\n"); + } + /* Is the address ok in the network (not duplicated)? */ + ok(ua->DadState != IpDadStateInvalid && ua->DadState != IpDadStateDuplicate, + "bad address duplication value %d\n", ua->DadState); trace("\tLength: %u\n", S(U(*ua)).Length); trace("\tFlags: 0x%08x\n", S(U(*ua)).Flags); trace("\tNext: %p\n", ua->Next); @@ -1346,24 +1383,51 @@ trace("\tPrefixOrigin: %u\n", ua->PrefixOrigin); trace("\tSuffixOrigin: %u\n", ua->SuffixOrigin); trace("\tDadState: %u\n", ua->DadState); - trace("\tValidLifetime: 0x%08x\n", ua->ValidLifetime); - trace("\tPreferredLifetime: 0x%08x\n", ua->PreferredLifetime); - trace("\tLeaseLifetime: 0x%08x\n", ua->LeaseLifetime); + trace("\tValidLifetime: %u seconds\n", ua->ValidLifetime); + trace("\tPreferredLifetime: %u seconds\n", ua->PreferredLifetime); + trace("\tLeaseLifetime: %u seconds\n", ua->LeaseLifetime); trace("\n"); ua = ua->Next; } trace("FirstAnycastAddress: %p\n", aa->FirstAnycastAddress); trace("FirstMulticastAddress: %p\n", aa->FirstMulticastAddress); trace("FirstDnsServerAddress: %p\n", aa->FirstDnsServerAddress); - trace("DnsSuffix: %p\n", aa->DnsSuffix); - trace("Description: %p\n", aa->Description); - trace("FriendlyName: %p\n", aa->FriendlyName); - trace("PhysicalAddress: %02x\n", aa->PhysicalAddress[0]); + trace("DnsSuffix: %s %p\n", wine_dbgstr_w(aa->DnsSuffix), aa->DnsSuffix); + trace("Description: %s %p\n", wine_dbgstr_w(aa->Description), aa->Description); + trace("FriendlyName: %s %p\n", wine_dbgstr_w(aa->FriendlyName), aa->FriendlyName); trace("PhysicalAddressLength: %u\n", aa->PhysicalAddressLength); + for (i = 0; i < aa->PhysicalAddressLength; i++) + sprintf(temp + i * 3, "%02X-", aa->PhysicalAddress[i]); + temp[i ? i * 3 - 1 : 0] = '\0'; + trace("PhysicalAddress: %s\n", temp); trace("Flags: 0x%08x\n", aa->Flags); trace("Mtu: %u\n", aa->Mtu); trace("IfType: %u\n", aa->IfType); trace("OperStatus: %u\n", aa->OperStatus); + trace("Ipv6IfIndex: %u\n", aa->Ipv6IfIndex); + for (i = 0, temp[0] = '\0'; i < sizeof(aa->ZoneIndices) / sizeof(aa->ZoneIndices[0]); i++) + sprintf(temp + strlen(temp), "%d ", aa->ZoneIndices[i]); + trace("ZoneIndices: %s\n", temp); + trace("FirstPrefix: %p\n", aa->FirstPrefix); + + if (S(U(*aa)).Length < sizeof(IP_ADAPTER_ADDRESSES_LH)) continue; + trace("TransmitLinkSpeed: %s\n", debugstr_longlong(aa->TransmitLinkSpeed)); + trace("ReceiveLinkSpeed: %s\n", debugstr_longlong(aa->ReceiveLinkSpeed)); + trace("FirstWinsServerAddress:%p\n", aa->FirstWinsServerAddress); + trace("FirstGatewayAddress: %p\n", aa->FirstGatewayAddress); + trace("Ipv4Metric: %u\n", aa->Ipv4Metric); + trace("Ipv6Metric: %u\n", aa->Ipv6Metric); + trace("Luid: %p\n", &aa->Luid); + trace("Dhcpv4Server: %p\n", &aa->Dhcpv4Server); + trace("CompartmentId: %u\n", aa->CompartmentId); + trace("NetworkGuid: %s\n", wine_dbgstr_guid((GUID*) &aa->NetworkGuid)); + trace("ConnectionType: %u\n", aa->ConnectionType); + trace("TunnelType: %u\n", aa->TunnelType); + trace("Dhcpv6Server: %p\n", &aa->Dhcpv6Server); + trace("Dhcpv6ClientDuidLength:%u\n", aa->Dhcpv6ClientDuidLength); + trace("Dhcpv6ClientDuid: %p\n", aa->Dhcpv6ClientDuid); + trace("Dhcpv6Iaid: %u\n", aa->Dhcpv6Iaid); + trace("FirstDnsSuffix: %p\n", aa->FirstDnsSuffix); trace("\n"); } HeapFree(GetProcessHeap(), 0, ptr); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/kernel32/kernel32.spec wine-staging-1.7.41~ubuntu12.04.1/dlls/kernel32/kernel32.spec --- wine-staging-1.7.40~ubuntu12.04.1/dlls/kernel32/kernel32.spec 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/kernel32/kernel32.spec 2015-04-18 23:36:02.000000000 +0000 @@ -677,7 +677,7 @@ @ stdcall GetFileInformationByHandle(long ptr) @ stdcall GetFileInformationByHandleEx(long long ptr long) # @ stub GetFileMUIInfo -# @ stub GetFileMUIPath +@ stdcall GetFileMUIPath(long wstr wstr ptr ptr ptr ptr) @ stdcall GetFileSize(long ptr) @ stdcall GetFileSizeEx(long ptr) @ stdcall GetFileTime(long ptr ptr ptr) @@ -1134,9 +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 PowerClearRequest(long long) +@ stdcall PowerCreateRequest(ptr) +@ stdcall PowerSetRequest(long long) @ stdcall PrepareTape(ptr long long) @ stub PrivCopyFileExW @ stub PrivMoveFileIdentityW diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/kernel32/locale.c wine-staging-1.7.41~ubuntu12.04.1/dlls/kernel32/locale.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/kernel32/locale.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/kernel32/locale.c 2015-04-18 23:36:02.000000000 +0000 @@ -1177,6 +1177,17 @@ status = NtQueryValueKey( hkey, &nameW, KeyValuePartialInformation, info, size, &size ); + /* try again with a bigger buffer when we have to return the correct size */ + if (status == STATUS_BUFFER_OVERFLOW && !buffer && size > info_size) + { + KEY_VALUE_PARTIAL_INFORMATION *new_info; + if ((new_info = HeapReAlloc( GetProcessHeap(), 0, info, size ))) + { + info = new_info; + status = NtQueryValueKey( hkey, &nameW, KeyValuePartialInformation, info, size, &size ); + } + } + NtClose( hkey ); if (!status) @@ -1207,8 +1218,6 @@ if (status == STATUS_BUFFER_OVERFLOW && !buffer) { ret = (size - info_size) / sizeof(WCHAR); - if (!ret || ((WCHAR *)&info->Data)[ret-1]) - ret++; } else if (status == STATUS_OBJECT_NAME_NOT_FOUND) { @@ -5291,3 +5300,18 @@ FIXME( "stub: %u %p %p %p\n", flags, numlangs, langbuffer, bufferlen ); return FALSE; } + +/****************************************************************************** + * GetFileMUIPath (KERNEL32.@) + */ + +BOOL WINAPI GetFileMUIPath(DWORD flags, PCWSTR filepath, PWSTR language, PULONG languagelen, + PWSTR muipath, PULONG muipathlen, PULONGLONG enumerator) +{ + FIXME("stub: 0x%x, %s, %s, %p, %p, %p, %p\n", flags, debugstr_w(filepath), + debugstr_w(language), languagelen, muipath, muipathlen, enumerator); + + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + + return FALSE; +} diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/kernel32/powermgnt.c wine-staging-1.7.41~ubuntu12.04.1/dlls/kernel32/powermgnt.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/kernel32/powermgnt.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/kernel32/powermgnt.c 2015-04-18 23:36:02.000000000 +0000 @@ -100,3 +100,36 @@ current = flags; return old; } + +/*********************************************************************** + * PowerCreateRequest (KERNEL32.@) + */ +HANDLE WINAPI PowerCreateRequest(REASON_CONTEXT *context) +{ + FIXME("(%p): stub\n", context); + + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return INVALID_HANDLE_VALUE; +} + +/*********************************************************************** + * PowerSetRequest (KERNEL32.@) + */ +BOOL WINAPI PowerSetRequest(HANDLE request, POWER_REQUEST_TYPE type) +{ + FIXME("(%p, %u): stub\n", request, type); + + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + +/*********************************************************************** + * PowerClearRequest (KERNEL32.@) + */ +BOOL WINAPI PowerClearRequest(HANDLE request, POWER_REQUEST_TYPE type) +{ + FIXME("(%p, %u): stub\n", request, type); + + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/kernel32/tests/process.c wine-staging-1.7.41~ubuntu12.04.1/dlls/kernel32/tests/process.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/kernel32/tests/process.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/kernel32/tests/process.c 2015-04-18 23:36:02.000000000 +0000 @@ -2255,13 +2255,11 @@ ok(ret, "TerminateJobObject error %u\n", GetLastError()); dwret = WaitForSingleObject(pi.hProcess, 1000); - todo_wine ok(dwret == WAIT_OBJECT_0, "WaitForSingleObject returned %u\n", dwret); if (dwret == WAIT_TIMEOUT) TerminateProcess(pi.hProcess, 0); ret = GetExitCodeProcess(pi.hProcess, &dwret); ok(ret, "GetExitCodeProcess error %u\n", GetLastError()); - todo_wine ok(dwret == 123 || broken(dwret == 0) /* randomly fails on Win 2000 / XP */, "wrong exitcode %u\n", dwret); @@ -2445,6 +2443,88 @@ CloseHandle(pi.hThread); } +static void test_WaitForJobObject(void) +{ + HANDLE job; + PROCESS_INFORMATION pi; + BOOL ret; + DWORD dwret; + + /* test waiting for a job object when the process is killed */ + job = pCreateJobObjectW(NULL, NULL); + ok(job != NULL, "CreateJobObject error %u\n", GetLastError()); + + dwret = WaitForSingleObject(job, 100); + ok(dwret == WAIT_TIMEOUT, "WaitForSingleObject returned %u\n", dwret); + + create_process("wait", &pi); + + ret = pAssignProcessToJobObject(job, pi.hProcess); + ok(ret, "AssignProcessToJobObject error %u\n", GetLastError()); + + dwret = WaitForSingleObject(job, 100); + ok(dwret == WAIT_TIMEOUT, "WaitForSingleObject returned %u\n", dwret); + + ret = pTerminateJobObject(job, 123); + ok(ret, "TerminateJobObject error %u\n", GetLastError()); + + dwret = WaitForSingleObject(job, 500); + ok(dwret == WAIT_OBJECT_0 || broken(dwret == WAIT_TIMEOUT), + "WaitForSingleObject returned %u\n", dwret); + + if (dwret == WAIT_TIMEOUT) /* Win 2000/XP */ + { + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + CloseHandle(job); + win_skip("TerminateJobObject doesn't signal job, skipping tests\n"); + return; + } + + /* the object is not reset immediately */ + dwret = WaitForSingleObject(job, 100); + ok(dwret == WAIT_OBJECT_0, "WaitForSingleObject returned %u\n", dwret); + + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + + /* creating a new process doesn't reset the signalled state */ + create_process("wait", &pi); + + ret = pAssignProcessToJobObject(job, pi.hProcess); + ok(ret, "AssignProcessToJobObject error %u\n", GetLastError()); + + dwret = WaitForSingleObject(job, 100); + ok(dwret == WAIT_OBJECT_0, "WaitForSingleObject returned %u\n", dwret); + + ret = pTerminateJobObject(job, 123); + ok(ret, "TerminateJobObject error %u\n", GetLastError()); + + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + + CloseHandle(job); + + /* repeat the test, but this time the process terminates properly */ + job = pCreateJobObjectW(NULL, NULL); + ok(job != NULL, "CreateJobObject error %u\n", GetLastError()); + + dwret = WaitForSingleObject(job, 100); + ok(dwret == WAIT_TIMEOUT, "WaitForSingleObject returned %u\n", dwret); + + create_process("exit", &pi); + + ret = pAssignProcessToJobObject(job, pi.hProcess); + ok(ret, "AssignProcessToJobObject error %u\n", GetLastError()); + + dwret = WaitForSingleObject(job, 100); + ok(dwret == WAIT_TIMEOUT, "WaitForSingleObject returned %u\n", dwret); + + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + CloseHandle(job); +} + static HANDLE test_AddSelfToJob(void) { HANDLE job; @@ -2627,6 +2707,7 @@ test_QueryInformationJobObject(); test_CompletionPort(); test_KillOnJobClose(); + test_WaitForJobObject(); job = test_AddSelfToJob(); test_jobInheritance(job); test_BreakawayOk(job); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/mmdevapi/devenum.c wine-staging-1.7.41~ubuntu12.04.1/dlls/mmdevapi/devenum.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/mmdevapi/devenum.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/mmdevapi/devenum.c 2015-04-18 23:36:02.000000000 +0000 @@ -485,6 +485,7 @@ &PKEY_AudioEngine_DeviceFormat, &pv); MMDevice_SetPropValue(&dev->devguid, dev->flow, &PKEY_AudioEngine_OEMFormat, &pv); + CoTaskMemFree(fmt); return S_OK; } diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/mshtml/htmlembed.c wine-staging-1.7.41~ubuntu12.04.1/dlls/mshtml/htmlembed.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/mshtml/htmlembed.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/mshtml/htmlembed.c 2015-04-18 23:36:02.000000000 +0000 @@ -227,14 +227,13 @@ { HTMLEmbedElement *This = impl_from_HTMLDOMNode(iface); + TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); + if(IsEqualGUID(&IID_IUnknown, riid)) { - TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); *ppv = &This->IHTMLEmbedElement_iface; }else if(IsEqualGUID(&IID_IDispatch, riid)) { - TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv); *ppv = &This->IHTMLEmbedElement_iface; }else if(IsEqualGUID(&IID_IHTMLEmbedElement, riid)) { - TRACE("(%p)->(IID_IHTMLEmbedElement %p)\n", This, ppv); *ppv = &This->IHTMLEmbedElement_iface; }else { return HTMLElement_QI(&This->element.node, riid, ppv); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/mshtml/htmlobject.c wine-staging-1.7.41~ubuntu12.04.1/dlls/mshtml/htmlobject.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/mshtml/htmlobject.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/mshtml/htmlobject.c 2015-04-18 23:36:02.000000000 +0000 @@ -645,21 +645,20 @@ { HTMLObjectElement *This = impl_from_HTMLDOMNode(iface); + TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); + if(IsEqualGUID(&IID_IUnknown, riid)) { - TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); *ppv = &This->IHTMLObjectElement_iface; }else if(IsEqualGUID(&IID_IDispatch, riid)) { - TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv); *ppv = &This->IHTMLObjectElement_iface; }else if(IsEqualGUID(&IID_IHTMLObjectElement, riid)) { - TRACE("(%p)->(IID_IHTMLObjectElement %p)\n", This, ppv); *ppv = &This->IHTMLObjectElement_iface; }else if(IsEqualGUID(&IID_IHTMLObjectElement2, riid)) { - TRACE("(%p)->(IID_IHTMLObjectElement2 %p)\n", This, ppv); *ppv = &This->IHTMLObjectElement2_iface; }else if(IsEqualGUID(&IID_HTMLPluginContainer, riid)) { - TRACE("(%p)->(IID_HTMLPluginContainer %p)\n", This, ppv); + /* Special pseudo-interface returning HTMLPluginContainse struct. */ *ppv = &This->plugin_container; + node_addref(&This->plugin_container.element.node); return S_OK; }else { HRESULT hres; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/mshtml/main.c wine-staging-1.7.41~ubuntu12.04.1/dlls/mshtml/main.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/mshtml/main.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/mshtml/main.c 2015-04-18 23:36:02.000000000 +0000 @@ -42,6 +42,7 @@ #define INIT_GUID #include "mshtml_private.h" #include "resource.h" +#include "pluginhost.h" WINE_DEFAULT_DEBUG_CHANNEL(mshtml); @@ -540,6 +541,7 @@ X(DIID_HTMLDocumentEvents2); X(DIID_HTMLTableEvents); X(DIID_HTMLTextContainerEvents); + X(IID_HTMLPluginContainer); X(IID_IConnectionPoint); X(IID_IConnectionPointContainer); X(IID_ICustomDoc); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/mshtml/nsembed.c wine-staging-1.7.41~ubuntu12.04.1/dlls/mshtml/nsembed.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/mshtml/nsembed.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/mshtml/nsembed.c 2015-04-18 23:36:02.000000000 +0000 @@ -42,7 +42,6 @@ #define NS_APPSTARTUPNOTIFIER_CONTRACTID "@mozilla.org/embedcomp/appstartup-notifier;1" #define NS_WEBBROWSER_CONTRACTID "@mozilla.org/embedding/browser/nsWebBrowser;1" -#define NS_MEMORY_CONTRACTID "@mozilla.org/xpcom/memory-service;1" #define NS_COMMANDPARAMS_CONTRACTID "@mozilla.org/embedcomp/command-params;1" #define NS_HTMLSERIALIZER_CONTRACTID "@mozilla.org/layout/contentserializer;1?mimetype=text/html" #define NS_EDITORCONTROLLER_CONTRACTID "@mozilla.org/editor/editorcontroller;1" @@ -69,13 +68,14 @@ static nsresult (CDECL *NS_NewLocalFile)(const nsAString*,cpp_bool,nsIFile**); static PRUint32 (CDECL *NS_StringGetData)(const nsAString*,const PRUnichar **,cpp_bool*); static PRUint32 (CDECL *NS_CStringGetData)(const nsACString*,const char**,cpp_bool*); +static void* (CDECL *NS_Alloc)(SIZE_T); +static void (CDECL *NS_Free)(void*); static HINSTANCE xul_handle = NULL; static nsIServiceManager *pServMgr = NULL; static nsIComponentManager *pCompMgr = NULL; static nsICategoryManager *cat_mgr; -static nsIMemory *nsmem = NULL; static nsIFile *profile_directory, *plugin_directory; static const WCHAR wszNsContainer[] = {'N','s','C','o','n','t','a','i','n','e','r',0}; @@ -516,6 +516,8 @@ NS_DLSYM(NS_NewLocalFile); NS_DLSYM(NS_StringGetData); NS_DLSYM(NS_CStringGetData); + NS_DLSYM(NS_Alloc); + NS_DLSYM(NS_Free); #undef NS_DLSYM @@ -733,11 +735,6 @@ init_mutation(pCompMgr); set_preferences(); - nsres = nsIComponentManager_CreateInstanceByContractID(pCompMgr, NS_MEMORY_CONTRACTID, - NULL, &IID_nsIMemory, (void**)&nsmem); - if(NS_FAILED(nsres)) - ERR("Could not get nsIMemory: %08x\n", nsres); - nsres = nsIServiceManager_GetServiceByContractID(pServMgr, NS_CATEGORYMANAGER_CONTRACTID, &IID_nsICategoryManager, (void**)&cat_mgr); if(NS_FAILED(nsres)) @@ -796,12 +793,12 @@ void *nsalloc(size_t size) { - return nsIMemory_Alloc(nsmem, size); + return NS_Alloc(size); } void nsfree(void *mem) { - nsIMemory_Free(nsmem, mem); + NS_Free(mem); } static BOOL nsACString_Init(nsACString *str, const char *data) @@ -1118,9 +1115,6 @@ if(cat_mgr) nsICategoryManager_Release(cat_mgr); - if(nsmem) - nsIMemory_Release(nsmem); - /* Gecko doesn't really support being unloaded */ /* if (hXPCOM) FreeLibrary(hXPCOM); */ diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/mshtml/nsiface.idl wine-staging-1.7.41~ubuntu12.04.1/dlls/mshtml/nsiface.idl --- wine-staging-1.7.40~ubuntu12.04.1/dlls/mshtml/nsiface.idl 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/mshtml/nsiface.idl 2015-04-18 23:36:02.000000000 +0000 @@ -227,21 +227,6 @@ [ object, - uuid(6aef11c4-8615-44a6-9711-98f43805693d), - local -] -interface nsIMemory : nsISupports -{ - void *Alloc(/*size_t*/ int size); - void *Realloc(void *_ptr, /*size_t*/ int newSize); - void Free(void *_ptr); - nsresult HeapMinimize(bool immediate); - nsresult IsLowMemory(bool *_retval); - nsresult IsLowMemoryPlatform(bool *_retval); -} - -[ - object, uuid(9188bc85-f92e-11d2-81ef-0060083a0bcf), local ] @@ -2918,7 +2903,6 @@ nsresult SetDisplayPortMarginsForElement(float aLeftMargin, float aTopMargin, float aRightMargin, float aBottomMargin, uint32_t aAlignmentX, uint32_t aAlignmentY, nsIDOMElement *aElement, uint32_t aPriority); nsresult SetDisplayPortBaseForElement(int32_t aX, int32_t aY, int32_t aWidth, int32_t aHeight, nsIDOMElement *aElement); - nsresult SetCriticalDisplayPortForElement(float aXPx, float aYPx, float aWidthPx, float aHeightPx, nsIDOMElement *aElement); nsresult SetResolution(float aXResolution, float aYResolution); nsresult GetResolution(float *aXResolution, float *aYResolution); nsresult GetIsResolutionSet(bool *aIsResolutionSet); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/mshtml/pluginhost.c wine-staging-1.7.41~ubuntu12.04.1/dlls/mshtml/pluginhost.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/mshtml/pluginhost.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/mshtml/pluginhost.c 2015-04-18 23:36:02.000000000 +0000 @@ -37,9 +37,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(mshtml); -const IID IID_HTMLPluginContainer = - {0xbd7a6050,0xb373,0x4f6f,{0xa4,0x93,0xdd,0x40,0xc5,0x23,0xa8,0x6a}}; - static BOOL check_load_safety(PluginHost *host) { DWORD policy_size, policy; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/mshtml/pluginhost.h wine-staging-1.7.41~ubuntu12.04.1/dlls/mshtml/pluginhost.h --- wine-staging-1.7.40~ubuntu12.04.1/dlls/mshtml/pluginhost.h 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/mshtml/pluginhost.h 2015-04-18 23:36:02.000000000 +0000 @@ -58,6 +58,8 @@ DWORD props_len; }; +DEFINE_GUID(IID_HTMLPluginContainer, 0xbd7a6050,0xb373,0x4f6f,0xa4,0x93,0xdd,0x40,0xc5,0x23,0xa8,0x6a); + extern const IID IID_HTMLPluginContainer DECLSPEC_HIDDEN; HRESULT create_plugin_host(HTMLDocumentNode*,HTMLPluginContainer*) DECLSPEC_HIDDEN; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/mshtml/script.c wine-staging-1.7.41~ubuntu12.04.1/dlls/mshtml/script.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/mshtml/script.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/mshtml/script.c 2015-04-18 23:36:02.000000000 +0000 @@ -1509,8 +1509,11 @@ else bind_node_event(doc, event_target, target_node, event, event_disp); - if(target_node) + if(target_node) { IHTMLDOMNode_Release(&target_node->IHTMLDOMNode_iface); + if(plugin_container) + node_release(&plugin_container->element.node); + } } heap_free(event); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/msi/assembly.c wine-staging-1.7.41~ubuntu12.04.1/dlls/msi/assembly.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/msi/assembly.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/msi/assembly.c 2015-04-18 23:36:02.000000000 +0000 @@ -38,6 +38,8 @@ static HRESULT (WINAPI *pCreateAssemblyCacheSxs)( IAssemblyCache **, DWORD ); static HRESULT (WINAPI *pLoadLibraryShim)( LPCWSTR, LPCWSTR, LPVOID, HMODULE * ); static HRESULT (WINAPI *pGetFileVersion)( LPCWSTR, LPWSTR, DWORD, DWORD * ); +static HRESULT (WINAPI *pCreateAssemblyNameObject)( IAssemblyName **, LPCWSTR, DWORD, LPVOID ); +static HRESULT (WINAPI *pCreateAssemblyEnum)( IAssemblyEnum **, IUnknown *, IAssemblyName *, DWORD, LPVOID ); static HMODULE hfusion10, hfusion11, hfusion20, hfusion40, hmscoree, hsxs; @@ -79,8 +81,11 @@ pCreateAssemblyCacheNet20 = (void *)GetProcAddress( hfusion20, "CreateAssemblyCache" ); if (!pLoadLibraryShim( szFusion, szVersion40, NULL, &hfusion40 )) + { pCreateAssemblyCacheNet40 = (void *)GetProcAddress( hfusion40, "CreateAssemblyCache" ); - + pCreateAssemblyNameObject = (void *)GetProcAddress( hfusion40, "CreateAssemblyNameObject" ); + pCreateAssemblyEnum = (void *)GetProcAddress( hfusion40, "CreateAssemblyEnum" ); + } return TRUE; } @@ -259,6 +264,70 @@ return FALSE; } +WCHAR *msi_get_assembly_path( MSIPACKAGE *package, const WCHAR *displayname ) +{ + HRESULT hr; + ASSEMBLY_INFO info; + IAssemblyCache *cache = package->cache_net[CLR_VERSION_V40]; + + if (!cache) return NULL; + + memset( &info, 0, sizeof(info) ); + info.cbAssemblyInfo = sizeof(info); + hr = IAssemblyCache_QueryAssemblyInfo( cache, 0, displayname, &info ); + if (hr != E_NOT_SUFFICIENT_BUFFER) return NULL; + + if (!(info.pszCurrentAssemblyPathBuf = msi_alloc( info.cchBuf * sizeof(WCHAR) ))) return NULL; + + hr = IAssemblyCache_QueryAssemblyInfo( cache, 0, displayname, &info ); + if (FAILED( hr )) + { + msi_free( info.pszCurrentAssemblyPathBuf ); + return NULL; + } + TRACE("returning %s\n", debugstr_w(info.pszCurrentAssemblyPathBuf)); + return info.pszCurrentAssemblyPathBuf; +} + +IAssemblyEnum *msi_create_assembly_enum( MSIPACKAGE *package, const WCHAR *displayname ) +{ + HRESULT hr; + IAssemblyName *name; + IAssemblyEnum *ret; + WCHAR *str; + UINT len = 0; + + if (!pCreateAssemblyNameObject || !pCreateAssemblyEnum) return NULL; + + hr = pCreateAssemblyNameObject( &name, displayname, CANOF_PARSE_DISPLAY_NAME, NULL ); + if (FAILED( hr )) return NULL; + + hr = IAssemblyName_GetName( name, &len, NULL ); + if (hr != E_NOT_SUFFICIENT_BUFFER || !(str = msi_alloc( len * sizeof(WCHAR) ))) + { + IAssemblyName_Release( name ); + return NULL; + } + + hr = IAssemblyName_GetName( name, &len, str ); + IAssemblyName_Release( name ); + if (FAILED( hr )) + { + msi_free( str ); + return NULL; + } + + hr = pCreateAssemblyNameObject( &name, str, 0, NULL ); + msi_free( str ); + if (FAILED( hr )) return NULL; + + hr = pCreateAssemblyEnum( &ret, NULL, name, ASM_CACHE_GAC, NULL ); + IAssemblyName_Release( name ); + if (FAILED( hr )) return NULL; + + return ret; +} + static const WCHAR clr_version_v10[] = {'v','1','.','0','.','3','7','0','5',0}; static const WCHAR clr_version_v11[] = {'v','1','.','1','.','4','3','2','2',0}; static const WCHAR clr_version_v20[] = {'v','2','.','0','.','5','0','7','2','7',0}; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/msi/files.c wine-staging-1.7.41~ubuntu12.04.1/dlls/msi/files.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/msi/files.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/msi/files.c 2015-04-18 23:36:02.000000000 +0000 @@ -32,6 +32,8 @@ #include +#define COBJMACROS + #include "windef.h" #include "winbase.h" #include "winerror.h" @@ -61,6 +63,28 @@ msi_ui_progress( package, 2, f->FileSize, 0, 0 ); } +static BOOL is_registered_patch_media( MSIPACKAGE *package, UINT disk_id ) +{ + MSIPATCHINFO *patch; + + LIST_FOR_EACH_ENTRY( patch, &package->patches, MSIPATCHINFO, entry ) + { + if (patch->disk_id == disk_id && patch->registered) return TRUE; + } + return FALSE; +} + +static BOOL is_obsoleted_by_patch( MSIPACKAGE *package, MSIFILE *file ) +{ + if (!list_empty( &package->patches ) && file->disk_id < MSI_INITIAL_MEDIA_TRANSFORM_DISKID) + { + if (!msi_get_property_int( package->db, szInstalled, 0 )) return FALSE; + return TRUE; + } + if (is_registered_patch_media( package, file->disk_id )) return TRUE; + return FALSE; +} + static msi_file_state calculate_install_state( MSIPACKAGE *package, MSIFILE *file ) { MSICOMPONENT *comp = file->Component; @@ -75,9 +99,9 @@ TRACE("skipping %s (not scheduled for install)\n", debugstr_w(file->File)); return msifs_skipped; } - if (!list_empty( &package->patches ) && file->disk_id < MSI_INITIAL_MEDIA_TRANSFORM_DISKID) + if (is_obsoleted_by_patch( package, file )) { - TRACE("skipping %s (not part of patch)\n", debugstr_w(file->File)); + TRACE("skipping %s (obsoleted by patch)\n", debugstr_w(file->File)); return msifs_skipped; } if ((msi_is_global_assembly( comp ) && !comp->assembly->installed) || @@ -455,7 +479,19 @@ if (action == MSICABEXTRACT_BEGINEXTRACT) { - if (!(patch = find_filepatch( package, patch->disk_id, file ))) return FALSE; + MSICOMPONENT *comp; + + if (is_registered_patch_media( package, patch->disk_id ) || + !(patch = find_filepatch( package, patch->disk_id, file ))) return FALSE; + + comp = patch->File->Component; + comp->Action = msi_get_component_action( package, comp ); + if (!comp->Enabled || comp->Action != INSTALLSTATE_LOCAL) + { + TRACE("file %s component %s not installed or disabled\n", + debugstr_w(patch->File->File), debugstr_w(comp->Component)); + return FALSE; + } patch->path = msi_create_temp_file( package->db ); *path = strdupW( patch->path ); @@ -470,6 +506,78 @@ return TRUE; } +static UINT patch_file( MSIPACKAGE *package, MSIFILEPATCH *patch ) +{ + UINT r = ERROR_SUCCESS; + WCHAR *tmpfile = msi_create_temp_file( package->db ); + + if (!tmpfile) return ERROR_INSTALL_FAILURE; + if (ApplyPatchToFileW( patch->path, patch->File->TargetPath, tmpfile, 0 )) + { + DeleteFileW( patch->File->TargetPath ); + MoveFileW( tmpfile, patch->File->TargetPath ); + } + else + { + WARN("failed to patch %s: %08x\n", debugstr_w(patch->File->TargetPath), GetLastError()); + r = ERROR_INSTALL_FAILURE; + } + DeleteFileW( patch->path ); + DeleteFileW( tmpfile ); + msi_free( tmpfile ); + return r; +} + +static UINT patch_assembly( MSIPACKAGE *package, MSIASSEMBLY *assembly, MSIFILEPATCH *patch ) +{ + UINT r = ERROR_FUNCTION_FAILED; + IAssemblyName *name; + IAssemblyEnum *iter; + + if (!(iter = msi_create_assembly_enum( package, assembly->display_name ))) + return ERROR_FUNCTION_FAILED; + + while ((IAssemblyEnum_GetNextAssembly( iter, NULL, &name, 0 ) == S_OK)) + { + WCHAR *displayname, *path; + UINT len = 0; + HRESULT hr; + + hr = IAssemblyName_GetDisplayName( name, NULL, &len, 0 ); + if (hr != E_NOT_SUFFICIENT_BUFFER || !(displayname = msi_alloc( len * sizeof(WCHAR) ))) + break; + + hr = IAssemblyName_GetDisplayName( name, displayname, &len, 0 ); + if (FAILED( hr )) + { + msi_free( displayname ); + break; + } + + if ((path = msi_get_assembly_path( package, displayname ))) + { + if (!CopyFileW( path, patch->File->TargetPath, FALSE )) + { + ERR("Failed to copy file %s -> %s (%u)\n", debugstr_w(path), + debugstr_w(patch->File->TargetPath), GetLastError() ); + msi_free( path ); + msi_free( displayname ); + IAssemblyName_Release( name ); + break; + } + r = patch_file( package, patch ); + msi_free( path ); + } + + msi_free( displayname ); + IAssemblyName_Release( name ); + if (r == ERROR_SUCCESS) break; + } + + IAssemblyEnum_Release( iter ); + return r; +} + UINT ACTION_PatchFiles( MSIPACKAGE *package ) { MSIFILEPATCH *patch; @@ -526,34 +634,28 @@ LIST_FOR_EACH_ENTRY( patch, &package->filepatches, MSIFILEPATCH, entry ) { - WCHAR *tmpfile; - BOOL ret; + MSICOMPONENT *comp = patch->File->Component; if (!patch->path) continue; - if (!(tmpfile = msi_create_temp_file( package->db ))) - { - rc = ERROR_INSTALL_FAILURE; - goto done; - } - ret = ApplyPatchToFileW( patch->path, patch->File->TargetPath, tmpfile, 0 ); - if (ret) - { - DeleteFileW( patch->File->TargetPath ); - MoveFileW( tmpfile, patch->File->TargetPath ); - } + if (msi_is_global_assembly( comp )) + rc = patch_assembly( package, comp->assembly, patch ); else - WARN("failed to patch %s: %08x\n", debugstr_w(patch->File->TargetPath), GetLastError()); + rc = patch_file( package, patch ); - DeleteFileW( patch->path ); - DeleteFileW( tmpfile ); - msi_free( tmpfile ); - - if (!ret && !(patch->Attributes & msidbPatchAttributesNonVital)) + if (rc && !(patch->Attributes & msidbPatchAttributesNonVital)) { ERR("Failed to apply patch to file: %s\n", debugstr_w(patch->File->File)); - rc = ERROR_INSTALL_FAILURE; - goto done; + break; + } + + if (msi_is_global_assembly( comp )) + { + if ((rc = msi_install_assembly( package, comp ))) + { + ERR("Failed to install patched assembly\n"); + break; + } } } diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/msi/media.c wine-staging-1.7.41~ubuntu12.04.1/dlls/msi/media.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/msi/media.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/msi/media.c 2015-04-18 23:36:02.000000000 +0000 @@ -54,8 +54,9 @@ static BOOL source_matches_volume(MSIMEDIAINFO *mi, LPCWSTR source_root) { - WCHAR volume_name[MAX_PATH + 1]; - WCHAR root[MAX_PATH + 1]; + WCHAR volume_name[MAX_PATH + 1], root[MAX_PATH + 1]; + const WCHAR *p; + int len, len2; strcpyW(root, source_root); PathStripToRootW(root); @@ -66,7 +67,13 @@ WARN("failed to get volume information for %s (%u)\n", debugstr_w(root), GetLastError()); return FALSE; } - return !strcmpiW( mi->volume_label, volume_name ); + + len = strlenW( volume_name ); + len2 = strlenW( mi->volume_label ); + if (len2 > len) return FALSE; + p = volume_name + len - len2; + + return !strcmpiW( mi->volume_label, p ); } static UINT msi_change_media(MSIPACKAGE *package, MSIMEDIAINFO *mi) diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/msi/msi.c wine-staging-1.7.41~ubuntu12.04.1/dlls/msi/msi.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/msi/msi.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/msi/msi.c 2015-04-18 23:36:02.000000000 +0000 @@ -487,7 +487,7 @@ r = MSI_ApplyPatchW(patch, szProductCode, szPropertiesList); msi_free(patch); - if (r != ERROR_SUCCESS) + if (r != ERROR_SUCCESS || !*end) break; beg = ++end; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/msi/msipriv.h wine-staging-1.7.41~ubuntu12.04.1/dlls/msi/msipriv.h --- wine-staging-1.7.40~ubuntu12.04.1/dlls/msi/msipriv.h 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/msi/msipriv.h 2015-04-18 23:36:02.000000000 +0000 @@ -193,6 +193,7 @@ LPWSTR localfile; MSIPATCHSTATE state; BOOL delete_on_close; + BOOL registered; UINT disk_id; } MSIPATCHINFO; @@ -1041,6 +1042,8 @@ extern BOOL msi_init_assembly_caches(MSIPACKAGE *) DECLSPEC_HIDDEN; extern void msi_destroy_assembly_caches(MSIPACKAGE *) DECLSPEC_HIDDEN; extern BOOL msi_is_global_assembly(MSICOMPONENT *) DECLSPEC_HIDDEN; +extern IAssemblyEnum *msi_create_assembly_enum(MSIPACKAGE *, const WCHAR *) DECLSPEC_HIDDEN; +extern WCHAR *msi_get_assembly_path(MSIPACKAGE *, const WCHAR *) DECLSPEC_HIDDEN; extern WCHAR *msi_font_version_from_file(const WCHAR *) DECLSPEC_HIDDEN; extern WCHAR **msi_split_string(const WCHAR *, WCHAR) DECLSPEC_HIDDEN; extern UINT msi_set_original_database_property(MSIDATABASE *, const WCHAR *) DECLSPEC_HIDDEN; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/msi/patch.c wine-staging-1.7.41~ubuntu12.04.1/dlls/msi/patch.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/msi/patch.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/msi/patch.c 2015-04-18 23:36:02.000000000 +0000 @@ -918,6 +918,7 @@ goto done; r = ERROR_OUTOFMEMORY; + patch->registered = FALSE; if (!(patch->filename = strdupW( file ))) goto done; if (!(patch->localfile = strdupW( localfile ))) goto done; @@ -1034,6 +1035,7 @@ msiobj_release( &patch_db->hdr ); return r; } + patch_info->registered = TRUE; patch_info->localfile = strdupW( patch_file ); if (!patch_info->localfile) { diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/msvcp60/ios.c wine-staging-1.7.41~ubuntu12.04.1/dlls/msvcp60/ios.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/msvcp60/ios.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/msvcp60/ios.c 2015-04-18 23:36:02.000000000 +0000 @@ -69,7 +69,9 @@ int state; basic_string_char *str; MSVCP_bool close; +#if _MSVCP_VER <= 70 locale loc; +#endif FILE *file; } basic_filebuf_char; @@ -80,7 +82,9 @@ int state; basic_string_char *str; MSVCP_bool close; +#if _MSVCP_VER <= 70 locale loc; +#endif FILE *file; } basic_filebuf_wchar; @@ -307,6 +311,12 @@ */ } strstream; +#if _MSVCP_VER >= 100 +#define VBTABLE_ALIGN 8 +#else +#define VBTABLE_ALIGN 4 +#endif + extern const vtable_ptr MSVCP_iosb_vtable; /* ??_7ios_base@std@@6B@ */ @@ -349,48 +359,48 @@ extern const vtable_ptr MSVCP_basic_stringbuf_short_vtable; /* ??_8?$basic_ostream@DU?$char_traits@D@std@@@std@@7B@ */ -const int basic_ostream_char_vbtable[] = {0, sizeof(basic_ostream_char)}; +const int basic_ostream_char_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_ostream_char), VBTABLE_ALIGN)}; /* ??_7?$basic_ostream@DU?$char_traits@D@std@@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_ostream_char_vtable; /* ??_8?$basic_ostream@_WU?$char_traits@_W@std@@@std@@7B@ */ -const int basic_ostream_wchar_vbtable[] = {0, sizeof(basic_ostream_wchar)}; +const int basic_ostream_wchar_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_ostream_wchar), VBTABLE_ALIGN)}; /* ??_7?$basic_ostream@_WU?$char_traits@_W@std@@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_ostream_wchar_vtable; /* ??_8?$basic_ostream@GU?$char_traits@G@std@@@std@@7B@ */ -const int basic_ostream_short_vbtable[] = {0, sizeof(basic_ostream_wchar)}; +const int basic_ostream_short_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_ostream_wchar), VBTABLE_ALIGN)}; /* ??_7?$basic_ostream@GU?$char_traits@G@std@@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_ostream_short_vtable; /* ??_8?$basic_istream@DU?$char_traits@D@std@@@std@@7B@ */ -const int basic_istream_char_vbtable[] = {0, sizeof(basic_istream_char)}; +const int basic_istream_char_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_istream_char), VBTABLE_ALIGN)}; /* ??_7?$basic_istream@DU?$char_traits@D@std@@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_istream_char_vtable; /* ??_8?$basic_istream@_WU?$char_traits@_W@std@@@std@@7B@ */ -const int basic_istream_wchar_vbtable[] = {0, sizeof(basic_istream_wchar)}; +const int basic_istream_wchar_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_istream_wchar), VBTABLE_ALIGN)}; /* ??_7?$basic_istream@_WU?$char_traits@_W@std@@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_istream_wchar_vtable; /* ??_8?$basic_istream@GU?$char_traits@G@std@@@std@@7B@ */ -const int basic_istream_short_vbtable[] = {0, sizeof(basic_istream_wchar)}; +const int basic_istream_short_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_istream_wchar), VBTABLE_ALIGN)}; /* ??_7?$basic_istream@GU?$char_traits@G@std@@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_istream_short_vtable; /* ??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */ -const int basic_iostream_char_vbtable1[] = {0, sizeof(basic_iostream_char)}; +const int basic_iostream_char_vbtable1[] = {0, ALIGNED_SIZE(sizeof(basic_iostream_char), VBTABLE_ALIGN)}; /* ??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */ -const int basic_iostream_char_vbtable2[] = {0, sizeof(basic_iostream_char)-FIELD_OFFSET(basic_iostream_char, base2)}; +const int basic_iostream_char_vbtable2[] = {0, ALIGNED_SIZE(sizeof(basic_iostream_char), VBTABLE_ALIGN)-FIELD_OFFSET(basic_iostream_char, base2)}; /* ??_7?$basic_iostream@DU?$char_traits@D@std@@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_iostream_char_vtable; /* ??_8?$basic_iostream@_WU?$char_traits@_W@std@@@std@@7B?$basic_istream@_WU?$char_traits@_W@std@@@1@@ */ /* ??_8?$basic_iostream@GU?$char_traits@G@std@@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@ */ -const int basic_iostream_wchar_vbtable1[] = {0, sizeof(basic_iostream_wchar)}; +const int basic_iostream_wchar_vbtable1[] = {0, ALIGNED_SIZE(sizeof(basic_iostream_wchar), VBTABLE_ALIGN)}; /* ??_8?$basic_iostream@_WU?$char_traits@_W@std@@@std@@7B?$basic_ostream@_WU?$char_traits@_W@std@@@1@@ */ /* ??_8?$basic_iostream@GU?$char_traits@G@std@@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@ */ -const int basic_iostream_wchar_vbtable2[] = {0, sizeof(basic_iostream_wchar)-FIELD_OFFSET(basic_iostream_wchar, base2)}; +const int basic_iostream_wchar_vbtable2[] = {0, ALIGNED_SIZE(sizeof(basic_iostream_wchar), VBTABLE_ALIGN)-FIELD_OFFSET(basic_iostream_wchar, base2)}; /* ??_7?$basic_iostream@_WU?$char_traits@_W@std@@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_iostream_wchar_vtable; /* ??_7?$basic_iostream@GU?$char_traits@G@std@@@std@@6B@ */ @@ -681,12 +691,19 @@ VTABLE_ADD_FUNC(basic_ios_wchar_vector_dtor)); __ASM_VTABLE(basic_streambuf_char, VTABLE_ADD_FUNC(basic_streambuf_char_vector_dtor) +#if _MSVCP_VER >= 100 + VTABLE_ADD_FUNC(basic_streambuf_char__Lock) + VTABLE_ADD_FUNC(basic_streambuf_char__Unlock) +#endif VTABLE_ADD_FUNC(basic_streambuf_char_overflow) VTABLE_ADD_FUNC(basic_streambuf_char_pbackfail) VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc) VTABLE_ADD_FUNC(basic_streambuf_char_underflow) VTABLE_ADD_FUNC(basic_streambuf_char_uflow) VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn) +#if _MSVCP_VER >= 80 && _MSVCP_VER <= 90 + VTABLE_ADD_FUNC(basic_streambuf_char__Xsgetn_s) +#endif VTABLE_ADD_FUNC(basic_streambuf_char_xsputn) VTABLE_ADD_FUNC(basic_streambuf_char_seekoff) VTABLE_ADD_FUNC(basic_streambuf_char_seekpos) @@ -695,12 +712,19 @@ VTABLE_ADD_FUNC(basic_streambuf_char_imbue)); __ASM_VTABLE(basic_streambuf_wchar, VTABLE_ADD_FUNC(basic_streambuf_wchar_vector_dtor) +#if _MSVCP_VER >= 100 + VTABLE_ADD_FUNC(basic_streambuf_wchar__Lock) + VTABLE_ADD_FUNC(basic_streambuf_wchar__Unlock) +#endif VTABLE_ADD_FUNC(basic_streambuf_wchar_overflow) VTABLE_ADD_FUNC(basic_streambuf_wchar_pbackfail) VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc) VTABLE_ADD_FUNC(basic_streambuf_wchar_underflow) VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow) VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn) +#if _MSVCP_VER >= 80 && _MSVCP_VER <= 90 + VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s) +#endif VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn) VTABLE_ADD_FUNC(basic_streambuf_wchar_seekoff) VTABLE_ADD_FUNC(basic_streambuf_wchar_seekpos) @@ -709,12 +733,19 @@ VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue)); __ASM_VTABLE(basic_streambuf_short, VTABLE_ADD_FUNC(basic_streambuf_wchar_vector_dtor) +#if _MSVCP_VER >= 100 + VTABLE_ADD_FUNC(basic_streambuf_wchar__Lock) + VTABLE_ADD_FUNC(basic_streambuf_wchar__Unlock) +#endif VTABLE_ADD_FUNC(basic_streambuf_wchar_overflow) VTABLE_ADD_FUNC(basic_streambuf_wchar_pbackfail) VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc) VTABLE_ADD_FUNC(basic_streambuf_wchar_underflow) VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow) VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn) +#if _MSVCP_VER >= 80 && _MSVCP_VER <= 90 + VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s) +#endif VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn) VTABLE_ADD_FUNC(basic_streambuf_wchar_seekoff) VTABLE_ADD_FUNC(basic_streambuf_wchar_seekpos) @@ -723,12 +754,19 @@ VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue)); __ASM_VTABLE(basic_filebuf_char, VTABLE_ADD_FUNC(basic_filebuf_char_vector_dtor) +#if _MSVCP_VER >= 100 + VTABLE_ADD_FUNC(basic_streambuf_char__Lock) + VTABLE_ADD_FUNC(basic_streambuf_char__Unlock) +#endif VTABLE_ADD_FUNC(basic_filebuf_char_overflow) VTABLE_ADD_FUNC(basic_filebuf_char_pbackfail) VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc) VTABLE_ADD_FUNC(basic_filebuf_char_underflow) VTABLE_ADD_FUNC(basic_filebuf_char_uflow) VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn) +#if _MSVCP_VER >= 80 && _MSVCP_VER <= 90 + VTABLE_ADD_FUNC(basic_streambuf_char__Xsgetn_s) +#endif VTABLE_ADD_FUNC(basic_streambuf_char_xsputn) VTABLE_ADD_FUNC(basic_filebuf_char_seekoff) VTABLE_ADD_FUNC(basic_filebuf_char_seekpos) @@ -737,12 +775,19 @@ VTABLE_ADD_FUNC(basic_streambuf_char_imbue)); __ASM_VTABLE(basic_filebuf_wchar, VTABLE_ADD_FUNC(basic_filebuf_wchar_vector_dtor) +#if _MSVCP_VER >= 100 + VTABLE_ADD_FUNC(basic_streambuf_wchar__Lock) + VTABLE_ADD_FUNC(basic_streambuf_wchar__Unlock) +#endif VTABLE_ADD_FUNC(basic_filebuf_wchar_overflow) VTABLE_ADD_FUNC(basic_filebuf_wchar_pbackfail) VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc) VTABLE_ADD_FUNC(basic_filebuf_wchar_underflow) VTABLE_ADD_FUNC(basic_filebuf_wchar_uflow) VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn) +#if _MSVCP_VER >= 80 && _MSVCP_VER <= 90 + VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s) +#endif VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn) VTABLE_ADD_FUNC(basic_filebuf_wchar_seekoff) VTABLE_ADD_FUNC(basic_filebuf_wchar_seekpos) @@ -751,12 +796,19 @@ VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue)); __ASM_VTABLE(basic_filebuf_short, VTABLE_ADD_FUNC(basic_filebuf_wchar_vector_dtor) +#if _MSVCP_VER >= 100 + VTABLE_ADD_FUNC(basic_streambuf_wchar__Lock) + VTABLE_ADD_FUNC(basic_streambuf_wchar__Unlock) +#endif VTABLE_ADD_FUNC(basic_filebuf_wchar_overflow) VTABLE_ADD_FUNC(basic_filebuf_wchar_pbackfail) VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc) VTABLE_ADD_FUNC(basic_filebuf_wchar_underflow) VTABLE_ADD_FUNC(basic_filebuf_wchar_uflow) VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn) +#if _MSVCP_VER >= 80 && _MSVCP_VER <= 90 + VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s) +#endif VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn) VTABLE_ADD_FUNC(basic_filebuf_wchar_seekoff) VTABLE_ADD_FUNC(basic_filebuf_wchar_seekpos) @@ -771,6 +823,9 @@ VTABLE_ADD_FUNC(basic_stringbuf_char_underflow) VTABLE_ADD_FUNC(basic_streambuf_char_uflow) VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn) +#if _MSVCP_VER >= 80 && _MSVCP_VER <= 90 + VTABLE_ADD_FUNC(basic_streambuf_char__Xsgetn_s) +#endif VTABLE_ADD_FUNC(basic_streambuf_char_xsputn) VTABLE_ADD_FUNC(basic_stringbuf_char_seekoff) VTABLE_ADD_FUNC(basic_stringbuf_char_seekpos) @@ -785,6 +840,9 @@ VTABLE_ADD_FUNC(basic_stringbuf_wchar_underflow) VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow) VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn) +#if _MSVCP_VER >= 80 && _MSVCP_VER <= 90 + VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s) +#endif VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn) VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekoff) VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekpos) @@ -799,6 +857,9 @@ VTABLE_ADD_FUNC(basic_stringbuf_wchar_underflow) VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow) VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn) +#if _MSVCP_VER >= 80 && _MSVCP_VER <= 90 + VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s) +#endif VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn) VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekoff) VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekpos) @@ -867,6 +928,9 @@ VTABLE_ADD_FUNC(strstreambuf_underflow) VTABLE_ADD_FUNC(basic_streambuf_char_uflow) VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn) +#if _MSVCP_VER >= 80 && _MSVCP_VER <= 90 + VTABLE_ADD_FUNC(basic_streambuf_char__Xsgetn_s) +#endif VTABLE_ADD_FUNC(basic_streambuf_char_xsputn) VTABLE_ADD_FUNC(strstreambuf_seekoff) VTABLE_ADD_FUNC(strstreambuf_seekpos) @@ -938,6 +1002,9 @@ { TRACE("(%p %d)\n", this, uninitialized); this->vtable = &MSVCP_basic_streambuf_char_vtable; +#if _MSVCP_VER >= 70 && _MSVCP_VER <= 100 + mutex_ctor(&this->lock); +#endif return this; } @@ -949,6 +1016,12 @@ TRACE("(%p)\n", this); this->vtable = &MSVCP_basic_streambuf_char_vtable; +#if _MSVCP_VER >= 70 && _MSVCP_VER <= 100 + mutex_ctor(&this->lock); +#endif +#if _MSVCP_VER >= 70 + this->loc = MSVCRT_operator_new(sizeof(locale)); +#endif locale_ctor(IOS_LOCALE(this)); basic_streambuf_char__Init_empty(this); @@ -962,7 +1035,13 @@ { TRACE("(%p)\n", this); +#if _MSVCP_VER >= 70 && _MSVCP_VER <= 100 + mutex_dtor(&this->lock); +#endif locale_dtor(IOS_LOCALE(this)); +#if _MSVCP_VER >= 70 + MSVCRT_operator_delete(this->loc); +#endif } DEFINE_THISCALL_WRAPPER(basic_streambuf_char_vector_dtor, 8) @@ -1052,6 +1131,9 @@ void __thiscall basic_streambuf_char__Lock(basic_streambuf_char *this) { TRACE("(%p)\n", this); +#if _MSVCP_VER >= 70 && _MSVCP_VER <= 100 + mutex_lock(&this->lock); +#endif } /* ?_Pnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEHXZ */ @@ -1177,6 +1259,9 @@ void __thiscall basic_streambuf_char__Unlock(basic_streambuf_char *this) { TRACE("(%p)\n", this); +#if _MSVCP_VER >= 70 && _MSVCP_VER <= 100 + mutex_unlock(&this->lock); +#endif } /* ?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */ @@ -1225,6 +1310,17 @@ *this->prsize -= off; } +/* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@XZ */ +/* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QBE?AVlocale@2@XZ */ +/* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@XZ */ +/* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEBA?AVlocale@2@XZ */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_getloc, 8) +locale* __thiscall basic_streambuf_char_getloc(const basic_streambuf_char *this, locale *ret) +{ + TRACE("(%p)\n", this); + return locale_copy_ctor(ret, IOS_LOCALE(this)); +} + /* ?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEXABVlocale@2@@Z */ /* ?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAXAEBVlocale@2@@Z */ DEFINE_THISCALL_WRAPPER(basic_streambuf_char_imbue, 8) @@ -1352,6 +1448,20 @@ return call_basic_streambuf_char_seekoff(this, ret, off, way, mode); } +/* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */ +/* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */ +#if STREAMOFF_BITS == 64 +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff_old, 24) +#else +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff_old, 20) +#endif +fpos_int* __thiscall basic_streambuf_char_pubseekoff_old(basic_streambuf_char *this, + fpos_int *ret, streamoff off, unsigned int way, unsigned int mode) +{ + TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode); + return basic_streambuf_char_pubseekoff(this, ret, off, way, mode); +} + /* ?seekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */ /* ?seekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */ DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekpos, 36) @@ -1382,6 +1492,16 @@ return call_basic_streambuf_char_seekpos(this, ret, pos, mode); } +/* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */ +/* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekpos_old, 36) +fpos_int* __thiscall basic_streambuf_char_pubseekpos_old(basic_streambuf_char *this, + fpos_int *ret, fpos_int pos, unsigned int mode) +{ + TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode); + return basic_streambuf_char_pubseekpos(this, ret, pos, mode); +} + /* ?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEPAV12@PADH@Z */ /* ?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAPEAV12@PEAD_J@Z */ #if STREAMSIZE_BITS == 64 @@ -1637,13 +1757,23 @@ return call_basic_streambuf_char_xsputn(this, ptr, count); } -/* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@XZ */ -/* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@XZ */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_getloc, 8) -locale* __thiscall basic_streambuf_char_getloc(basic_streambuf_char *this, locale *ret) +/* ?swap@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXAAV12@@Z */ +/* ?swap@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXAEAV12@@Z */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_swap, 8) +void __thiscall basic_streambuf_char_swap(basic_streambuf_char *this, basic_streambuf_char *r) { - TRACE("(%p %p)\n", this, ret); - return locale_copy_ctor(ret, IOS_LOCALE(this)); + basic_streambuf_char tmp; + + TRACE("(%p %p)\n", this, r); + + if(this == r) + return; + + tmp = *this; + *this = *r; + this->vtable = tmp.vtable; + tmp.vtable = r->vtable; + *r = tmp; } /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPA_W00@Z */ @@ -1711,6 +1841,9 @@ { TRACE("(%p %d)\n", this, uninitialized); this->vtable = &MSVCP_basic_streambuf_wchar_vtable; +#if _MSVCP_VER >= 70 && _MSVCP_VER <= 100 + mutex_ctor(&this->lock); +#endif return this; } @@ -1733,6 +1866,12 @@ TRACE("(%p)\n", this); this->vtable = &MSVCP_basic_streambuf_wchar_vtable; +#if _MSVCP_VER >= 70 && _MSVCP_VER <= 100 + mutex_ctor(&this->lock); +#endif +#if _MSVCP_VER >= 70 + this->loc = MSVCRT_operator_new(sizeof(locale)); +#endif locale_ctor(IOS_LOCALE(this)); basic_streambuf_wchar__Init_empty(this); @@ -1759,7 +1898,13 @@ { TRACE("(%p)\n", this); +#if _MSVCP_VER >= 70 && _MSVCP_VER <= 100 + mutex_dtor(&this->lock); +#endif locale_dtor(IOS_LOCALE(this)); +#if _MSVCP_VER >= 70 + MSVCRT_operator_delete(this->loc); +#endif } DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_vector_dtor, 8) @@ -1856,6 +2001,9 @@ void __thiscall basic_streambuf_wchar__Lock(basic_streambuf_wchar *this) { TRACE("(%p)\n", this); +#if _MSVCP_VER >= 70 && _MSVCP_VER <= 100 + mutex_lock(&this->lock); +#endif } /* ?_Pnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEHXZ */ @@ -1990,6 +2138,9 @@ void __thiscall basic_streambuf_wchar__Unlock(basic_streambuf_wchar *this) { TRACE("(%p)\n", this); +#if _MSVCP_VER >= 70 && _MSVCP_VER <= 100 + mutex_unlock(&this->lock); +#endif } /* ?eback@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */ @@ -2048,6 +2199,17 @@ *this->prsize -= off; } +/* ?getloc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QBE?AVlocale@2@XZ */ +/* ?getloc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEBA?AVlocale@2@XZ */ +/* ?getloc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QBE?AVlocale@2@XZ */ +/* ?getloc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEBA?AVlocale@2@XZ */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_getloc, 8) +locale* __thiscall basic_streambuf_wchar_getloc(const basic_streambuf_wchar *this, locale *ret) +{ + TRACE("(%p)\n", this); + return locale_copy_ctor(ret, IOS_LOCALE(this)); +} + /* ?imbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEXABVlocale@2@@Z */ /* ?imbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAXAEBVlocale@2@@Z */ /* ?imbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEXABVlocale@2@@Z */ @@ -2193,6 +2355,22 @@ return call_basic_streambuf_wchar_seekoff(this, ret, off, way, mode); } +/* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */ +/* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */ +/* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */ +/* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */ +#if STREAMOFF_BITS == 64 +DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekoff_old, 24) +#else +DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekoff_old, 20) +#endif +fpos_int* __thiscall basic_streambuf_wchar_pubseekoff_old(basic_streambuf_wchar *this, + fpos_int *ret, streamoff off, unsigned int way, unsigned int mode) +{ + TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode); + return basic_streambuf_wchar_pubseekoff(this, ret, off, way, mode); +} + /* ?seekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */ /* ?seekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */ /* ?seekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */ @@ -2227,6 +2405,18 @@ return call_basic_streambuf_wchar_seekpos(this, ret, pos, mode); } +/* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */ +/* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */ +/* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */ +/* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekpos_old, 36) +fpos_int* __thiscall basic_streambuf_wchar_pubseekpos_old(basic_streambuf_wchar *this, + fpos_int *ret, fpos_int pos, unsigned int mode) +{ + TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode); + return basic_streambuf_wchar_pubseekpos(this, ret, pos, mode); +} + /* ?setbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEPAV12@PA_WH@Z */ /* ?setbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAPEAV12@PEA_W_J@Z */ /* ?setbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEPAV12@PAGH@Z */ @@ -2516,6 +2706,27 @@ return call_basic_streambuf_wchar_xsputn(this, ptr, count); } +/* ?swap@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXAAV12@@Z */ +/* ?swap@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXAEAV12@@Z */ +/* ?swap@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXAAV12@@Z */ +/* ?swap@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXAAV12@@Z */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_swap, 8) +void __thiscall basic_streambuf_wchar_swap(basic_streambuf_wchar *this, basic_streambuf_wchar *r) +{ + basic_streambuf_wchar tmp; + + TRACE("(%p %p)\n", this, r); + + if(this == r) + return; + + tmp = *this; + *this = *r; + this->vtable = tmp.vtable; + tmp.vtable = r->vtable; + *r = tmp; +} + /* ?_Stinit@?1??_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@23@@Z@4HA */ /* ?_Stinit@?1??_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@23@@Z@4HA */ int basic_filebuf_char__Init__Stinit = 0; @@ -2541,23 +2752,35 @@ &file->_cnt, &file->_base, &file->_ptr, &file->_cnt); } -/* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXXZ */ -/* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXXZ */ -DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Initcvt, 4) -void __thiscall basic_filebuf_char__Initcvt(basic_filebuf_char *this) +/* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAV?$codecvt@DDH@2@@Z */ +/* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAV?$codecvt@DDH@2@@Z */ +DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Initcvt_cvt, 8) +void __thiscall basic_filebuf_char__Initcvt_cvt(basic_filebuf_char *this, codecvt_char *cvt) { - TRACE("(%p)\n", this); + TRACE("(%p %p)\n", this, cvt); - this->cvt = codecvt_char_use_facet(IOS_LOCALE(&this->base)); - locale__Addfac(&this->loc, &this->cvt->base.facet, codecvt_char_id.id, LC_CTYPE); - if(codecvt_base_always_noconv(&this->cvt->base)) { + if(codecvt_base_always_noconv(&cvt->base)) { this->cvt = NULL; }else { this->str = MSVCRT_operator_new(sizeof(basic_string_char)); MSVCP_basic_string_char_ctor(this->str); + this->cvt = cvt; } } +/* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXXZ */ +/* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXXZ */ +DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Initcvt, 4) +void __thiscall basic_filebuf_char__Initcvt(basic_filebuf_char *this) +{ + codecvt_char *cvt = codecvt_char_use_facet(IOS_LOCALE(&this->base)); + + TRACE("(%p)\n", this); + + locale__Addfac(&this->loc, &cvt->base.facet, codecvt_char_id.id, LC_CTYPE); + basic_filebuf_char__Initcvt_cvt( this, cvt ); +} + /* ?close@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@XZ */ /* ?close@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@XZ */ DEFINE_THISCALL_WRAPPER(basic_filebuf_char_close, 4) @@ -2752,10 +2975,20 @@ return NULL; basic_filebuf_char__Init(this, f, INITFL_open); - basic_filebuf_char__Initcvt(this); + basic_filebuf_char__Initcvt_cvt(this, codecvt_char_use_facet(IOS_LOCALE(&this->base))); return this; } +/* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PB_WI@Z */ +/* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEB_WI@Z */ +/* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBGI@Z */ +/* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBGI@Z */ +DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_wchar_mode, 12) +basic_filebuf_char* __thiscall basic_filebuf_char_open_wchar_mode(basic_filebuf_char *this, const wchar_t *name, unsigned int mode) +{ + return basic_filebuf_char_open_wchar(this, name, mode, SH_DENYNO); +} + /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDHH@Z */ /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDHH@Z */ DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open, 16) @@ -2776,7 +3009,7 @@ basic_filebuf_char* __thiscall basic_filebuf_char_open_mode_old(basic_filebuf_char *this, const char *name, short mode) { TRACE("(%p %p %d)\n", this, name, mode); - return basic_filebuf_char_open(this, name, mode, _SH_DENYNO); + return basic_filebuf_char_open(this, name, mode, SH_DENYNO); } /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDH@Z */ @@ -3023,6 +3256,15 @@ return fflush(this->file); } +/* ?imbue@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEXABVlocale@2@@Z */ +/* ?imbue@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAXAEBVlocale@2@@Z */ +DEFINE_THISCALL_WRAPPER(basic_filebuf_char_imbue, 8) +void __thiscall basic_filebuf_char_imbue(basic_filebuf_char *this, const locale *loc) +{ + TRACE("(%p %p)\n", this, loc); + basic_filebuf_char__Initcvt_cvt(this, codecvt_char_use_facet(loc)); +} + /* ?_Stinit@?1??_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@23@@Z@4HA */ /* ?_Stinit@?1??_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@23@@Z@4HA */ int basic_filebuf_wchar__Init__Stinit = 0; @@ -3067,23 +3309,32 @@ basic_streambuf_wchar__Init_empty(&this->base); } -/* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXXZ */ -/* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXXZ */ -DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Initcvt, 4) -void __thiscall basic_filebuf_wchar__Initcvt(basic_filebuf_wchar *this) +/* ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAV?$codecvt@_WDH@2@@Z */ +/* ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAV?$codecvt@_WDH@2@@Z */ +/* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAV?$codecvt@GDH@2@@Z */ +/* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAV?$codecvt@GDH@2@@Z */ +DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Initcvt_cvt, 8) +void __thiscall basic_filebuf_wchar__Initcvt_cvt(basic_filebuf_wchar *this, codecvt_wchar *cvt) { - TRACE("(%p)\n", this); + TRACE("(%p %p)\n", this, cvt); - this->cvt = codecvt_short_use_facet(IOS_LOCALE(&this->base)); - locale__Addfac(&this->loc, &this->cvt->base.facet, codecvt_short_id.id, LC_CTYPE); - if(codecvt_base_always_noconv(&this->cvt->base)) { + if(codecvt_base_always_noconv(&cvt->base)) { this->cvt = NULL; }else { - this->str = MSVCRT_operator_new(sizeof(basic_string_char)); - MSVCP_basic_string_char_ctor(this->str); + basic_streambuf_wchar__Init_empty(&this->base); + this->cvt = cvt; } } +/* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXXZ */ +/* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXXZ */ +DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Initcvt, 4) +void __thiscall basic_filebuf_wchar__Initcvt(basic_filebuf_wchar *this) +{ + codecvt_wchar *cvt = codecvt_wchar_use_facet(IOS_LOCALE(&this->base)); + basic_filebuf_wchar__Initcvt_cvt( this, cvt ); +} + /* ?close@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@XZ */ /* ?close@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@XZ */ /* ?close@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@XZ */ @@ -3148,6 +3399,18 @@ return basic_filebuf_short_ctor_file(this, NULL); } +/* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAE@W4_Uninitialized@1@@Z */ +/* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAA@W4_Uninitialized@1@@Z */ +DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_ctor_uninitialized, 8) +basic_filebuf_wchar* __thiscall basic_filebuf_wchar_ctor_uninitialized(basic_filebuf_wchar *this, int uninitialized) +{ + TRACE("(%p %d)\n", this, uninitialized); + + basic_streambuf_wchar_ctor(&this->base); + this->base.vtable = &MSVCP_basic_filebuf_wchar_vtable; + return this; +} + /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAE@W4_Uninitialized@1@@Z */ /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAA@W4_Uninitialized@1@@Z */ DEFINE_THISCALL_WRAPPER(basic_filebuf_short_ctor_uninitialized, 8) @@ -3229,10 +3492,52 @@ return NULL; basic_filebuf_wchar__Init(this, f, INITFL_open); - basic_filebuf_wchar__Initcvt(this); + basic_filebuf_wchar__Initcvt_cvt(this, codecvt_wchar_use_facet(IOS_LOCALE(&this->base))); + return this; +} + +/* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PB_WHH@Z */ +/* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEB_WHH@Z */ +/* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBGHH@Z */ +/* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBGHH@Z */ +DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open_wchar, 16) +basic_filebuf_wchar* __thiscall basic_filebuf_short_open_wchar(basic_filebuf_wchar *this, const wchar_t *name, int mode, int prot) +{ + FILE *f = NULL; + + TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot); + + if(basic_filebuf_wchar_is_open(this)) + return NULL; + + if(!(f = _Fiopen_wchar(name, mode, prot))) + return NULL; + + basic_filebuf_short__Init(this, f, INITFL_open); + basic_filebuf_wchar__Initcvt_cvt(this, codecvt_short_use_facet(IOS_LOCALE(&this->base))); return this; } +/* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PB_WI@Z */ +/* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEB_WI@Z */ +/* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBGI@Z */ +/* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBGI@Z */ +DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open_wchar_mode, 12) +basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open_wchar_mode(basic_filebuf_wchar *this, const wchar_t *name, unsigned int mode) +{ + return basic_filebuf_wchar_open_wchar(this, name, mode, SH_DENYNO); +} + +/* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PB_WI@Z */ +/* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEB_WI@Z */ +/* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBGI@Z */ +/* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBGI@Z */ +DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open_wchar_mode, 12) +basic_filebuf_wchar* __thiscall basic_filebuf_short_open_wchar_mode(basic_filebuf_wchar *this, const wchar_t *name, unsigned int mode) +{ + return basic_filebuf_short_open_wchar(this, name, mode, SH_DENYNO); +} + /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBDHH@Z */ /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBDHH@Z */ DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open, 16) @@ -3247,22 +3552,45 @@ return basic_filebuf_wchar_open_wchar(this, nameW, mode, prot); } +/* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDHH@Z */ +/* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDHH@Z */ +DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open, 16) +basic_filebuf_wchar* __thiscall basic_filebuf_short_open(basic_filebuf_wchar *this, const char *name, int mode, int prot) +{ + wchar_t nameW[FILENAME_MAX]; + + TRACE("(%p %s %d %d)\n", this, name, mode, prot); + + if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0) + return NULL; + return basic_filebuf_short_open_wchar(this, nameW, mode, prot); +} + /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDF@Z */ /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDF@Z */ DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open_mode_old, 12) basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open_mode_old(basic_filebuf_wchar *this, const char *name, short mode) { TRACE("(%p %p %d)\n", this, name, mode); - return basic_filebuf_wchar_open(this, name, mode, _SH_DENYNO); + return basic_filebuf_wchar_open(this, name, mode, SH_DENYNO); } /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDH@Z */ /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDH@Z */ +/* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBDI@Z */ +/* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBDI@Z */ DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open_mode, 12) -basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open_mode(basic_filebuf_wchar *this, const char *name, int mode) +basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open_mode(basic_filebuf_wchar *this, const char *name, unsigned int mode) { - TRACE("(%p %p %d)\n", this, name, mode); - return basic_filebuf_wchar_open(this, name, mode, _SH_DENYNO); + return basic_filebuf_wchar_open(this, name, mode, SH_DENYNO); +} + +/* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDI@Z */ +/* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDI@Z */ +DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open_mode, 12) +basic_filebuf_wchar* __thiscall basic_filebuf_short_open_mode(basic_filebuf_wchar *this, const char *name, unsigned int mode) +{ + return basic_filebuf_short_open(this, name, mode, SH_DENYNO); } /* ?overflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */ @@ -3535,6 +3863,24 @@ return fflush(this->file); } +/* ?imbue@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEXABVlocale@2@@Z */ +/* ?imbue@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAXAEBVlocale@2@@Z */ +DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_imbue, 8) +void __thiscall basic_filebuf_wchar_imbue(basic_filebuf_wchar *this, const locale *loc) +{ + TRACE("(%p %p)\n", this, loc); + basic_filebuf_wchar__Initcvt_cvt(this, codecvt_wchar_use_facet(loc)); +} + +/* ?imbue@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEXABVlocale@2@@Z */ +/* ?imbue@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAXAEBVlocale@2@@Z */ +DEFINE_THISCALL_WRAPPER(basic_filebuf_short_imbue, 8) +void __thiscall basic_filebuf_short_imbue(basic_filebuf_wchar *this, const locale *loc) +{ + TRACE("(%p %p)\n", this, loc); + basic_filebuf_wchar__Initcvt_cvt(this, codecvt_short_use_facet(loc)); +} + /* ?_Getstate@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEHH@Z */ /* ?_Getstate@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAHH@Z */ /* ?_Mode@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEHH@Z */ @@ -4398,6 +4744,9 @@ { TRACE("(%p)\n", obj); locale_dtor(IOS_LOCALE(obj)); +#if _MSVCP_VER >= 70 + MSVCRT_operator_delete(obj->loc); +#endif ios_base_Tidy(obj); } @@ -4652,6 +5001,16 @@ return ios_base_fail(this) ? NULL : (void*)this; } +/* ??Bios_base@std@@QBA_NXZ */ +/* ??Bios_base@std@@QBE_NXZ */ +/* ??Bios_base@std@@QEBA_NXZ */ +DEFINE_THISCALL_WRAPPER(ios_base_operator_bool, 4) +MSVCP_bool __thiscall ios_base_operator_bool(const ios_base *this) +{ + TRACE("(%p)\n", this); + return (this->state & (IOSTATE_failbit|IOSTATE_badbit)) == 0; +} + /* ?_Addstd@ios_base@std@@SAXPAV12@@Z */ /* ?_Addstd@ios_base@std@@SAXPEAV12@@Z */ void __cdecl ios_base_Addstd(ios_base *add) @@ -4681,9 +5040,20 @@ this->wide = 0; this->arr = NULL; this->calls = NULL; +#if _MSVCP_VER >= 70 + this->loc = MSVCRT_operator_new(sizeof(locale)); +#endif locale_ctor(IOS_LOCALE(this)); } +/* ?_Sync_func@ios_base@std@@CAAA_NXZ */ +/* ?_Sync_func@ios_base@std@@CAAEA_NXZ */ +MSVCP_bool* __cdecl ios_base_Sync_func(void) +{ + TRACE("\n"); + return &ios_base_Sync; +} + /* ?bad@ios_base@std@@QBE_NXZ */ /* ?bad@ios_base@std@@QEBA_NXZ */ DEFINE_THISCALL_WRAPPER(ios_base_bad, 4) @@ -5146,6 +5516,26 @@ return ctype_char_widen_ch(ctype_char_use_facet(IOS_LOCALE(this->strbuf)), ch); } +/* ?swap@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXAAV12@@Z */ +/* ?swap@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXAEAV12@@Z */ +DEFINE_THISCALL_WRAPPER(basic_ios_char_swap, 8) +void __thiscall basic_ios_char_swap(basic_ios_char *this, basic_ios_char *r) +{ + void *swap_ptr; + + TRACE("(%p %p)\n", this, r); + + if(this == r) + return; + + ios_base_swap(&this->base, &r->base); + swap_ptr = this->stream; + this->stream = r->stream; + r->stream = swap_ptr; + this->fillch ^= r->fillch; + r->fillch ^= this->fillch; + this->fillch ^= r->fillch; +} /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@IAE@XZ */ /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@IEAA@XZ */ @@ -5421,6 +5811,29 @@ return ctype_wchar_widen_ch(ctype_wchar_use_facet(IOS_LOCALE(this->strbuf)), ch); } +/* ?swap@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXAAV12@@Z */ +/* ?swap@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXAEAV12@@Z */ +/* ?swap@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXAAV12@@Z */ +/* ?swap@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXAEAV12@@Z */ +DEFINE_THISCALL_WRAPPER(basic_ios_wchar_swap, 8) +void __thiscall basic_ios_wchar_swap(basic_ios_wchar *this, basic_ios_wchar *r) +{ + void *swap_ptr; + + TRACE("(%p %p)\n", this, r); + + if(this == r) + return; + + ios_base_swap(&this->base, &r->base); + swap_ptr = this->stream; + this->stream = r->stream; + r->stream = swap_ptr; + this->fillch ^= r->fillch; + r->fillch ^= this->fillch; + this->fillch ^= r->fillch; +} + /* Caution: basic_ostream uses virtual inheritance. * All constructors have additional parameter that says if base class should be initialized. * Base class needs to be accessed using vbtable. @@ -5634,6 +6047,30 @@ return this; } +/* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@JH@Z */ +/* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */ +#if STREAMOFF_BITS == 64 +DEFINE_THISCALL_WRAPPER(basic_ostream_char_seekp, 16) +#else +DEFINE_THISCALL_WRAPPER(basic_ostream_char_seekp, 12) +#endif +basic_ostream_char* __thiscall basic_ostream_char_seekp(basic_ostream_char *this, streamoff off, int way) +{ + basic_ios_char *base = basic_ostream_char_get_basic_ios(this); + + TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(off), way); + + if(!ios_base_fail(&base->base)) { + fpos_int seek; + + basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base), + &seek, off, way, OPENMODE_out); + if(seek.off==-1 && seek.pos==0 && seek.state==0) + basic_ios_char_setstate(base, IOSTATE_failbit); + } + return this; +} + /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */ /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */ DEFINE_THISCALL_WRAPPER(basic_ostream_char_seekp_fpos, 28) @@ -6209,6 +6646,20 @@ return this; } +/* ?swap@?$basic_ostream@DU?$char_traits@D@std@@@std@@IAEXAAV12@@Z */ +/* ?swap@?$basic_ostream@DU?$char_traits@D@std@@@std@@IEAAXAEAV12@@Z */ +DEFINE_THISCALL_WRAPPER(basic_ostream_char_swap, 8) +void __thiscall basic_ostream_char_swap(basic_ostream_char *this, basic_ostream_char *r) +{ + TRACE("(%p %p)\n", this, r); + + if(this == r) + return; + + basic_ios_char_swap(basic_ostream_char_get_basic_ios(this), + basic_ostream_char_get_basic_ios(r)); +} + /* Caution: basic_ostream uses virtual inheritance. */ static inline basic_ios_wchar* basic_ostream_wchar_get_basic_ios(basic_ostream_wchar *this) { @@ -6435,7 +6886,33 @@ return this; } -/* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */ +/* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@JH@Z */ +/* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_JH@Z */ +/* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@JH@Z */ +/* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JH@Z */ +#if STREAMOFF_BITS == 64 +DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_seekp, 16) +#else +DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_seekp, 12) +#endif +basic_ostream_wchar* __thiscall basic_ostream_wchar_seekp(basic_ostream_wchar *this, streamoff off, int way) +{ + basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this); + + TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(off), way); + + if(!ios_base_fail(&base->base)) { + fpos_int seek; + + basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base), + &seek, off, way, OPENMODE_out); + if(seek.off==-1 && seek.pos==0 && seek.state==0) + basic_ios_wchar_setstate(base, IOSTATE_failbit); + } + return this; +} + +/* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */ /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */ /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */ /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */ @@ -6528,6 +7005,15 @@ return this; } +/* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@F@Z */ +/* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@F@Z */ +DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_short, 8) +basic_ostream_wchar* __thiscall basic_ostream_wchar_print_short(basic_ostream_wchar *this, short val) +{ + return basic_ostream_print_short(this, val, num_put_wchar_use_facet( + IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))))); +} + /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@F@Z */ /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@F@Z */ DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_short, 8) @@ -6558,6 +7044,15 @@ return this; } +/* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@G@Z */ +/* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@G@Z */ +DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_ushort, 8) +basic_ostream_wchar* __thiscall basic_ostream_wchar_print_ushort(basic_ostream_wchar *this, unsigned short val) +{ + return basic_ostream_print_ushort(this, val, num_put_wchar_use_facet( + IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))))); +} + /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@G@Z */ /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@G@Z */ DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_ushort, 8) @@ -6567,6 +7062,14 @@ IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))))); } +/* ??6std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@G@Z */ +/* ??6std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@G@Z */ +basic_ostream_wchar* __cdecl basic_ostream_short_print_ushort_global(basic_ostream_wchar *ostr, unsigned short val) +{ + return basic_ostream_print_ushort(ostr, val, num_put_short_use_facet( + IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(ostr))))); +} + static basic_ostream_wchar* basic_ostream_print_int(basic_ostream_wchar *this, int val, const num_put *numput) { basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this); @@ -6588,6 +7091,17 @@ return this; } +/* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@H@Z */ +/* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@H@Z */ +/* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@J@Z */ +/* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@J@Z */ +DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_int, 8) +basic_ostream_wchar* __thiscall basic_ostream_wchar_print_int(basic_ostream_wchar *this, int val) +{ + return basic_ostream_print_int(this, val, num_put_wchar_use_facet( + IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))))); +} + /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@H@Z */ /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@H@Z */ /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@J@Z */ @@ -6620,6 +7134,17 @@ return this; } +/* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@I@Z */ +/* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@I@Z */ +/* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@K@Z */ +/* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@K@Z */ +DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_uint, 8) +basic_ostream_wchar* __thiscall basic_ostream_wchar_print_uint(basic_ostream_wchar *this, unsigned int val) +{ + return basic_ostream_print_uint(this, val, num_put_wchar_use_facet( + IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))))); +} + /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@I@Z */ /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@I@Z */ /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@K@Z */ @@ -6652,6 +7177,15 @@ return this; } +/* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@M@Z */ +/* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@M@Z */ +DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_float, 8) +basic_ostream_wchar* __thiscall basic_ostream_wchar_print_float(basic_ostream_wchar *this, float val) +{ + return basic_ostream_print_float(this, val, num_put_wchar_use_facet( + IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))))); +} + /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@M@Z */ /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@M@Z */ DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_float, 8) @@ -6682,6 +7216,15 @@ return this; } +/* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@N@Z */ +/* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@N@Z */ +DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_double, 12) +basic_ostream_wchar* __thiscall basic_ostream_wchar_print_double(basic_ostream_wchar *this, double val) +{ + return basic_ostream_print_double(this, val, num_put_wchar_use_facet( + IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))))); +} + /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@N@Z */ /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@N@Z */ DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_double, 12) @@ -6712,6 +7255,15 @@ return this; } +/* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@O@Z */ +/* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@O@Z */ +DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_ldouble, 12) +basic_ostream_wchar* __thiscall basic_ostream_wchar_print_ldouble(basic_ostream_wchar *this, double val) +{ + return basic_ostream_print_ldouble(this, val, num_put_wchar_use_facet( + IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))))); +} + /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@O@Z */ /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@O@Z */ DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_ldouble, 12) @@ -6775,6 +7327,15 @@ return this; } +/* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@PBX@Z */ +/* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@PEBX@Z */ +DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_ptr, 8) +basic_ostream_wchar* __thiscall basic_ostream_wchar_print_ptr(basic_ostream_wchar *this, const void *val) +{ + return basic_ostream_print_ptr(this, val, num_put_wchar_use_facet( + IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))))); +} + /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@PBX@Z */ /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@PEBX@Z */ DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_ptr, 8) @@ -6805,6 +7366,15 @@ return this; } +/* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@_J@Z */ +/* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@_J@Z */ +DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_int64, 12) +basic_ostream_wchar* __thiscall basic_ostream_wchar_print_int64(basic_ostream_wchar *this, __int64 val) +{ + return basic_ostream_print_int64(this, val, num_put_wchar_use_facet( + IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))))); +} + /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@_J@Z */ /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@_J@Z */ DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_int64, 12) @@ -6835,6 +7405,15 @@ return this; } +/* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@_K@Z */ +/* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@_K@Z */ +DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_uint64, 12) +basic_ostream_wchar* __thiscall basic_ostream_wchar_print_uint64(basic_ostream_wchar *this, unsigned __int64 val) +{ + return basic_ostream_print_uint64(this, val, num_put_wchar_use_facet( + IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))))); +} + /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@_K@Z */ /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@_K@Z */ DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_uint64, 12) @@ -6865,6 +7444,15 @@ return this; } +/* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@_N@Z */ +/* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@_N@Z */ +DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_bool, 8) +basic_ostream_wchar* __thiscall basic_ostream_wchar_print_bool(basic_ostream_wchar *this, MSVCP_bool val) +{ + return basic_ostream_print_bool(this, val, num_put_wchar_use_facet( + IOS_LOCALE(basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))))); +} + /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@_N@Z */ /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@_N@Z */ DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_bool, 8) @@ -7081,6 +7669,22 @@ return this; } +/* ?swap@?$basic_ostream@GU?$char_traits@G@std@@@std@@IAEXAAV12@@Z */ +/* ?swap@?$basic_ostream@GU?$char_traits@G@std@@@std@@IEAAXAEAV12@@Z */ +/* ?swap@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@IAEXAAV12@@Z */ +/* ?swap@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@IEAAXAEAV12@@Z */ +DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_swap, 8) +void __thiscall basic_ostream_wchar_swap(basic_ostream_wchar *this, basic_ostream_wchar *r) +{ + TRACE("(%p %p)\n", this, r); + + if(this == r) + return; + + basic_ios_wchar_swap(basic_ostream_wchar_get_basic_ios(this), + basic_ostream_wchar_get_basic_ios(r)); +} + /* Caution: basic_istream uses virtual inheritance. */ static inline basic_ios_char* basic_istream_char_get_basic_ios(basic_istream_char *this) { @@ -8302,6 +8906,200 @@ return this; } +/* ??$?5MDU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAV?$complex@M@0@@Z */ +/* ??$?5MDU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAV?$complex@M@0@@Z */ +basic_istream_char* __cdecl basic_istream_char_read_complex_float(basic_istream_char *this, complex_float *v) +{ + float r; + basic_ios_char *base = basic_istream_char_get_basic_ios(this); + + TRACE("(%p %p)\n", this, v); + + ws_basic_istream_char(this); + if(basic_istream_char_peek(this) == '(') { + char c; + basic_istream_char_get(this); + basic_istream_char_read_float(this, &r); + + if(ios_base_fail(&base->base)) + return this; + + ws_basic_istream_char(this); + c = basic_istream_char_peek(this); + if(c == ',') { + float i; + basic_istream_char_get(this); + basic_istream_char_read_float(this, &i); + + if(ios_base_fail(&base->base)) + return this; + + ws_basic_istream_char(this); + c = basic_istream_char_peek(this); + if(c == ')') { /* supported format: (real, imag) */ + basic_istream_char_get(this); + v->real = r; + v->imag = i; + }else { + basic_ios_char_setstate(base, IOSTATE_failbit); + return this; + } + }else if(c == ')') { /* supported format: (real) */ + basic_istream_char_get(this); + v->real = r; + v->imag = 0; + }else { + basic_ios_char_setstate(base, IOSTATE_failbit); + return this; + } + }else { /* supported format: real */ + basic_istream_char_read_float(this, &r); + + if(ios_base_fail(&base->base)) + return this; + + v->real = r; + v->imag = 0; + } + + return this; +} + +/* ??$?5NDU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAV?$complex@N@0@@Z */ +/* ??$?5DU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAV?$complex@N@0@@Z */ +basic_istream_char* __cdecl basic_istream_char_read_complex_double(basic_istream_char *this, complex_double *v) +{ + double r; + basic_ios_char *base = basic_istream_char_get_basic_ios(this); + + TRACE("(%p %p)\n", this, v); + + ws_basic_istream_char(this); + if(basic_istream_char_peek(this) == '(') { + char c; + basic_istream_char_get(this); + basic_istream_char_read_double(this, &r); + + if(ios_base_fail(&base->base)) + return this; + + ws_basic_istream_char(this); + c = basic_istream_char_peek(this); + if(c == ',') { + double i; + basic_istream_char_get(this); + basic_istream_char_read_double(this, &i); + + if(ios_base_fail(&base->base)) + return this; + + ws_basic_istream_char(this); + c = basic_istream_char_peek(this); + if(c == ')') { /* supported format: (real, imag) */ + basic_istream_char_get(this); + v->real = r; + v->imag = i; + }else { + basic_ios_char_setstate(base, IOSTATE_failbit); + return this; + } + }else if(c == ')') { /* supported format: (real) */ + basic_istream_char_get(this); + v->real = r; + v->imag = 0; + }else { + basic_ios_char_setstate(base, IOSTATE_failbit); + return this; + } + }else { /* supported format: real */ + basic_istream_char_read_double(this, &r); + + if(ios_base_fail(&base->base)) + return this; + + v->real = r; + v->imag = 0; + } + + return this; +} + +/* ??$?5ODU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAV?$complex@O@0@@Z */ +/* ??$?5ODU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAV?$complex@O@0@@Z */ +basic_istream_char* __cdecl basic_istream_char_read_complex_ldouble(basic_istream_char *this, complex_double *v) +{ + double r; + basic_ios_char *base = basic_istream_char_get_basic_ios(this); + + TRACE("(%p %p)\n", this, v); + + ws_basic_istream_char(this); + if(basic_istream_char_peek(this) == '(') { + char c; + basic_istream_char_get(this); + basic_istream_char_read_ldouble(this, &r); + + if(ios_base_fail(&base->base)) + return this; + + ws_basic_istream_char(this); + c = basic_istream_char_peek(this); + if(c == ',') { + double i; + basic_istream_char_get(this); + basic_istream_char_read_ldouble(this, &i); + + if(ios_base_fail(&base->base)) + return this; + + ws_basic_istream_char(this); + c = basic_istream_char_peek(this); + if(c == ')') { /* supported format: (real, imag) */ + basic_istream_char_get(this); + v->real = r; + v->imag = i; + }else { + basic_ios_char_setstate(base, IOSTATE_failbit); + return this; + } + }else if(c == ')') { /* supported format: (real) */ + basic_istream_char_get(this); + v->real = r; + v->imag = 0; + }else { + basic_ios_char_setstate(base, IOSTATE_failbit); + return this; + } + }else { /* supported format: real */ + basic_istream_char_read_ldouble(this, &r); + + if(ios_base_fail(&base->base)) + return this; + + v->real = r; + v->imag = 0; + } + + return this; +} + +/* ?swap@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEXAAV12@@Z */ +/* ?swap@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAXAEAV12@@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_char_swap, 8) +void __thiscall basic_istream_char_swap(basic_istream_char *this, basic_istream_char *r) +{ + TRACE("(%p %p)\n", this, r); + + if(this == r) + return; + + basic_ios_char_swap(basic_istream_char_get_basic_ios(this), + basic_istream_char_get_basic_ios(r)); + this->count ^= r->count; + r->count ^= this->count; + this->count ^= r->count; +} + /* Caution: basic_istream uses virtual inheritance. */ static inline basic_ios_wchar* basic_istream_wchar_get_basic_ios(basic_istream_wchar *this) { @@ -9128,6 +9926,15 @@ return this; } +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAF@Z */ +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAF@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_short, 8) +basic_istream_wchar* __thiscall basic_istream_wchar_read_short(basic_istream_wchar *this, short *v) +{ + return basic_istream_read_short(this, v, num_get_wchar_use_facet( + IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf))); +} + /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAF@Z */ /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAF@Z */ DEFINE_THISCALL_WRAPPER(basic_istream_short_read_short, 8) @@ -9137,6 +9944,30 @@ IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf))); } +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAG@Z */ +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAG@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ushort, 8) +basic_istream_wchar* __thiscall basic_istream_wchar_read_ushort(basic_istream_wchar *this, unsigned short *v) +{ + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this); + int state = IOSTATE_goodbit; + + TRACE("(%p %p)\n", this, v); + + if(basic_istream_wchar_sentry_create(this, FALSE)) { + basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base); + const num_get *numget = num_get_wchar_use_facet(IOS_LOCALE(strbuf)); + istreambuf_iterator_wchar first={0}, last={0}; + + first.strbuf = strbuf; + num_get_wchar_get_ushort(numget, &last, first, last, &base->base, &state, v); + } + basic_istream_wchar_sentry_destroy(this); + + basic_ios_wchar_setstate(base, state); + return this; +} + static basic_istream_wchar* basic_istream_read_int(basic_istream_wchar *this, int *v, const num_get *numget) { basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this); @@ -9157,6 +9988,15 @@ return this; } +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAH@Z */ +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAH@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_int, 8) +basic_istream_wchar* __thiscall basic_istream_wchar_read_int(basic_istream_wchar *this, int *v) +{ + return basic_istream_read_int(this, v, num_get_wchar_use_facet( + IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf))); +} + /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAH@Z */ /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAH@Z */ DEFINE_THISCALL_WRAPPER(basic_istream_short_read_int, 8) @@ -9186,6 +10026,15 @@ return this; } +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAI@Z */ +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAI@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_uint, 8) +basic_istream_wchar* __thiscall basic_istream_wchar_read_uint(basic_istream_wchar *this, unsigned int *v) +{ + return basic_istream_read_uint(this, v, num_get_wchar_use_facet( + IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf))); +} + /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAI@Z */ /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAI@Z */ DEFINE_THISCALL_WRAPPER(basic_istream_short_read_uint, 8) @@ -9217,6 +10066,15 @@ /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAJ@Z */ /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAJ@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_long, 8) +basic_istream_wchar* __thiscall basic_istream_wchar_read_long(basic_istream_wchar *this, LONG *v) +{ + return basic_istream_read_long(this, v, num_get_wchar_use_facet( + IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf))); +} + +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAJ@Z */ +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAJ@Z */ DEFINE_THISCALL_WRAPPER(basic_istream_short_read_long, 8) basic_istream_wchar* __thiscall basic_istream_short_read_long(basic_istream_wchar *this, LONG *v) { @@ -9244,6 +10102,15 @@ return this; } +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAK@Z */ +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAK@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ulong, 8) +basic_istream_wchar* __thiscall basic_istream_wchar_read_ulong(basic_istream_wchar *this, ULONG *v) +{ + return basic_istream_read_ulong(this, v, num_get_wchar_use_facet( + IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf))); +} + /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAK@Z */ /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAK@Z */ DEFINE_THISCALL_WRAPPER(basic_istream_short_read_ulong, 8) @@ -9273,6 +10140,15 @@ return this; } +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAM@Z */ +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAM@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_float, 8) +basic_istream_wchar* __thiscall basic_istream_wchar_read_float(basic_istream_wchar *this, float *v) +{ + return basic_istream_read_float(this, v, num_get_wchar_use_facet( + IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf))); +} + /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAM@Z */ /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAM@Z */ DEFINE_THISCALL_WRAPPER(basic_istream_short_read_float, 8) @@ -9302,6 +10178,15 @@ return this; } +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAN@Z */ +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAN@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_double, 8) +basic_istream_wchar* __thiscall basic_istream_wchar_read_double(basic_istream_wchar *this, double *v) +{ + return basic_istream_read_double(this, v, num_get_wchar_use_facet( + IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf))); +} + /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAN@Z */ /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAN@Z */ DEFINE_THISCALL_WRAPPER(basic_istream_short_read_double, 8) @@ -9331,6 +10216,15 @@ return this; } +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAO@Z */ +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAO@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ldouble, 8) +basic_istream_wchar* __thiscall basic_istream_wchar_read_ldouble(basic_istream_wchar *this, double *v) +{ + return basic_istream_read_ldouble(this, v, num_get_wchar_use_facet( + IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf))); +} + /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAO@Z */ /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAO@Z */ DEFINE_THISCALL_WRAPPER(basic_istream_short_read_ldouble, 8) @@ -9360,6 +10254,15 @@ return this; } +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAPAX@Z */ +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAPEAX@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ptr, 8) +basic_istream_wchar* __thiscall basic_istream_wchar_read_ptr(basic_istream_wchar *this, void **v) +{ + return basic_istream_read_ptr(this, v, num_get_wchar_use_facet( + IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf))); +} + /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAPAX@Z */ /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAPEAX@Z */ DEFINE_THISCALL_WRAPPER(basic_istream_short_read_ptr, 8) @@ -9389,6 +10292,15 @@ return this; } +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_J@Z */ +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_J@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_int64, 8) +basic_istream_wchar* __thiscall basic_istream_wchar_read_int64(basic_istream_wchar *this, __int64 *v) +{ + return basic_istream_read_int64(this, v, num_get_wchar_use_facet( + IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf))); +} + /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AA_J@Z */ /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEA_J@Z */ DEFINE_THISCALL_WRAPPER(basic_istream_short_read_int64, 8) @@ -9418,6 +10330,15 @@ return this; } +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_K@Z */ +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_K@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_uint64, 8) +basic_istream_wchar* __thiscall basic_istream_wchar_read_uint64(basic_istream_wchar *this, unsigned __int64 *v) +{ + return basic_istream_read_uint64(this, v, num_get_wchar_use_facet( + IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf))); +} + /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AA_K@Z */ /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEA_K@Z */ DEFINE_THISCALL_WRAPPER(basic_istream_short_read_uint64, 8) @@ -9447,6 +10368,15 @@ return this; } +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_N@Z */ +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_N@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_bool, 8) +basic_istream_wchar* __thiscall basic_istream_wchar_read_bool(basic_istream_wchar *this, MSVCP_bool *v) +{ + return basic_istream_read_bool(this, v, num_get_wchar_use_facet( + IOS_LOCALE(basic_istream_wchar_get_basic_ios(this)->strbuf))); +} + /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AA_N@Z */ /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEA_N@Z */ DEFINE_THISCALL_WRAPPER(basic_istream_short_read_bool, 8) @@ -9572,6 +10502,14 @@ return istream; } +/* ??$?5_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@PA_W@Z */ +/* ??$?5_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@PEA_W@Z */ +basic_istream_wchar* __cdecl basic_istream_wchar_read_str(basic_istream_wchar *istream, wchar_t *str) +{ + return basic_istream_read_str(istream, str, ctype_wchar_use_facet( + IOS_LOCALE(basic_istream_wchar_get_basic_ios(istream)->strbuf))); +} + /* ??$?5GU?$char_traits@G@std@@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@PAG@Z */ /* ??$?5GU?$char_traits@G@std@@@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@0@AEAV10@PEAG@Z */ basic_istream_wchar* __cdecl basic_istream_short_read_str(basic_istream_wchar *istream, wchar_t *str) @@ -9673,6 +10611,25 @@ return this; } +/* ?swap@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEXAAV12@@Z */ +/* ?swap@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAXAEAV12@@Z */ +/* ?swap@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEXAAV12@@Z */ +/* ?swap@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAXAEAV12@@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_swap, 8) +void __thiscall basic_istream_wchar_swap(basic_istream_wchar *this, basic_istream_wchar *r) +{ + TRACE("(%p %p)\n", this, r); + + if(this == r) + return; + + basic_ios_wchar_swap(basic_istream_wchar_get_basic_ios(this), + basic_istream_wchar_get_basic_ios(r)); + this->count ^= r->count; + r->count ^= this->count; + this->count ^= r->count; +} + static inline basic_ios_char* basic_iostream_char_to_basic_ios(basic_iostream_char *ptr) { return (basic_ios_char*)((char*)ptr+basic_iostream_char_vbtable1[1]); @@ -9753,6 +10710,20 @@ return this; } +/* ?swap@?$basic_iostream@DU?$char_traits@D@std@@@std@@QAEXAAV12@@Z */ +/* ?swap@?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAAXAEAV12@@Z */ +DEFINE_THISCALL_WRAPPER(basic_iostream_char_swap, 8) +void __thiscall basic_iostream_char_swap(basic_iostream_char *this, basic_iostream_char *r) +{ + TRACE("(%p %p)\n", this, r); + + if(this == r) + return; + + basic_ios_char_swap(basic_istream_char_get_basic_ios(&this->base1), + basic_istream_char_get_basic_ios(&r->base1)); +} + static inline basic_ios_wchar* basic_iostream_wchar_to_basic_ios(basic_iostream_wchar *ptr) { return (basic_ios_wchar*)((char*)ptr+basic_iostream_wchar_vbtable1[1]); @@ -9849,6 +10820,22 @@ return this; } +/* ?swap@?$basic_iostream@GU?$char_traits@G@std@@@std@@QAEXAAV12@@Z */ +/* ?swap@?$basic_iostream@GU?$char_traits@G@std@@@std@@QEAAXAEAV12@@Z */ +/* ?swap@?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QAEXAAV12@@Z */ +/* ?swap@?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QEAAXAEAV12@@Z */ +DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_swap, 8) +void __thiscall basic_iostream_wchar_swap(basic_iostream_wchar *this, basic_iostream_wchar *r) +{ + TRACE("(%p %p)\n", this, r); + + if(this == r) + return; + + basic_ios_wchar_swap(basic_istream_wchar_get_basic_ios(&this->base1), + basic_istream_wchar_get_basic_ios(&r->base1)); +} + static inline basic_ios_char* basic_ofstream_char_to_basic_ios(basic_ofstream_char *ptr) { return (basic_ios_char*)((char*)ptr+basic_ofstream_char_vbtable[1]); @@ -9884,7 +10871,8 @@ /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */ /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */ -static basic_ofstream_char* basic_ofstream_char_ctor_file( +DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor_file, 12) +basic_ofstream_char* __thiscall basic_ofstream_char_ctor_file( basic_ofstream_char *this, FILE *file, MSVCP_bool virt_init) { basic_ios_char *basic_ios; @@ -11276,6 +12264,15 @@ return this; } +/* ??_F?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */ +/* ??_F?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */ +DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_ctor, 4) +basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_ctor( + basic_ostringstream_wchar *this) +{ + return basic_ostringstream_wchar_ctor_mode(this, 0, TRUE); +} + /* ??_F?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */ /* ??_F?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */ DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_ctor, 4) @@ -11590,6 +12587,15 @@ return this; } +/* ??_F?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */ +/* ??_F?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */ +DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_ctor, 4) +basic_istringstream_wchar* __thiscall basic_istringstream_wchar_ctor( + basic_istringstream_wchar *this) +{ + return basic_istringstream_wchar_ctor_mode(this, 0, TRUE); +} + /* ??_F?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */ /* ??_F?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */ DEFINE_THISCALL_WRAPPER(basic_istringstream_short_ctor, 4) @@ -11909,6 +12915,16 @@ return this; } +/* ??_F?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */ +/* ??_F?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */ +DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_ctor, 4) +basic_stringstream_wchar* __thiscall basic_stringstream_wchar_ctor( + basic_stringstream_wchar *this) +{ + return basic_stringstream_wchar_ctor_mode( + this, OPENMODE_out|OPENMODE_in, TRUE); +} + /* ??_F?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */ /* ??_F?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */ DEFINE_THISCALL_WRAPPER(basic_stringstream_short_ctor, 4) @@ -12061,6 +13077,59 @@ return this; } +/* ??0strstreambuf@std@@QAE@H@Z */ +/* ??0strstreambuf@std@@QEAA@_J@Z */ +#if STREAMSIZE_BITS == 64 +DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_len, 12) +#else +DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_len, 8) +#endif +strstreambuf* __thiscall strstreambuf_ctor_len(strstreambuf *this, streamsize len) +{ + return strstreambuf_ctor_get_put(this, NULL, len, NULL); +} + +/* ??0strstreambuf@std@@QAE@P6APAXI@ZP6AXPAX@Z@Z */ +/* ??0strstreambuf@std@@QEAA@P6APEAX_K@ZP6AXPEAX@Z@Z */ +DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_alloc, 12) +strstreambuf* __thiscall strstreambuf_ctor_alloc(strstreambuf *this, void* (__cdecl *palloc)(MSVCP_size_t), void (__cdecl *pfree)(void*)) +{ + TRACE("(%p %p %p)\n", this, palloc, pfree); + + strstreambuf_ctor_get_put(this, NULL, 0, NULL); + this->palloc = palloc; + this->pfree = pfree; + return this; +} + +/* ??0strstreambuf@std@@QAE@PBCH@Z */ +/* ??0strstreambuf@std@@QEAA@PEBC_J@Z */ +/* ??0strstreambuf@std@@QAE@PBDH@Z */ +/* ??0strstreambuf@std@@QEAA@PEBD_J@Z */ +/* ??0strstreambuf@std@@QAE@PBEH@Z */ +/* ??0strstreambuf@std@@QEAA@PEBE_J@Z */ +#if STREAMSIZE_BITS == 64 +DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_get, 16) +#else +DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_get, 12) +#endif +strstreambuf* __thiscall strstreambuf_ctor_get(strstreambuf *this, const char *g, streamsize len) +{ + TRACE("(%p %p %s)\n", this, g, wine_dbgstr_longlong(len)); + + strstreambuf_ctor_get_put(this, (char*)g, len, NULL); + this->strmode |= STRSTATE_Constant; + return this; +} + +/* ??_Fstrstreambuf@std@@QAEXXZ */ +/* ??_Fstrstreambuf@std@@QEAAXXZ */ +DEFINE_THISCALL_WRAPPER(strstreambuf_ctor, 4) +strstreambuf* __thiscall strstreambuf_ctor(strstreambuf *this) +{ + return strstreambuf_ctor_get_put(this, NULL, 0, NULL); +} + /* ?_Tidy@strstreambuf@std@@IAEXXZ */ /* ?_Tidy@strstreambuf@std@@IEAAXXZ */ DEFINE_THISCALL_WRAPPER(strstreambuf__Tidy, 4) @@ -12135,6 +13204,29 @@ } } +/* ?str@strstreambuf@std@@QAEPADXZ */ +/* ?str@strstreambuf@std@@QEAAPEADXZ */ +DEFINE_THISCALL_WRAPPER(strstreambuf_str, 4) +char* __thiscall strstreambuf_str(strstreambuf *this) +{ + TRACE("(%p)\n", this); + + strstreambuf_freeze(this, TRUE); + return basic_streambuf_char_gptr(&this->base); +} + +/* ?pcount@strstreambuf@std@@QBEHXZ */ +/* ?pcount@strstreambuf@std@@QEBA_JXZ */ +DEFINE_THISCALL_WRAPPER(strstreambuf_pcount, 4) +streamsize __thiscall strstreambuf_pcount(const strstreambuf *this) +{ + char *ppos = basic_streambuf_char_pptr(&this->base); + + TRACE("(%p)\n", this); + + return ppos ? ppos-basic_streambuf_char_pbase(&this->base) : 0; +} + /* ?overflow@strstreambuf@std@@MAEHH@Z */ /* ?overflow@strstreambuf@std@@MEAAHH@Z */ DEFINE_THISCALL_WRAPPER(strstreambuf_overflow, 8) @@ -12430,6 +13522,108 @@ return (strstream*)((char*)ptr-strstream_vbtable1[1]); } +/* ??$?6MDU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@M@0@@Z */ +/* ??$?6MDU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@M@0@@Z */ +basic_ostream_char* __cdecl basic_ostream_char_print_complex_float(basic_ostream_char *ostr, const complex_float *val) +{ + struct { + basic_ostringstream_char obj; + basic_ios_char vbase; + } oss; + ios_base *ostringstream_ios_base, *ostream_ios_base; + locale loc; + basic_string_char str; + basic_ostringstream_char_ctor(&oss.obj); + ostringstream_ios_base = &oss.vbase.base; + ostream_ios_base = &basic_ostream_char_get_basic_ios(ostr)->base; + TRACE("(%p %p)\n", ostr, val); + + ios_base_imbue(ostringstream_ios_base, &loc, IOS_LOCALE(ostream_ios_base)); + locale_dtor(&loc); + ios_base_precision_set(ostringstream_ios_base, ios_base_precision_get(ostream_ios_base)); + ios_base_flags_set(ostringstream_ios_base, ios_base_flags_get(ostream_ios_base)); + + basic_ostream_char_print_ch(&oss.obj.base, '('); + basic_ostream_char_print_float(&oss.obj.base, val->real); + basic_ostream_char_print_ch(&oss.obj.base, ','); + basic_ostream_char_print_float(&oss.obj.base, val->imag); + basic_ostream_char_print_ch(&oss.obj.base, ')'); + + basic_ostringstream_char_str_get(&oss.obj, &str); + basic_ostringstream_char_dtor(&oss.vbase); + basic_ostream_char_print_bstr(ostr, &str); + MSVCP_basic_string_char_dtor(&str); + return ostr; +} + +/* ??$?6NDU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@N@0@@Z */ +/* ??$?6NDU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@N@0@@Z */ +basic_ostream_char* __cdecl basic_ostream_char_print_complex_double(basic_ostream_char *ostr, const complex_double *val) +{ + struct { + basic_ostringstream_char obj; + basic_ios_char vbase; + } oss; + ios_base *ostringstream_ios_base, *ostream_ios_base; + locale loc; + basic_string_char str; + basic_ostringstream_char_ctor(&oss.obj); + ostringstream_ios_base = &oss.vbase.base; + ostream_ios_base = &basic_ostream_char_get_basic_ios(ostr)->base; + TRACE("(%p %p)\n", ostr, val); + + ios_base_imbue(ostringstream_ios_base, &loc, IOS_LOCALE(ostream_ios_base)); + locale_dtor(&loc); + ios_base_precision_set(ostringstream_ios_base, ios_base_precision_get(ostream_ios_base)); + ios_base_flags_set(ostringstream_ios_base, ios_base_flags_get(ostream_ios_base)); + + basic_ostream_char_print_ch(&oss.obj.base, '('); + basic_ostream_char_print_double(&oss.obj.base, val->real); + basic_ostream_char_print_ch(&oss.obj.base, ','); + basic_ostream_char_print_double(&oss.obj.base, val->imag); + basic_ostream_char_print_ch(&oss.obj.base, ')'); + + basic_ostringstream_char_str_get(&oss.obj, &str); + basic_ostringstream_char_dtor(&oss.vbase); + basic_ostream_char_print_bstr(ostr, &str); + MSVCP_basic_string_char_dtor(&str); + return ostr; +} + +/* ??$?6odu?$char_traits@d@std@@@std@@yaaav?$basic_ostream@du?$char_traits@d@std@@@0@aav10@abv?$complex@o@0@@Z */ +/* ??$?6ODU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@O@0@@Z */ +basic_ostream_char* __cdecl basic_ostream_char_print_complex_ldouble(basic_ostream_char *ostr, const complex_double *val) +{ + struct { + basic_ostringstream_char obj; + basic_ios_char vbase; + } oss; + ios_base *ostringstream_ios_base, *ostream_ios_base; + locale loc; + basic_string_char str; + basic_ostringstream_char_ctor(&oss.obj); + ostringstream_ios_base = &oss.vbase.base; + ostream_ios_base = &basic_ostream_char_get_basic_ios(ostr)->base; + TRACE("(%p %p)\n", ostr, val); + + ios_base_imbue(ostringstream_ios_base, &loc, IOS_LOCALE(ostream_ios_base)); + locale_dtor(&loc); + ios_base_precision_set(ostringstream_ios_base, ios_base_precision_get(ostream_ios_base)); + ios_base_flags_set(ostringstream_ios_base, ios_base_flags_get(ostream_ios_base)); + + basic_ostream_char_print_ch(&oss.obj.base, '('); + basic_ostream_char_print_ldouble(&oss.obj.base, val->real); + basic_ostream_char_print_ch(&oss.obj.base, ','); + basic_ostream_char_print_ldouble(&oss.obj.base, val->imag); + basic_ostream_char_print_ch(&oss.obj.base, ')'); + + basic_ostringstream_char_str_get(&oss.obj, &str); + basic_ostringstream_char_dtor(&oss.vbase); + basic_ostream_char_print_bstr(ostr, &str); + MSVCP_basic_string_char_dtor(&str); + return ostr; +} + /* ??0strstream@std@@QAE@PADHH@Z */ /* ??0strstream@std@@QEAA@PEAD_JH@Z */ #if STREAMSIZE_BITS == 64 @@ -12712,6 +13906,13 @@ /* ?_Init_cnt@Init@ios_base@std@@0HA */ int ios_base_Init__Init_cnt = -1; +/* ?_Init_cnt_func@Init@ios_base@std@@CAAAHXZ */ +/* ?_Init_cnt_func@Init@ios_base@std@@CAAEAHXZ */ +int* __cdecl ios_base_Init__Init_cnt_func(void) +{ + return &ios_base_Init__Init_cnt; +} + /* ?_Init_ctor@Init@ios_base@std@@CAXPAV123@@Z */ /* ?_Init_ctor@Init@ios_base@std@@CAXPEAV123@@Z */ void __cdecl ios_base_Init__Init_ctor(void *this) diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/msvcp60/msvcp.h wine-staging-1.7.41~ubuntu12.04.1/dlls/msvcp60/msvcp.h --- wine-staging-1.7.40~ubuntu12.04.1/dlls/msvcp60/msvcp.h 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/msvcp60/msvcp.h 2015-04-18 23:36:02.000000000 +0000 @@ -20,6 +20,8 @@ #include "windef.h" #include "cxx.h" +#define ALIGNED_SIZE(size, alignment) (((size)+((alignment)-1))/(alignment)*(alignment)) + typedef unsigned char MSVCP_bool; typedef SIZE_T MSVCP_size_t; typedef SSIZE_T streamoff; @@ -110,6 +112,7 @@ } codecvt_char; MSVCP_bool __thiscall codecvt_base_always_noconv(const codecvt_base*); +int __thiscall codecvt_char_unshift(const codecvt_char*, int*, char*, char*, char**); int __thiscall codecvt_char_out(const codecvt_char*, int*, const char*, const char*, const char**, char*, char*, char**); int __thiscall codecvt_char_in(const codecvt_char*, int*, const char*, @@ -127,6 +130,7 @@ _Cvtvec cvt; } codecvt_wchar; +int __thiscall codecvt_wchar_unshift(const codecvt_wchar*, int*, char*, char*, char**); int __thiscall codecvt_wchar_out(const codecvt_wchar*, int*, const wchar_t*, const wchar_t*, const wchar_t**, char*, char*, char**); int __thiscall codecvt_wchar_in(const codecvt_wchar*, int*, const char*, @@ -172,6 +176,7 @@ void free_locale(void); locale* __thiscall locale__Addfac(locale*, locale_facet*, MSVCP_size_t, MSVCP_size_t); codecvt_char* codecvt_char_use_facet(const locale*); +codecvt_wchar* codecvt_wchar_use_facet(const locale*); codecvt_wchar* codecvt_short_use_facet(const locale*); ctype_char* ctype_char_use_facet(const locale*); ctype_wchar* ctype_wchar_use_facet(const locale*); @@ -384,6 +389,7 @@ istreambuf_iterator_char *__thiscall num_get_char_get_bool(const num_get*, istreambuf_iterator_char*, istreambuf_iterator_char, istreambuf_iterator_char, ios_base*, int*, MSVCP_bool*); +num_get* num_get_wchar_use_facet(const locale*); num_get* num_get_short_use_facet(const locale*); istreambuf_iterator_wchar* __thiscall num_get_wchar_get_long(const num_get*, istreambuf_iterator_wchar*, istreambuf_iterator_wchar, istreambuf_iterator_wchar, ios_base*, int*, LONG*); @@ -433,6 +439,7 @@ ostreambuf_iterator_char* __thiscall num_put_char_put_bool(const num_put*, ostreambuf_iterator_char*, ostreambuf_iterator_char, ios_base*, char, MSVCP_bool); +num_put* num_put_wchar_use_facet(const locale*); num_put* num_put_short_use_facet(const locale*); ostreambuf_iterator_wchar* __thiscall num_put_wchar_put_long(const num_put*, ostreambuf_iterator_wchar*, ostreambuf_iterator_wchar, ios_base*, wchar_t, LONG); @@ -455,3 +462,17 @@ void init_locale(void*); void init_io(void*); void free_io(void); +void init_misc(void*); + +/* class complex */ +typedef struct { + float real; + float imag; +} complex_float; + +/* class complex */ +/* class complex */ +typedef struct { + double real; + double imag; +} complex_double; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/msvcp70/msvcp70.spec wine-staging-1.7.41~ubuntu12.04.1/dlls/msvcp70/msvcp70.spec --- wine-staging-1.7.40~ubuntu12.04.1/dlls/msvcp70/msvcp70.spec 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/msvcp70/msvcp70.spec 2015-04-18 23:36:02.000000000 +0000 @@ -1503,7 +1503,7 @@ @ extern ??_7?$time_put@GV?$ostreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@6B@ MSVCP_time_put_short_vtable @ extern ??_7?$time_put@_WV?$ostreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@6B@ MSVCP_time_put_wchar_vtable # extern ??_7__non_rtti_object@std@@6B@ -# extern ??_7bad_cast@std@@6B@ +@ extern ??_7bad_cast@std@@6B@ MSVCP_bad_cast_vtable # extern ??_7bad_typeid@std@@6B@ @ extern ??_7codecvt_base@std@@6B@ MSVCP_codecvt_base_vtable @ extern ??_7ctype_base@std@@6B@ MSVCP_ctype_base_vtable @@ -1775,8 +1775,8 @@ @ stub ?_Cosh@?$_Ctraits@O@std@@SAOOO@Z @ thiscall -arch=win32 ?_Decref@facet@locale@std@@QAEPAV123@XZ(ptr) locale_facet__Decref @ cdecl -arch=win64 ?_Decref@facet@locale@std@@QEAAPEAV123@XZ(ptr) locale_facet__Decref -@ stub -arch=win32 ?_Doraise@bad_cast@std@@MBEXXZ -@ stub -arch=win64 ?_Doraise@bad_cast@std@@MEBAXXZ +@ thiscall -arch=win32 ?_Doraise@bad_cast@std@@MBEXXZ(ptr) MSVCP_exception__Doraise +@ cdecl -arch=win64 ?_Doraise@bad_cast@std@@MEBAXXZ(ptr) MSVCP_exception__Doraise @ stub -arch=win32 ?_Doraise@bad_typeid@std@@MBEXXZ @ stub -arch=win64 ?_Doraise@bad_typeid@std@@MEBAXXZ @ thiscall -arch=win32 ?_Endwrite@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAE_NXZ(ptr) basic_filebuf_char__Endwrite @@ -1947,8 +1947,8 @@ @ cdecl -arch=win64 ?_Gettnames@_Locinfo@std@@QEBA?AV_Timevec@2@XZ(ptr ptr) _Locinfo__Gettnames @ thiscall -arch=i386 ?_Gettrue@_Locinfo@std@@QBEPBDXZ(ptr) _Locinfo__Gettrue @ cdecl -arch=win64 ?_Gettrue@_Locinfo@std@@QEBAPEBDXZ(ptr) _Locinfo__Gettrue -# extern -arch=win32 ?_Global@_Locimp@locale@std@@0PAV123@A -# extern -arch=win64 ?_Global@_Locimp@locale@std@@0PEAV123@EA +@ extern -arch=win32 ?_Global@_Locimp@locale@std@@0PAV123@A global_locale +@ extern -arch=win64 ?_Global@_Locimp@locale@std@@0PEAV123@EA global_locale @ thiscall -arch=i386 ?_Gndec@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ(ptr) basic_streambuf_char__Gndec @ cdecl -arch=win64 ?_Gndec@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ(ptr) basic_streambuf_char__Gndec @ thiscall -arch=i386 ?_Gndec@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ(ptr) basic_streambuf_wchar__Gndec @@ -2081,10 +2081,10 @@ @ extern ?_Init_cnt@Init@ios_base@std@@0HA ios_base_Init__Init_cnt # extern ?_Init_cnt@_UShinit@std@@0HA @ extern ?_Init_cnt@_Winit@std@@0HA _Winit__Init_cnt -@ stub -arch=win32 ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXXZ -@ stub -arch=win64 ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXXZ -@ stub -arch=win32 ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXXZ -@ stub -arch=win64 ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXXZ +@ thiscall -arch=win32 ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXXZ(ptr) basic_filebuf_char__Initcvt +@ cdecl -arch=win64 ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXXZ(ptr) basic_filebuf_char__Initcvt +@ thiscall -arch=win32 ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXXZ(ptr) basic_filebuf_wchar__Initcvt +@ cdecl -arch=win64 ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXXZ(ptr) basic_filebuf_wchar__Initcvt @ stub -arch=win32 ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXXZ @ stub -arch=win32 ?_Inside@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAE_NPBD@Z @ stub -arch=win32 ?_Inside@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAE_NPBG@Z diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/msvcp71/msvcp71.spec wine-staging-1.7.41~ubuntu12.04.1/dlls/msvcp71/msvcp71.spec --- wine-staging-1.7.40~ubuntu12.04.1/dlls/msvcp71/msvcp71.spec 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/msvcp71/msvcp71.spec 2015-04-18 23:36:02.000000000 +0000 @@ -2273,12 +2273,12 @@ @ extern ?_Init_cnt@Init@ios_base@std@@0HA ios_base_Init__Init_cnt # extern ?_Init_cnt@_UShinit@std@@0HA @ extern ?_Init_cnt@_Winit@std@@0HA _Winit__Init_cnt -@ thiscall -arch=win32 ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAV?$codecvt@DDH@2@@Z(ptr ptr) basic_filebuf_char__Initcvt -@ cdecl -arch=win64 ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAV?$codecvt@DDH@2@@Z(ptr ptr) basic_filebuf_char__Initcvt -@ thiscall -arch=win32 ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAV?$codecvt@GDH@2@@Z(ptr ptr) basic_filebuf_wchar__Initcvt -@ cdecl -arch=win64 ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAV?$codecvt@GDH@2@@Z(ptr ptr) basic_filebuf_wchar__Initcvt -@ thiscall -arch=win32 ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAV?$codecvt@_WDH@2@@Z(ptr ptr) basic_filebuf_wchar__Initcvt -@ cdecl -arch=win64 ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAV?$codecvt@_WDH@2@@Z(ptr ptr) basic_filebuf_wchar__Initcvt +@ thiscall -arch=win32 ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAV?$codecvt@DDH@2@@Z(ptr ptr) basic_filebuf_char__Initcvt_cvt +@ cdecl -arch=win64 ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAV?$codecvt@DDH@2@@Z(ptr ptr) basic_filebuf_char__Initcvt_cvt +@ thiscall -arch=win32 ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAV?$codecvt@GDH@2@@Z(ptr ptr) basic_filebuf_wchar__Initcvt_cvt +@ cdecl -arch=win64 ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAV?$codecvt@GDH@2@@Z(ptr ptr) basic_filebuf_wchar__Initcvt_cvt +@ thiscall -arch=win32 ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAV?$codecvt@_WDH@2@@Z(ptr ptr) basic_filebuf_wchar__Initcvt_cvt +@ cdecl -arch=win64 ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAV?$codecvt@_WDH@2@@Z(ptr ptr) basic_filebuf_wchar__Initcvt_cvt @ thiscall -arch=win32 ?_Inside@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAE_NPBD@Z(ptr str) basic_string_char_inside @ cdecl -arch=win64 ?_Inside@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAA_NPEBD@Z(ptr str) basic_string_char_inside @ thiscall -arch=win32 ?_Inside@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAE_NPBG@Z(ptr ptr) basic_string_wchar_inside diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/msvcp80/msvcp80.spec wine-staging-1.7.41~ubuntu12.04.1/dlls/msvcp80/msvcp80.spec --- wine-staging-1.7.40~ubuntu12.04.1/dlls/msvcp80/msvcp80.spec 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/msvcp80/msvcp80.spec 2015-04-18 23:36:02.000000000 +0000 @@ -2528,12 +2528,12 @@ @ stub -arch=win64 ?_Init_locks_ctor@_Init_locks@std@@CAXPEAV12@@Z @ stub -arch=win32 ?_Init_locks_dtor@_Init_locks@std@@CAXPAV12@@Z @ stub -arch=win64 ?_Init_locks_dtor@_Init_locks@std@@CAXPEAV12@@Z -@ thiscall -arch=win32 ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAV?$codecvt@DDH@2@@Z(ptr ptr) basic_filebuf_char__Initcvt -@ cdecl -arch=win64 ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAV?$codecvt@DDH@2@@Z(ptr ptr) basic_filebuf_char__Initcvt -@ thiscall -arch=win32 ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAV?$codecvt@GDH@2@@Z(ptr ptr) basic_filebuf_wchar__Initcvt -@ cdecl -arch=win64 ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAV?$codecvt@GDH@2@@Z(ptr ptr) basic_filebuf_wchar__Initcvt -@ thiscall -arch=win32 ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAV?$codecvt@_WDH@2@@Z(ptr ptr) basic_filebuf_wchar__Initcvt -@ cdecl -arch=win64 ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAV?$codecvt@_WDH@2@@Z(ptr ptr) basic_filebuf_wchar__Initcvt +@ thiscall -arch=win32 ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAV?$codecvt@DDH@2@@Z(ptr ptr) basic_filebuf_char__Initcvt_cvt +@ cdecl -arch=win64 ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAV?$codecvt@DDH@2@@Z(ptr ptr) basic_filebuf_char__Initcvt_cvt +@ thiscall -arch=win32 ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAV?$codecvt@GDH@2@@Z(ptr ptr) basic_filebuf_wchar__Initcvt_cvt +@ cdecl -arch=win64 ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAV?$codecvt@GDH@2@@Z(ptr ptr) basic_filebuf_wchar__Initcvt_cvt +@ thiscall -arch=win32 ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAV?$codecvt@_WDH@2@@Z(ptr ptr) basic_filebuf_wchar__Initcvt_cvt +@ cdecl -arch=win64 ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAV?$codecvt@_WDH@2@@Z(ptr ptr) basic_filebuf_wchar__Initcvt_cvt @ thiscall -arch=win32 ?_Inside@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAE_NPBD@Z(ptr str) basic_string_char_inside @ cdecl -arch=win64 ?_Inside@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAA_NPEBD@Z(ptr str) basic_string_char_inside @ thiscall -arch=win32 ?_Inside@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAE_NPBG@Z(ptr ptr) basic_string_wchar_inside diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/msvcp90/ios.c wine-staging-1.7.41~ubuntu12.04.1/dlls/msvcp90/ios.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/msvcp90/ios.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/msvcp90/ios.c 2015-04-18 23:36:02.000000000 +0000 @@ -1009,7 +1009,7 @@ { TRACE("(%p %d)\n", this, uninitialized); this->vtable = &MSVCP_basic_streambuf_char_vtable; -#if _MSVCP_VER <= 100 +#if _MSVCP_VER >= 70 && _MSVCP_VER <= 100 mutex_ctor(&this->lock); #endif return this; @@ -1023,7 +1023,7 @@ TRACE("(%p)\n", this); this->vtable = &MSVCP_basic_streambuf_char_vtable; -#if _MSVCP_VER <= 100 +#if _MSVCP_VER >= 70 && _MSVCP_VER <= 100 mutex_ctor(&this->lock); #endif #if _MSVCP_VER >= 70 @@ -1042,7 +1042,7 @@ { TRACE("(%p)\n", this); -#if _MSVCP_VER <= 100 +#if _MSVCP_VER >= 70 && _MSVCP_VER <= 100 mutex_dtor(&this->lock); #endif locale_dtor(IOS_LOCALE(this)); @@ -1138,7 +1138,7 @@ void __thiscall basic_streambuf_char__Lock(basic_streambuf_char *this) { TRACE("(%p)\n", this); -#if _MSVCP_VER <= 100 +#if _MSVCP_VER >= 70 && _MSVCP_VER <= 100 mutex_lock(&this->lock); #endif } @@ -1266,7 +1266,7 @@ void __thiscall basic_streambuf_char__Unlock(basic_streambuf_char *this) { TRACE("(%p)\n", this); -#if _MSVCP_VER <= 100 +#if _MSVCP_VER >= 70 && _MSVCP_VER <= 100 mutex_unlock(&this->lock); #endif } @@ -1317,7 +1317,9 @@ *this->prsize -= off; } +/* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@XZ */ /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QBE?AVlocale@2@XZ */ +/* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@XZ */ /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEBA?AVlocale@2@XZ */ DEFINE_THISCALL_WRAPPER(basic_streambuf_char_getloc, 8) locale* __thiscall basic_streambuf_char_getloc(const basic_streambuf_char *this, locale *ret) @@ -1846,7 +1848,7 @@ { TRACE("(%p %d)\n", this, uninitialized); this->vtable = &MSVCP_basic_streambuf_wchar_vtable; -#if _MSVCP_VER <= 100 +#if _MSVCP_VER >= 70 && _MSVCP_VER <= 100 mutex_ctor(&this->lock); #endif return this; @@ -1871,7 +1873,7 @@ TRACE("(%p)\n", this); this->vtable = &MSVCP_basic_streambuf_wchar_vtable; -#if _MSVCP_VER <= 100 +#if _MSVCP_VER >= 70 && _MSVCP_VER <= 100 mutex_ctor(&this->lock); #endif #if _MSVCP_VER >= 70 @@ -1903,7 +1905,7 @@ { TRACE("(%p)\n", this); -#if _MSVCP_VER <= 100 +#if _MSVCP_VER >= 70 && _MSVCP_VER <= 100 mutex_dtor(&this->lock); #endif locale_dtor(IOS_LOCALE(this)); @@ -2006,7 +2008,7 @@ void __thiscall basic_streambuf_wchar__Lock(basic_streambuf_wchar *this) { TRACE("(%p)\n", this); -#if _MSVCP_VER <= 100 +#if _MSVCP_VER >= 70 && _MSVCP_VER <= 100 mutex_lock(&this->lock); #endif } @@ -2143,7 +2145,7 @@ void __thiscall basic_streambuf_wchar__Unlock(basic_streambuf_wchar *this) { TRACE("(%p)\n", this); -#if _MSVCP_VER <= 100 +#if _MSVCP_VER >= 70 && _MSVCP_VER <= 100 mutex_unlock(&this->lock); #endif } @@ -2757,8 +2759,8 @@ /* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAV?$codecvt@DDH@2@@Z */ /* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAV?$codecvt@DDH@2@@Z */ -DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Initcvt, 8) -void __thiscall basic_filebuf_char__Initcvt(basic_filebuf_char *this, codecvt_char *cvt) +DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Initcvt_cvt, 8) +void __thiscall basic_filebuf_char__Initcvt_cvt(basic_filebuf_char *this, codecvt_char *cvt) { TRACE("(%p %p)\n", this, cvt); @@ -2770,6 +2772,15 @@ } } +/* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXXZ */ +/* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXXZ */ +DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Initcvt, 4) +void __thiscall basic_filebuf_char__Initcvt(basic_filebuf_char *this) +{ + codecvt_char *cvt = codecvt_char_use_facet(IOS_LOCALE(&this->base)); + basic_filebuf_char__Initcvt_cvt( this, cvt ); +} + /* ?_Endwrite@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAE_NXZ */ /* ?_Endwrite@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAA_NXZ */ DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Endwrite, 4) @@ -2982,6 +2993,14 @@ return _Fiopen_wchar(nameW, mode, prot); } +/* ?__Fiopen@std@@YAPAU_iobuf@@PBDH@Z */ +/* ?__Fiopen@std@@YAPEAU_iobuf@@PEBDH@Z */ +FILE* __cdecl ___Fiopen(const char *name, int mode) +{ + TRACE("(%p %d)\n", name, mode); + return _Fiopen(name, mode, _SH_DENYNO); +} + /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PB_WHH@Z */ /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEB_WHH@Z */ /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBGHH@Z */ @@ -3000,7 +3019,7 @@ return NULL; basic_filebuf_char__Init(this, f, INITFL_open); - basic_filebuf_char__Initcvt(this, codecvt_char_use_facet(IOS_LOCALE(&this->base))); + basic_filebuf_char__Initcvt_cvt(this, codecvt_char_use_facet(IOS_LOCALE(&this->base))); return this; } @@ -3028,6 +3047,17 @@ return basic_filebuf_char_open_wchar(this, nameW, mode, prot); } +/* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDF@Z */ +/* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDF@Z */ +DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_mode_old, 12) +basic_filebuf_char* __thiscall basic_filebuf_char_open_mode_old(basic_filebuf_char *this, const char *name, short mode) +{ + TRACE("(%p %p %d)\n", this, name, mode); + return basic_filebuf_char_open(this, name, mode, SH_DENYNO); +} + +/* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDH@Z */ +/* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDH@Z */ /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDI@Z */ /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDI@Z */ DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_mode, 12) @@ -3293,7 +3323,7 @@ void __thiscall basic_filebuf_char_imbue(basic_filebuf_char *this, const locale *loc) { TRACE("(%p %p)\n", this, loc); - basic_filebuf_char__Initcvt(this, codecvt_char_use_facet(loc)); + basic_filebuf_char__Initcvt_cvt(this, codecvt_char_use_facet(loc)); } /* ?_Stinit@?1??_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@23@@Z@4HA */ @@ -3340,8 +3370,8 @@ /* ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAV?$codecvt@_WDH@2@@Z */ /* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAV?$codecvt@GDH@2@@Z */ /* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAV?$codecvt@GDH@2@@Z */ -DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Initcvt, 8) -void __thiscall basic_filebuf_wchar__Initcvt(basic_filebuf_wchar *this, codecvt_wchar *cvt) +DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Initcvt_cvt, 8) +void __thiscall basic_filebuf_wchar__Initcvt_cvt(basic_filebuf_wchar *this, codecvt_wchar *cvt) { TRACE("(%p %p)\n", this, cvt); @@ -3353,6 +3383,15 @@ } } +/* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXXZ */ +/* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXXZ */ +DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Initcvt, 4) +void __thiscall basic_filebuf_wchar__Initcvt(basic_filebuf_wchar *this) +{ + codecvt_wchar *cvt = codecvt_wchar_use_facet(IOS_LOCALE(&this->base)); + basic_filebuf_wchar__Initcvt_cvt( this, cvt ); +} + /* ?_Endwrite@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAE_NXZ */ /* ?_Endwrite@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAA_NXZ */ /* ?_Endwrite@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAE_NXZ */ @@ -3550,7 +3589,7 @@ return NULL; basic_filebuf_wchar__Init(this, f, INITFL_open); - basic_filebuf_wchar__Initcvt(this, codecvt_wchar_use_facet(IOS_LOCALE(&this->base))); + basic_filebuf_wchar__Initcvt_cvt(this, codecvt_wchar_use_facet(IOS_LOCALE(&this->base))); return this; } @@ -3572,7 +3611,7 @@ return NULL; basic_filebuf_short__Init(this, f, INITFL_open); - basic_filebuf_wchar__Initcvt(this, codecvt_short_use_facet(IOS_LOCALE(&this->base))); + basic_filebuf_wchar__Initcvt_cvt(this, codecvt_short_use_facet(IOS_LOCALE(&this->base))); return this; } @@ -3624,6 +3663,17 @@ return basic_filebuf_short_open_wchar(this, nameW, mode, prot); } +/* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDF@Z */ +/* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDF@Z */ +DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open_mode_old, 12) +basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open_mode_old(basic_filebuf_wchar *this, const char *name, short mode) +{ + TRACE("(%p %p %d)\n", this, name, mode); + return basic_filebuf_wchar_open(this, name, mode, SH_DENYNO); +} + +/* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDH@Z */ +/* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDH@Z */ /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBDI@Z */ /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBDI@Z */ DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open_mode, 12) @@ -3949,7 +3999,7 @@ void __thiscall basic_filebuf_wchar_imbue(basic_filebuf_wchar *this, const locale *loc) { TRACE("(%p %p)\n", this, loc); - basic_filebuf_wchar__Initcvt(this, codecvt_wchar_use_facet(loc)); + basic_filebuf_wchar__Initcvt_cvt(this, codecvt_wchar_use_facet(loc)); } /* ?imbue@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEXABVlocale@2@@Z */ @@ -3958,7 +4008,7 @@ void __thiscall basic_filebuf_short_imbue(basic_filebuf_wchar *this, const locale *loc) { TRACE("(%p %p)\n", this, loc); - basic_filebuf_wchar__Initcvt(this, codecvt_short_use_facet(loc)); + basic_filebuf_wchar__Initcvt_cvt(this, codecvt_short_use_facet(loc)); } /* ?_Getstate@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEHH@Z */ diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/msvcp90/msvcp90.spec wine-staging-1.7.41~ubuntu12.04.1/dlls/msvcp90/msvcp90.spec --- wine-staging-1.7.40~ubuntu12.04.1/dlls/msvcp90/msvcp90.spec 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/msvcp90/msvcp90.spec 2015-04-18 23:36:02.000000000 +0000 @@ -2846,12 +2846,12 @@ @ stub -arch=win64 ?_Init_locks_ctor@_Init_locks@std@@CAXPEAV12@@Z @ stub -arch=win32 ?_Init_locks_dtor@_Init_locks@std@@CAXPAV12@@Z @ stub -arch=win64 ?_Init_locks_dtor@_Init_locks@std@@CAXPEAV12@@Z -@ thiscall -arch=win32 ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAV?$codecvt@DDH@2@@Z(ptr ptr) basic_filebuf_char__Initcvt -@ cdecl -arch=win64 ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAV?$codecvt@DDH@2@@Z(ptr ptr) basic_filebuf_char__Initcvt -@ thiscall -arch=win32 ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAV?$codecvt@GDH@2@@Z(ptr ptr) basic_filebuf_wchar__Initcvt -@ cdecl -arch=win64 ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAV?$codecvt@GDH@2@@Z(ptr ptr) basic_filebuf_wchar__Initcvt -@ thiscall -arch=win32 ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAV?$codecvt@_WDH@2@@Z(ptr ptr) basic_filebuf_wchar__Initcvt -@ cdecl -arch=win64 ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAV?$codecvt@_WDH@2@@Z(ptr ptr) basic_filebuf_wchar__Initcvt +@ thiscall -arch=win32 ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAV?$codecvt@DDH@2@@Z(ptr ptr) basic_filebuf_char__Initcvt_cvt +@ cdecl -arch=win64 ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAV?$codecvt@DDH@2@@Z(ptr ptr) basic_filebuf_char__Initcvt_cvt +@ thiscall -arch=win32 ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAV?$codecvt@GDH@2@@Z(ptr ptr) basic_filebuf_wchar__Initcvt_cvt +@ cdecl -arch=win64 ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAV?$codecvt@GDH@2@@Z(ptr ptr) basic_filebuf_wchar__Initcvt_cvt +@ thiscall -arch=win32 ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAV?$codecvt@_WDH@2@@Z(ptr ptr) basic_filebuf_wchar__Initcvt_cvt +@ cdecl -arch=win64 ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAV?$codecvt@_WDH@2@@Z(ptr ptr) basic_filebuf_wchar__Initcvt_cvt @ thiscall -arch=win32 ?_Inside@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAE_NPBD@Z(ptr str) basic_string_char_inside @ cdecl -arch=win64 ?_Inside@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAA_NPEBD@Z(ptr str) basic_string_char_inside @ thiscall -arch=win32 ?_Inside@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAE_NPBG@Z(ptr ptr) basic_string_wchar_inside diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/msvcr120/msvcr120.spec wine-staging-1.7.41~ubuntu12.04.1/dlls/msvcr120/msvcr120.spec --- wine-staging-1.7.40~ubuntu12.04.1/dlls/msvcr120/msvcr120.spec 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/msvcr120/msvcr120.spec 2015-04-18 23:36:02.000000000 +0000 @@ -1734,11 +1734,11 @@ @ stub _strtoimax_l @ stub _strtol_l @ stub _strtold_l -@ stub _strtoll_l +@ cdecl -ret64 _strtoll_l(str ptr long ptr) MSVCRT_strtoi64_l @ cdecl -ret64 _strtoui64(str ptr long) MSVCRT_strtoui64 @ cdecl -ret64 _strtoui64_l(str ptr long ptr) MSVCRT_strtoui64_l @ cdecl _strtoul_l(str ptr long ptr) MSVCRT_strtoul_l -@ stub _strtoull_l +@ cdecl -ret64 _strtoull_l(str ptr long ptr) MSVCRT_strtoui64_l @ stub _strtoumax_l @ cdecl _strupr(str) MSVCRT__strupr @ cdecl _strupr_l(str ptr) MSVCRT__strupr_l @@ -2389,9 +2389,9 @@ @ cdecl strtok_s(ptr str ptr) MSVCRT_strtok_s @ cdecl strtol(str ptr long) MSVCRT_strtol @ stub strtold -@ stub strtoll +@ cdecl -ret64 strtoll(str ptr long) MSVCRT_strtoi64 @ cdecl strtoul(str ptr long) MSVCRT_strtoul -@ stub strtoull +@ cdecl -ret64 strtoull(str ptr long) MSVCRT_strtoui64 @ stub strtoumax @ cdecl strxfrm(ptr str long) MSVCRT_strxfrm @ varargs swprintf_s(ptr long wstr) MSVCRT_swprintf_s diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/msvcr120_app/msvcr120_app.spec wine-staging-1.7.41~ubuntu12.04.1/dlls/msvcr120_app/msvcr120_app.spec --- wine-staging-1.7.40~ubuntu12.04.1/dlls/msvcr120_app/msvcr120_app.spec 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/msvcr120_app/msvcr120_app.spec 2015-04-18 23:36:02.000000000 +0000 @@ -1448,11 +1448,11 @@ @ stub _strtoimax_l @ stub _strtol_l @ stub _strtold_l -@ stub _strtoll_l +@ cdecl -ret64 _strtoll_l(str ptr long ptr) msvcr120._strtoll_l @ cdecl -ret64 _strtoui64(str ptr long) msvcr120._strtoui64 @ cdecl -ret64 _strtoui64_l(str ptr long ptr) msvcr120._strtoui64_l @ cdecl _strtoul_l(str ptr long ptr) msvcr120._strtoul_l -@ stub _strtoull_l +@ cdecl -ret64 _strtoull_l(str ptr long ptr) msvcr120._strtoull_l @ stub _strtoumax_l @ cdecl _strupr(str) msvcr120._strupr @ cdecl _strupr_l(str ptr) msvcr120._strupr_l @@ -2055,9 +2055,9 @@ @ cdecl strtok_s(ptr str ptr) msvcr120.strtok_s @ cdecl strtol(str ptr long) msvcr120.strtol @ stub strtold -@ stub strtoll +@ cdecl -ret64 strtoll(str ptr long) msvcr120.strtoll @ cdecl strtoul(str ptr long) msvcr120.strtoul -@ stub strtoull +@ cdecl -ret64 strtoull(str ptr long) msvcr120.strtoull @ stub strtoumax @ cdecl strxfrm(ptr str long) msvcr120.strxfrm @ varargs swprintf_s(ptr long wstr) msvcr120.swprintf_s diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/msvcrt/file.c wine-staging-1.7.41~ubuntu12.04.1/dlls/msvcrt/file.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/msvcrt/file.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/msvcrt/file.c 2015-04-18 23:36:02.000000000 +0000 @@ -2114,8 +2114,6 @@ { if(pmode & ~(MSVCRT__S_IREAD | MSVCRT__S_IWRITE)) FIXME(": pmode 0x%04x ignored\n", pmode); - else - WARN(": pmode 0x%04x ignored\n", pmode); if (oflags & MSVCRT__O_EXCL) creation = CREATE_NEW; @@ -2150,7 +2148,11 @@ ERR( "Unhandled shflags 0x%x\n", shflags ); return MSVCRT_EINVAL; } - attrib = FILE_ATTRIBUTE_NORMAL; + + if (!(pmode & ~MSVCRT_umask & MSVCRT__S_IWRITE)) + attrib = FILE_ATTRIBUTE_READONLY; + else + attrib = FILE_ATTRIBUTE_NORMAL; if (oflags & MSVCRT__O_TEMPORARY) { diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/msxml3/node.c wine-staging-1.7.41~ubuntu12.04.1/dlls/msxml3/node.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/msxml3/node.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/msxml3/node.c 2015-04-18 23:36:02.000000000 +0000 @@ -2038,9 +2038,11 @@ pUnk = create_doc_fragment( node ); break; case XML_DTD_NODE: + case XML_DOCUMENT_TYPE_NODE: pUnk = create_doc_type( node ); break; - default: { + case XML_ENTITY_NODE: + case XML_NOTATION_NODE: { unknode *new_node; FIXME("only creating basic node for type %d\n", node->type); @@ -2054,6 +2056,9 @@ init_xmlnode(&new_node->node, node, &new_node->IXMLDOMNode_iface, NULL); pUnk = (IUnknown*)&new_node->IXMLDOMNode_iface; } + default: + ERR("Called for unsupported node type %d\n", node->type); + return NULL; } hr = IUnknown_QueryInterface(pUnk, &IID_IXMLDOMNode, (LPVOID*)&ret); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/netapi32/netapi32.c wine-staging-1.7.41~ubuntu12.04.1/dlls/netapi32/netapi32.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/netapi32/netapi32.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/netapi32/netapi32.c 2015-04-18 23:36:02.000000000 +0000 @@ -1083,8 +1083,51 @@ DWORD level, DWORD options, LPBYTE *bufptr) { - TRACE("(%p, %p, %d, %d, %p)\n", server, service, level, options, bufptr); - return NERR_InternalError; + int res; + static const WCHAR SERVICE_WORKSTATION[] = { + 'L', 'a', 'n', 'm', 'a', 'n', + 'W', 'o', 'r', 'k', 's', 't', 'a', 't', 'i', 'o', 'n', '\0'}; + static const WCHAR SERVICE_SERVER[] = { + 'L', 'a', 'n', 'm', 'a', 'n', + 'S', 'e', 'r', 'v', 'e', 'r', '\0'}; + union + { + STAT_WORKSTATION_0 workst; + STAT_SERVER_0 server; + } *stat; + void *dataptr; + + TRACE("(server %s, service %s, level %d, options %d, buffer %p): stub\n", + debugstr_w(server), debugstr_w(service), level, options, bufptr); + + res = NetApiBufferAllocate(sizeof(*stat), &dataptr); + if (res != NERR_Success) return res; + + res = NERR_InternalError; + stat = dataptr; + switch (level) + { + case 0: + if (!lstrcmpW(service, SERVICE_WORKSTATION)) + { + /* Fill the struct STAT_WORKSTATION_0 properly */ + memset(&stat->workst, 0, sizeof(stat->workst)); + res = NERR_Success; + } + else if (!lstrcmpW(service, SERVICE_SERVER)) + { + /* Fill the struct STAT_SERVER_0 properly */ + memset(&stat->server, 0, sizeof(stat->server)); + res = NERR_Success; + } + break; + } + if (res != NERR_Success) + NetApiBufferFree(dataptr); + else + *bufptr = dataptr; + + return res; } NET_API_STATUS WINAPI NetUseEnum(LMSTR server, DWORD level, LPBYTE* bufptr, DWORD prefmaxsize, diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/ntdll/sync.c wine-staging-1.7.41~ubuntu12.04.1/dlls/ntdll/sync.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/ntdll/sync.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/ntdll/sync.c 2015-04-18 23:36:02.000000000 +0000 @@ -613,8 +613,19 @@ */ NTSTATUS WINAPI NtTerminateJobObject( HANDLE handle, NTSTATUS status ) { - FIXME( "stub: %p %x\n", handle, status ); - return STATUS_SUCCESS; + NTSTATUS ret; + + TRACE( "(%p, %d)\n", handle, status ); + + SERVER_START_REQ( terminate_job ) + { + req->handle = wine_server_obj_handle( handle ); + req->status = status; + ret = wine_server_call( req ); + } + SERVER_END_REQ; + + return ret; } /****************************************************************************** @@ -634,7 +645,7 @@ */ NTSTATUS WINAPI NtSetInformationJobObject( HANDLE handle, JOBOBJECTINFOCLASS class, PVOID info, ULONG len ) { - NTSTATUS status = STATUS_SUCCESS; + NTSTATUS status = STATUS_NOT_IMPLEMENTED; JOBOBJECT_BASIC_LIMIT_INFORMATION *basic_limit; ULONG info_size = sizeof(JOBOBJECT_BASIC_LIMIT_INFORMATION); DWORD limit_flags = JOB_OBJECT_BASIC_LIMIT_VALID_FLAGS; @@ -683,9 +694,11 @@ SERVER_END_REQ; break; + case JobObjectBasicUIRestrictions: + status = STATUS_SUCCESS; + /* fallthrough */ default: FIXME( "stub: %p %u %p %u\n", handle, class, info, len ); - return STATUS_NOT_IMPLEMENTED; } return status; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/ntoskrnl.exe/ntoskrnl.c wine-staging-1.7.41~ubuntu12.04.1/dlls/ntoskrnl.exe/ntoskrnl.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/ntoskrnl.exe/ntoskrnl.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/ntoskrnl.exe/ntoskrnl.c 2015-04-18 23:36:02.000000000 +0000 @@ -1885,7 +1885,8 @@ */ NTSTATUS WINAPI PsLookupProcessByProcessId(HANDLE processid, PEPROCESS *process) { - FIXME("(%p %p) stub\n", processid, process); + static int once; + if (!once++) FIXME("(%p %p) stub\n", processid, process); return STATUS_NOT_IMPLEMENTED; } diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/ole32/compobj.c wine-staging-1.7.41~ubuntu12.04.1/dlls/ole32/compobj.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/ole32/compobj.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/ole32/compobj.c 2015-04-18 23:36:02.000000000 +0000 @@ -4952,8 +4952,8 @@ else context->apttype = APTTYPE_STA; - hr = IUnknown_QueryInterface((IUnknown *)&context->IComThreadingInfo_iface, riid, ppv); - IUnknown_Release((IUnknown *)&context->IComThreadingInfo_iface); + hr = IComThreadingInfo_QueryInterface(&context->IComThreadingInfo_iface, riid, ppv); + IComThreadingInfo_Release(&context->IComThreadingInfo_iface); return hr; } diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/ole32/defaulthandler.c wine-staging-1.7.41~ubuntu12.04.1/dlls/ole32/defaulthandler.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/ole32/defaulthandler.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/ole32/defaulthandler.c 2015-04-18 23:36:02.000000000 +0000 @@ -2185,7 +2185,7 @@ This->refs = 0; This->clsid = *rclsid; - hr = IUnknown_QueryInterface((IUnknown *)&This->IClassFactory_iface, riid, ppv); + hr = IClassFactory_QueryInterface(&This->IClassFactory_iface, riid, ppv); if (FAILED(hr)) HeapFree(GetProcessHeap(), 0, This); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/oleaut32/tests/vartype.c wine-staging-1.7.41~ubuntu12.04.1/dlls/oleaut32/tests/vartype.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/oleaut32/tests/vartype.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/oleaut32/tests/vartype.c 2015-04-18 23:36:02.000000000 +0000 @@ -6318,6 +6318,11 @@ static const WCHAR testW[] = {'t','e','s','t',0}; + if (GetEnvironmentVariableA("OANOCACHE", NULL, 0)) { + skip("BSTR cache is disabled, some tests will be skipped.\n"); + return; + } + str = SysAllocString(testW); /* This should put the string into cache */ SysFreeString(str); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/rpcrt4/tests/ndr_marshall.c wine-staging-1.7.41~ubuntu12.04.1/dlls/rpcrt4/tests/ndr_marshall.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/rpcrt4/tests/ndr_marshall.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/rpcrt4/tests/ndr_marshall.c 2015-04-18 23:36:02.000000000 +0000 @@ -1590,6 +1590,7 @@ "mem not pointing at buffer %p/%p\n", mem, StubMsg.BufferStart + 12 ); ok(my_alloc_called == 0, "alloc called %d\n", my_alloc_called); } + HeapFree(GetProcessHeap(), 0, mem_orig); my_alloc_called = 0; mem = mem_orig = HeapAlloc(GetProcessHeap(), 0, sizeof(memsrc)); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/scrrun/dictionary.c wine-staging-1.7.41~ubuntu12.04.1/dlls/scrrun/dictionary.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/scrrun/dictionary.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/scrrun/dictionary.c 2015-04-18 23:36:02.000000000 +0000 @@ -154,10 +154,11 @@ if (FAILED(hr)) return NULL; - entry = head = get_bucket_head(dict, V_I4(&hash)); + head = get_bucket_head(dict, V_I4(&hash)); if (!head->next || list_empty(head)) return NULL; + entry = list_head(head); do { pair = LIST_ENTRY(entry, struct keyitem_pair, bucket); if (is_matching_key(dict, pair, key, V_I4(&hash))) return pair; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/scrrun/filesystem.c wine-staging-1.7.41~ubuntu12.04.1/dlls/scrrun/filesystem.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/scrrun/filesystem.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/scrrun/filesystem.c 2015-04-18 23:36:02.000000000 +0000 @@ -3285,11 +3285,41 @@ static HRESULT WINAPI filesys_GetSpecialFolder(IFileSystem3 *iface, SpecialFolderConst SpecialFolder, - IFolder **ppfolder) + IFolder **folder) { - FIXME("%p %d %p\n", iface, SpecialFolder, ppfolder); + WCHAR pathW[MAX_PATH]; + DWORD ret; - return E_NOTIMPL; + TRACE("%p %d %p\n", iface, SpecialFolder, folder); + + if (!folder) + return E_POINTER; + + *folder = NULL; + + switch (SpecialFolder) + { + case WindowsFolder: + ret = GetWindowsDirectoryW(pathW, sizeof(pathW)/sizeof(WCHAR)); + break; + case SystemFolder: + ret = GetSystemDirectoryW(pathW, sizeof(pathW)/sizeof(WCHAR)); + break; + case TemporaryFolder: + ret = GetTempPathW(sizeof(pathW)/sizeof(WCHAR), pathW); + /* we don't want trailing backslash */ + if (ret && pathW[ret-1] == '\\') + pathW[ret-1] = 0; + break; + default: + FIXME("unknown special folder type, %d\n", SpecialFolder); + return E_INVALIDARG; + } + + if (!ret) + return HRESULT_FROM_WIN32(GetLastError()); + + return create_folder(pathW, folder); } static inline HRESULT delete_file(const WCHAR *file, DWORD file_len, VARIANT_BOOL force) diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/scrrun/tests/filesystem.c wine-staging-1.7.41~ubuntu12.04.1/dlls/scrrun/tests/filesystem.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/scrrun/tests/filesystem.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/scrrun/tests/filesystem.c 2015-04-18 23:36:02.000000000 +0000 @@ -1907,6 +1907,54 @@ } } +static void test_GetSpecialFolder(void) +{ + WCHAR pathW[MAX_PATH]; + IFolder *folder; + HRESULT hr; + DWORD ret; + BSTR path; + + hr = IFileSystem3_GetSpecialFolder(fs3, WindowsFolder, NULL); + ok(hr == E_POINTER, "got 0x%08x\n", hr); + + hr = IFileSystem3_GetSpecialFolder(fs3, TemporaryFolder+1, NULL); + ok(hr == E_POINTER, "got 0x%08x\n", hr); + + hr = IFileSystem3_GetSpecialFolder(fs3, TemporaryFolder+1, &folder); + ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + + hr = IFileSystem3_GetSpecialFolder(fs3, WindowsFolder, &folder); + ok(hr == S_OK, "got 0x%08x\n", hr); + hr = IFolder_get_Path(folder, &path); + ok(hr == S_OK, "got 0x%08x\n", hr); + GetWindowsDirectoryW(pathW, sizeof(pathW)/sizeof(WCHAR)); + ok(!lstrcmpiW(pathW, path), "got %s, expected %s\n", wine_dbgstr_w(path), wine_dbgstr_w(pathW)); + SysFreeString(path); + IFolder_Release(folder); + + hr = IFileSystem3_GetSpecialFolder(fs3, SystemFolder, &folder); + ok(hr == S_OK, "got 0x%08x\n", hr); + hr = IFolder_get_Path(folder, &path); + ok(hr == S_OK, "got 0x%08x\n", hr); + GetSystemDirectoryW(pathW, sizeof(pathW)/sizeof(WCHAR)); + ok(!lstrcmpiW(pathW, path), "got %s, expected %s\n", wine_dbgstr_w(path), wine_dbgstr_w(pathW)); + SysFreeString(path); + IFolder_Release(folder); + + hr = IFileSystem3_GetSpecialFolder(fs3, TemporaryFolder, &folder); + ok(hr == S_OK, "got 0x%08x\n", hr); + hr = IFolder_get_Path(folder, &path); + ok(hr == S_OK, "got 0x%08x\n", hr); + ret = GetTempPathW(sizeof(pathW)/sizeof(WCHAR), pathW); + if (ret && pathW[ret-1] == '\\') + pathW[ret-1] = 0; + + ok(!lstrcmpiW(pathW, path), "got %s, expected %s\n", wine_dbgstr_w(path), wine_dbgstr_w(pathW)); + SysFreeString(path); + IFolder_Release(folder); +} + START_TEST(filesystem) { HRESULT hr; @@ -1942,6 +1990,7 @@ test_GetDriveName(); test_SerialNumber(); test_GetExtensionName(); + test_GetSpecialFolder(); IFileSystem3_Release(fs3); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/secur32/schannel.c wine-staging-1.7.41~ubuntu12.04.1/dlls/secur32/schannel.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/secur32/schannel.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/secur32/schannel.c 2015-04-18 23:36:02.000000000 +0000 @@ -825,7 +825,7 @@ return SEC_E_INTERNAL_ERROR; } - if (pszTargetName) + if (pszTargetName && *pszTargetName) { UINT len = WideCharToMultiByte( CP_UNIXCP, 0, pszTargetName, -1, NULL, 0, NULL, NULL ); char *target = HeapAlloc( GetProcessHeap(), 0, len ); @@ -908,8 +908,16 @@ } *pfContextAttr = 0; + if (ctx->req_ctx_attr & ISC_REQ_REPLAY_DETECT) + *pfContextAttr |= ISC_RET_REPLAY_DETECT; + if (ctx->req_ctx_attr & ISC_REQ_SEQUENCE_DETECT) + *pfContextAttr |= ISC_RET_SEQUENCE_DETECT; + if (ctx->req_ctx_attr & ISC_REQ_CONFIDENTIALITY) + *pfContextAttr |= ISC_RET_CONFIDENTIALITY; if (ctx->req_ctx_attr & ISC_REQ_ALLOCATE_MEMORY) *pfContextAttr |= ISC_RET_ALLOCATED_MEMORY; + if (ctx->req_ctx_attr & ISC_REQ_STREAM) + *pfContextAttr |= ISC_RET_STREAM; return ret; } diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/shell32/shellitem.c wine-staging-1.7.41~ubuntu12.04.1/dlls/shell32/shellitem.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/shell32/shellitem.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/shell32/shellitem.c 2015-04-18 23:36:02.000000000 +0000 @@ -548,7 +548,6 @@ HRESULT WINAPI SHCreateShellItem(LPCITEMIDLIST pidlParent, IShellFolder *psfParent, LPCITEMIDLIST pidl, IShellItem **ppsi) { - ShellItem *This; LPITEMIDLIST new_pidl; HRESULT ret; @@ -597,16 +596,9 @@ return E_OUTOFMEMORY; } - ret = IShellItem_Constructor(NULL, &IID_IShellItem, (void**)&This); - if (This) - { - *ppsi = (IShellItem*)&This->IShellItem2_iface; - This->pidl = new_pidl; - } - else - { - ILFree(new_pidl); - } + ret = SHCreateItemFromIDList(new_pidl, &IID_IShellItem, (void**)ppsi); + ILFree(new_pidl); + return ret; } @@ -621,37 +613,34 @@ ret = SHParseDisplayName(pszPath, pbc, &pidl, 0, NULL); if(SUCCEEDED(ret)) { - ShellItem *This; - ret = IShellItem_Constructor(NULL, riid, (void**)&This); - - if(SUCCEEDED(ret)) - { - This->pidl = pidl; - *ppv = (void*)This; - } - else - { - ILFree(pidl); - } + ret = SHCreateItemFromIDList(pidl, riid, ppv); + ILFree(pidl); } return ret; } HRESULT WINAPI SHCreateItemFromIDList(PCIDLIST_ABSOLUTE pidl, REFIID riid, void **ppv) { - ShellItem *psiimpl; + IPersistIDList *persist; HRESULT ret; if(!pidl) return E_INVALIDARG; - ret = IShellItem_Constructor(NULL, riid, ppv); - if(SUCCEEDED(ret)) + *ppv = NULL; + ret = IShellItem_Constructor(NULL, &IID_IPersistIDList, (void**)&persist); + if(FAILED(ret)) + return ret; + + ret = IPersistIDList_SetIDList(persist, pidl); + if(FAILED(ret)) { - psiimpl = (ShellItem*)*ppv; - psiimpl->pidl = ILClone(pidl); + IPersistIDList_Release(persist); + return ret; } + ret = IPersistIDList_QueryInterface(persist, riid, ppv); + IPersistIDList_Release(persist); return ret; } @@ -1121,12 +1110,8 @@ IEnumShellItems **ppenumShellItems) { IShellItemArrayImpl *This = impl_from_IShellItemArray(iface); - HRESULT hr; TRACE("%p (%p)\n", This, ppenumShellItems); - - hr = IEnumShellItems_Constructor(iface, ppenumShellItems); - - return hr; + return IEnumShellItems_Constructor(iface, ppenumShellItems); } static const IShellItemArrayVtbl vt_IShellItemArray = { @@ -1142,29 +1127,31 @@ IShellItemArray_fnEnumItems }; -static HRESULT IShellItemArray_Constructor(IUnknown *pUnkOuter, REFIID riid, void **ppv) +/* Caller is responsible to AddRef all items */ +static HRESULT create_shellitemarray(IShellItem **items, DWORD count, IShellItemArray **ret) { IShellItemArrayImpl *This; - HRESULT ret; - TRACE("(%p, %s, %p)\n",pUnkOuter, debugstr_guid(riid), ppv); - - if(pUnkOuter) - return CLASS_E_NOAGGREGATION; + TRACE("(%p, %d, %p)\n", items, count, ret); This = HeapAlloc(GetProcessHeap(), 0, sizeof(IShellItemArrayImpl)); if(!This) return E_OUTOFMEMORY; - This->ref = 1; This->IShellItemArray_iface.lpVtbl = &vt_IShellItemArray; - This->array = NULL; - This->item_count = 0; + This->ref = 1; - ret = IShellItemArray_QueryInterface(&This->IShellItemArray_iface, riid, ppv); - IShellItemArray_Release(&This->IShellItemArray_iface); + This->array = HeapAlloc(GetProcessHeap(), 0, count*sizeof(IShellItem*)); + if (!This->array) + { + HeapFree(GetProcessHeap(), 0, This); + return E_OUTOFMEMORY; + } + memcpy(This->array, items, count*sizeof(IShellItem*)); + This->item_count = count; - return ret; + *ret = &This->IShellItemArray_iface; + return S_OK; } HRESULT WINAPI SHCreateShellItemArray(PCIDLIST_ABSOLUTE pidlParent, @@ -1173,13 +1160,14 @@ PCUITEMID_CHILD_ARRAY ppidl, IShellItemArray **ppsiItemArray) { - IShellItemArrayImpl *This; IShellItem **array; HRESULT ret = E_FAIL; UINT i; TRACE("%p, %p, %d, %p, %p\n", pidlParent, psf, cidl, ppidl, ppsiItemArray); + *ppsiItemArray = NULL; + if(!pidlParent && !psf) return E_POINTER; @@ -1198,52 +1186,37 @@ if(SUCCEEDED(ret)) { - ret = IShellItemArray_Constructor(NULL, &IID_IShellItemArray, (void**)&This); + ret = create_shellitemarray(array, cidl, ppsiItemArray); if(SUCCEEDED(ret)) - { - This->array = array; - This->item_count = cidl; - *ppsiItemArray = &This->IShellItemArray_iface; - return ret; - } } /* Something failed, clean up. */ for(i = 0; i < cidl; i++) if(array[i]) IShellItem_Release(array[i]); HeapFree(GetProcessHeap(), 0, array); - *ppsiItemArray = NULL; return ret; } -HRESULT WINAPI SHCreateShellItemArrayFromShellItem(IShellItem *psi, REFIID riid, void **ppv) +HRESULT WINAPI SHCreateShellItemArrayFromShellItem(IShellItem *item, REFIID riid, void **ppv) { - IShellItemArrayImpl *This; - IShellItem **array; + IShellItemArray *array; HRESULT ret; - TRACE("%p, %s, %p\n", psi, shdebugstr_guid(riid), ppv); + TRACE("%p, %s, %p\n", item, shdebugstr_guid(riid), ppv); - array = HeapAlloc(GetProcessHeap(), 0, sizeof(IShellItem*)); - if(!array) - return E_OUTOFMEMORY; + *ppv = NULL; - ret = IShellItemArray_Constructor(NULL, riid, (void**)&This); - if(SUCCEEDED(ret)) - { - array[0] = psi; - IShellItem_AddRef(psi); - This->array = array; - This->item_count = 1; - *ppv = This; - } - else + IShellItem_AddRef(item); + ret = create_shellitemarray(&item, 1, &array); + if(FAILED(ret)) { - HeapFree(GetProcessHeap(), 0, array); - *ppv = NULL; + IShellItem_Release(item); + return ret; } + ret = IShellItemArray_QueryInterface(array, riid, ppv); + IShellItemArray_Release(array); return ret; } @@ -1303,7 +1276,6 @@ PCIDLIST_ABSOLUTE_ARRAY pidl_array, IShellItemArray **psia) { - IShellItemArrayImpl *This; IShellItem **array; HRESULT ret; UINT i; @@ -1314,7 +1286,7 @@ if(cidl == 0) return E_INVALIDARG; - array = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IShellItem*)); + array = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, cidl*sizeof(IShellItem*)); if(!array) return E_OUTOFMEMORY; @@ -1327,14 +1299,9 @@ if(SUCCEEDED(ret)) { - ret = IShellItemArray_Constructor(NULL, &IID_IShellItemArray, (void**)psia); + ret = create_shellitemarray(array, cidl, psia); if(SUCCEEDED(ret)) - { - This = impl_from_IShellItemArray(*psia); - This->array = array; - This->item_count = cidl; - return S_OK; - } + return ret; } for(i = 0; i < cidl; i++) diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/shell32/shellpath.c wine-staging-1.7.41~ubuntu12.04.1/dlls/shell32/shellpath.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/shell32/shellpath.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/shell32/shellpath.c 2015-04-18 23:36:02.000000000 +0000 @@ -771,88 +771,180 @@ static const WCHAR szCategory[] = {'C','a','t','e','g','o','r','y',0}; static const WCHAR szAttributes[] = {'A','t','t','r','i','b','u','t','e','s',0}; static const WCHAR szName[] = {'N','a','m','e',0}; +static const WCHAR szParsingName[] = {'P','a','r','s','i','n','g','N','a','m','e',0}; static const WCHAR szRelativePath[] = {'R','e','l','a','t','i','v','e','P','a','t','h',0}; static const WCHAR szParentFolder[] = {'P','a','r','e','n','t','F','o','l','d','e','r',0}; static const WCHAR szCurrentVersion[] = {'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s','\\','C','u','r','r','e','n','t','V','e','r','s','i','o','n','\0'}; +static const WCHAR AddNewProgramsFolderW[] = {'A','d','d','N','e','w','P','r','o','g','r','a','m','s','F','o','l','d','e','r',0}; +static const WCHAR AppUpdatesFolderW[] = {'A','p','p','U','p','d','a','t','e','s','F','o','l','d','e','r',0}; static const WCHAR Administrative_ToolsW[] = {'A','d','m','i','n','i','s','t','r','a','t','i','v','e',' ','T','o','o','l','s','\0'}; static const WCHAR AppDataW[] = {'A','p','p','D','a','t','a','\0'}; +static const WCHAR AppData_RoamingW[] = {'A','p','p','D','a','t','a','\\','R','o','a','m','i','n','g','\0'}; static const WCHAR AppData_LocalLowW[] = {'A','p','p','D','a','t','a','\\','L','o','c','a','l','L','o','w','\0'}; +static const WCHAR AppData_LocalW[] = {'A','p','p','D','a','t','a','\\','L','o','c','a','l','\0'}; static const WCHAR Application_DataW[] = {'A','p','p','l','i','c','a','t','i','o','n',' ','D','a','t','a','\0'}; static const WCHAR CacheW[] = {'C','a','c','h','e','\0'}; static const WCHAR CD_BurningW[] = {'C','D',' ','B','u','r','n','i','n','g','\0'}; +static const WCHAR ChangeRemoveProgramsFolderW[] = {'C','h','a','n','g','e','R','e','m','o','v','e','P','r','o','g','r','a','m','s','F','o','l','d','e','r',0}; +static const WCHAR CommonW[] = {'C','o','m','m','o','n',0}; static const WCHAR Common_Administrative_ToolsW[] = {'C','o','m','m','o','n',' ','A','d','m','i','n','i','s','t','r','a','t','i','v','e',' ','T','o','o','l','s','\0'}; static const WCHAR Common_AppDataW[] = {'C','o','m','m','o','n',' ','A','p','p','D','a','t','a','\0'}; static const WCHAR Common_DesktopW[] = {'C','o','m','m','o','n',' ','D','e','s','k','t','o','p','\0'}; static const WCHAR Common_DocumentsW[] = {'C','o','m','m','o','n',' ','D','o','c','u','m','e','n','t','s','\0'}; +static const WCHAR CommonDownloadsW[] = {'C','o','m','m','o','n','D','o','w','n','l','o','a','d','s',0}; static const WCHAR Common_FavoritesW[] = {'C','o','m','m','o','n',' ','F','a','v','o','r','i','t','e','s','\0'}; static const WCHAR CommonFilesDirW[] = {'C','o','m','m','o','n','F','i','l','e','s','D','i','r','\0'}; static const WCHAR CommonFilesDirX86W[] = {'C','o','m','m','o','n','F','i','l','e','s','D','i','r',' ','(','x','8','6',')','\0'}; static const WCHAR CommonMusicW[] = {'C','o','m','m','o','n','M','u','s','i','c','\0'}; static const WCHAR CommonPicturesW[] = {'C','o','m','m','o','n','P','i','c','t','u','r','e','s','\0'}; static const WCHAR Common_ProgramsW[] = {'C','o','m','m','o','n',' ','P','r','o','g','r','a','m','s','\0'}; +static const WCHAR CommonRingtonesW[] = {'C','o','m','m','o','n','R','i','n','g','t','o','n','e','s',0}; static const WCHAR Common_StartUpW[] = {'C','o','m','m','o','n',' ','S','t','a','r','t','U','p','\0'}; +static const WCHAR Common_StartupW[] = {'C','o','m','m','o','n',' ','S','t','a','r','t','u','p','\0'}; static const WCHAR Common_Start_MenuW[] = {'C','o','m','m','o','n',' ','S','t','a','r','t',' ','M','e','n','u','\0'}; static const WCHAR Common_TemplatesW[] = {'C','o','m','m','o','n',' ','T','e','m','p','l','a','t','e','s','\0'}; static const WCHAR CommonVideoW[] = {'C','o','m','m','o','n','V','i','d','e','o','\0'}; +static const WCHAR ConflictFolderW[] = {'C','o','n','f','l','i','c','t','F','o','l','d','e','r',0}; +static const WCHAR ConnectionsFolderW[] = {'C','o','n','n','e','c','t','i','o','n','s','F','o','l','d','e','r',0}; static const WCHAR ContactsW[] = {'C','o','n','t','a','c','t','s','\0'}; +static const WCHAR ControlPanelFolderW[] = {'C','o','n','t','r','o','l','P','a','n','e','l','F','o','l','d','e','r',0}; static const WCHAR CookiesW[] = {'C','o','o','k','i','e','s','\0'}; +static const WCHAR CSCFolderW[] = {'C','S','C','F','o','l','d','e','r',0}; +static const WCHAR Default_GadgetsW[] = {'D','e','f','a','u','l','t',' ','G','a','d','g','e','t','s',0}; static const WCHAR DesktopW[] = {'D','e','s','k','t','o','p','\0'}; +static const WCHAR Device_Metadata_StoreW[] = {'D','e','v','i','c','e',' ','M','e','t','a','d','a','t','a',' ','S','t','o','r','e',0}; static const WCHAR DocumentsW[] = {'D','o','c','u','m','e','n','t','s','\0'}; +static const WCHAR DocumentsLibraryW[] = {'D','o','c','u','m','e','n','t','s','L','i','b','r','a','r','y','\0'}; +static const WCHAR Documents_librarymsW[] = {'D','o','c','u','m','e','n','t','s','.','l','i','b','r','a','r','y','-','m','s',0}; static const WCHAR DownloadsW[] = {'D','o','w','n','l','o','a','d','s','\0'}; static const WCHAR FavoritesW[] = {'F','a','v','o','r','i','t','e','s','\0'}; static const WCHAR FontsW[] = {'F','o','n','t','s','\0'}; +static const WCHAR GadgetsW[] = {'G','a','d','g','e','t','s',0}; +static const WCHAR GamesW[] = {'G','a','m','e','s',0}; +static const WCHAR GameTasksW[] = {'G','a','m','e','T','a','s','k','s',0}; static const WCHAR HistoryW[] = {'H','i','s','t','o','r','y','\0'}; +static const WCHAR HomeGroupFolderW[] = {'H','o','m','e','G','r','o','u','p','F','o','l','d','e','r',0}; +static const WCHAR ImplicitAppShortcutsW[] = {'I','m','p','l','i','c','i','t','A','p','p','S','h','o','r','t','c','u','t','s',0}; +static const WCHAR InternetFolderW[] = {'I','n','t','e','r','n','e','t','F','o','l','d','e','r',0}; +static const WCHAR LibrariesW[] = {'L','i','b','r','a','r','i','e','s',0}; static const WCHAR LinksW[] = {'L','i','n','k','s','\0'}; static const WCHAR Local_AppDataW[] = {'L','o','c','a','l',' ','A','p','p','D','a','t','a','\0'}; static const WCHAR Local_Settings_Application_DataW[] = {'L','o','c','a','l',' ','S','e','t','t','i','n','g','s','\\','A','p','p','l','i','c','a','t','i','o','n',' ','D','a','t','a','\0'}; static const WCHAR Local_Settings_CD_BurningW[] = {'L','o','c','a','l',' ','S','e','t','t','i','n','g','s','\\','A','p','p','l','i','c','a','t','i','o','n',' ','D','a','t','a','\\','M','i','c','r','o','s','o','f','t','\\','C','D',' ','B','u','r','n','i','n','g','\0'}; static const WCHAR Local_Settings_HistoryW[] = {'L','o','c','a','l',' ','S','e','t','t','i','n','g','s','\\','H','i','s','t','o','r','y','\0'}; static const WCHAR Local_Settings_Temporary_Internet_FilesW[] = {'L','o','c','a','l',' ','S','e','t','t','i','n','g','s','\\','T','e','m','p','o','r','a','r','y',' ','I','n','t','e','r','n','e','t',' ','F','i','l','e','s','\0'}; +static const WCHAR LocalAppDataLowW[] = {'L','o','c','a','l','A','p','p','D','a','t','a','L','o','w',0}; +static const WCHAR LocalizedResourcesDirW[] = {'L','o','c','a','l','i','z','e','d','R','e','s','o','u','r','c','e','s','D','i','r',0}; +static const WCHAR MAPIFolderW[] = {'M','A','P','I','F','o','l','d','e','r',0}; +static const WCHAR Microsoft_Internet_Explorer_Quick_LaunchW[] = {'M','i','c','r','o','s','o','f','t','\\','I','n','t','e','r','n','e','t',' ','E','x','p','l','o','r','e','r','\\','Q','u','i','c','k',' ','L','a','u','n','c','h',0}; +static const WCHAR Microsoft_Windows_Burn_BurnW[] = {'M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s','\\','B','u','r','n','\\','B','u','r','n',0}; +static const WCHAR Microsoft_Windows_CookiesW[] = {'M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s','\\','C','o','o','k','i','e','s',0}; static const WCHAR Microsoft_Windows_GameExplorerW[] = {'M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s','\\','G','a','m','e','E','x','p','l','o','r','e','r','\0'}; +static const WCHAR Microsoft_Windows_DeviceMetadataStoreW[] = {'M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s','\\','D','e','v','i','c','e','M','e','t','a','d','a','t','a','S','t','o','r','e',0}; +static const WCHAR Microsoft_Windows_HistoryW[] = {'M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s','\\','H','i','s','t','o','r','y',0}; static const WCHAR Microsoft_Windows_LibrariesW[] = {'M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s','\\','L','i','b','r','a','r','i','e','s','\0'}; +static const WCHAR Microsoft_Windows_Network_ShortcutsW[] = {'M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s','\\','N','e','t','w','o','r','k',' ','S','h','o','r','t','c','u','t','s',0}; +static const WCHAR Microsoft_Windows_Photo_Gallery_Original_ImagesW[] = {'M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s',' ','P','h','o','t','o',' ','G','a','l','l','e','r','y','\\','O','r','i','g','i','n','a','l',' ','I','m','a','g','e','s',0}; +static const WCHAR Microsoft_Windows_Printer_ShortcutsW[] = {'M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s','\\','P','r','i','n','t','e','r',' ','S','h','o','r','t','c','u','t','s',0}; +static const WCHAR Microsoft_Windows_RecentW[] = {'M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s','\\','R','e','c','e','n','t','\0'}; static const WCHAR Microsoft_Windows_RingtonesW[] = {'M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s','\\','R','i','n','g','t','o','n','e','s','\0'}; +static const WCHAR Microsoft_Windows_SendToW[] = {'M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s','\\','S','e','n','d','T','o',0}; +static const WCHAR Microsoft_Windows_Sidebar_GadgetsW[] = {'M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s',' ','S','i','d','e','b','a','r','\\','G','a','d','g','e','t','s',0}; static const WCHAR Microsoft_Windows_Start_MenuW[] = {'M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s','\\','S','t','a','r','t',' ','M','e','n','u',0}; +static const WCHAR Microsoft_Windows_TemplatesW[] = {'M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s','\\','T','e','m','p','l','a','t','e','s',0}; +static const WCHAR Microsoft_Windows_Temporary_Internet_FilesW[] = {'M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s','\\','T','e','m','p','o','r','a','r','y',' ','I','n','t','e','r','n','e','t',' ','F','i','l','e','s',0}; +static const WCHAR MoviesW[] = {'M','o','v','i','e','s','\0'}; static const WCHAR MusicW[] = {'M','u','s','i','c','\0'}; +static const WCHAR MusicLibraryW[] = {'M','u','s','i','c','L','i','b','r','a','r','y',0}; +static const WCHAR Music_librarymsW[] = {'M','u','s','i','c','.','l','i','b','r','a','r','y','-','m','s',0}; static const WCHAR Music_PlaylistsW[] = {'M','u','s','i','c','\\','P','l','a','y','l','i','s','t','s','\0'}; static const WCHAR Music_Sample_MusicW[] = {'M','u','s','i','c','\\','S','a','m','p','l','e',' ','M','u','s','i','c','\0'}; static const WCHAR Music_Sample_PlaylistsW[] = {'M','u','s','i','c','\\','S','a','m','p','l','e',' ','P','l','a','y','l','i','s','t','s','\0'}; static const WCHAR My_MusicW[] = {'M','y',' ','M','u','s','i','c','\0'}; static const WCHAR My_PicturesW[] = {'M','y',' ','P','i','c','t','u','r','e','s','\0'}; static const WCHAR My_VideosW[] = {'M','y',' ','V','i','d','e','o','s','\0'}; +static const WCHAR My_VideoW[] = {'M','y',' ','V','i','d','e','o','\0'}; +static const WCHAR MyComputerFolderW[] = {'M','y','C','o','m','p','u','t','e','r','F','o','l','d','e','r',0}; static const WCHAR NetHoodW[] = {'N','e','t','H','o','o','d','\0'}; +static const WCHAR NetworkPlacesFolderW[] = {'N','e','t','w','o','r','k','P','l','a','c','e','s','F','o','l','d','e','r',0}; static const WCHAR OEM_LinksW[] = {'O','E','M',' ','L','i','n','k','s','\0'}; +static const WCHAR Original_ImagesW[] = {'O','r','i','g','i','n','a','l',' ','I','m','a','g','e','s',0}; static const WCHAR PersonalW[] = {'P','e','r','s','o','n','a','l','\0'}; +static const WCHAR PhotoAlbumsW[] = {'P','h','o','t','o','A','l','b','u','m','s',0}; static const WCHAR PicturesW[] = {'P','i','c','t','u','r','e','s','\0'}; +static const WCHAR PicturesLibraryW[] = {'P','i','c','t','u','r','e','s','L','i','b','r','a','r','y',0}; +static const WCHAR Pictures_librarymsW[] = {'P','i','c','t','u','r','e','s','.','l','i','b','r','a','r','y','-','m','s',0}; static const WCHAR Pictures_Sample_PicturesW[] = {'P','i','c','t','u','r','e','s','\\','S','a','m','p','l','e',' ','P','i','c','t','u','r','e','s','\0'}; static const WCHAR Pictures_Slide_ShowsW[] = {'P','i','c','t','u','r','e','s','\\','S','l','i','d','e',' ','S','h','o','w','s','\0'}; +static const WCHAR PlaylistsW[] = {'P','l','a','y','l','i','s','t','s',0}; +static const WCHAR PrintersFolderW[] = {'P','r','i','n','t','e','r','s','F','o','l','d','e','r',0}; static const WCHAR PrintHoodW[] = {'P','r','i','n','t','H','o','o','d','\0'}; +static const WCHAR ProfileW[] = {'P','r','o','f','i','l','e',0}; static const WCHAR Program_FilesW[] = {'P','r','o','g','r','a','m',' ','F','i','l','e','s','\0'}; static const WCHAR ProgramFilesW[] = {'P','r','o','g','r','a','m','F','i','l','e','s','\0'}; +static const WCHAR ProgramFilesX86W[] = {'P','r','o','g','r','a','m','F','i','l','e','s','X','8','6','\0'}; +static const WCHAR ProgramFilesX64W[] = {'P','r','o','g','r','a','m','F','i','l','e','s','X','6','4','\0'}; static const WCHAR Program_Files_Common_FilesW[] = {'P','r','o','g','r','a','m',' ','F','i','l','e','s','\\','C','o','m','m','o','n',' ','F','i','l','e','s','\0'}; static const WCHAR Program_Files_x86W[] = {'P','r','o','g','r','a','m',' ','F','i','l','e','s',' ','(','x','8','6',')','\0'}; static const WCHAR Program_Files_x86_Common_FilesW[] = {'P','r','o','g','r','a','m',' ','F','i','l','e','s',' ','(','x','8','6',')','\\','C','o','m','m','o','n',' ','F','i','l','e','s','\0'}; static const WCHAR ProgramFilesCommonW[] = {'P','r','o','g','r','a','m','F','i','l','e','s','C','o','m','m','o','n',0}; +static const WCHAR ProgramFilesCommonX86W[] = {'P','r','o','g','r','a','m','F','i','l','e','s','C','o','m','m','o','n','X','8','6',0}; +static const WCHAR ProgramFilesCommonX64W[] = {'P','r','o','g','r','a','m','F','i','l','e','s','C','o','m','m','o','n','X','6','4',0}; static const WCHAR ProgramFilesDirW[] = {'P','r','o','g','r','a','m','F','i','l','e','s','D','i','r','\0'}; static const WCHAR ProgramFilesDirX86W[] = {'P','r','o','g','r','a','m','F','i','l','e','s','D','i','r',' ','(','x','8','6',')','\0'}; static const WCHAR ProgramsW[] = {'P','r','o','g','r','a','m','s','\0'}; +static const WCHAR PublicW[] = {'P','u','b','l','i','c',0}; +static const WCHAR PublicGameTasksW[] = {'P','u','b','l','i','c','G','a','m','e','T','a','s','k','s',0}; +static const WCHAR PublicLibrariesW[] = {'P','u','b','l','i','c','L','i','b','r','a','r','i','e','s',0}; +static const WCHAR Quick_LaunchW[] = {'Q','u','i','c','k',' ','L','a','u','n','c','h',0}; static const WCHAR RecentW[] = {'R','e','c','e','n','t','\0'}; +static const WCHAR RecordedTVLibraryW[] = {'R','e','c','o','r','d','e','d','T','V','L','i','b','r','a','r','y',0}; +static const WCHAR RecordedTV_librarymsW[] = {'R','e','c','o','r','d','e','d','T','V','.','l','i','b','r','a','r','y','-','m','s',0}; +static const WCHAR RecycleBinFolderW[] = {'R','e','c','y','c','l','e','B','i','n','F','o','l','d','e','r',0}; +static const WCHAR ResourceDirW[] = {'R','e','s','o','u','r','c','e','D','i','r','\0'}; static const WCHAR ResourcesW[] = {'R','e','s','o','u','r','c','e','s','\0'}; +static const WCHAR RingtonesW[] = {'R','i','n','g','t','o','n','e','s',0}; +static const WCHAR SampleMusicW[] = {'S','a','m','p','l','e','M','u','s','i','c',0}; +static const WCHAR Sample_MusicW[] = {'S','a','m','p','l','e',' ','M','u','s','i','c',0}; +static const WCHAR SamplePicturesW[] = {'S','a','m','p','l','e','P','i','c','t','u','r','e','s',0}; +static const WCHAR Sample_PicturesW[] = {'S','a','m','p','l','e',' ','P','i','c','t','u','r','e','s',0}; +static const WCHAR SamplePlaylistsW[] = {'S','a','m','p','l','e','P','l','a','y','l','i','s','t','s',0}; +static const WCHAR Sample_PlaylistsW[] = {'S','a','m','p','l','e',' ','P','l','a','y','l','i','s','t','s',0}; +static const WCHAR Sample_VideosW[] = {'S','a','m','p','l','e',' ','V','i','d','e','o','s',0}; +static const WCHAR SampleVideosW[] = {'S','a','m','p','l','e','V','i','d','e','o','s',0}; static const WCHAR Saved_GamesW[] = {'S','a','v','e','d',' ','G','a','m','e','s','\0'}; +static const WCHAR SavedGamesW[] = {'S','a','v','e','d','G','a','m','e','s','\0'}; static const WCHAR SearchesW[] = {'S','e','a','r','c','h','e','s','\0'}; +static const WCHAR SearchHomeFolderW[] = {'S','e','a','r','c','h','H','o','m','e','F','o','l','d','e','r',0}; static const WCHAR SendToW[] = {'S','e','n','d','T','o','\0'}; +static const WCHAR Slide_ShowsW[] = {'S','l','i','d','e',' ','S','h','o','w','s',0}; static const WCHAR StartUpW[] = {'S','t','a','r','t','U','p','\0'}; +static const WCHAR StartupW[] = {'S','t','a','r','t','u','p','\0'}; static const WCHAR Start_MenuW[] = {'S','t','a','r','t',' ','M','e','n','u','\0'}; static const WCHAR Start_Menu_ProgramsW[] = {'S','t','a','r','t',' ','M','e','n','u','\\','P','r','o','g','r','a','m','s','\0'}; static const WCHAR Start_Menu_Admin_ToolsW[] = {'S','t','a','r','t',' ','M','e','n','u','\\','P','r','o','g','r','a','m','s','\\','A','d','m','i','n','i','s','t','r','a','t','i','v','e',' ','T','o','o','l','s','\0'}; static const WCHAR Start_Menu_StartupW[] = {'S','t','a','r','t',' ','M','e','n','u','\\','P','r','o','g','r','a','m','s','\\','S','t','a','r','t','U','p','\0'}; +static const WCHAR SyncCenterFolderW[] = {'S','y','n','c','C','e','n','t','e','r','F','o','l','d','e','r',0}; +static const WCHAR SyncResultsFolderW[] = {'S','y','n','c','R','e','s','u','l','t','s','F','o','l','d','e','r',0}; +static const WCHAR SyncSetupFolderW[] = {'S','y','n','c','S','e','t','u','p','F','o','l','d','e','r',0}; static const WCHAR SystemW[] = {'S','y','s','t','e','m',0}; +static const WCHAR SystemX86W[] = {'S','y','s','t','e','m','X','8','6',0}; static const WCHAR TemplatesW[] = {'T','e','m','p','l','a','t','e','s','\0'}; +static const WCHAR User_PinnedW[] = {'U','s','e','r',' ','P','i','n','n','e','d',0}; static const WCHAR UsersW[] = {'U','s','e','r','s','\0'}; +static const WCHAR UsersFilesFolderW[] = {'U','s','e','r','s','F','i','l','e','s','F','o','l','d','e','r',0}; +static const WCHAR UsersLibrariesFolderW[] = {'U','s','e','r','s','L','i','b','r','a','r','i','e','s','F','o','l','d','e','r',0}; +static const WCHAR UserProfilesW[] = {'U','s','e','r','P','r','o','f','i','l','e','s',0}; +static const WCHAR UserProgramFilesW[] = {'U','s','e','r','P','r','o','g','r','a','m','F','i','l','e','s',0}; +static const WCHAR UserProgramFilesCommonW[] = {'U','s','e','r','P','r','o','g','r','a','m','F','i','l','e','s','C','o','m','m','o','n',0}; static const WCHAR UsersPublicW[] = {'U','s','e','r','s','\\','P','u','b','l','i','c','\0'}; static const WCHAR VideosW[] = {'V','i','d','e','o','s','\0'}; +static const WCHAR VideosLibraryW[] = {'V','i','d','e','o','s','L','i','b','r','a','r','y',0}; +static const WCHAR Videos_librarymsW[] = {'V','i','d','e','o','s','.','l','i','b','r','a','r','y','-','m','s',0}; static const WCHAR Videos_Sample_VideosW[] = {'V','i','d','e','o','s','\\','S','a','m','p','l','e',' ','V','i','d','e','o','s','\0'}; static const WCHAR WindowsW[] = {'W','i','n','d','o','w','s',0}; +static const WCHAR Windows_Sidebar_GadgetsW[] = {'W','i','n','d','o','w','s',' ','S','i','d','e','b','a','r','\\','G','a','d','g','e','t','s',0}; static const WCHAR DefaultW[] = {'.','D','e','f','a','u','l','t','\0'}; static const WCHAR AllUsersProfileW[] = {'%','A','L','L','U','S','E','R','S','P','R','O','F','I','L','E','%','\0'}; static const WCHAR UserProfileW[] = {'%','U','S','E','R','P','R','O','F','I','L','E','%','\0'}; @@ -867,6 +959,48 @@ static const WCHAR szKnownFolderRedirections[] = {'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s','\\','C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\','E','x','p','l','o','r','e','r','\\','U','s','e','r',' ','S','h','e','l','l',' ','F','o','l','d','e','r','s',0}; static const WCHAR AllUsersW[] = {'P','u','b','l','i','c',0}; +#define CHANGEREMOVEPROGRAMS_PARSING_GUID '{','7','b','8','1','b','e','6','a','-','c','e','2','b','-','4','6','7','6','-','a','2','9','e','-','e','b','9','0','7','a','5','1','2','6','c','5','}' +#define SYNCMANAGER_PARSING_GUID '{','9','C','7','3','F','5','E','5','-','7','A','E','7','-','4','E','3','2','-','A','8','E','8','-','8','D','2','3','B','8','5','2','5','5','B','F','}' +#define SYSTEMFOLDERS_PARSING_GUID '{','2','1','E','C','2','0','2','0','-','3','A','E','A','-','1','0','6','9','-','A','2','D','D','-','0','8','0','0','2','B','3','0','3','0','9','D','}' +#define USERFOLDERS_PARSING_GUID '{','5','9','0','3','1','a','4','7','-','3','f','7','2','-','4','4','a','7','-','8','9','c','5','-','5','5','9','5','f','e','6','b','3','0','e','e','}' +#define USERSLIBRARIES_PARSING_GUID '{','0','3','1','E','4','8','2','5','-','7','B','9','4','-','4','d','c','3','-','B','1','3','1','-','E','9','4','6','B','4','4','C','8','D','D','5','}' + +static const WCHAR ComputerFolderParsingNameW[] = {':',':','{','2','0','D','0','4','F','E','0','-','3','A','E','A','-','1','0','6','9','-','A','2','D','8','-','0','8','0','0','2','B','3','0','3','0','9','D','}',0}; +static const WCHAR ControlPanelFolderParsingNameW[] = {':',':','{','2','6','E','E','0','6','6','8','-','A','0','0','A','-','4','4','D','7','-','9','3','7','1','-','B','E','B','0','6','4','C','9','8','6','8','3','}','\\','0',0}; +static const WCHAR ControlPanelFolderRelativePathW[] = {':',':','{','2','1','E','C','2','0','2','0','-','3','A','E','A','-','1','0','6','9','-','A','2','D','D','-','0','8','0','0','2','B','3','0','3','0','9','D','}',0}; +static const WCHAR GamesParsingNameW[] = {':',':','{','E','D','2','2','8','F','D','F','-','9','E','A','8','-','4','8','7','0','-','8','3','b','1','-','9','6','b','0','2','C','F','E','0','D','5','2','}',0}; +static const WCHAR HomeGroupParsingNameW[] = {':',':','{','B','4','F','B','3','F','9','8','-','C','1','E','A','-','4','2','8','d','-','A','7','8','A','-','D','1','F','5','6','5','9','C','B','A','9','3','}',0}; +static const WCHAR InternetFolderParsingNameW[] = {':',':','{','8','7','1','C','5','3','8','0','-','4','2','A','0','-','1','0','6','9','-','A','2','E','A','-','0','8','0','0','2','B','3','0','3','0','9','D','}',0}; +static const WCHAR NetworkFolderParsingNameW[] = {':',':','{','F','0','2','C','1','A','0','D','-','B','E','2','1','-','4','3','5','0','-','8','8','B','0','-','7','3','6','7','F','C','9','6','E','F','3','C','}',0}; +static const WCHAR PublicParsingNameW[] = {':',':','{','4','3','3','6','a','5','4','d','-','0','3','8','b','-','4','6','8','5','-','a','b','0','2','-','9','9','b','b','5','2','d','3','f','b','8','b','}',0}; +static const WCHAR RecycleBinFolderParsingNameW[] = {':',':','{','6','4','5','F','F','0','4','0','-','5','0','8','1','-','1','0','1','B','-','9','F','0','8','-','0','0','A','A','0','0','2','F','9','5','4','E','}',0}; +static const WCHAR SearchHomeParsingNameW[] = {':',':','{','9','3','4','3','8','1','2','e','-','1','c','3','7','-','4','a','4','9','-','a','1','2','e','-','4','b','2','d','8','1','0','d','9','5','6','b','}',0}; +static const WCHAR SEARCH_CSCParsingNameW[] = {'s','h','e','l','l',':',':',':','{','B','D','7','A','2','E','7','B','-','2','1','C','B','-','4','1','b','2','-','A','0','8','6','-','B','3','0','9','6','8','0','C','6','B','7','E','}','\\','*',0}; +static const WCHAR SEARCH_MAPIParsingNameW[] = {'s','h','e','l','l',':',':',':','{','8','9','D','8','3','5','7','6','-','6','B','D','1','-','4','C','8','6','-','9','4','5','4','-','B','E','B','0','4','E','9','4','C','8','1','9','}','\\','*',0}; +static const WCHAR UsersFilesParsingNameW[] = {':',':','{','5','9','0','3','1','a','4','7','-','3','f','7','2','-','4','4','a','7','-','8','9','c','5','-','5','5','9','5','f','e','6','b','3','0','e','e','}',0}; +static const WCHAR UsersLibrariesParsingNameW[] = {':',':','{','0','3','1','E','4','8','2','5','-','7','B','9','4','-','4','d','c','3','-','B','1','3','1','-','E','9','4','6','B','4','4','C','8','D','D','5','}',0}; +static const WCHAR AddNewProgramsParsingNameW[] = {':',':', SYSTEMFOLDERS_PARSING_GUID, '\\',':',':','{','1','5','e','a','e','9','2','e','-','f','1','7','a','-','4','4','3','1','-','9','f','2','8','-','8','0','5','e','4','8','2','d','a','f','d','4','}',0}; +static const WCHAR ConnectionsFolderParsingNameW[] = {':',':', SYSTEMFOLDERS_PARSING_GUID, '\\',':',':','{','7','0','0','7','A','C','C','7','-','3','2','0','2','-','1','1','D','1','-','A','A','D','2','-','0','0','8','0','5','F','C','1','2','7','0','E','}',0}; +static const WCHAR PrintersFolderParsingNameW[] = {':',':', SYSTEMFOLDERS_PARSING_GUID, '\\',':',':','{','2','2','2','7','A','2','8','0','-','3','A','E','A','-','1','0','6','9','-','A','2','D','E','-','0','8','0','0','2','B','3','0','3','0','9','D','}',0}; +static const WCHAR ChangeRemoveProgramsParsingNameW[] = {':',':', SYSTEMFOLDERS_PARSING_GUID, '\\',':',':', CHANGEREMOVEPROGRAMS_PARSING_GUID, 0}; +static const WCHAR AppUpdatesParsingNameW[] = {':',':', SYSTEMFOLDERS_PARSING_GUID, '\\',':',':', CHANGEREMOVEPROGRAMS_PARSING_GUID, '\\',':',':','{','d','4','5','0','a','8','a','1','-','9','5','6','8','-','4','5','c','7','-','9','c','0','e','-','b','4','f','9','f','b','4','5','3','7','b','d','}',0}; +static const WCHAR SyncManagerFolderParsingNameW[] = {':',':', SYSTEMFOLDERS_PARSING_GUID, '\\',':',':', SYNCMANAGER_PARSING_GUID, 0}; +static const WCHAR ConflictFolderParsingNameW[] = {':',':', SYSTEMFOLDERS_PARSING_GUID, '\\',':',':', SYNCMANAGER_PARSING_GUID, '\\',':',':','{','E','4','1','3','D','0','4','0','-','6','7','8','8','-','4','C','2','2','-','9','5','7','E','-','1','7','5','D','1','C','5','1','3','A','3','4','}',',',0}; +static const WCHAR SyncResultsFolderParsingNameW[] = {':',':', SYSTEMFOLDERS_PARSING_GUID, '\\',':',':', SYNCMANAGER_PARSING_GUID, '\\',':',':','{','B','C','4','8','B','3','2','F','-','5','9','1','0','-','4','7','F','5','-','8','5','7','0','-','5','0','7','4','A','8','A','5','6','3','6','A','}',',',0}; +static const WCHAR SyncSetupFolderParsingNameW[] = {':',':', SYSTEMFOLDERS_PARSING_GUID, '\\',':',':', SYNCMANAGER_PARSING_GUID, '\\',':',':','{','F','1','3','9','0','A','9','A','-','A','3','F','4','-','4','E','5','D','-','9','C','5','F','-','9','8','F','3','B','D','8','D','9','3','5','C','}',',',0}; +static const WCHAR ContactsParsingNameW[] = {':',':', USERFOLDERS_PARSING_GUID, '\\','{','5','6','7','8','4','8','5','4','-','C','6','C','B','-','4','6','2','B','-','8','1','6','9','-','8','8','E','3','5','0','A','C','B','8','8','2','}',0}; +static const WCHAR DocumentsParsingNameW[] = {':',':', USERFOLDERS_PARSING_GUID, '\\','{','F','D','D','3','9','A','D','0','-','2','3','8','F','-','4','6','A','F','-','A','D','B','4','-','6','C','8','5','4','8','0','3','6','9','C','7','}',0}; +static const WCHAR LinksParsingNameW[] = {':',':', USERFOLDERS_PARSING_GUID, '\\','{','b','f','b','9','d','5','e','0','-','c','6','a','9','-','4','0','4','c','-','b','2','b','2','-','a','e','6','d','b','6','a','f','4','9','6','8','}',0}; +static const WCHAR MusicParsingNameW[] = {':',':', USERFOLDERS_PARSING_GUID, '\\','{','4','B','D','8','D','5','7','1','-','6','D','1','9','-','4','8','D','3','-','B','E','9','7','-','4','2','2','2','2','0','0','8','0','E','4','3','}',0}; +static const WCHAR PicturesParsingNameW[] = {':',':', USERFOLDERS_PARSING_GUID, '\\','{','3','3','E','2','8','1','3','0','-','4','E','1','E','-','4','6','7','6','-','8','3','5','A','-','9','8','3','9','5','C','3','B','C','3','B','B','}',0}; +static const WCHAR SavedGamesParsingNameW[] = {':',':', USERFOLDERS_PARSING_GUID, '\\','{','4','C','5','C','3','2','F','F','-','B','B','9','D','-','4','3','b','0','-','B','5','B','4','-','2','D','7','2','E','5','4','E','A','A','A','4','}',0}; +static const WCHAR SavedSearchesParsingNameW[] = {':',':', USERFOLDERS_PARSING_GUID, '\\','{','7','d','1','d','3','a','0','4','-','d','e','b','b','-','4','1','1','5','-','9','5','c','f','-','2','f','2','9','d','a','2','9','2','0','d','a','}',0}; +static const WCHAR VideosParsingNameW[] = {':',':', USERFOLDERS_PARSING_GUID, '\\','{','1','8','9','8','9','B','1','D','-','9','9','B','5','-','4','5','5','B','-','8','4','1','C','-','A','B','7','C','7','4','E','4','D','D','F','C','}',0}; +static const WCHAR DocumentsLibraryParsingNameW[] = {':',':', USERSLIBRARIES_PARSING_GUID, '\\','{','7','b','0','d','b','1','7','d','-','9','c','d','2','-','4','a','9','3','-','9','7','3','3','-','4','6','c','c','8','9','0','2','2','e','7','c','}',0}; +static const WCHAR MusicLibraryParsingNameW[] = {':',':', USERSLIBRARIES_PARSING_GUID, '\\','{','2','1','1','2','A','B','0','A','-','C','8','6','A','-','4','f','f','e','-','A','3','6','8','-','0','D','E','9','6','E','4','7','0','1','2','E','}',0}; +static const WCHAR PicturesLibraryParsingNameW[] = {':',':', USERSLIBRARIES_PARSING_GUID, '\\','{','A','9','9','0','A','E','9','F','-','A','0','3','B','-','4','e','8','0','-','9','4','B','C','-','9','9','1','2','D','7','5','0','4','1','0','4','}',0}; +static const WCHAR VideosLibraryParsingNameW[] = {':',':', USERSLIBRARIES_PARSING_GUID, '\\','{','4','9','1','E','9','2','2','F','-','5','6','4','3','-','4','a','f','4','-','A','7','E','B','-','4','E','7','A','1','3','8','D','8','1','7','4','}',0}; + typedef enum _CSIDL_Type { CSIDL_Type_User, CSIDL_Type_AllUsers, @@ -934,67 +1068,221 @@ &FOLDERID_InternetFolder, CSIDL_Type_Disallowed, NULL, - NULL + NULL, + + KF_CATEGORY_VIRTUAL, /* category */ + InternetFolderW, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + NULL, /* relative path */ + InternetFolderParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x02 - CSIDL_PROGRAMS */ &FOLDERID_Programs, CSIDL_Type_User, ProgramsW, - Start_Menu_ProgramsW + Start_Menu_ProgramsW, + + KF_CATEGORY_PERUSER, /* category */ + ProgramsW, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + ProgramsW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x03 - CSIDL_CONTROLS (.CPL files) */ &FOLDERID_ControlPanelFolder, CSIDL_Type_SystemPath, NULL, - NULL + NULL, + + KF_CATEGORY_VIRTUAL, /* category */ + ControlPanelFolderW, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + ControlPanelFolderRelativePathW, /* relative path */ + ControlPanelFolderParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x04 - CSIDL_PRINTERS */ &FOLDERID_PrintersFolder, CSIDL_Type_SystemPath, NULL, - NULL + NULL, + + KF_CATEGORY_VIRTUAL, /* category */ + PrintersFolderW, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + NULL, /* relative path */ + PrintersFolderParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x05 - CSIDL_PERSONAL */ &FOLDERID_Documents, CSIDL_Type_User, PersonalW, - MAKEINTRESOURCEW(IDS_PERSONAL) + MAKEINTRESOURCEW(IDS_PERSONAL), + + KF_CATEGORY_PERUSER, /* category */ + PersonalW, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + DocumentsW, /* relative path */ + DocumentsParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + KFDF_ROAMABLE | KFDF_PRECREATE, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x06 - CSIDL_FAVORITES */ &FOLDERID_Favorites, CSIDL_Type_User, FavoritesW, - FavoritesW + FavoritesW, + + KF_CATEGORY_PERUSER, /* category */ + FavoritesW, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + FavoritesW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + KFDF_ROAMABLE | KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x07 - CSIDL_STARTUP */ &FOLDERID_Startup, CSIDL_Type_User, StartUpW, - Start_Menu_StartupW + Start_Menu_StartupW, + + KF_CATEGORY_PERUSER, /* category */ + StartupW, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + StartUpW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + KFDF_PRECREATE, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x08 - CSIDL_RECENT */ &FOLDERID_Recent, CSIDL_Type_User, RecentW, - RecentW + RecentW, + + KF_CATEGORY_PERUSER, /* category */ + RecentW, /* name */ + NULL, /* description */ + &FOLDERID_RoamingAppData, /* parent */ + Microsoft_Windows_RecentW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + KFDF_PRECREATE, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x09 - CSIDL_SENDTO */ &FOLDERID_SendTo, CSIDL_Type_User, SendToW, - SendToW + SendToW, + + KF_CATEGORY_PERUSER, /* category */ + SendToW, /* name */ + NULL, /* description */ + &FOLDERID_RoamingAppData, /* parent */ + Microsoft_Windows_SendToW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + KFDF_PRECREATE, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x0a - CSIDL_BITBUCKET - Recycle Bin */ &FOLDERID_RecycleBinFolder, CSIDL_Type_Disallowed, NULL, NULL, + + KF_CATEGORY_VIRTUAL, /* category */ + RecycleBinFolderW, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + NULL, /* relative path */ + RecycleBinFolderParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x0b - CSIDL_STARTMENU */ &FOLDERID_StartMenu, CSIDL_Type_User, Start_MenuW, - Start_MenuW + Start_MenuW, + + KF_CATEGORY_PERUSER, /* category */ + Start_MenuW, /* name */ + NULL, /* description */ + &FOLDERID_RoamingAppData, /* parent */ + Microsoft_Windows_Start_MenuW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + KFDF_PRECREATE, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x0c - CSIDL_MYDOCUMENTS */ &GUID_NULL, @@ -1006,13 +1294,41 @@ &FOLDERID_Music, CSIDL_Type_User, My_MusicW, - MAKEINTRESOURCEW(IDS_MYMUSIC) + MAKEINTRESOURCEW(IDS_MYMUSIC), + + KF_CATEGORY_PERUSER, /* category */ + My_MusicW, /* name */ + NULL, /* description */ + &FOLDERID_Profile, /* parent */ + MusicW, /* relative path */ + MusicParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + KFDF_ROAMABLE | KFDF_PRECREATE, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x0e - CSIDL_MYVIDEO */ &FOLDERID_Videos, CSIDL_Type_User, My_VideosW, - MAKEINTRESOURCEW(IDS_MYVIDEOS) + MAKEINTRESOURCEW(IDS_MYVIDEOS), + + KF_CATEGORY_PERUSER, /* category */ + My_VideoW, /* name */ + NULL, /* description */ + &FOLDERID_Profile, /* parent */ + VideosW, /* relative path */ + VideosParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + KFDF_ROAMABLE | KFDF_PRECREATE, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x0f - unassigned */ &GUID_NULL, @@ -1024,25 +1340,81 @@ &FOLDERID_Desktop, CSIDL_Type_User, DesktopW, - MAKEINTRESOURCEW(IDS_DESKTOPDIRECTORY) + MAKEINTRESOURCEW(IDS_DESKTOPDIRECTORY), + + KF_CATEGORY_PERUSER, /* category */ + DesktopW, /* name */ + NULL, /* description */ + &FOLDERID_Profile, /* parent */ + DesktopW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + KFDF_ROAMABLE | KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x11 - CSIDL_DRIVES */ &FOLDERID_ComputerFolder, CSIDL_Type_Disallowed, NULL, NULL, + + KF_CATEGORY_VIRTUAL, /* category */ + MyComputerFolderW, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + NULL, /* relative path */ + ComputerFolderParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x12 - CSIDL_NETWORK */ &FOLDERID_NetworkFolder, CSIDL_Type_Disallowed, NULL, NULL, + + KF_CATEGORY_VIRTUAL, /* category */ + NetworkPlacesFolderW, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + NULL, /* relative path */ + NetworkFolderParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x13 - CSIDL_NETHOOD */ &FOLDERID_NetHood, CSIDL_Type_User, NetHoodW, - NetHoodW + NetHoodW, + + KF_CATEGORY_PERUSER, /* category */ + NetHoodW, /* name */ + NULL, /* description */ + &FOLDERID_RoamingAppData, /* parent */ + Microsoft_Windows_Network_ShortcutsW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x14 - CSIDL_FONTS */ &FOLDERID_Fonts, @@ -1068,7 +1440,21 @@ &FOLDERID_Templates, CSIDL_Type_User, TemplatesW, - TemplatesW + TemplatesW, + + KF_CATEGORY_PERUSER, /* category */ + TemplatesW, /* name */ + NULL, /* description */ + &FOLDERID_RoamingAppData, /* parent */ + Microsoft_Windows_TemplatesW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x16 - CSIDL_COMMON_STARTMENU */ &FOLDERID_CommonStartMenu, @@ -1114,34 +1500,104 @@ &FOLDERID_CommonStartup, CSIDL_Type_AllUsers, Common_StartUpW, - Start_Menu_StartupW + Start_Menu_StartupW, + + KF_CATEGORY_COMMON, /* category */ + Common_StartupW, /* name */ + NULL, /* description */ + &FOLDERID_CommonPrograms, /* parent */ + StartUpW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + KFDF_PRECREATE, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x19 - CSIDL_COMMON_DESKTOPDIRECTORY */ &FOLDERID_PublicDesktop, CSIDL_Type_AllUsers, Common_DesktopW, - MAKEINTRESOURCEW(IDS_DESKTOPDIRECTORY) + MAKEINTRESOURCEW(IDS_DESKTOPDIRECTORY), + + KF_CATEGORY_COMMON, /* category */ + Common_DesktopW, /* name */ + NULL, /* description */ + &FOLDERID_Public, /* parent */ + DesktopW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN, /* attributes */ + KFDF_PRECREATE, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x1a - CSIDL_APPDATA */ &FOLDERID_RoamingAppData, CSIDL_Type_User, AppDataW, - Application_DataW + Application_DataW, + + KF_CATEGORY_PERUSER, /* category */ + AppDataW, /* name */ + NULL, /* description */ + &FOLDERID_Profile, /* parent */ + AppData_RoamingW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x1b - CSIDL_PRINTHOOD */ &FOLDERID_PrintHood, CSIDL_Type_User, PrintHoodW, - PrintHoodW + PrintHoodW, + + KF_CATEGORY_PERUSER, /* category */ + PrintHoodW, /* name */ + NULL, /* description */ + &FOLDERID_RoamingAppData, /* parent */ + Microsoft_Windows_Printer_ShortcutsW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x1c - CSIDL_LOCAL_APPDATA */ &FOLDERID_LocalAppData, CSIDL_Type_User, Local_AppDataW, - Local_Settings_Application_DataW - }, - { /* 0x1d - CSIDL_ALTSTARTUP */ - &GUID_NULL, + Local_Settings_Application_DataW, + + KF_CATEGORY_PERUSER, /* category */ + Local_AppDataW, /* name */ + NULL, /* description */ + &FOLDERID_Profile, /* parent */ + AppData_LocalW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + KFDF_LOCAL_REDIRECT_ONLY | KFDF_PUBLISHEXPANDEDPATH, /* flags */ + &GUID_NULL /* typeid */ + }, + { /* 0x1d - CSIDL_ALTSTARTUP */ + &GUID_NULL, CSIDL_Type_NonExistent, NULL, NULL @@ -1156,25 +1612,81 @@ &FOLDERID_Favorites, CSIDL_Type_AllUsers, Common_FavoritesW, - FavoritesW + FavoritesW, + + KF_CATEGORY_PERUSER, /* category */ + FavoritesW, /* name */ + NULL, /* description */ + &FOLDERID_Profile, /* parent */ + FavoritesW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + KFDF_ROAMABLE | KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x20 - CSIDL_INTERNET_CACHE */ &FOLDERID_InternetCache, CSIDL_Type_User, CacheW, - Local_Settings_Temporary_Internet_FilesW + Local_Settings_Temporary_Internet_FilesW, + + KF_CATEGORY_PERUSER, /* category */ + CacheW, /* name */ + NULL, /* description */ + &FOLDERID_LocalAppData, /* parent */ + Microsoft_Windows_Temporary_Internet_FilesW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + KFDF_LOCAL_REDIRECT_ONLY, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x21 - CSIDL_COOKIES */ &FOLDERID_Cookies, CSIDL_Type_User, CookiesW, - CookiesW + CookiesW, + + KF_CATEGORY_PERUSER, /* category */ + CookiesW, /* name */ + NULL, /* description */ + &FOLDERID_RoamingAppData, /* parent */ + Microsoft_Windows_CookiesW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x22 - CSIDL_HISTORY */ &FOLDERID_History, CSIDL_Type_User, HistoryW, - Local_Settings_HistoryW + Local_Settings_HistoryW, + + KF_CATEGORY_PERUSER, /* category */ + HistoryW, /* name */ + NULL, /* description */ + &FOLDERID_LocalAppData, /* parent */ + Microsoft_Windows_HistoryW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + KFDF_LOCAL_REDIRECT_ONLY, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x23 - CSIDL_COMMON_APPDATA */ &FOLDERID_ProgramData, @@ -1260,25 +1772,81 @@ &FOLDERID_Pictures, CSIDL_Type_User, My_PicturesW, - MAKEINTRESOURCEW(IDS_MYPICTURES) + MAKEINTRESOURCEW(IDS_MYPICTURES), + + KF_CATEGORY_PERUSER, /* category */ + My_PicturesW, /* name */ + NULL, /* description */ + &FOLDERID_Profile, /* parent */ + PicturesW, /* relative path */ + PicturesParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + KFDF_ROAMABLE | KFDF_PRECREATE, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x28 - CSIDL_PROFILE */ &FOLDERID_Profile, CSIDL_Type_User, NULL, - NULL + NULL, + + KF_CATEGORY_FIXED, /* category */ + ProfileW, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + NULL, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x29 - CSIDL_SYSTEMX86 */ &FOLDERID_SystemX86, CSIDL_Type_SystemX86Path, NULL, - NULL + NULL, + + KF_CATEGORY_FIXED, /* category */ + SystemX86W, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + NULL, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x2a - CSIDL_PROGRAM_FILESX86 */ &FOLDERID_ProgramFilesX86, CSIDL_Type_CurrVer, ProgramFilesDirX86W, - Program_Files_x86W + Program_Files_x86W, + + KF_CATEGORY_FIXED, /* category */ + ProgramFilesX86W, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + NULL, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x2b - CSIDL_PROGRAM_FILES_COMMON */ &FOLDERID_ProgramFilesCommon, @@ -1304,37 +1872,121 @@ &FOLDERID_ProgramFilesCommonX86, CSIDL_Type_CurrVer, CommonFilesDirX86W, - Program_Files_x86_Common_FilesW + Program_Files_x86_Common_FilesW, + + KF_CATEGORY_FIXED, /* category */ + ProgramFilesCommonX86W, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + NULL, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x2d - CSIDL_COMMON_TEMPLATES */ &FOLDERID_CommonTemplates, CSIDL_Type_AllUsers, Common_TemplatesW, - TemplatesW + TemplatesW, + + KF_CATEGORY_COMMON, /* category */ + Common_TemplatesW, /* name */ + NULL, /* description */ + &FOLDERID_ProgramData, /* parent */ + Microsoft_Windows_TemplatesW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x2e - CSIDL_COMMON_DOCUMENTS */ &FOLDERID_PublicDocuments, CSIDL_Type_AllUsers, Common_DocumentsW, - DocumentsW + DocumentsW, + + KF_CATEGORY_COMMON, /* category */ + Common_DocumentsW, /* name */ + NULL, /* description */ + &FOLDERID_Public, /* parent */ + DocumentsW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + KFDF_PRECREATE, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x2f - CSIDL_COMMON_ADMINTOOLS */ &FOLDERID_CommonAdminTools, CSIDL_Type_AllUsers, Common_Administrative_ToolsW, - Start_Menu_Admin_ToolsW + Start_Menu_Admin_ToolsW, + + KF_CATEGORY_COMMON, /* category */ + Common_Administrative_ToolsW, /* name */ + NULL, /* description */ + &FOLDERID_CommonPrograms, /* parent */ + Administrative_ToolsW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + KFDF_PRECREATE, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x30 - CSIDL_ADMINTOOLS */ &FOLDERID_AdminTools, CSIDL_Type_User, Administrative_ToolsW, - Start_Menu_Admin_ToolsW + Start_Menu_Admin_ToolsW, + + KF_CATEGORY_PERUSER, /* category */ + Administrative_ToolsW, /* name */ + NULL, /* description */ + &FOLDERID_Programs, /* parent */ + Administrative_ToolsW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + KFDF_PRECREATE, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x31 - CSIDL_CONNECTIONS */ &FOLDERID_ConnectionsFolder, CSIDL_Type_Disallowed, NULL, - NULL + NULL, + + KF_CATEGORY_VIRTUAL, /* category */ + ConnectionsFolderW, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + Administrative_ToolsW, /* relative path */ + ConnectionsFolderParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x32 - unassigned */ &GUID_NULL, @@ -1358,52 +2010,150 @@ &FOLDERID_PublicMusic, CSIDL_Type_AllUsers, CommonMusicW, - MusicW + MusicW, + + KF_CATEGORY_COMMON, /* category */ + CommonMusicW, /* name */ + NULL, /* description */ + &FOLDERID_Public, /* parent */ + MusicW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + KFDF_PRECREATE, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x36 - CSIDL_COMMON_PICTURES */ &FOLDERID_PublicPictures, CSIDL_Type_AllUsers, CommonPicturesW, - PicturesW + PicturesW, + + KF_CATEGORY_COMMON, /* category */ + CommonPicturesW, /* name */ + NULL, /* description */ + &FOLDERID_Public, /* parent */ + PicturesW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + KFDF_PRECREATE, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x37 - CSIDL_COMMON_VIDEO */ &FOLDERID_PublicVideos, CSIDL_Type_AllUsers, CommonVideoW, - VideosW + VideosW, + + KF_CATEGORY_COMMON, /* category */ + CommonVideoW, /* name */ + NULL, /* description */ + &FOLDERID_Public, /* parent */ + VideosW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + KFDF_PRECREATE, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x38 - CSIDL_RESOURCES */ &FOLDERID_ResourceDir, CSIDL_Type_WindowsPath, NULL, - ResourcesW + ResourcesW, + + KF_CATEGORY_FIXED, /* category */ + ResourceDirW, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + NULL, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x39 - CSIDL_RESOURCES_LOCALIZED */ &FOLDERID_LocalizedResourcesDir, CSIDL_Type_NonExistent, NULL, - NULL + NULL, + + KF_CATEGORY_FIXED, /* category */ + LocalizedResourcesDirW, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + NULL, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x3a - CSIDL_COMMON_OEM_LINKS */ &FOLDERID_CommonOEMLinks, CSIDL_Type_AllUsers, NULL, - OEM_LinksW + OEM_LinksW, + + KF_CATEGORY_COMMON, /* category */ + OEM_LinksW, /* name */ + NULL, /* description */ + &FOLDERID_ProgramData, /* parent */ + OEM_LinksW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x3b - CSIDL_CDBURN_AREA */ &FOLDERID_CDBurning, CSIDL_Type_User, CD_BurningW, - Local_Settings_CD_BurningW - }, - { /* 0x3c unassigned */ - &GUID_NULL, - CSIDL_Type_Disallowed, - NULL, - NULL - }, - { /* 0x3d - CSIDL_COMPUTERSNEARME */ - &GUID_NULL, + Local_Settings_CD_BurningW, + + KF_CATEGORY_PERUSER, /* category */ + CD_BurningW, /* name */ + NULL, /* description */ + &FOLDERID_LocalAppData, /* parent */ + Microsoft_Windows_Burn_BurnW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + KFDF_LOCAL_REDIRECT_ONLY, /* flags */ + &GUID_NULL /* typeid */ + }, + { /* 0x3c unassigned */ + &GUID_NULL, + CSIDL_Type_Disallowed, + NULL, + NULL + }, + { /* 0x3d - CSIDL_COMPUTERSNEARME */ + &GUID_NULL, CSIDL_Type_Disallowed, /* FIXME */ NULL, NULL @@ -1418,37 +2168,121 @@ &FOLDERID_AddNewPrograms, CSIDL_Type_Disallowed, NULL, - NULL + NULL, + + KF_CATEGORY_VIRTUAL, /* category */ + AddNewProgramsFolderW, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + NULL, /* relative path */ + AddNewProgramsParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x40 */ &FOLDERID_AppUpdates, CSIDL_Type_Disallowed, NULL, - NULL + NULL, + + KF_CATEGORY_VIRTUAL, /* category */ + AppUpdatesFolderW, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + NULL, /* relative path */ + AppUpdatesParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x41 */ &FOLDERID_ChangeRemovePrograms, CSIDL_Type_Disallowed, NULL, - NULL + NULL, + + KF_CATEGORY_VIRTUAL, /* category */ + ChangeRemoveProgramsFolderW, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + NULL, /* relative path */ + ChangeRemoveProgramsParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x42 */ &FOLDERID_ConflictFolder, CSIDL_Type_Disallowed, NULL, - NULL + NULL, + + KF_CATEGORY_VIRTUAL, /* category */ + ConflictFolderW, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + NULL, /* relative path */ + ConflictFolderParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x43 - CSIDL_CONTACTS */ &FOLDERID_Contacts, CSIDL_Type_User, NULL, - ContactsW + ContactsW, + + KF_CATEGORY_PERUSER, /* category */ + ContactsW, /* name */ + NULL, /* description */ + &FOLDERID_Profile, /* parent */ + ContactsW, /* relative path */ + ContactsParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + KFDF_ROAMABLE | KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x44 */ &FOLDERID_DeviceMetadataStore, CSIDL_Type_Disallowed, /* FIXME */ NULL, - NULL + NULL, + + KF_CATEGORY_COMMON, /* category */ + Device_Metadata_StoreW, /* name */ + NULL, /* description */ + &FOLDERID_ProgramData, /* parent */ + Microsoft_Windows_DeviceMetadataStoreW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x45 */ &GUID_NULL, @@ -1460,271 +2294,901 @@ &FOLDERID_DocumentsLibrary, CSIDL_Type_Disallowed, /* FIXME */ NULL, - NULL + NULL, + + KF_CATEGORY_PERUSER, /* category */ + DocumentsLibraryW, /* name */ + NULL, /* description */ + &FOLDERID_Libraries, /* parent */ + Documents_librarymsW, /* relative path */ + DocumentsLibraryParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + KFDF_PRECREATE | KFDF_STREAM, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x47 - CSIDL_DOWNLOADS */ &FOLDERID_Downloads, CSIDL_Type_User, NULL, - DownloadsW + DownloadsW, + + KF_CATEGORY_PERUSER, /* category */ + DownloadsW, /* name */ + NULL, /* description */ + &FOLDERID_Profile, /* parent */ + DownloadsW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + KFDF_ROAMABLE | KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x48 */ &FOLDERID_Games, CSIDL_Type_Disallowed, NULL, - NULL + NULL, + + KF_CATEGORY_VIRTUAL, /* category */ + GamesW, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + NULL, /* relative path */ + GamesParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x49 */ &FOLDERID_GameTasks, CSIDL_Type_Disallowed, /* FIXME */ NULL, - NULL + NULL, + + KF_CATEGORY_PERUSER, /* category */ + GameTasksW, /* name */ + NULL, /* description */ + &FOLDERID_LocalAppData, /* parent */ + Microsoft_Windows_GameExplorerW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + KFDF_LOCAL_REDIRECT_ONLY, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x4a */ &FOLDERID_HomeGroup, CSIDL_Type_Disallowed, NULL, - NULL + NULL, + + KF_CATEGORY_VIRTUAL, /* category */ + HomeGroupFolderW, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + NULL, /* relative path */ + HomeGroupParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x4b */ &FOLDERID_ImplicitAppShortcuts, CSIDL_Type_Disallowed, /* FIXME */ NULL, - NULL + NULL, + + KF_CATEGORY_PERUSER, /* category */ + ImplicitAppShortcutsW, /* name */ + NULL, /* description */ + &FOLDERID_UserPinned, /* parent */ + ImplicitAppShortcutsW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + KFDF_PRECREATE, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x4c */ &FOLDERID_Libraries, CSIDL_Type_Disallowed, /* FIXME */ NULL, - NULL + NULL, + + KF_CATEGORY_PERUSER, /* category */ + LibrariesW, /* name */ + NULL, /* description */ + &FOLDERID_RoamingAppData, /* parent */ + Microsoft_Windows_LibrariesW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x4d - CSIDL_LINKS */ &FOLDERID_Links, CSIDL_Type_User, NULL, - LinksW + LinksW, + + KF_CATEGORY_PERUSER, /* category */ + LinksW, /* name */ + NULL, /* description */ + &FOLDERID_Profile, /* parent */ + LinksW, /* relative path */ + LinksParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + KFDF_ROAMABLE | KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x4e - CSIDL_APPDATA_LOCALLOW */ &FOLDERID_LocalAppDataLow, CSIDL_Type_User, NULL, - AppData_LocalLowW + AppData_LocalLowW, + + KF_CATEGORY_PERUSER, /* category */ + LocalAppDataLowW, /* name */ + NULL, /* description */ + &FOLDERID_Profile, /* parent */ + AppData_LocalLowW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_NOT_CONTENT_INDEXED, /* attributes */ + KFDF_LOCAL_REDIRECT_ONLY | KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x4f */ &FOLDERID_MusicLibrary, CSIDL_Type_Disallowed, /* FIXME */ NULL, - NULL + NULL, + + KF_CATEGORY_PERUSER, /* category */ + MusicLibraryW, /* name */ + NULL, /* description */ + &FOLDERID_Libraries, /* parent */ + Music_librarymsW, /* relative path */ + MusicLibraryParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + KFDF_PRECREATE | KFDF_STREAM, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x50 */ &FOLDERID_OriginalImages, CSIDL_Type_Disallowed, /* FIXME */ NULL, - NULL + NULL, + + KF_CATEGORY_PERUSER, /* category */ + Original_ImagesW, /* name */ + NULL, /* description */ + &FOLDERID_LocalAppData, /* parent */ + Microsoft_Windows_Photo_Gallery_Original_ImagesW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x51 */ &FOLDERID_PhotoAlbums, CSIDL_Type_User, NULL, - Pictures_Slide_ShowsW + Pictures_Slide_ShowsW, + + KF_CATEGORY_PERUSER, /* category */ + PhotoAlbumsW, /* name */ + NULL, /* description */ + &FOLDERID_Pictures, /* parent */ + Slide_ShowsW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x52 */ &FOLDERID_PicturesLibrary, CSIDL_Type_Disallowed, /* FIXME */ NULL, - NULL + NULL, + + KF_CATEGORY_PERUSER, /* category */ + PicturesLibraryW, /* name */ + NULL, /* description */ + &FOLDERID_Libraries, /* parent */ + Pictures_librarymsW, /* relative path */ + PicturesLibraryParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + KFDF_PRECREATE | KFDF_STREAM, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x53 */ &FOLDERID_Playlists, CSIDL_Type_User, NULL, - Music_PlaylistsW + Music_PlaylistsW, + + KF_CATEGORY_PERUSER, /* category */ + PlaylistsW, /* name */ + NULL, /* description */ + &FOLDERID_Music, /* parent */ + PlaylistsW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x54 */ &FOLDERID_ProgramFilesX64, CSIDL_Type_NonExistent, NULL, - NULL + NULL, + + KF_CATEGORY_FIXED, /* category */ + ProgramFilesX64W, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + NULL, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x55 */ &FOLDERID_ProgramFilesCommonX64, CSIDL_Type_NonExistent, NULL, - NULL + NULL, + + KF_CATEGORY_FIXED, /* category */ + ProgramFilesCommonX64W, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + NULL, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x56 */ &FOLDERID_Public, CSIDL_Type_CurrVer, /* FIXME */ NULL, - UsersPublicW + UsersPublicW, + + KF_CATEGORY_FIXED, /* category */ + PublicW, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + NULL, /* relative path */ + PublicParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + KFDF_PRECREATE, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x57 */ &FOLDERID_PublicDownloads, CSIDL_Type_AllUsers, NULL, - DownloadsW + DownloadsW, + + KF_CATEGORY_COMMON, /* category */ + CommonDownloadsW, /* name */ + NULL, /* description */ + &FOLDERID_Public, /* parent */ + DownloadsW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + KFDF_PRECREATE, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x58 */ &FOLDERID_PublicGameTasks, CSIDL_Type_AllUsers, NULL, - Microsoft_Windows_GameExplorerW + Microsoft_Windows_GameExplorerW, + + KF_CATEGORY_COMMON, /* category */ + PublicGameTasksW, /* name */ + NULL, /* description */ + &FOLDERID_ProgramData, /* parent */ + Microsoft_Windows_GameExplorerW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + KFDF_LOCAL_REDIRECT_ONLY, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x59 */ &FOLDERID_PublicLibraries, CSIDL_Type_AllUsers, NULL, - Microsoft_Windows_LibrariesW + Microsoft_Windows_LibrariesW, + + KF_CATEGORY_COMMON, /* category */ + PublicLibrariesW, /* name */ + NULL, /* description */ + &FOLDERID_Public, /* parent */ + LibrariesW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN, /* attributes */ + KFDF_PRECREATE, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x5a */ &FOLDERID_PublicRingtones, CSIDL_Type_AllUsers, NULL, - Microsoft_Windows_RingtonesW + Microsoft_Windows_RingtonesW, + + KF_CATEGORY_COMMON, /* category */ + CommonRingtonesW, /* name */ + NULL, /* description */ + &FOLDERID_ProgramData, /* parent */ + Microsoft_Windows_RingtonesW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + KFDF_PRECREATE, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x5b */ &FOLDERID_QuickLaunch, CSIDL_Type_Disallowed, /* FIXME */ NULL, - NULL + NULL, + + KF_CATEGORY_PERUSER, /* category */ + Quick_LaunchW, /* name */ + NULL, /* description */ + &FOLDERID_RoamingAppData, /* parent */ + Microsoft_Internet_Explorer_Quick_LaunchW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x5c */ &FOLDERID_RecordedTVLibrary, CSIDL_Type_Disallowed, /* FIXME */ NULL, - NULL + NULL, + + KF_CATEGORY_COMMON, /* category */ + RecordedTVLibraryW, /* name */ + NULL, /* description */ + &FOLDERID_PublicLibraries, /* parent */ + RecordedTV_librarymsW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + KFDF_PRECREATE | KFDF_STREAM, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x5d */ &FOLDERID_Ringtones, CSIDL_Type_Disallowed, /* FIXME */ NULL, - NULL + NULL, + + KF_CATEGORY_PERUSER, /* category */ + RingtonesW, /* name */ + NULL, /* description */ + &FOLDERID_LocalAppData, /* parent */ + Microsoft_Windows_RingtonesW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + KFDF_PRECREATE, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x5e */ &FOLDERID_SampleMusic, CSIDL_Type_AllUsers, NULL, - Music_Sample_MusicW + Music_Sample_MusicW, + + KF_CATEGORY_COMMON, /* category */ + SampleMusicW, /* name */ + NULL, /* description */ + &FOLDERID_PublicMusic, /* parent */ + Sample_MusicW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + KFDF_PRECREATE, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x5f */ &FOLDERID_SamplePictures, CSIDL_Type_AllUsers, NULL, - Pictures_Sample_PicturesW + Pictures_Sample_PicturesW, + + KF_CATEGORY_COMMON, /* category */ + SamplePicturesW, /* name */ + NULL, /* description */ + &FOLDERID_PublicPictures, /* parent */ + Sample_PicturesW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + KFDF_PRECREATE, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x60 */ &FOLDERID_SamplePlaylists, CSIDL_Type_AllUsers, NULL, - Music_Sample_PlaylistsW + Music_Sample_PlaylistsW, + + KF_CATEGORY_COMMON, /* category */ + SamplePlaylistsW, /* name */ + NULL, /* description */ + &FOLDERID_PublicMusic, /* parent */ + Sample_PlaylistsW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + KFDF_PRECREATE, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x61 */ &FOLDERID_SampleVideos, CSIDL_Type_AllUsers, NULL, - Videos_Sample_VideosW + Videos_Sample_VideosW, + + KF_CATEGORY_COMMON, /* category */ + SampleVideosW, /* name */ + NULL, /* description */ + &FOLDERID_PublicVideos, /* parent */ + Sample_VideosW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + KFDF_PRECREATE, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x62 - CSIDL_SAVED_GAMES */ &FOLDERID_SavedGames, CSIDL_Type_User, NULL, - Saved_GamesW + Saved_GamesW, + + KF_CATEGORY_PERUSER, /* category */ + SavedGamesW, /* name */ + NULL, /* description */ + &FOLDERID_Profile, /* parent */ + Saved_GamesW, /* relative path */ + SavedGamesParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + KFDF_ROAMABLE | KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x63 - CSIDL_SEARCHES */ &FOLDERID_SavedSearches, CSIDL_Type_User, NULL, - SearchesW + SearchesW, + + KF_CATEGORY_PERUSER, /* category */ + SearchesW, /* name */ + NULL, /* description */ + &FOLDERID_Profile, /* parent */ + SearchesW, /* relative path */ + SavedSearchesParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x64 */ &FOLDERID_SEARCH_CSC, CSIDL_Type_Disallowed, NULL, - NULL + NULL, + + KF_CATEGORY_VIRTUAL, /* category */ + CSCFolderW, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + NULL, /* relative path */ + SEARCH_CSCParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x65 */ &FOLDERID_SEARCH_MAPI, CSIDL_Type_Disallowed, NULL, - NULL + NULL, + + KF_CATEGORY_VIRTUAL, /* category */ + MAPIFolderW, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + NULL, /* relative path */ + SEARCH_MAPIParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x66 */ &FOLDERID_SearchHome, CSIDL_Type_Disallowed, NULL, - NULL + NULL, + + KF_CATEGORY_VIRTUAL, /* category */ + SearchHomeFolderW, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + NULL, /* relative path */ + SearchHomeParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x67 */ &FOLDERID_SidebarDefaultParts, CSIDL_Type_Disallowed, /* FIXME */ NULL, - NULL + NULL, + + KF_CATEGORY_COMMON, /* category */ + Default_GadgetsW, /* name */ + NULL, /* description */ + &FOLDERID_ProgramFiles, /* parent */ + Windows_Sidebar_GadgetsW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x68 */ &FOLDERID_SidebarParts, CSIDL_Type_Disallowed, /* FIXME */ NULL, - NULL + NULL, + + KF_CATEGORY_PERUSER, /* category */ + GadgetsW, /* name */ + NULL, /* description */ + &FOLDERID_LocalAppData, /* parent */ + Microsoft_Windows_Sidebar_GadgetsW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x69 */ &FOLDERID_SyncManagerFolder, CSIDL_Type_Disallowed, NULL, - NULL + NULL, + + KF_CATEGORY_VIRTUAL, /* category */ + SyncCenterFolderW, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + NULL, /* relative path */ + SyncManagerFolderParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x6a */ &FOLDERID_SyncResultsFolder, CSIDL_Type_Disallowed, NULL, - NULL + NULL, + + KF_CATEGORY_VIRTUAL, /* category */ + SyncResultsFolderW, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + NULL, /* relative path */ + SyncResultsFolderParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x6b */ &FOLDERID_SyncSetupFolder, CSIDL_Type_Disallowed, NULL, - NULL + NULL, + + KF_CATEGORY_VIRTUAL, /* category */ + SyncSetupFolderW, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + NULL, /* relative path */ + SyncSetupFolderParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x6c */ &FOLDERID_UserPinned, CSIDL_Type_Disallowed, /* FIXME */ NULL, - NULL + NULL, + + KF_CATEGORY_PERUSER, /* category */ + User_PinnedW, /* name */ + NULL, /* description */ + &FOLDERID_QuickLaunch, /* parent */ + User_PinnedW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_HIDDEN, /* attributes */ + KFDF_PRECREATE, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x6d */ &FOLDERID_UserProfiles, CSIDL_Type_CurrVer, UsersW, - UsersW + UsersW, + + KF_CATEGORY_FIXED, /* category */ + UserProfilesW, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + NULL, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + FILE_ATTRIBUTE_READONLY, /* attributes */ + KFDF_PRECREATE, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x6e */ &FOLDERID_UserProgramFiles, CSIDL_Type_Disallowed, /* FIXME */ NULL, - NULL + NULL, + + KF_CATEGORY_PERUSER, /* category */ + UserProgramFilesW, /* name */ + NULL, /* description */ + &FOLDERID_LocalAppData, /* parent */ + ProgramsW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x6f */ &FOLDERID_UserProgramFilesCommon, CSIDL_Type_Disallowed, /* FIXME */ NULL, - NULL + NULL, + + KF_CATEGORY_PERUSER, /* category */ + UserProgramFilesCommonW, /* name */ + NULL, /* description */ + &FOLDERID_UserProgramFiles, /* parent */ + CommonW, /* relative path */ + NULL, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x70 */ &FOLDERID_UsersFiles, CSIDL_Type_Disallowed, NULL, - NULL + NULL, + + KF_CATEGORY_VIRTUAL, /* category */ + UsersFilesFolderW, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + NULL, /* relative path */ + UsersFilesParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x71 */ &FOLDERID_UsersLibraries, CSIDL_Type_Disallowed, NULL, - NULL + NULL, + + KF_CATEGORY_VIRTUAL, /* category */ + UsersLibrariesFolderW, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + NULL, /* relative path */ + UsersLibrariesParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ }, { /* 0x72 */ &FOLDERID_VideosLibrary, CSIDL_Type_Disallowed, /* FIXME */ NULL, - NULL + NULL, + + KF_CATEGORY_PERUSER, /* category */ + VideosLibraryW, /* name */ + NULL, /* description */ + &GUID_NULL, /* parent */ + Videos_librarymsW, /* relative path */ + VideosLibraryParsingNameW, /* parsing */ + NULL, /* tooltip */ + NULL, /* localized */ + NULL, /* icon */ + NULL, /* security */ + 0, /* attributes */ + 0, /* flags */ + &GUID_NULL /* typeid */ } }; @@ -2785,6 +4249,7 @@ static void _SHCreateSymbolicLinks(void) { UINT aidsMyStuff[] = { IDS_MYPICTURES, IDS_MYVIDEOS, IDS_MYMUSIC }, i; + const WCHAR* MyOSXStuffW[] = { PicturesW, MoviesW, MusicW }; int acsidlMyStuff[] = { CSIDL_MYPICTURES, CSIDL_MYVIDEO, CSIDL_MYMUSIC }; static const char * const xdg_dirs[] = { "PICTURES", "VIDEOS", "MUSIC", "DOCUMENTS", "DESKTOP" }; static const unsigned int num = sizeof(xdg_dirs) / sizeof(xdg_dirs[0]); @@ -2870,36 +4335,47 @@ } /* Create symbolic links for 'My Pictures', 'My Videos' and 'My Music'. */ - for (i=0; i < sizeof(aidsMyStuff)/sizeof(aidsMyStuff[0]); i++) { + for (i=0; i < sizeof(aidsMyStuff)/sizeof(aidsMyStuff[0]); i++) + { /* Create the current 'My Whatever' folder and get its unix path. */ hr = SHGetFolderPathW(NULL, acsidlMyStuff[i]|CSIDL_FLAG_CREATE, NULL, SHGFP_TYPE_DEFAULT, wszTempPath); if (FAILED(hr)) continue; + pszMyStuff = wine_get_unix_file_name(wszTempPath); if (!pszMyStuff) continue; - strcpy(szMyStuffTarget, szPersonalTarget); - if (_SHAppendToUnixPath(szMyStuffTarget, MAKEINTRESOURCEW(aidsMyStuff[i])) && - !stat(szMyStuffTarget, &statFolder) && S_ISDIR(statFolder.st_mode)) - { - /* If there's a 'My Whatever' directory where 'My Documents' links to, link to it. */ - rmdir(pszMyStuff); - symlink(szMyStuffTarget, pszMyStuff); - } - else + while (1) { - rmdir(pszMyStuff); + /* Check for the Wine-specific '$HOME/My Documents' subfolder */ + strcpy(szMyStuffTarget, szPersonalTarget); + if (_SHAppendToUnixPath(szMyStuffTarget, MAKEINTRESOURCEW(aidsMyStuff[i])) && + !stat(szMyStuffTarget, &statFolder) && S_ISDIR(statFolder.st_mode)) + break; + + /* Try the XDG_XXX_DIR folder */ if (xdg_results && xdg_results[i]) { - /* the folder specified by XDG_XXX_DIR exists, link to it. */ - symlink(xdg_results[i], pszMyStuff); + strcpy(szMyStuffTarget, xdg_results[i]); + break; } - else + + /* Or the OS X folder (these are never localized) */ + if (pszHome) { - /* Else link to where 'My Documents' itself links to. */ - symlink(szPersonalTarget, pszMyStuff); + strcpy(szMyStuffTarget, pszHome); + if (_SHAppendToUnixPath(szMyStuffTarget, MyOSXStuffW[i]) && + !stat(szMyStuffTarget, &statFolder) && + S_ISDIR(statFolder.st_mode)) + break; } + + /* As a last resort point to the same location as 'My Documents' */ + strcpy(szMyStuffTarget, szPersonalTarget); + break; } + rmdir(pszMyStuff); + symlink(szMyStuffTarget, pszMyStuff); HeapFree(GetProcessHeap(), 0, pszMyStuff); } @@ -3856,6 +5332,8 @@ get_known_folder_wstr(knownfolder->registryPath, szRelativePath, &pKFD->pszRelativePath); + get_known_folder_wstr(knownfolder->registryPath, szParsingName, &pKFD->pszParsingName); + return S_OK; } @@ -3987,7 +5465,8 @@ TRACE("%p, %p\n", ppKFId, pCount); - *ppKFId = fm->ids; + *ppKFId = CoTaskMemAlloc(fm->num_ids * sizeof(KNOWNFOLDERID)); + memcpy(*ppKFId, fm->ids, fm->num_ids * sizeof(KNOWNFOLDERID)); *pCount = fm->num_ids; return S_OK; } @@ -4080,6 +5559,9 @@ if(SUCCEEDED(hr)) hr = HRESULT_FROM_WIN32(RegSetValueExW(hKey, szName, 0, REG_SZ, (LPBYTE)pKFD->pszName, (lstrlenW(pKFD->pszName)+1)*sizeof(WCHAR) )); + if(SUCCEEDED(hr) && pKFD->pszParsingName) + hr = HRESULT_FROM_WIN32(RegSetValueExW(hKey, szParsingName, 0, REG_SZ, (LPBYTE)pKFD->pszParsingName, (lstrlenW(pKFD->pszParsingName)+1)*sizeof(WCHAR) )); + if(SUCCEEDED(hr) && !IsEqualGUID(&pKFD->fidParent, &GUID_NULL)) { WCHAR sParentGuid[39]; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/shell32/tests/shellpath.c wine-staging-1.7.41~ubuntu12.04.1/dlls/shell32/tests/shellpath.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/shell32/tests/shellpath.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/shell32/tests/shellpath.c 2015-04-18 23:36:02.000000000 +0000 @@ -888,7 +888,6 @@ /* Standard CSIDL values (and their flags) uses only two less-significant bytes */ #define NO_CSIDL 0x10000 #define WINE_ATTRIBUTES_OPTIONAL 0x20000 -#define KFD_TODO_WINE 0x40000 #define KNOWN_FOLDER(id, csidl, name, category, parent1, parent2, relative_path, parsing_name, attributes, definitionFlags) \ { &id, # id, csidl, # csidl, name, category, {&parent1, &parent2}, relative_path, parsing_name, attributes, definitionFlags, __LINE__ } @@ -924,7 +923,7 @@ */ static const struct knownFolderDef known_folders[] = { KNOWN_FOLDER(FOLDERID_AddNewPrograms, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "AddNewProgramsFolder", KF_CATEGORY_VIRTUAL, GUID_NULL, GUID_NULL, @@ -934,7 +933,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_AdminTools, - CSIDL_ADMINTOOLS|KFD_TODO_WINE, + CSIDL_ADMINTOOLS, "Administrative Tools", KF_CATEGORY_PERUSER, FOLDERID_Programs, GUID_NULL, @@ -943,7 +942,7 @@ FILE_ATTRIBUTE_READONLY, KFDF_PRECREATE), KNOWN_FOLDER(FOLDERID_AppUpdates, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "AppUpdatesFolder", KF_CATEGORY_VIRTUAL, GUID_NULL, GUID_NULL, @@ -953,7 +952,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_CDBurning, - CSIDL_CDBURN_AREA|KFD_TODO_WINE, + CSIDL_CDBURN_AREA, "CD Burning", KF_CATEGORY_PERUSER, FOLDERID_LocalAppData, GUID_NULL, @@ -962,7 +961,7 @@ FILE_ATTRIBUTE_READONLY, KFDF_LOCAL_REDIRECT_ONLY), KNOWN_FOLDER(FOLDERID_ChangeRemovePrograms, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "ChangeRemoveProgramsFolder", KF_CATEGORY_VIRTUAL, GUID_NULL, GUID_NULL, @@ -972,7 +971,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_CommonAdminTools, - CSIDL_COMMON_ADMINTOOLS|KFD_TODO_WINE, + CSIDL_COMMON_ADMINTOOLS, "Common Administrative Tools", KF_CATEGORY_COMMON, FOLDERID_CommonPrograms, GUID_NULL, @@ -981,7 +980,7 @@ FILE_ATTRIBUTE_READONLY, KFDF_PRECREATE), KNOWN_FOLDER(FOLDERID_CommonOEMLinks, - CSIDL_COMMON_OEM_LINKS|KFD_TODO_WINE, + CSIDL_COMMON_OEM_LINKS, "OEM Links", KF_CATEGORY_COMMON, FOLDERID_ProgramData, GUID_NULL, @@ -1008,7 +1007,7 @@ FILE_ATTRIBUTE_READONLY, KFDF_PRECREATE), KNOWN_FOLDER(FOLDERID_CommonStartup, - CSIDL_COMMON_STARTUP|KFD_TODO_WINE, + CSIDL_COMMON_STARTUP, "Common Startup", KF_CATEGORY_COMMON, FOLDERID_CommonPrograms, GUID_NULL, @@ -1017,7 +1016,7 @@ FILE_ATTRIBUTE_READONLY, KFDF_PRECREATE), KNOWN_FOLDER(FOLDERID_CommonTemplates, - CSIDL_COMMON_TEMPLATES|KFD_TODO_WINE, + CSIDL_COMMON_TEMPLATES, "Common Templates", KF_CATEGORY_COMMON, FOLDERID_ProgramData, GUID_NULL, @@ -1026,7 +1025,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_ComputerFolder, - CSIDL_DRIVES|KFD_TODO_WINE, + CSIDL_DRIVES, "MyComputerFolder", KF_CATEGORY_VIRTUAL, GUID_NULL, GUID_NULL, @@ -1035,7 +1034,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_ConflictFolder, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "ConflictFolder", KF_CATEGORY_VIRTUAL, GUID_NULL, GUID_NULL, @@ -1045,7 +1044,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_ConnectionsFolder, - CSIDL_CONNECTIONS|KFD_TODO_WINE, + CSIDL_CONNECTIONS, "ConnectionsFolder", KF_CATEGORY_VIRTUAL, GUID_NULL, GUID_NULL, @@ -1055,7 +1054,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_Contacts, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "Contacts", KF_CATEGORY_PERUSER, FOLDERID_Profile, GUID_NULL, @@ -1064,7 +1063,7 @@ FILE_ATTRIBUTE_READONLY, KFDF_ROAMABLE | KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH), KNOWN_FOLDER(FOLDERID_ControlPanelFolder, - CSIDL_CONTROLS|KFD_TODO_WINE, + CSIDL_CONTROLS, "ControlPanelFolder", KF_CATEGORY_VIRTUAL, GUID_NULL, GUID_NULL, @@ -1074,7 +1073,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_Cookies, - CSIDL_COOKIES|KFD_TODO_WINE, + CSIDL_COOKIES, "Cookies", KF_CATEGORY_PERUSER, FOLDERID_RoamingAppData, FOLDERID_LocalAppData, @@ -1092,7 +1091,7 @@ FILE_ATTRIBUTE_READONLY, KFDF_ROAMABLE | KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH), KNOWN_FOLDER(FOLDERID_DeviceMetadataStore, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "Device Metadata Store", KF_CATEGORY_COMMON, FOLDERID_ProgramData, GUID_NULL, @@ -1101,7 +1100,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_Documents, - CSIDL_MYDOCUMENTS|KFD_TODO_WINE, + CSIDL_MYDOCUMENTS, "Personal", KF_CATEGORY_PERUSER, FOLDERID_Profile, GUID_NULL, @@ -1110,7 +1109,7 @@ FILE_ATTRIBUTE_READONLY, KFDF_ROAMABLE | KFDF_PRECREATE), KNOWN_FOLDER(FOLDERID_DocumentsLibrary, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "DocumentsLibrary", KF_CATEGORY_PERUSER, FOLDERID_Libraries, GUID_NULL, @@ -1119,7 +1118,7 @@ 0, KFDF_PRECREATE | KFDF_STREAM), KNOWN_FOLDER(FOLDERID_Downloads, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "Downloads", KF_CATEGORY_PERUSER, FOLDERID_Profile, GUID_NULL, @@ -1128,7 +1127,7 @@ FILE_ATTRIBUTE_READONLY, KFDF_ROAMABLE | KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH), KNOWN_FOLDER(FOLDERID_Favorites, - CSIDL_FAVORITES|KFD_TODO_WINE, + CSIDL_FAVORITES, "Favorites", KF_CATEGORY_PERUSER, FOLDERID_Profile, GUID_NULL, @@ -1146,7 +1145,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_Games, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "Games", KF_CATEGORY_VIRTUAL, GUID_NULL, GUID_NULL, @@ -1155,7 +1154,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_GameTasks, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "GameTasks", KF_CATEGORY_PERUSER, FOLDERID_LocalAppData, GUID_NULL, @@ -1164,7 +1163,7 @@ 0, KFDF_LOCAL_REDIRECT_ONLY), KNOWN_FOLDER(FOLDERID_History, - CSIDL_HISTORY|KFD_TODO_WINE, + CSIDL_HISTORY, "History", KF_CATEGORY_PERUSER, FOLDERID_LocalAppData, GUID_NULL, @@ -1173,7 +1172,7 @@ 0, KFDF_LOCAL_REDIRECT_ONLY), KNOWN_FOLDER(FOLDERID_HomeGroup, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "HomeGroupFolder", KF_CATEGORY_VIRTUAL, GUID_NULL, GUID_NULL, @@ -1182,7 +1181,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_ImplicitAppShortcuts, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "ImplicitAppShortcuts", KF_CATEGORY_PERUSER, FOLDERID_UserPinned, GUID_NULL, @@ -1191,7 +1190,7 @@ 0, KFDF_PRECREATE), KNOWN_FOLDER(FOLDERID_InternetCache, - CSIDL_INTERNET_CACHE|KFD_TODO_WINE, + CSIDL_INTERNET_CACHE, "Cache", KF_CATEGORY_PERUSER, FOLDERID_LocalAppData, GUID_NULL, @@ -1200,7 +1199,7 @@ 0, KFDF_LOCAL_REDIRECT_ONLY), KNOWN_FOLDER(FOLDERID_InternetFolder, - CSIDL_INTERNET|KFD_TODO_WINE, + CSIDL_INTERNET, "InternetFolder", KF_CATEGORY_VIRTUAL, GUID_NULL, GUID_NULL, @@ -1209,7 +1208,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_Libraries, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "Libraries", KF_CATEGORY_PERUSER, FOLDERID_RoamingAppData, GUID_NULL, @@ -1218,7 +1217,7 @@ 0, KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH), KNOWN_FOLDER(FOLDERID_Links, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "Links", KF_CATEGORY_PERUSER, FOLDERID_Profile, GUID_NULL, @@ -1227,7 +1226,7 @@ FILE_ATTRIBUTE_READONLY, KFDF_ROAMABLE | KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH), KNOWN_FOLDER(FOLDERID_LocalAppData, - CSIDL_LOCAL_APPDATA|KFD_TODO_WINE, + CSIDL_LOCAL_APPDATA, "Local AppData", KF_CATEGORY_PERUSER, FOLDERID_Profile, GUID_NULL, @@ -1236,7 +1235,7 @@ 0, KFDF_LOCAL_REDIRECT_ONLY | KFDF_PUBLISHEXPANDEDPATH), KNOWN_FOLDER(FOLDERID_LocalAppDataLow, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "LocalAppDataLow", KF_CATEGORY_PERUSER, FOLDERID_Profile, GUID_NULL, @@ -1245,7 +1244,7 @@ FILE_ATTRIBUTE_NOT_CONTENT_INDEXED, KFDF_LOCAL_REDIRECT_ONLY | KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH), KNOWN_FOLDER(FOLDERID_LocalizedResourcesDir, - CSIDL_RESOURCES_LOCALIZED|KFD_TODO_WINE, + CSIDL_RESOURCES_LOCALIZED, "LocalizedResourcesDir", KF_CATEGORY_FIXED, GUID_NULL, GUID_NULL, @@ -1254,7 +1253,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_Music, - CSIDL_MYMUSIC|KFD_TODO_WINE, + CSIDL_MYMUSIC, "My Music", KF_CATEGORY_PERUSER, FOLDERID_Profile, GUID_NULL, @@ -1263,7 +1262,7 @@ FILE_ATTRIBUTE_READONLY, KFDF_ROAMABLE | KFDF_PRECREATE), KNOWN_FOLDER(FOLDERID_MusicLibrary, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "MusicLibrary", KF_CATEGORY_PERUSER, FOLDERID_Libraries, GUID_NULL, @@ -1272,7 +1271,7 @@ 0, KFDF_PRECREATE | KFDF_STREAM), KNOWN_FOLDER(FOLDERID_NetHood, - CSIDL_NETHOOD|KFD_TODO_WINE, + CSIDL_NETHOOD, "NetHood", KF_CATEGORY_PERUSER, FOLDERID_RoamingAppData, GUID_NULL, @@ -1281,7 +1280,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_NetworkFolder, - CSIDL_NETWORK|KFD_TODO_WINE, + CSIDL_NETWORK, "NetworkPlacesFolder", KF_CATEGORY_VIRTUAL, GUID_NULL, GUID_NULL, @@ -1290,7 +1289,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_OriginalImages, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "Original Images", KF_CATEGORY_PERUSER, FOLDERID_LocalAppData, GUID_NULL, @@ -1299,7 +1298,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_PhotoAlbums, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "PhotoAlbums", KF_CATEGORY_PERUSER, FOLDERID_Pictures, GUID_NULL, @@ -1308,7 +1307,7 @@ FILE_ATTRIBUTE_READONLY, 0), KNOWN_FOLDER(FOLDERID_Pictures, - CSIDL_MYPICTURES|KFD_TODO_WINE, + CSIDL_MYPICTURES, "My Pictures", KF_CATEGORY_PERUSER, FOLDERID_Profile, GUID_NULL, @@ -1317,7 +1316,7 @@ FILE_ATTRIBUTE_READONLY, KFDF_ROAMABLE | KFDF_PRECREATE), KNOWN_FOLDER(FOLDERID_PicturesLibrary, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "PicturesLibrary", KF_CATEGORY_PERUSER, FOLDERID_Libraries, GUID_NULL, @@ -1326,7 +1325,7 @@ 0, KFDF_PRECREATE | KFDF_STREAM), KNOWN_FOLDER(FOLDERID_Playlists, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "Playlists", KF_CATEGORY_PERUSER, FOLDERID_Music, GUID_NULL, @@ -1335,7 +1334,7 @@ FILE_ATTRIBUTE_READONLY, 0), KNOWN_FOLDER(FOLDERID_PrintersFolder, - CSIDL_PRINTERS|KFD_TODO_WINE, + CSIDL_PRINTERS, "PrintersFolder", KF_CATEGORY_VIRTUAL, GUID_NULL, GUID_NULL, @@ -1344,7 +1343,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_PrintHood, - CSIDL_PRINTHOOD|KFD_TODO_WINE, + CSIDL_PRINTHOOD, "PrintHood", KF_CATEGORY_PERUSER, FOLDERID_RoamingAppData, GUID_NULL, @@ -1353,7 +1352,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_Profile, - CSIDL_PROFILE|KFD_TODO_WINE, + CSIDL_PROFILE, "Profile", KF_CATEGORY_FIXED, GUID_NULL, GUID_NULL, @@ -1390,7 +1389,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_ProgramFilesCommonX64, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "ProgramFilesCommonX64", KF_CATEGORY_FIXED, GUID_NULL, GUID_NULL, @@ -1399,7 +1398,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_ProgramFilesCommonX86, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "ProgramFilesCommonX86", KF_CATEGORY_FIXED, GUID_NULL, GUID_NULL, @@ -1408,7 +1407,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_ProgramFilesX64, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "ProgramFilesX64", KF_CATEGORY_FIXED, GUID_NULL, GUID_NULL, @@ -1417,7 +1416,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_ProgramFilesX86, - CSIDL_PROGRAM_FILESX86|KFD_TODO_WINE, + CSIDL_PROGRAM_FILESX86, "ProgramFilesX86", KF_CATEGORY_FIXED, GUID_NULL, GUID_NULL, @@ -1426,7 +1425,7 @@ FILE_ATTRIBUTE_READONLY, KFDF_PRECREATE), KNOWN_FOLDER(FOLDERID_Programs, - CSIDL_PROGRAMS|KFD_TODO_WINE, + CSIDL_PROGRAMS, "Programs", KF_CATEGORY_PERUSER, FOLDERID_StartMenu, GUID_NULL, @@ -1435,7 +1434,7 @@ FILE_ATTRIBUTE_READONLY, KFDF_PRECREATE), KNOWN_FOLDER(FOLDERID_Public, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "Public", KF_CATEGORY_FIXED, GUID_NULL, GUID_NULL, @@ -1445,7 +1444,7 @@ FILE_ATTRIBUTE_READONLY, KFDF_PRECREATE), KNOWN_FOLDER(FOLDERID_PublicDesktop, - CSIDL_COMMON_DESKTOPDIRECTORY|KFD_TODO_WINE, + CSIDL_COMMON_DESKTOPDIRECTORY, "Common Desktop", KF_CATEGORY_COMMON, FOLDERID_Public, GUID_NULL, @@ -1454,7 +1453,7 @@ FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN, KFDF_PRECREATE), KNOWN_FOLDER(FOLDERID_PublicDocuments, - CSIDL_COMMON_DOCUMENTS|KFD_TODO_WINE, + CSIDL_COMMON_DOCUMENTS, "Common Documents", KF_CATEGORY_COMMON, FOLDERID_Public, GUID_NULL, @@ -1463,7 +1462,7 @@ FILE_ATTRIBUTE_READONLY, KFDF_PRECREATE), KNOWN_FOLDER(FOLDERID_PublicDownloads, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "CommonDownloads", KF_CATEGORY_COMMON, FOLDERID_Public, GUID_NULL, @@ -1472,7 +1471,7 @@ FILE_ATTRIBUTE_READONLY, KFDF_PRECREATE), KNOWN_FOLDER(FOLDERID_PublicGameTasks, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "PublicGameTasks", KF_CATEGORY_COMMON, FOLDERID_ProgramData, GUID_NULL, @@ -1481,7 +1480,7 @@ 0, KFDF_LOCAL_REDIRECT_ONLY), KNOWN_FOLDER(FOLDERID_PublicLibraries, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "PublicLibraries", KF_CATEGORY_COMMON, FOLDERID_Public, GUID_NULL, @@ -1490,7 +1489,7 @@ FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN, KFDF_PRECREATE), KNOWN_FOLDER(FOLDERID_PublicMusic, - CSIDL_COMMON_MUSIC|KFD_TODO_WINE, + CSIDL_COMMON_MUSIC, "CommonMusic", KF_CATEGORY_COMMON, FOLDERID_Public, GUID_NULL, @@ -1499,7 +1498,7 @@ FILE_ATTRIBUTE_READONLY, KFDF_PRECREATE), KNOWN_FOLDER(FOLDERID_PublicPictures, - CSIDL_COMMON_PICTURES|KFD_TODO_WINE, + CSIDL_COMMON_PICTURES, "CommonPictures", KF_CATEGORY_COMMON, FOLDERID_Public, GUID_NULL, @@ -1508,7 +1507,7 @@ FILE_ATTRIBUTE_READONLY, KFDF_PRECREATE), KNOWN_FOLDER(FOLDERID_PublicRingtones, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "CommonRingtones", KF_CATEGORY_COMMON, FOLDERID_ProgramData, GUID_NULL, @@ -1517,7 +1516,7 @@ 0, KFDF_PRECREATE), KNOWN_FOLDER(FOLDERID_PublicVideos, - CSIDL_COMMON_VIDEO|KFD_TODO_WINE, + CSIDL_COMMON_VIDEO, "CommonVideo", KF_CATEGORY_COMMON, FOLDERID_Public, GUID_NULL, @@ -1526,7 +1525,7 @@ FILE_ATTRIBUTE_READONLY, KFDF_PRECREATE), KNOWN_FOLDER(FOLDERID_QuickLaunch, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "Quick Launch", KF_CATEGORY_PERUSER, FOLDERID_RoamingAppData, GUID_NULL, @@ -1535,7 +1534,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_Recent, - CSIDL_RECENT|KFD_TODO_WINE, + CSIDL_RECENT, "Recent", KF_CATEGORY_PERUSER, FOLDERID_RoamingAppData, GUID_NULL, @@ -1544,7 +1543,7 @@ FILE_ATTRIBUTE_READONLY, KFDF_PRECREATE), KNOWN_FOLDER(FOLDERID_RecordedTVLibrary, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "RecordedTVLibrary", KF_CATEGORY_COMMON, FOLDERID_PublicLibraries, GUID_NULL, @@ -1553,7 +1552,7 @@ 0, KFDF_PRECREATE | KFDF_STREAM), KNOWN_FOLDER(FOLDERID_RecycleBinFolder, - CSIDL_BITBUCKET|KFD_TODO_WINE, + CSIDL_BITBUCKET, "RecycleBinFolder", KF_CATEGORY_VIRTUAL, GUID_NULL, GUID_NULL, @@ -1562,7 +1561,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_ResourceDir, - CSIDL_RESOURCES|KFD_TODO_WINE, + CSIDL_RESOURCES, "ResourceDir", KF_CATEGORY_FIXED, GUID_NULL, GUID_NULL, @@ -1571,7 +1570,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_Ringtones, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "Ringtones", KF_CATEGORY_PERUSER, FOLDERID_LocalAppData, GUID_NULL, @@ -1580,7 +1579,7 @@ 0, KFDF_PRECREATE), KNOWN_FOLDER(FOLDERID_RoamingAppData, - CSIDL_APPDATA|KFD_TODO_WINE, + CSIDL_APPDATA, "AppData", KF_CATEGORY_PERUSER, FOLDERID_Profile, GUID_NULL, @@ -1589,7 +1588,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_SampleMusic, - NO_CSIDL|KFD_TODO_WINE|WINE_ATTRIBUTES_OPTIONAL /* win8 */, + NO_CSIDL|WINE_ATTRIBUTES_OPTIONAL /* win8 */, "SampleMusic", KF_CATEGORY_COMMON, FOLDERID_PublicMusic, GUID_NULL, @@ -1598,7 +1597,7 @@ FILE_ATTRIBUTE_READONLY, KFDF_PRECREATE), KNOWN_FOLDER(FOLDERID_SamplePictures, - NO_CSIDL|KFD_TODO_WINE|WINE_ATTRIBUTES_OPTIONAL /* win8 */, + NO_CSIDL|WINE_ATTRIBUTES_OPTIONAL /* win8 */, "SamplePictures", KF_CATEGORY_COMMON, FOLDERID_PublicPictures, GUID_NULL, @@ -1607,7 +1606,7 @@ FILE_ATTRIBUTE_READONLY, KFDF_PRECREATE), KNOWN_FOLDER(FOLDERID_SamplePlaylists, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "SamplePlaylists", KF_CATEGORY_COMMON, FOLDERID_PublicMusic, GUID_NULL, @@ -1616,7 +1615,7 @@ FILE_ATTRIBUTE_READONLY, 0), KNOWN_FOLDER(FOLDERID_SampleVideos, - NO_CSIDL|KFD_TODO_WINE|WINE_ATTRIBUTES_OPTIONAL /* win8 */, + NO_CSIDL|WINE_ATTRIBUTES_OPTIONAL /* win8 */, "SampleVideos", KF_CATEGORY_COMMON, FOLDERID_PublicVideos, GUID_NULL, @@ -1625,7 +1624,7 @@ FILE_ATTRIBUTE_READONLY, KFDF_PRECREATE), KNOWN_FOLDER(FOLDERID_SavedGames, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "SavedGames", KF_CATEGORY_PERUSER, FOLDERID_Profile, GUID_NULL, @@ -1634,7 +1633,7 @@ FILE_ATTRIBUTE_READONLY, KFDF_ROAMABLE | KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH), KNOWN_FOLDER(FOLDERID_SavedSearches, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "Searches", KF_CATEGORY_PERUSER, FOLDERID_Profile, GUID_NULL, @@ -1643,7 +1642,7 @@ FILE_ATTRIBUTE_READONLY, KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH), KNOWN_FOLDER(FOLDERID_SEARCH_CSC, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "CSCFolder", KF_CATEGORY_VIRTUAL, GUID_NULL, GUID_NULL, @@ -1652,7 +1651,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_SearchHome, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "SearchHomeFolder", KF_CATEGORY_VIRTUAL, GUID_NULL, GUID_NULL, @@ -1661,7 +1660,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_SEARCH_MAPI, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "MAPIFolder", KF_CATEGORY_VIRTUAL, GUID_NULL, GUID_NULL, @@ -1670,7 +1669,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_SendTo, - CSIDL_SENDTO|KFD_TODO_WINE, + CSIDL_SENDTO, "SendTo", KF_CATEGORY_PERUSER, FOLDERID_RoamingAppData, GUID_NULL, @@ -1679,7 +1678,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_SidebarDefaultParts, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "Default Gadgets", KF_CATEGORY_COMMON, FOLDERID_ProgramFiles, GUID_NULL, @@ -1688,7 +1687,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_SidebarParts, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "Gadgets", KF_CATEGORY_PERUSER, FOLDERID_LocalAppData, GUID_NULL, @@ -1697,7 +1696,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_StartMenu, - CSIDL_STARTMENU|KFD_TODO_WINE, + CSIDL_STARTMENU, "Start Menu", KF_CATEGORY_PERUSER, FOLDERID_RoamingAppData, GUID_NULL, @@ -1706,7 +1705,7 @@ FILE_ATTRIBUTE_READONLY, KFDF_PRECREATE), KNOWN_FOLDER(FOLDERID_Startup, - CSIDL_STARTUP|KFD_TODO_WINE, + CSIDL_STARTUP, "Startup", KF_CATEGORY_PERUSER, FOLDERID_Programs, GUID_NULL, @@ -1715,7 +1714,7 @@ FILE_ATTRIBUTE_READONLY, KFDF_PRECREATE), KNOWN_FOLDER(FOLDERID_SyncManagerFolder, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "SyncCenterFolder", KF_CATEGORY_VIRTUAL, GUID_NULL, GUID_NULL, @@ -1725,7 +1724,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_SyncResultsFolder, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "SyncResultsFolder", KF_CATEGORY_VIRTUAL, GUID_NULL, GUID_NULL, @@ -1735,7 +1734,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_SyncSetupFolder, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "SyncSetupFolder", KF_CATEGORY_VIRTUAL, GUID_NULL, GUID_NULL, @@ -1754,7 +1753,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_SystemX86, - CSIDL_SYSTEMX86|KFD_TODO_WINE, + CSIDL_SYSTEMX86, "SystemX86", KF_CATEGORY_FIXED, GUID_NULL, GUID_NULL, @@ -1763,7 +1762,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_Templates, - CSIDL_TEMPLATES|KFD_TODO_WINE, + CSIDL_TEMPLATES, "Templates", KF_CATEGORY_PERUSER, FOLDERID_RoamingAppData, GUID_NULL, @@ -1772,7 +1771,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_UserPinned, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "User Pinned", KF_CATEGORY_PERUSER, FOLDERID_QuickLaunch, GUID_NULL, @@ -1781,7 +1780,7 @@ FILE_ATTRIBUTE_HIDDEN, KFDF_PRECREATE), KNOWN_FOLDER(FOLDERID_UserProfiles, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "UserProfiles", KF_CATEGORY_FIXED, GUID_NULL, GUID_NULL, @@ -1790,7 +1789,7 @@ FILE_ATTRIBUTE_READONLY, KFDF_PRECREATE), KNOWN_FOLDER(FOLDERID_UserProgramFiles, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "UserProgramFiles", KF_CATEGORY_PERUSER, FOLDERID_LocalAppData, GUID_NULL, @@ -1799,7 +1798,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_UserProgramFilesCommon, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "UserProgramFilesCommon", KF_CATEGORY_PERUSER, FOLDERID_UserProgramFiles, GUID_NULL, @@ -1808,7 +1807,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_UsersFiles, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "UsersFilesFolder", KF_CATEGORY_VIRTUAL, GUID_NULL, GUID_NULL, @@ -1817,7 +1816,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_UsersLibraries, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "UsersLibrariesFolder", KF_CATEGORY_VIRTUAL, GUID_NULL, GUID_NULL, @@ -1826,7 +1825,7 @@ 0, 0), KNOWN_FOLDER(FOLDERID_Videos, - CSIDL_MYVIDEO|KFD_TODO_WINE, + CSIDL_MYVIDEO, "My Video", KF_CATEGORY_PERUSER, FOLDERID_Profile, GUID_NULL, @@ -1835,7 +1834,7 @@ FILE_ATTRIBUTE_READONLY, KFDF_ROAMABLE | KFDF_PRECREATE), KNOWN_FOLDER(FOLDERID_VideosLibrary, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "VideosLibrary", KF_CATEGORY_PERUSER, FOLDERID_Libraries, GUID_NULL, @@ -1853,7 +1852,7 @@ 0, 0), KNOWN_FOLDER(_FOLDERID_CredentialManager, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "CredentialManager", KF_CATEGORY_FIXED, GUID_NULL, GUID_NULL, @@ -1862,7 +1861,7 @@ 0, 0), KNOWN_FOLDER(_FOLDERID_CryptoKeys, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "CryptoKeys", KF_CATEGORY_FIXED, GUID_NULL, GUID_NULL, @@ -1871,7 +1870,7 @@ 0, 0), KNOWN_FOLDER(_FOLDERID_DpapiKeys, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "DpapiKeys", KF_CATEGORY_FIXED, GUID_NULL, GUID_NULL, @@ -1880,7 +1879,7 @@ 0, 0), KNOWN_FOLDER(_FOLDERID_SystemCertificates, - NO_CSIDL|KFD_TODO_WINE, + NO_CSIDL, "SystemCertificates", KF_CATEGORY_FIXED, GUID_NULL, GUID_NULL, @@ -1957,11 +1956,7 @@ if(SUCCEEDED(hr)) { hr = IKnownFolder_GetFolderDefinition(folder, &kfd); - if(known_folder->csidl & KFD_TODO_WINE) - todo_wine - ok_(__FILE__, known_folder->line)(hr == S_OK, "cannot get known folder definition for %s\n", known_folder->sFolderId); - else - ok_(__FILE__, known_folder->line)(hr == S_OK, "cannot get known folder definition for %s\n", known_folder->sFolderId); + ok_(__FILE__, known_folder->line)(hr == S_OK, "cannot get known folder definition for %s\n", known_folder->sFolderId); if(SUCCEEDED(hr)) { ret = MultiByteToWideChar(CP_ACP, 0, known_folder->sName, -1, sName, sizeof(sName)/sizeof(sName[0])); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/shlwapi/tests/path.c wine-staging-1.7.41~ubuntu12.04.1/dlls/shlwapi/tests/path.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/shlwapi/tests/path.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/shlwapi/tests/path.c 2015-04-18 23:36:02.000000000 +0000 @@ -183,13 +183,18 @@ /* ################ */ -static LPWSTR GetWideString(const char* szString) +static LPWSTR GetWideString(const char *src) { - LPWSTR wszString = HeapAlloc(GetProcessHeap(), 0, (2*INTERNET_MAX_URL_LENGTH) * sizeof(WCHAR)); - - MultiByteToWideChar(CP_ACP, 0, szString, -1, wszString, INTERNET_MAX_URL_LENGTH); + WCHAR *ret; - return wszString; + if (!src) + return NULL; + + ret = HeapAlloc(GetProcessHeap(), 0, (2*INTERNET_MAX_URL_LENGTH) * sizeof(WCHAR)); + + MultiByteToWideChar(CP_ACP, 0, src, -1, ret, INTERNET_MAX_URL_LENGTH); + + return ret; } static void FreeWideString(LPWSTR wszString) diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/user32/hook.c wine-staging-1.7.41~ubuntu12.04.1/dlls/user32/hook.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/user32/hook.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/user32/hook.c 2015-04-18 23:36:02.000000000 +0000 @@ -437,7 +437,7 @@ } if (info->id == WH_KEYBOARD_LL || info->id == WH_MOUSE_LL) - get_user_thread_info()->key_state_time = 0; /* force refreshing the key state cache */ + interlocked_xchg_add( &global_key_state_counter, 1 ); /* force refreshing the key state cache */ return ret; } diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/user32/input.c wine-staging-1.7.41~ubuntu12.04.1/dlls/user32/input.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/user32/input.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/user32/input.c 2015-04-18 23:36:02.000000000 +0000 @@ -52,6 +52,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(win); WINE_DECLARE_DEBUG_CHANNEL(keyboard); +INT global_key_state_counter = 0; /*********************************************************************** * get_key_state @@ -368,7 +369,8 @@ */ SHORT WINAPI DECLSPEC_HOTPATCH GetAsyncKeyState( INT key ) { - struct user_thread_info *thread_info = get_user_thread_info(); + struct user_key_state_info *key_state_info = get_user_thread_info()->key_state; + INT counter = global_key_state_counter; SHORT ret; if (key < 0 || key >= 256) return 0; @@ -377,24 +379,36 @@ if ((ret = USER_Driver->pGetAsyncKeyState( key )) == -1) { - if (thread_info->key_state && - !(thread_info->key_state[key] & 0xc0) && - GetTickCount() - thread_info->key_state_time < 50) + if (key_state_info && + !(key_state_info->state[key] & 0xc0) && + key_state_info->counter == counter && + GetTickCount() - key_state_info->time < 50) + { + /* use cached value */ return 0; - - if (!thread_info->key_state) thread_info->key_state = HeapAlloc( GetProcessHeap(), 0, 256 ); + } + else if (!key_state_info) + { + key_state_info = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*key_state_info) ); + get_user_thread_info()->key_state = key_state_info; + } ret = 0; SERVER_START_REQ( get_key_state ) { req->tid = 0; req->key = key; - if (thread_info->key_state) wine_server_set_reply( req, thread_info->key_state, 256 ); + if (key_state_info) wine_server_set_reply( req, key_state_info->state, + sizeof(key_state_info->state) ); if (!wine_server_call( req )) { if (reply->state & 0x40) ret |= 0x0001; if (reply->state & 0x80) ret |= 0x8000; - thread_info->key_state_time = GetTickCount(); + if (key_state_info) + { + key_state_info->time = GetTickCount(); + key_state_info->counter = counter; + } } } SERVER_END_REQ; @@ -1022,6 +1036,7 @@ INT WINAPI ToUnicodeEx(UINT virtKey, UINT scanCode, const BYTE *lpKeyState, LPWSTR lpwStr, int size, UINT flags, HKL hkl) { + if (!lpKeyState) return 0; return USER_Driver->pToUnicodeEx(virtKey, scanCode, lpKeyState, lpwStr, size, flags, hkl); } diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/user32/message.c wine-staging-1.7.41~ubuntu12.04.1/dlls/user32/message.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/user32/message.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/user32/message.c 2015-04-18 23:36:02.000000000 +0000 @@ -3290,9 +3290,10 @@ */ NTSTATUS send_hardware_message( HWND hwnd, const INPUT *input, UINT flags ) { - struct user_thread_info *thread_info = get_user_thread_info(); + struct user_key_state_info *key_state_info = get_user_thread_info()->key_state; struct send_message_info info; int prev_x, prev_y, new_x, new_y; + INT counter = global_key_state_counter; NTSTATUS ret; BOOL wait; @@ -3329,7 +3330,8 @@ req->input.hw.lparam = MAKELONG( input->u.hi.wParamL, input->u.hi.wParamH ); break; } - if (thread_info->key_state) wine_server_set_reply( req, thread_info->key_state, 256 ); + if (key_state_info) wine_server_set_reply( req, key_state_info->state, + sizeof(key_state_info->state) ); ret = wine_server_call( req ); wait = reply->wait; prev_x = reply->prev_x; @@ -3341,7 +3343,11 @@ if (!ret) { - if (thread_info->key_state) thread_info->key_state_time = GetTickCount(); + if (key_state_info) + { + key_state_info->time = GetTickCount(); + key_state_info->counter = counter; + } if ((flags & SEND_HWMSG_INJECTED) && (prev_x != new_x || prev_y != new_y)) USER_Driver->pSetCursorPos( new_x, new_y ); } diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/user32/tests/input.c wine-staging-1.7.41~ubuntu12.04.1/dlls/user32/tests/input.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/user32/tests/input.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/user32/tests/input.c 2015-04-18 23:36:02.000000000 +0000 @@ -1542,7 +1542,7 @@ { WCHAR wStr[4]; BYTE state[256]; - const BYTE SC_RETURN = 0x1c, SC_TAB = 0x0f; + const BYTE SC_RETURN = 0x1c, SC_TAB = 0x0f, SC_A = 0x1e; const BYTE HIGHEST_BIT = 0x80; int i, ret; for(i=0; i<256; i++) @@ -1564,9 +1564,13 @@ ok(wStr[1]==0 || broken(wStr[1]!=0) /* nt4 */, "ToUnicode didn't null-terminate the buffer when there was room.\n"); } + + ret = ToUnicode('A', SC_A, state, wStr, 4, 0); + ok(ret == 1, "ToUnicode for character A didn't return 1 (was %i)\n", ret); + ok(wStr[0] == 'a', "ToUnicode for character 'A' was %i (expected %i)\n", wStr[0], 'a'); + state[VK_CONTROL] |= HIGHEST_BIT; state[VK_LCONTROL] |= HIGHEST_BIT; - ret = ToUnicode(VK_TAB, SC_TAB, state, wStr, 2, 0); ok(ret == 0, "ToUnicode for CTRL + Tab didn't return 0 (was %i)\n", ret); @@ -1575,12 +1579,76 @@ if(ret == 1) ok(wStr[0]=='\n', "ToUnicode for CTRL + Return was %i (expected 10)\n", wStr[0]); + ret = ToUnicode('A', SC_A, state, wStr, 4, 0); + ok(ret == 1, "ToUnicode for CTRL + character A didn't return 1 (was %i)\n", ret); + ok(wStr[0] == 1, "ToUnicode for CTRL + character 'A' was %i (expected 1)\n", wStr[0]); + state[VK_SHIFT] |= HIGHEST_BIT; state[VK_LSHIFT] |= HIGHEST_BIT; ret = ToUnicode(VK_TAB, SC_TAB, state, wStr, 2, 0); ok(ret == 0, "ToUnicode for CTRL + SHIFT + Tab didn't return 0 (was %i)\n", ret); ret = ToUnicode(VK_RETURN, SC_RETURN, state, wStr, 2, 0); todo_wine ok(ret == 0, "ToUnicode for CTRL + SHIFT + Return didn't return 0 (was %i)\n", ret); + + ret = ToUnicode(VK_TAB, SC_TAB, NULL, wStr, 4, 0); + ok(ret == 0, "ToUnicode with NULL keystate didn't return 0 (was %i)\n", ret); + ret = ToUnicode(VK_RETURN, SC_RETURN, NULL, wStr, 4, 0); + ok(ret == 0, "ToUnicode with NULL keystate didn't return 0 (was %i)\n", ret); + ret = ToUnicode('A', SC_A, NULL, wStr, 4, 0); + ok(ret == 0, "ToUnicode with NULL keystate didn't return 0 (was %i)\n", ret); + ret = ToUnicodeEx(VK_TAB, SC_TAB, NULL, wStr, 4, 0, GetKeyboardLayout(0)); + ok(ret == 0, "ToUnicodeEx with NULL keystate didn't return 0 (was %i)\n", ret); + ret = ToUnicodeEx(VK_RETURN, SC_RETURN, NULL, wStr, 4, 0, GetKeyboardLayout(0)); + ok(ret == 0, "ToUnicodeEx with NULL keystate didn't return 0 (was %i)\n", ret); + ret = ToUnicodeEx('A', SC_A, NULL, wStr, 4, 0, GetKeyboardLayout(0)); + ok(ret == 0, "ToUnicodeEx with NULL keystate didn't return 0 (was %i)\n", ret); +} + +static void test_ToAscii(void) +{ + WORD character; + BYTE state[256]; + const BYTE SC_RETURN = 0x1c, SC_A = 0x1e; + const BYTE HIGHEST_BIT = 0x80; + int ret; + + memset(state, 0, sizeof(state)); + + character = 0; + ret = ToAscii(VK_RETURN, SC_RETURN, state, &character, 0); + ok(ret == 1, "ToAscii for Return key didn't return 1 (was %i)\n", ret); + ok(character == '\r', "ToAscii for Return was %i (expected 13)\n", character); + + character = 0; + ret = ToAscii('A', SC_A, state, &character, 0); + ok(ret == 1, "ToAscii for character 'A' didn't return 1 (was %i)\n", ret); + ok(character == 'a', "ToAscii for character 'A' was %i (expected %i)\n", character, 'a'); + + state[VK_CONTROL] |= HIGHEST_BIT; + state[VK_LCONTROL] |= HIGHEST_BIT; + character = 0; + ret = ToAscii(VK_RETURN, SC_RETURN, state, &character, 0); + ok(ret == 1, "ToAscii for CTRL + Return key didn't return 1 (was %i)\n", ret); + ok(character == '\n', "ToAscii for CTRL + Return was %i (expected 10)\n", character); + + character = 0; + ret = ToAscii('A', SC_A, state, &character, 0); + ok(ret == 1, "ToAscii for CTRL + character 'A' didn't return 1 (was %i)\n", ret); + ok(character == 1, "ToAscii for CTRL + character 'A' was %i (expected 1)\n", character); + + state[VK_SHIFT] |= HIGHEST_BIT; + state[VK_LSHIFT] |= HIGHEST_BIT; + ret = ToAscii(VK_RETURN, SC_RETURN, state, &character, 0); + todo_wine ok(ret == 0, "ToAscii for CTRL + Shift + Return key didn't return 0 (was %i)\n", ret); + + ret = ToAscii(VK_RETURN, SC_RETURN, NULL, &character, 0); + ok(ret == 0, "ToAscii for NULL keystate didn't return 0 (was %i)\n", ret); + ret = ToAscii('A', SC_A, NULL, &character, 0); + ok(ret == 0, "ToAscii for NULL keystate didn't return 0 (was %i)\n", ret); + ret = ToAsciiEx(VK_RETURN, SC_RETURN, NULL, &character, 0, GetKeyboardLayout(0)); + ok(ret == 0, "ToAsciiEx for NULL keystate didn't return 0 (was %i)\n", ret); + ret = ToAsciiEx('A', SC_A, NULL, &character, 0, GetKeyboardLayout(0)); + ok(ret == 0, "ToAsciiEx for NULL keystate didn't return 0 (was %i)\n", ret); } static void test_get_async_key_state(void) @@ -1974,6 +2042,7 @@ test_mouse_ll_hook(); test_key_map(); test_ToUnicode(); + test_ToAscii(); test_get_async_key_state(); test_keyboard_layout_name(); test_key_names(); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/user32/user_private.h wine-staging-1.7.41~ubuntu12.04.1/dlls/user32/user_private.h --- wine-staging-1.7.40~ubuntu12.04.1/dlls/user32/user_private.h 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/user32/user_private.h 2015-04-18 23:36:02.000000000 +0000 @@ -184,8 +184,7 @@ DWORD GetMessagePosVal; /* Value for GetMessagePos */ ULONG_PTR GetMessageExtraInfoVal; /* Value for GetMessageExtraInfo */ UINT active_hooks; /* Bitmap of active hooks */ - UINT key_state_time; /* Time of last key state refresh */ - BYTE *key_state; /* Cache of global key state */ + struct user_key_state_info *key_state; /* Cache of global key state */ HWND top_window; /* Desktop window */ HWND msg_window; /* HWND_MESSAGE parent window */ RAWINPUT *rawinput; @@ -193,6 +192,15 @@ C_ASSERT( sizeof(struct user_thread_info) <= sizeof(((TEB *)0)->Win32ClientInfo) ); +extern INT global_key_state_counter DECLSPEC_HIDDEN; + +struct user_key_state_info +{ + UINT time; /* Time of last key state refresh */ + INT counter; /* Counter to invalidate the key state */ + BYTE state[256]; /* State for each key */ +}; + struct hook_extra_info { HHOOK handle; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/user32/winstation.c wine-staging-1.7.41~ubuntu12.04.1/dlls/user32/winstation.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/user32/winstation.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/user32/winstation.c 2015-04-18 23:36:02.000000000 +0000 @@ -399,9 +399,10 @@ if (ret) /* reset the desktop windows */ { struct user_thread_info *thread_info = get_user_thread_info(); + struct user_key_state_info *key_state_info = thread_info->key_state; thread_info->top_window = 0; thread_info->msg_window = 0; - thread_info->key_state_time = 0; + if (key_state_info) key_state_info->time = 0; } return ret; } diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/usp10/tests/usp10.c wine-staging-1.7.41~ubuntu12.04.1/dlls/usp10/tests/usp10.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/usp10/tests/usp10.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/usp10/tests/usp10.c 2015-04-18 23:36:02.000000000 +0000 @@ -756,7 +756,7 @@ else if (hr != S_OK) winetest_trace("ScriptShapeOpenType failed (%x)\n",hr); if (FAILED(hr)) - return; + goto cleanup; for (x = 0; x < cchString; x++) { @@ -808,6 +808,7 @@ winetest_trace("%i: fZeroWidth incorrect (%i)\n",x,glyphProp[x].sva.fZeroWidth); } +cleanup: HeapFree(GetProcessHeap(),0,logclust); HeapFree(GetProcessHeap(),0,charProp); HeapFree(GetProcessHeap(),0,glyphs); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/uxtheme/draw.c wine-staging-1.7.41~ubuntu12.04.1/dlls/uxtheme/draw.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/uxtheme/draw.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/uxtheme/draw.c 2015-04-18 23:36:02.000000000 +0000 @@ -293,22 +293,33 @@ 255, /* SourceConstantAlpha */ AC_SRC_ALPHA /* AlphaFormat */ }; + + BOOL ret = TRUE; + int old_stretch_mode; + POINT old_brush_org; + + old_stretch_mode = SetStretchBltMode(hdcDst, HALFTONE); + SetBrushOrgEx(hdcDst, nXOriginDst, nYOriginDst, &old_brush_org); + if (transparent == ALPHABLEND_BINARY) { /* Ensure we don't pass any negative values to TransparentBlt */ - return TransparentBlt(hdcDst, nXOriginDst, nYOriginDst, abs(nWidthDst), abs(nHeightDst), + ret = TransparentBlt(hdcDst, nXOriginDst, nYOriginDst, abs(nWidthDst), abs(nHeightDst), hdcSrc, nXOriginSrc, nYOriginSrc, abs(nWidthSrc), abs(nHeightSrc), transcolor); - } - if ((transparent == ALPHABLEND_NONE) || + } else if ((transparent == ALPHABLEND_NONE) || !AlphaBlend(hdcDst, nXOriginDst, nYOriginDst, nWidthDst, nHeightDst, hdcSrc, nXOriginSrc, nYOriginSrc, nWidthSrc, nHeightSrc, blendFunc)) { - return StretchBlt(hdcDst, nXOriginDst, nYOriginDst, nWidthDst, nHeightDst, + ret = StretchBlt(hdcDst, nXOriginDst, nYOriginDst, nWidthDst, nHeightDst, hdcSrc, nXOriginSrc, nYOriginSrc, nWidthSrc, nHeightSrc, SRCCOPY); } - return TRUE; + + SetBrushOrgEx(hdcDst, old_brush_org.x, old_brush_org.y, NULL); + SetStretchBltMode(hdcDst, old_stretch_mode); + + return ret; } /*********************************************************************** @@ -652,9 +663,9 @@ const DTBGOPTS *pOptions) { HRESULT hr = S_OK; - HBITMAP bmpSrc; + HBITMAP bmpSrc, bmpSrcResized = NULL; HGDIOBJ oldSrc; - HDC hdcSrc; + HDC hdcSrc, hdcOrigSrc = NULL; RECT rcSrc; RECT rcDst; POINT dstSize; @@ -718,6 +729,34 @@ GetThemeMargins(hTheme, hdc, iPartId, iStateId, TMT_SIZINGMARGINS, NULL, &sm); + /* Resize source image if destination smaller than margins */ + if (sm.cyTopHeight + sm.cyBottomHeight > dstSize.y || sm.cxLeftWidth + sm.cxRightWidth > dstSize.x) { + if (sm.cyTopHeight + sm.cyBottomHeight > dstSize.y) { + sm.cyTopHeight = MulDiv(sm.cyTopHeight, dstSize.y, srcSize.y); + sm.cyBottomHeight = dstSize.y - sm.cyTopHeight; + srcSize.y = dstSize.y; + } + + if (sm.cxLeftWidth + sm.cxRightWidth > dstSize.x) { + sm.cxLeftWidth = MulDiv(sm.cxLeftWidth, dstSize.x, srcSize.x); + sm.cxRightWidth = dstSize.x - sm.cxLeftWidth; + srcSize.x = dstSize.x; + } + + hdcOrigSrc = hdcSrc; + hdcSrc = CreateCompatibleDC(NULL); + bmpSrcResized = CreateBitmap(srcSize.x, srcSize.y, 1, 32, NULL); + SelectObject(hdcSrc, bmpSrcResized); + + UXTHEME_StretchBlt(hdcSrc, 0, 0, srcSize.x, srcSize.y, hdcOrigSrc, rcSrc.left, rcSrc.top, + rcSrc.right - rcSrc.left, rcSrc.bottom - rcSrc.top, transparent, transparentcolor); + + rcSrc.left = 0; + rcSrc.top = 0; + rcSrc.right = srcSize.x; + rcSrc.bottom = srcSize.y; + } + hdcDst = hdc; OffsetViewportOrgEx(hdcDst, rcDst.left, rcDst.top, &org); @@ -822,6 +861,8 @@ } SelectObject(hdcSrc, oldSrc); DeleteDC(hdcSrc); + if (bmpSrcResized) DeleteObject(bmpSrcResized); + if (hdcOrigSrc) DeleteDC(hdcOrigSrc); CopyRect(pRect, &rcDst); return hr; } diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/uxtheme/msstyles.c wine-staging-1.7.41~ubuntu12.04.1/dlls/uxtheme/msstyles.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/uxtheme/msstyles.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/uxtheme/msstyles.c 2015-04-18 23:36:02.000000000 +0000 @@ -209,6 +209,13 @@ tf->classes = pcls->next; while(pcls->partstate) { PTHEME_PARTSTATE ps = pcls->partstate; + + while(ps->properties) { + PTHEME_PROPERTY prop = ps->properties; + ps->properties = prop->next; + HeapFree(GetProcessHeap(), 0, prop); + } + pcls->partstate = ps->next; HeapFree(GetProcessHeap(), 0, ps); } @@ -674,8 +681,8 @@ struct PARSECOLORSTATE { int colorCount; - int colorElements[TMT_LASTCOLOR-TMT_FIRSTCOLOR]; - COLORREF colorRgb[TMT_LASTCOLOR-TMT_FIRSTCOLOR]; + int colorElements[TMT_LASTCOLOR-TMT_FIRSTCOLOR+1]; + COLORREF colorRgb[TMT_LASTCOLOR-TMT_FIRSTCOLOR+1]; int captionColors; }; @@ -1261,9 +1268,9 @@ pFont->lfCharSet = DEFAULT_CHARSET; while(MSSTYLES_GetNextToken(lpCur, lpEnd, &lpCur, attr, sizeof(attr)/sizeof(attr[0]))) { if(!lstrcmpiW(szBold, attr)) pFont->lfWeight = FW_BOLD; - else if(!!lstrcmpiW(szItalic, attr)) pFont->lfItalic = TRUE; - else if(!!lstrcmpiW(szUnderline, attr)) pFont->lfUnderline = TRUE; - else if(!!lstrcmpiW(szStrikeOut, attr)) pFont->lfStrikeOut = TRUE; + else if(!lstrcmpiW(szItalic, attr)) pFont->lfItalic = TRUE; + else if(!lstrcmpiW(szUnderline, attr)) pFont->lfUnderline = TRUE; + else if(!lstrcmpiW(szStrikeOut, attr)) pFont->lfStrikeOut = TRUE; } *lpValEnd = lpCur; return S_OK; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/uxtheme/property.c wine-staging-1.7.41~ubuntu12.04.1/dlls/uxtheme/property.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/uxtheme/property.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/uxtheme/property.c 2015-04-18 23:36:02.000000000 +0000 @@ -210,7 +210,7 @@ if(!hTheme) return E_HANDLE; - if(!(tp = MSSTYLES_FindProperty(hTheme, iPartId, iStateId, TMT_FILENAME, iPropId))) + if(!(tp = MSSTYLES_FindProperty(hTheme, iPartId, iStateId, TMT_STRING, iPropId))) return E_PROP_ID_UNSUPPORTED; return MSSTYLES_GetPropertyString(tp, pszBuff, cchMaxBuffChars); } diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/windowscodecs/clsfactory.c wine-staging-1.7.41~ubuntu12.04.1/dlls/windowscodecs/clsfactory.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/windowscodecs/clsfactory.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/windowscodecs/clsfactory.c 2015-04-18 23:36:02.000000000 +0000 @@ -61,6 +61,7 @@ {&CLSID_WineTgaDecoder, TgaDecoder_CreateInstance}, {&CLSID_WICUnknownMetadataReader, UnknownMetadataReader_CreateInstance}, {&CLSID_WICIfdMetadataReader, IfdMetadataReader_CreateInstance}, + {&CLSID_WICPngGamaMetadataReader, PngGamaReader_CreateInstance}, {&CLSID_WICPngTextMetadataReader, PngTextReader_CreateInstance}, {&CLSID_WICLSDMetadataReader, LSDReader_CreateInstance}, {&CLSID_WICIMDMetadataReader, IMDReader_CreateInstance}, diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/windowscodecs/pngformat.c wine-staging-1.7.41~ubuntu12.04.1/dlls/windowscodecs/pngformat.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/windowscodecs/pngformat.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/windowscodecs/pngformat.c 2015-04-18 23:36:02.000000000 +0000 @@ -43,6 +43,11 @@ static const WCHAR wszPngInterlaceOption[] = {'I','n','t','e','r','l','a','c','e','O','p','t','i','o','n',0}; +static inline ULONG read_ulong_be(BYTE* data) +{ + return data[0] << 24 | data[1] << 16 | data[2] << 8 | data[3]; +} + static HRESULT read_png_chunk(IStream *stream, BYTE *type, BYTE **data, ULONG *data_size) { BYTE header[8]; @@ -57,7 +62,7 @@ return hr; } - *data_size = header[0] << 24 | header[1] << 16 | header[2] << 8 | header[3]; + *data_size = read_ulong_be(&header[0]); memcpy(type, &header[4], 4); @@ -155,6 +160,68 @@ return MetadataReader_Create(&TextReader_Vtbl, iid, ppv); } +static HRESULT LoadGamaMetadata(IStream *stream, const GUID *preferred_vendor, + DWORD persist_options, MetadataItem **items, DWORD *item_count) +{ + HRESULT hr; + BYTE type[4]; + BYTE *data; + ULONG data_size; + ULONG gamma; + static const WCHAR ImageGamma[] = {'I','m','a','g','e','G','a','m','m','a',0}; + LPWSTR name; + MetadataItem *result; + + hr = read_png_chunk(stream, type, &data, &data_size); + if (FAILED(hr)) return hr; + + if (data_size < 4) + { + HeapFree(GetProcessHeap(), 0, data); + return E_FAIL; + } + + gamma = read_ulong_be(data); + + HeapFree(GetProcessHeap(), 0, data); + + result = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(MetadataItem)); + name = HeapAlloc(GetProcessHeap(), 0, sizeof(ImageGamma)); + if (!result || !name) + { + HeapFree(GetProcessHeap(), 0, result); + HeapFree(GetProcessHeap(), 0, name); + return E_OUTOFMEMORY; + } + + PropVariantInit(&result[0].schema); + PropVariantInit(&result[0].id); + PropVariantInit(&result[0].value); + + memcpy(name, ImageGamma, sizeof(ImageGamma)); + + result[0].id.vt = VT_LPWSTR; + result[0].id.u.pwszVal = name; + result[0].value.vt = VT_UI4; + result[0].value.u.ulVal = gamma; + + *items = result; + *item_count = 1; + + return S_OK; +} + +static const MetadataHandlerVtbl GamaReader_Vtbl = { + 0, + &CLSID_WICPngGamaMetadataReader, + LoadGamaMetadata +}; + +HRESULT PngGamaReader_CreateInstance(REFIID iid, void** ppv) +{ + return MetadataReader_Create(&GamaReader_Vtbl, iid, ppv); +} + #ifdef SONAME_LIBPNG static void *libpng_handle; @@ -375,7 +442,8 @@ if (ref == 0) { - IStream_Release(This->stream); + if (This->stream) + IStream_Release(This->stream); if (This->png_ptr) ppng_destroy_read_struct(&This->png_ptr, &This->info_ptr, &This->end_info); This->lock.DebugInfo->Spare[0] = 0; @@ -1151,6 +1219,7 @@ This->png_ptr = NULL; This->info_ptr = NULL; This->end_info = NULL; + This->stream = NULL; This->initialized = FALSE; This->image_bits = NULL; InitializeCriticalSection(&This->lock); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/windowscodecs/regsvr.c wine-staging-1.7.41~ubuntu12.04.1/dlls/windowscodecs/regsvr.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/windowscodecs/regsvr.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/windowscodecs/regsvr.c 2015-04-18 23:36:02.000000000 +0000 @@ -1502,6 +1502,21 @@ { NULL } /* list terminator */ }; +static const BYTE gAMA[] = "gAMA"; + +static const struct metadata_pattern pnggama_metadata_pattern[] = { + { 4, 4, gAMA, mask_all, 4 }, + { 0 } +}; + +static const struct reader_containers pnggama_containers[] = { + { + &GUID_ContainerFormatPng, + pnggama_metadata_pattern + }, + { NULL } /* list terminator */ +}; + static const struct metadata_pattern lsd_metadata_patterns[] = { { 0, 6, gif87a_magic, mask_all, 0 }, { 0, 6, gif89a_magic, mask_all, 0 }, @@ -1597,6 +1612,16 @@ 1, 1, 0, ifd_containers }, + { &CLSID_WICPngGamaMetadataReader, + "The Wine Project", + "Chunk gAMA Reader", + "1.0.0.0", + "1.0.0.0", + &GUID_VendorMicrosoft, + &GUID_MetadataFormatChunkgAMA, + 0, 0, 0, + pnggama_containers + }, { &CLSID_WICPngTextMetadataReader, "The Wine Project", "Chunk tEXt Reader", diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/windowscodecs/tests/metadata.c wine-staging-1.7.41~ubuntu12.04.1/dlls/windowscodecs/tests/metadata.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/windowscodecs/tests/metadata.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/windowscodecs/tests/metadata.c 2015-04-18 23:36:02.000000000 +0000 @@ -137,6 +137,13 @@ 0x3f,0x64,0x19,0xf3 /* chunk CRC */ }; +static const char metadata_gAMA[] = { + 0,0,0,4, /* chunk length */ + 'g','A','M','A', /* chunk type */ + 0,0,130,53, /* gamma */ + 0xff,0xff,0xff,0xff /* chunk CRC */ +}; + static const char pngimage[285] = { 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,0x44,0x52, 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x08,0x02,0x00,0x00,0x00,0x90,0x77,0x53, @@ -405,6 +412,51 @@ IWICMetadataReader_Release(reader); } +static void test_metadata_gAMA(void) +{ + HRESULT hr; + IWICMetadataReader *reader; + PROPVARIANT schema, id, value; + ULONG count; + GUID format; + static const WCHAR ImageGamma[] = {'I','m','a','g','e','G','a','m','m','a',0}; + + PropVariantInit(&schema); + PropVariantInit(&id); + PropVariantInit(&value); + + hr = CoCreateInstance(&CLSID_WICPngGamaMetadataReader, NULL, CLSCTX_INPROC_SERVER, + &IID_IWICMetadataReader, (void**)&reader); + ok(hr == S_OK || broken(hr == REGDB_E_CLASSNOTREG) /*winxp*/, "CoCreateInstance failed, hr=%x\n", hr); + if (FAILED(hr)) return; + + load_stream((IUnknown*)reader, metadata_gAMA, sizeof(metadata_gAMA), WICPersistOptionsDefault); + + hr = IWICMetadataReader_GetMetadataFormat(reader, &format); + ok(hr == S_OK, "GetMetadataFormat failed, hr=%x\n", hr); + ok(IsEqualGUID(&format, &GUID_MetadataFormatChunkgAMA), "unexpected format %s\n", wine_dbgstr_guid(&format)); + + hr = IWICMetadataReader_GetCount(reader, &count); + ok(hr == S_OK, "GetCount failed, hr=%x\n", hr); + ok(count == 1, "unexpected count %i\n", count); + + hr = IWICMetadataReader_GetValueByIndex(reader, 0, &schema, &id, &value); + ok(hr == S_OK, "GetValue failed, hr=%x\n", hr); + + ok(schema.vt == VT_EMPTY, "unexpected vt: %i\n", schema.vt); + PropVariantClear(&schema); + + ok(id.vt == VT_LPWSTR, "unexpected vt: %i\n", id.vt); + ok(!lstrcmpW(U(id).pwszVal, ImageGamma), "unexpected value: %s\n", wine_dbgstr_w(U(id).pwszVal)); + PropVariantClear(&id); + + ok(value.vt == VT_UI4, "unexpected vt: %i\n", value.vt); + ok(U(value).ulVal == 33333, "unexpected value: %u\n", U(value).ulVal); + PropVariantClear(&value); + + IWICMetadataReader_Release(reader); +} + static inline USHORT ushort_bswap(USHORT s) { return (s >> 8) | (s << 8); @@ -1805,6 +1857,7 @@ test_metadata_unknown(); test_metadata_tEXt(); + test_metadata_gAMA(); test_metadata_IFD(); test_metadata_Exif(); test_create_reader(); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/windowscodecs/wincodecs_private.h wine-staging-1.7.41~ubuntu12.04.1/dlls/windowscodecs/wincodecs_private.h --- wine-staging-1.7.40~ubuntu12.04.1/dlls/windowscodecs/wincodecs_private.h 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/windowscodecs/wincodecs_private.h 2015-04-18 23:36:02.000000000 +0000 @@ -151,6 +151,7 @@ extern HRESULT UnknownMetadataReader_CreateInstance(REFIID iid, void** ppv) DECLSPEC_HIDDEN; extern HRESULT IfdMetadataReader_CreateInstance(REFIID iid, void **ppv) DECLSPEC_HIDDEN; +extern HRESULT PngGamaReader_CreateInstance(REFIID iid, void** ppv) DECLSPEC_HIDDEN; extern HRESULT PngTextReader_CreateInstance(REFIID iid, void** ppv) DECLSPEC_HIDDEN; extern HRESULT LSDReader_CreateInstance(REFIID iid, void **ppv) DECLSPEC_HIDDEN; extern HRESULT IMDReader_CreateInstance(REFIID iid, void **ppv) DECLSPEC_HIDDEN; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/windowscodecs/windowscodecs_wincodec.idl wine-staging-1.7.41~ubuntu12.04.1/dlls/windowscodecs/windowscodecs_wincodec.idl --- wine-staging-1.7.40~ubuntu12.04.1/dlls/windowscodecs/windowscodecs_wincodec.idl 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/windowscodecs/windowscodecs_wincodec.idl 2015-04-18 23:36:02.000000000 +0000 @@ -140,6 +140,13 @@ coclass WICIfdMetadataReader { interface IWICIfdMetadataReader; } [ + helpstring("WIC Png gAMA Metadata Reader"), + threading(both), + uuid(3692ca39-e082-4350-9e1f-3704cb083cd5) +] +coclass WICPngGamaMetadataReader { interface IWICMetadataReader; } + +[ helpstring("WIC Png tEXt Metadata Reader"), threading(both), uuid(4b59afcc-b8c3-408a-b670-89e5fab6fda7) diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/winealsa.drv/mmdevdrv.c wine-staging-1.7.41~ubuntu12.04.1/dlls/winealsa.drv/mmdevdrv.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/winealsa.drv/mmdevdrv.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/winealsa.drv/mmdevdrv.c 2015-04-18 23:36:02.000000000 +0000 @@ -923,6 +923,7 @@ HeapFree(GetProcessHeap(), 0, This->vols); HeapFree(GetProcessHeap(), 0, This->local_buffer); HeapFree(GetProcessHeap(), 0, This->remapping_buf); + HeapFree(GetProcessHeap(), 0, This->silence_buf); HeapFree(GetProcessHeap(), 0, This->tmp_buffer); HeapFree(GetProcessHeap(), 0, This->hw_params); CoTaskMemFree(This->fmt); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/wined3d/arb_program_shader.c wine-staging-1.7.41~ubuntu12.04.1/dlls/wined3d/arb_program_shader.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/wined3d/arb_program_shader.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/wined3d/arb_program_shader.c 2015-04-18 23:36:02.000000000 +0000 @@ -4166,7 +4166,7 @@ for (j = 0; j < ps_input_sig->element_count; ++j) { - const struct wined3d_shader_signature_element *input = &ps_input_sig->elements[i]; + const struct wined3d_shader_signature_element *input = &ps_input_sig->elements[j]; if (!input->semantic_name) continue; @@ -5762,7 +5762,8 @@ /* ARB_fragment_program fixed function pipeline replacement definitions */ #define ARB_FFP_CONST_TFACTOR 0 -#define ARB_FFP_CONST_SPECULAR_ENABLE ((ARB_FFP_CONST_TFACTOR) + 1) +#define ARB_FFP_CONST_COLOR_KEY ((ARB_FFP_CONST_TFACTOR) + 1) +#define ARB_FFP_CONST_SPECULAR_ENABLE ((ARB_FFP_CONST_COLOR_KEY) + 1) #define ARB_FFP_CONST_CONSTANT(i) ((ARB_FFP_CONST_SPECULAR_ENABLE) + 1 + i) #define ARB_FFP_CONST_BUMPMAT(i) ((ARB_FFP_CONST_CONSTANT(7)) + 1 + i) #define ARB_FFP_CONST_LUMINANCE(i) ((ARB_FFP_CONST_BUMPMAT(7)) + 1 + i) @@ -5841,7 +5842,8 @@ static void arbfp_get_caps(const struct wined3d_gl_info *gl_info, struct fragment_caps *caps) { caps->wined3d_caps = WINED3D_FRAGMENT_CAP_PROJ_CONTROL - | WINED3D_FRAGMENT_CAP_SRGB_WRITE; + | WINED3D_FRAGMENT_CAP_SRGB_WRITE + | WINED3D_FRAGMENT_CAP_COLOR_KEY; caps->PrimitiveMiscCaps = WINED3DPMISCCAPS_TSSARGTEMP; caps->TextureOpCaps = WINED3DTEXOPCAPS_DISABLE | WINED3DTEXOPCAPS_SELECTARG1 | @@ -5995,6 +5997,66 @@ checkGLcall("glProgramEnvParameter4fvARB(GL_FRAGMENT_PROGRAM_ARB, ARB_FFP_CONST_LUMINANCE(stage), param)"); } +static void alpha_test_arbfp(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) +{ + const struct wined3d_gl_info *gl_info = context->gl_info; + int glParm; + float ref; + + TRACE("context %p, state %p, state_id %#x.\n", context, state, state_id); + + if (state->render_states[WINED3D_RS_ALPHATESTENABLE]) + { + gl_info->gl_ops.gl.p_glEnable(GL_ALPHA_TEST); + checkGLcall("glEnable GL_ALPHA_TEST"); + } + else + { + gl_info->gl_ops.gl.p_glDisable(GL_ALPHA_TEST); + checkGLcall("glDisable GL_ALPHA_TEST"); + return; + } + + ref = ((float)state->render_states[WINED3D_RS_ALPHAREF]) / 255.0f; + glParm = wined3d_gl_compare_func(state->render_states[WINED3D_RS_ALPHAFUNC]); + + if (glParm) + { + gl_info->gl_ops.gl.p_glAlphaFunc(glParm, ref); + checkGLcall("glAlphaFunc"); + } +} + +static void color_key_arbfp(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) +{ + struct wined3d_device *device = context->swapchain->device; + const struct wined3d_gl_info *gl_info = context->gl_info; + struct wined3d_color float_key; + const struct wined3d_texture *texture = state->textures[0]; + + if (!texture) + return; + + /* Don't load the parameter if we're using an arbfp pixel shader, + * otherwise we'll overwrite application provided constants. */ + if (device->shader_backend == &arb_program_shader_backend) + { + struct shader_arb_priv *priv; + + if (use_ps(state)) + return; + + priv = device->shader_priv; + priv->pshader_const_dirty[ARB_FFP_CONST_COLOR_KEY] = 1; + priv->highest_dirty_ps_const = max(priv->highest_dirty_ps_const, ARB_FFP_CONST_COLOR_KEY + 1); + } + + wined3d_format_convert_color_to_float(texture->resource.format, NULL, + texture->async.src_blt_color_key.color_space_high_value, &float_key); + GL_EXTCALL(glProgramEnvParameter4fvARB(GL_FRAGMENT_PROGRAM_ARB, ARB_FFP_CONST_COLOR_KEY, &float_key.r)); + checkGLcall("glProgramEnvParameter4fvARB(GL_FRAGMENT_PROGRAM_ARB, ARB_FFP_CONST_COLOR_KEY, &float_key.r)"); +} + static const char *get_argreg(struct wined3d_shader_buffer *buffer, DWORD argnum, unsigned int stage, DWORD arg) { const char *ret; @@ -6199,6 +6261,25 @@ shader_addline(buffer, "MUL_SAT %s%s, %s, const.z;\n", dstreg, dstmask, dstreg); } +static const char *arbfp_texture_target(enum wined3d_gl_resource_type type) +{ + switch(type) + { + case WINED3D_GL_RES_TYPE_TEX_1D: + return "1D"; + case WINED3D_GL_RES_TYPE_TEX_2D: + return "2D"; + case WINED3D_GL_RES_TYPE_TEX_3D: + return "3D"; + case WINED3D_GL_RES_TYPE_TEX_CUBE: + return "CUBE"; + case WINED3D_GL_RES_TYPE_TEX_RECT: + return "RECT"; + default: + return "unexpected_resource_type"; + } +} + static GLuint gen_arbfp_ffp_shader(const struct ffp_frag_settings *settings, const struct wined3d_gl_info *gl_info) { unsigned int stage; @@ -6218,6 +6299,20 @@ GLint pos; BOOL custom_linear_fog = FALSE; + if (!shader_buffer_init(&buffer)) + { + ERR("Failed to initialize shader buffer.\n"); + return 0; + } + + shader_addline(&buffer, "!!ARBfp1.0\n"); + + if (settings->color_key_enabled) + { + shader_addline(&buffer, "PARAM color_key = program.env[%u];\n", ARB_FFP_CONST_COLOR_KEY); + tex_read[0] = TRUE; + } + /* Find out which textures are read */ for (stage = 0; stage < MAX_TEXTURES; ++stage) { @@ -6277,15 +6372,6 @@ } lowest_disabled_stage = stage; - /* Shader header */ - if (!shader_buffer_init(&buffer)) - { - ERR("Failed to initialize shader buffer.\n"); - return 0; - } - - shader_addline(&buffer, "!!ARBfp1.0\n"); - switch (settings->fog) { case WINED3D_FFP_PS_FOG_OFF: break; @@ -6345,27 +6431,7 @@ if (!tex_read[stage]) continue; - switch(settings->op[stage].tex_type) - { - case WINED3D_GL_RES_TYPE_TEX_1D: - textype = "1D"; - break; - case WINED3D_GL_RES_TYPE_TEX_2D: - textype = "2D"; - break; - case WINED3D_GL_RES_TYPE_TEX_3D: - textype = "3D"; - break; - case WINED3D_GL_RES_TYPE_TEX_CUBE: - textype = "CUBE"; - break; - case WINED3D_GL_RES_TYPE_TEX_RECT: - textype = "RECT"; - break; - default: - textype = "unexpected_textype"; - break; - } + textype = arbfp_texture_target(settings->op[stage].tex_type); if(settings->op[stage].projected == proj_none) { instr = "TEX"; @@ -6424,6 +6490,14 @@ settings->op[stage].color_fixup); } + if (settings->color_key_enabled) + { + shader_addline(&buffer, "SUB TMP, tex0, color_key;\n"); + shader_addline(&buffer, "DP4 TMP.b, TMP, TMP;\n"); + shader_addline(&buffer, "SGE TMP, -TMP.b, 0.0;\n"); + shader_addline(&buffer, "KIL -TMP;\n"); + } + /* Generate the main shader */ for (stage = 0; stage < MAX_TEXTURES; ++stage) { @@ -6544,6 +6618,7 @@ } state_texfactor_arbfp(context, state, STATE_RENDER(WINED3D_RS_TEXTUREFACTOR)); state_arb_specularenable(context, state, STATE_RENDER(WINED3D_RS_SPECULARENABLE)); + color_key_arbfp(context, state, STATE_COLOR_KEY); } else if (use_pshader) { @@ -6781,6 +6856,11 @@ {STATE_TEXTURESTAGE(7, WINED3D_TSS_BUMPENV_LSCALE), { STATE_TEXTURESTAGE(7, WINED3D_TSS_BUMPENV_LSCALE), tex_bumpenvlum_arbfp }, WINED3D_GL_EXT_NONE }, {STATE_TEXTURESTAGE(7, WINED3D_TSS_BUMPENV_LOFFSET), { STATE_TEXTURESTAGE(7, WINED3D_TSS_BUMPENV_LSCALE), NULL }, WINED3D_GL_EXT_NONE }, {STATE_SHADER(WINED3D_SHADER_TYPE_PIXEL), { STATE_SHADER(WINED3D_SHADER_TYPE_PIXEL), fragment_prog_arbfp }, WINED3D_GL_EXT_NONE }, + {STATE_RENDER(WINED3D_RS_ALPHAFUNC), { STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), NULL }, WINED3D_GL_EXT_NONE }, + {STATE_RENDER(WINED3D_RS_ALPHAREF), { STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), NULL }, WINED3D_GL_EXT_NONE }, + {STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), { STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), alpha_test_arbfp }, WINED3D_GL_EXT_NONE }, + {STATE_RENDER(WINED3D_RS_COLORKEYENABLE), { STATE_SHADER(WINED3D_SHADER_TYPE_PIXEL), NULL }, WINED3D_GL_EXT_NONE }, + {STATE_COLOR_KEY, { STATE_COLOR_KEY, color_key_arbfp }, WINED3D_GL_EXT_NONE }, {STATE_RENDER(WINED3D_RS_FOGENABLE), { STATE_RENDER(WINED3D_RS_FOGENABLE), state_arbfp_fog }, WINED3D_GL_EXT_NONE }, {STATE_RENDER(WINED3D_RS_FOGTABLEMODE), { STATE_RENDER(WINED3D_RS_FOGENABLE), NULL }, WINED3D_GL_EXT_NONE }, {STATE_RENDER(WINED3D_RS_FOGVERTEXMODE), { STATE_RENDER(WINED3D_RS_FOGENABLE), NULL }, WINED3D_GL_EXT_NONE }, @@ -6826,7 +6906,8 @@ { enum complex_fixup fixup : 4; enum wined3d_gl_resource_type res_type : 3; - DWORD padding : 25; + DWORD use_color_key : 1; + DWORD padding : 24; }; struct arbfp_blit_desc @@ -6837,6 +6918,7 @@ }; #define ARBFP_BLIT_PARAM_SIZE 0 +#define ARBFP_BLIT_PARAM_COLOR_KEY 1 struct arbfp_blit_priv { @@ -6910,7 +6992,7 @@ char *luminance) { char chroma; - const char *tex, *texinstr; + const char *tex, *texinstr = "TXP"; if (type->fixup == COMPLEX_FIXUP_UYVY) { @@ -6923,25 +7005,9 @@ *luminance = 'x'; } - switch (type->res_type) - { - case WINED3D_GL_RES_TYPE_TEX_2D: - tex = "2D"; - texinstr = "TXP"; - break; - - case WINED3D_GL_RES_TYPE_TEX_RECT: - tex = "RECT"; - texinstr = "TEX"; - break; - - default: - /* This is more tricky than just replacing the texture type - we have to navigate - * properly in the texture to find the correct chroma values - */ - FIXME("Implement yuv correction for non-2d, non-rect textures\n"); - return FALSE; - } + tex = arbfp_texture_target(type->res_type); + if (type->res_type == WINED3D_GL_RES_TYPE_TEX_RECT) + texinstr = "TEX"; /* First we have to read the chroma values. This means we need at least two pixels(no filtering), * or 4 pixels(with filtering). To get the unmodified chromas, we have to rid ourselves of the @@ -7017,20 +7083,7 @@ static const float yv12_coef[] = {2.0f / 3.0f, 1.0f / 6.0f, (2.0f / 3.0f) + (1.0f / 6.0f), 1.0f / 3.0f}; - switch (type->res_type) - { - case WINED3D_GL_RES_TYPE_TEX_2D: - tex = "2D"; - break; - - case WINED3D_GL_RES_TYPE_TEX_RECT: - tex = "RECT"; - break; - - default: - FIXME("Implement yv12 correction for non-2d, non-rect textures\n"); - return FALSE; - } + tex = arbfp_texture_target(type->res_type); /* YV12 surfaces contain a WxH sized luminance plane, followed by a (W/2)x(H/2) * V and a (W/2)x(H/2) U plane, each with 8 bit per pixel. So the effective @@ -7179,18 +7232,7 @@ static const float nv12_coef[] = {2.0f / 3.0f, 1.0f / 3.0f, 1.0f, 1.0f}; - switch (type->res_type) - { - case WINED3D_GL_RES_TYPE_TEX_2D: - tex = "2D"; - break; - case WINED3D_GL_RES_TYPE_TEX_RECT: - tex = "RECT"; - break; - default: - FIXME("Implement nv12 correction for non-2d, non-rect textures\n"); - return FALSE; - } + tex = arbfp_texture_target(type->res_type); /* NV12 surfaces contain a WxH sized luminance plane, followed by a (W/2)x(H/2) * sized plane where each component is an UV pair. So the effective @@ -7326,6 +7368,12 @@ GLenum shader; struct wined3d_shader_buffer buffer; GLint pos; + const char *tex_target = arbfp_texture_target(type->res_type); + + /* This should not happen because we only use this conversion for + * present blits which don't use color keying. */ + if (type->use_color_key) + FIXME("Implement P8 color keying.\n"); /* Shader header */ if (!shader_buffer_init(&buffer)) @@ -7349,10 +7397,7 @@ shader_addline(&buffer, "PARAM constants = { 0.996, 0.00195, 0, 0 };\n"); /* The alpha-component contains the palette index */ - if (type->res_type == WINED3D_GL_RES_TYPE_TEX_RECT) - 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"); + shader_addline(&buffer, "TEX index, fragment.texcoord[0], texture[0], %s;\n", tex_target); /* Scale the index by 255/256 and add a bias of '0.5' in order to sample in the middle */ shader_addline(&buffer, "MAD index.a, index.a, constants.x, constants.y;\n"); @@ -7425,6 +7470,9 @@ char luminance_component; GLint pos; + if (type->use_color_key) + FIXME("Implement YUV color keying.\n"); + /* Shader header */ if (!shader_buffer_init(&buffer)) { @@ -7558,7 +7606,70 @@ } /* Context activation is done by the caller. */ -static HRESULT arbfp_blit_set(void *blit_priv, struct wined3d_context *context, const struct wined3d_surface *surface) +static GLuint arbfp_gen_plain_shader(struct arbfp_blit_priv *priv, + const struct wined3d_gl_info *gl_info, const struct arbfp_blit_type *type) +{ + GLenum shader; + struct wined3d_shader_buffer buffer; + GLint pos; + const char *tex_target = arbfp_texture_target(type->res_type); + + /* Shader header */ + if (!shader_buffer_init(&buffer)) + { + ERR("Failed to initialize shader buffer.\n"); + return 0; + } + + GL_EXTCALL(glGenProgramsARB(1, &shader)); + if (!shader) + { + shader_buffer_free(&buffer); + return 0; + } + GL_EXTCALL(glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, shader)); + + shader_addline(&buffer, "!!ARBfp1.0\n"); + + if (type->use_color_key) + { + shader_addline(&buffer, "TEMP color;\n"); + shader_addline(&buffer, "TEMP compare;\n"); + shader_addline(&buffer, "PARAM color_key = program.local[%u];\n", ARBFP_BLIT_PARAM_COLOR_KEY); + shader_addline(&buffer, "TEX color, fragment.texcoord[0], texture[0], %s;\n", tex_target); + shader_addline(&buffer, "SUB compare, color, color_key;\n"); + shader_addline(&buffer, "DP4 compare.r, compare, compare;\n"); + shader_addline(&buffer, "SGE compare, -compare.r, 0.0;\n"); + shader_addline(&buffer, "KIL -compare;\n"); + shader_addline(&buffer, "MOV result.color, color;\n"); + } + else + { + shader_addline(&buffer, "TEX result.color, fragment.texcoord[0], texture[0], %s;\n", tex_target); + } + + shader_addline(&buffer, "END\n"); + + GL_EXTCALL(glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, + strlen(buffer.buffer), buffer.buffer)); + checkGLcall("glProgramStringARB()"); + + gl_info->gl_ops.gl.p_glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &pos); + if (pos != -1) + { + FIXME("Fragment program error at position %d: %s\n\n", pos, + debugstr_a((const char *)gl_info->gl_ops.gl.p_glGetString(GL_PROGRAM_ERROR_STRING_ARB))); + shader_arb_dump_program_source(buffer.buffer); + } + + shader_buffer_free(&buffer); + + return shader; +} + +/* Context activation is done by the caller. */ +static HRESULT arbfp_blit_set(void *blit_priv, struct wined3d_context *context, const struct wined3d_surface *surface, + const struct wined3d_color_key *color_key) { GLenum shader; float size[4] = {(float) surface->pow2Width, (float) surface->pow2Height, 1.0f, 1.0f}; @@ -7569,25 +7680,12 @@ struct wine_rb_entry *entry; struct arbfp_blit_type type; struct arbfp_blit_desc *desc; + struct wined3d_color float_color_key; - if (surface->container->flags & WINED3D_TEXTURE_CONVERTED) - { - gl_info->gl_ops.gl.p_glEnable(gl_texture_type); - checkGLcall("glEnable(gl_texture_type)"); - return WINED3D_OK; - } - - if (!is_complex_fixup(surface->resource.format->color_fixup)) - { - TRACE("Fixup:\n"); - dump_color_fixup_desc(surface->resource.format->color_fixup); - /* Don't bother setting up a shader for unconverted formats */ - gl_info->gl_ops.gl.p_glEnable(gl_texture_type); - checkGLcall("glEnable(gl_texture_type)"); - return WINED3D_OK; - } - - fixup = get_complex_fixup(surface->resource.format->color_fixup); + if (is_complex_fixup(surface->resource.format->color_fixup)) + fixup = get_complex_fixup(surface->resource.format->color_fixup); + else + fixup = COMPLEX_FIXUP_NONE; switch (gl_texture_type) { @@ -7616,7 +7714,7 @@ type.res_type = WINED3D_GL_RES_TYPE_TEX_2D; } type.fixup = fixup; - type.padding = 0; + type.use_color_key = !!color_key; entry = wine_rb_get(&priv->shaders, &type); if (entry) @@ -7628,11 +7726,20 @@ { switch (fixup) { + case COMPLEX_FIXUP_NONE: + if (!is_identity_fixup(surface->resource.format->color_fixup)) + FIXME("Implement support for sign or swizzle fixups.\n"); + shader = arbfp_gen_plain_shader(priv, gl_info, &type); + break; + case COMPLEX_FIXUP_P8: shader = gen_p8_shader(priv, gl_info, &type); break; - default: + case COMPLEX_FIXUP_YUY2: + case COMPLEX_FIXUP_UYVY: + case COMPLEX_FIXUP_YV12: + case COMPLEX_FIXUP_NV12: shader = gen_yuv_shader(priv, gl_info, &type); break; } @@ -7640,8 +7747,6 @@ if (!shader) { FIXME("Unsupported complex fixup %#x, not setting a shader\n", fixup); - gl_info->gl_ops.gl.p_glEnable(gl_texture_type); - checkGLcall("glEnable(gl_texture_type)"); return E_NOTIMPL; } @@ -7673,6 +7778,14 @@ checkGLcall("glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, shader)"); GL_EXTCALL(glProgramLocalParameter4fvARB(GL_FRAGMENT_PROGRAM_ARB, ARBFP_BLIT_PARAM_SIZE, size)); checkGLcall("glProgramLocalParameter4fvARB"); + if (type.use_color_key) + { + wined3d_format_convert_color_to_float(surface->resource.format, NULL, + surface->container->async.src_blt_color_key.color_space_high_value, &float_color_key); + GL_EXTCALL(glProgramLocalParameter4fvARB(GL_FRAGMENT_PROGRAM_ARB, + ARBFP_BLIT_PARAM_COLOR_KEY, &float_color_key.r)); + checkGLcall("glProgramLocalParameter4fvARB"); + } return WINED3D_OK; } @@ -7682,21 +7795,10 @@ { gl_info->gl_ops.gl.p_glDisable(GL_FRAGMENT_PROGRAM_ARB); checkGLcall("glDisable(GL_FRAGMENT_PROGRAM_ARB)"); - gl_info->gl_ops.gl.p_glDisable(GL_TEXTURE_2D); - checkGLcall("glDisable(GL_TEXTURE_2D)"); - if (gl_info->supported[ARB_TEXTURE_CUBE_MAP]) - { - gl_info->gl_ops.gl.p_glDisable(GL_TEXTURE_CUBE_MAP_ARB); - checkGLcall("glDisable(GL_TEXTURE_CUBE_MAP_ARB)"); - } - if (gl_info->supported[ARB_TEXTURE_RECTANGLE]) - { - gl_info->gl_ops.gl.p_glDisable(GL_TEXTURE_RECTANGLE_ARB); - checkGLcall("glDisable(GL_TEXTURE_RECTANGLE_ARB)"); - } } -static BOOL arbfp_blit_supported(const struct wined3d_gl_info *gl_info, enum wined3d_blit_op blit_op, +static BOOL arbfp_blit_supported(const struct wined3d_gl_info *gl_info, + const struct wined3d_d3d_info *d3d_info, enum wined3d_blit_op blit_op, const RECT *src_rect, DWORD src_usage, enum wined3d_pool src_pool, const struct wined3d_format *src_format, const RECT *dst_rect, DWORD dst_usage, enum wined3d_pool dst_pool, const struct wined3d_format *dst_format) { @@ -7705,10 +7807,21 @@ if (!gl_info->supported[ARB_FRAGMENT_PROGRAM]) return FALSE; - if (blit_op != WINED3D_BLIT_OP_COLOR_BLIT) + switch (blit_op) { - TRACE("Unsupported blit_op=%d\n", blit_op); - return FALSE; + case WINED3D_BLIT_OP_COLOR_BLIT_CKEY: + if (!d3d_info->shader_color_key) + { + /* The conversion modifies the alpha channel so the color key might no longer match. */ + TRACE("Color keying not supported with converted textures.\n"); + return FALSE; + } + case WINED3D_BLIT_OP_COLOR_BLIT: + break; + + default: + TRACE("Unsupported blit_op=%d\n", blit_op); + return FALSE; } if (src_pool == WINED3D_POOL_SYSTEM_MEM || dst_pool == WINED3D_POOL_SYSTEM_MEM) @@ -7757,9 +7870,10 @@ } } -HRESULT arbfp_blit_surface(struct wined3d_device *device, DWORD filter, +static void arbfp_blit_surface(struct wined3d_device *device, DWORD filter, struct wined3d_surface *src_surface, const RECT *src_rect_in, - struct wined3d_surface *dst_surface, const RECT *dst_rect_in) + struct wined3d_surface *dst_surface, const RECT *dst_rect_in, + const struct wined3d_color_key *color_key) { struct wined3d_context *context; RECT src_rect = *src_rect_in; @@ -7792,7 +7906,7 @@ if (!wined3d_resource_is_offscreen(&dst_surface->container->resource)) surface_translate_drawable_coords(dst_surface, context->win_handle, &dst_rect); - arbfp_blit_set(device->blit_priv, context, src_surface); + arbfp_blit_set(device->blit_priv, context, src_surface, color_key); /* Draw a textured quad */ draw_textured_quad(src_surface, context, &src_rect, &dst_rect, filter); @@ -7809,8 +7923,6 @@ surface_validate_location(dst_surface, dst_surface->container->resource.draw_binding); surface_invalidate_location(dst_surface, ~dst_surface->container->resource.draw_binding); - - return WINED3D_OK; } static HRESULT arbfp_blit_color_fill(struct wined3d_device *device, struct wined3d_surface *dst_surface, @@ -7835,4 +7947,5 @@ arbfp_blit_supported, arbfp_blit_color_fill, arbfp_blit_depth_fill, + arbfp_blit_surface, }; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/wined3d/ati_fragment_shader.c wine-staging-1.7.41~ubuntu12.04.1/dlls/wined3d/ati_fragment_shader.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/wined3d/ati_fragment_shader.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/wined3d/ati_fragment_shader.c 2015-04-18 23:36:02.000000000 +0000 @@ -1101,6 +1101,10 @@ static const struct StateEntryTemplate atifs_fragmentstate_template[] = { {STATE_RENDER(WINED3D_RS_TEXTUREFACTOR), { STATE_RENDER(WINED3D_RS_TEXTUREFACTOR), atifs_tfactor }, WINED3D_GL_EXT_NONE }, + {STATE_RENDER(WINED3D_RS_ALPHAFUNC), { STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), NULL }, WINED3D_GL_EXT_NONE }, + {STATE_RENDER(WINED3D_RS_ALPHAREF), { STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), NULL }, WINED3D_GL_EXT_NONE }, + {STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), { STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), state_alpha_test }, WINED3D_GL_EXT_NONE }, + {STATE_RENDER(WINED3D_RS_COLORKEYENABLE), { STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), NULL }, WINED3D_GL_EXT_NONE }, {STATE_RENDER(WINED3D_RS_FOGCOLOR), { STATE_RENDER(WINED3D_RS_FOGCOLOR), state_fogcolor }, WINED3D_GL_EXT_NONE }, {STATE_RENDER(WINED3D_RS_FOGDENSITY), { STATE_RENDER(WINED3D_RS_FOGDENSITY), state_fogdensity }, WINED3D_GL_EXT_NONE }, {STATE_RENDER(WINED3D_RS_FOGENABLE), { STATE_RENDER(WINED3D_RS_FOGENABLE), state_fog_fragpart }, WINED3D_GL_EXT_NONE }, @@ -1109,6 +1113,7 @@ {STATE_RENDER(WINED3D_RS_FOGSTART), { STATE_RENDER(WINED3D_RS_FOGSTART), state_fogstartend }, WINED3D_GL_EXT_NONE }, {STATE_RENDER(WINED3D_RS_FOGEND), { STATE_RENDER(WINED3D_RS_FOGSTART), NULL }, WINED3D_GL_EXT_NONE }, {STATE_RENDER(WINED3D_RS_SRGBWRITEENABLE), { STATE_RENDER(WINED3D_RS_SRGBWRITEENABLE), atifs_srgbwriteenable }, WINED3D_GL_EXT_NONE }, + {STATE_COLOR_KEY, { STATE_COLOR_KEY, state_nop }, WINED3D_GL_EXT_NONE }, {STATE_TEXTURESTAGE(0, WINED3D_TSS_COLOR_OP), { STATE_SHADER(WINED3D_SHADER_TYPE_PIXEL), NULL }, WINED3D_GL_EXT_NONE }, {STATE_TEXTURESTAGE(0, WINED3D_TSS_COLOR_ARG1), { STATE_SHADER(WINED3D_SHADER_TYPE_PIXEL), NULL }, WINED3D_GL_EXT_NONE }, {STATE_TEXTURESTAGE(0, WINED3D_TSS_COLOR_ARG2), { STATE_SHADER(WINED3D_SHADER_TYPE_PIXEL), NULL }, WINED3D_GL_EXT_NONE }, diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/wined3d/cs.c wine-staging-1.7.41~ubuntu12.04.1/dlls/wined3d/cs.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/wined3d/cs.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/wined3d/cs.c 2015-04-18 23:36:02.000000000 +0000 @@ -49,6 +49,7 @@ WINED3D_CS_OP_SET_SAMPLER_STATE, WINED3D_CS_OP_SET_TRANSFORM, WINED3D_CS_OP_SET_CLIP_PLANE, + WINED3D_CS_OP_SET_COLOR_KEY, WINED3D_CS_OP_SET_MATERIAL, WINED3D_CS_OP_RESET_STATE, }; @@ -170,6 +171,15 @@ struct wined3d_texture *texture; }; +struct wined3d_cs_set_color_key +{ + enum wined3d_cs_op opcode; + struct wined3d_texture *texture; + WORD flags; + WORD set; + struct wined3d_color_key color_key; +}; + struct wined3d_cs_set_shader_resource_view { enum wined3d_cs_op opcode; @@ -630,6 +640,7 @@ const struct wined3d_d3d_info *d3d_info = &cs->device->adapter->d3d_info; const struct wined3d_cs_set_texture *op = data; struct wined3d_texture *prev; + BOOL old_use_color_key = FALSE, new_use_color_key = FALSE; prev = cs->state.textures[op->stage]; cs->state.textures[op->stage] = op->texture; @@ -655,6 +666,9 @@ device_invalidate_state(cs->device, STATE_TEXTURESTAGE(op->stage, WINED3D_TSS_COLOR_OP)); device_invalidate_state(cs->device, STATE_TEXTURESTAGE(op->stage, WINED3D_TSS_ALPHA_OP)); } + + if (!op->stage && op->texture->async.color_key_flags & WINED3D_CKEY_SRC_BLT) + new_use_color_key = TRUE; } if (prev) @@ -682,9 +696,18 @@ device_invalidate_state(cs->device, STATE_TEXTURESTAGE(op->stage, WINED3D_TSS_COLOR_OP)); device_invalidate_state(cs->device, STATE_TEXTURESTAGE(op->stage, WINED3D_TSS_ALPHA_OP)); } + + if (!op->stage && prev->async.color_key_flags & WINED3D_CKEY_SRC_BLT) + old_use_color_key = TRUE; } device_invalidate_state(cs->device, STATE_SAMPLER(op->stage)); + + if (new_use_color_key != old_use_color_key) + device_invalidate_state(cs->device, STATE_RENDER(WINED3D_RS_COLORKEYENABLE)); + + if (new_use_color_key) + device_invalidate_state(cs->device, STATE_COLOR_KEY); } void wined3d_cs_emit_set_texture(struct wined3d_cs *cs, UINT stage, struct wined3d_texture *texture) @@ -870,6 +893,89 @@ cs->ops->submit(cs); } +static void wined3d_cs_exec_set_color_key(struct wined3d_cs *cs, const void *data) +{ + const struct wined3d_cs_set_color_key *op = data; + struct wined3d_texture *texture = op->texture; + + if (op->set) + { + switch (op->flags & ~WINED3D_CKEY_COLORSPACE) + { + case WINED3D_CKEY_DST_BLT: + texture->async.dst_blt_color_key = op->color_key; + texture->async.color_key_flags |= WINED3D_CKEY_DST_BLT; + break; + + case WINED3D_CKEY_DST_OVERLAY: + texture->async.dst_overlay_color_key = op->color_key; + texture->async.color_key_flags |= WINED3D_CKEY_DST_OVERLAY; + break; + + case WINED3D_CKEY_SRC_BLT: + if (texture == cs->state.textures[0]) + { + device_invalidate_state(cs->device, STATE_COLOR_KEY); + if (!(texture->async.color_key_flags & WINED3D_CKEY_SRC_BLT)) + device_invalidate_state(cs->device, STATE_RENDER(WINED3D_RS_COLORKEYENABLE)); + } + + texture->async.src_blt_color_key = op->color_key; + texture->async.color_key_flags |= WINED3D_CKEY_SRC_BLT; + break; + + case WINED3D_CKEY_SRC_OVERLAY: + texture->async.src_overlay_color_key = op->color_key; + texture->async.color_key_flags |= WINED3D_CKEY_SRC_OVERLAY; + break; + } + } + else + { + switch (op->flags & ~WINED3D_CKEY_COLORSPACE) + { + case WINED3D_CKEY_DST_BLT: + texture->async.color_key_flags &= ~WINED3D_CKEY_DST_BLT; + break; + + case WINED3D_CKEY_DST_OVERLAY: + texture->async.color_key_flags &= ~WINED3D_CKEY_DST_OVERLAY; + break; + + case WINED3D_CKEY_SRC_BLT: + if (texture == cs->state.textures[0] && texture->async.color_key_flags & WINED3D_CKEY_SRC_BLT) + device_invalidate_state(cs->device, STATE_RENDER(WINED3D_RS_COLORKEYENABLE)); + + texture->async.color_key_flags &= ~WINED3D_CKEY_SRC_BLT; + break; + + case WINED3D_CKEY_SRC_OVERLAY: + texture->async.color_key_flags &= ~WINED3D_CKEY_SRC_OVERLAY; + break; + } + } +} + +void wined3d_cs_emit_set_color_key(struct wined3d_cs *cs, struct wined3d_texture *texture, + WORD flags, const struct wined3d_color_key *color_key) +{ + struct wined3d_cs_set_color_key *op; + + op = cs->ops->require_space(cs, sizeof(*op)); + op->opcode = WINED3D_CS_OP_SET_COLOR_KEY; + op->texture = texture; + op->flags = flags; + if (color_key) + { + op->color_key = *color_key; + op->set = 1; + } + else + op->set = 0; + + cs->ops->submit(cs); +} + static void wined3d_cs_exec_set_material(struct wined3d_cs *cs, const void *data) { const struct wined3d_cs_set_material *op = data; @@ -936,6 +1042,7 @@ /* WINED3D_CS_OP_SET_SAMPLER_STATE */ wined3d_cs_exec_set_sampler_state, /* WINED3D_CS_OP_SET_TRANSFORM */ wined3d_cs_exec_set_transform, /* WINED3D_CS_OP_SET_CLIP_PLANE */ wined3d_cs_exec_set_clip_plane, + /* WINED3D_CS_OP_SET_COLOR_KEY */ wined3d_cs_exec_set_color_key, /* WINED3D_CS_OP_SET_MATERIAL */ wined3d_cs_exec_set_material, /* WINED3D_CS_OP_RESET_STATE */ wined3d_cs_exec_reset_state, }; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/wined3d/device.c wine-staging-1.7.41~ubuntu12.04.1/dlls/wined3d/device.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/wined3d/device.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/wined3d/device.c 2015-04-18 23:36:02.000000000 +0000 @@ -3511,7 +3511,7 @@ /* Only a prepare, since we're uploading the entire volume. */ wined3d_texture_prepare_texture(dst_volume->container, context, FALSE); - wined3d_texture_bind(dst_volume->container, context, FALSE); + wined3d_texture_bind_and_dirtify(dst_volume->container, context, FALSE); data.buffer_object = 0; data.addr = src.data; @@ -4331,6 +4331,7 @@ const struct wined3d_swapchain_desc *swapchain_desc, const struct wined3d_display_mode *mode, wined3d_device_reset_cb callback, BOOL reset_state) { + enum wined3d_format_id backbuffer_format = swapchain_desc->backbuffer_format; struct wined3d_resource *resource, *cursor; struct wined3d_swapchain *swapchain; struct wined3d_display_mode m; @@ -4492,10 +4493,16 @@ update_desc = TRUE; } - if (swapchain_desc->backbuffer_format != WINED3DFMT_UNKNOWN - && swapchain_desc->backbuffer_format != swapchain->desc.backbuffer_format) + if (backbuffer_format == WINED3DFMT_UNKNOWN) { - swapchain->desc.backbuffer_format = swapchain_desc->backbuffer_format; + if (!swapchain_desc->windowed) + return WINED3DERR_INVALIDCALL; + backbuffer_format = swapchain->original_mode.format_id; + } + + if (backbuffer_format != swapchain->desc.backbuffer_format) + { + swapchain->desc.backbuffer_format = backbuffer_format; update_desc = TRUE; } diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/wined3d/directx.c wine-staging-1.7.41~ubuntu12.04.1/dlls/wined3d/directx.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/wined3d/directx.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/wined3d/directx.c 2015-04-18 23:36:02.000000000 +0000 @@ -1271,6 +1271,7 @@ {HW_VENDOR_NVIDIA, CARD_NVIDIA_GEFORCE_GTX780, "NVIDIA GeForce GTX 780", DRIVER_NVIDIA_GEFORCE8, 3072}, {HW_VENDOR_NVIDIA, CARD_NVIDIA_GEFORCE_GTX780TI, "NVIDIA GeForce GTX 780 Ti", DRIVER_NVIDIA_GEFORCE8, 3072}, {HW_VENDOR_NVIDIA, CARD_NVIDIA_GEFORCE_GTX970, "NVIDIA GeForce GTX 970", DRIVER_NVIDIA_GEFORCE8, 4096}, + {HW_VENDOR_NVIDIA, CARD_NVIDIA_GEFORCE_GTX970M, "NVIDIA GeForce GTX 970M", DRIVER_NVIDIA_GEFORCE8, 3072}, /* AMD cards */ {HW_VENDOR_AMD, CARD_AMD_RAGE_128PRO, "ATI Rage Fury", DRIVER_AMD_RAGE_128PRO, 16 }, @@ -1698,6 +1699,7 @@ cards_nvidia_binary[] = { /* Direct 3D 11 */ + {"GTX 970M", CARD_NVIDIA_GEFORCE_GTX970M}, /* GeForce 900 - highend mobile*/ {"GTX 970", CARD_NVIDIA_GEFORCE_GTX970}, /* GeForce 900 - highend */ {"GTX 780 Ti", CARD_NVIDIA_GEFORCE_GTX780TI}, /* Geforce 700 - highend */ {"GTX 780", CARD_NVIDIA_GEFORCE_GTX780}, /* Geforce 700 - highend */ @@ -3563,6 +3565,7 @@ adapter->fragment_pipe->get_caps(gl_info, &fragment_caps); adapter->d3d_info.limits.ffp_blend_stages = fragment_caps.MaxTextureBlendStages; adapter->d3d_info.limits.ffp_textures = fragment_caps.MaxSimultaneousTextures; + adapter->d3d_info.shader_color_key = fragment_caps.wined3d_caps & WINED3D_FRAGMENT_CAP_COLOR_KEY; TRACE("Max texture stages: %u.\n", adapter->d3d_info.limits.ffp_blend_stages); if (gl_info->supported[ARB_FRAMEBUFFER_OBJECT]) @@ -4375,7 +4378,8 @@ if (CheckDepthStencilCapability(adapter, adapter_format, check_format)) return TRUE; /* If opengl can't process the format natively, the blitter may be able to convert it */ - if (adapter->blitter->blit_supported(&adapter->gl_info, WINED3D_BLIT_OP_COLOR_BLIT, + if (adapter->blitter->blit_supported(&adapter->gl_info, &adapter->d3d_info, + WINED3D_BLIT_OP_COLOR_BLIT, NULL, WINED3D_POOL_DEFAULT, 0, check_format, NULL, WINED3D_POOL_DEFAULT, 0, adapter_format)) { diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/wined3d/glsl_shader.c wine-staging-1.7.41~ubuntu12.04.1/dlls/wined3d/glsl_shader.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/wined3d/glsl_shader.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/wined3d/glsl_shader.c 2015-04-18 23:36:02.000000000 +0000 @@ -143,6 +143,7 @@ GLint specular_enable_location; GLint ycorrection_location; GLint np2_fixup_location; + GLint color_key_location; const struct ps_np2fixup_info *np2_fixup_info; }; @@ -834,6 +835,18 @@ } /* Context activation is done by the caller (state handler). */ +static void shader_glsl_load_color_key_constant(const struct glsl_ps_program *ps, + const struct wined3d_gl_info *gl_info, const struct wined3d_state *state) +{ + struct wined3d_color float_key; + const struct wined3d_texture *texture = state->textures[0]; + + wined3d_format_convert_color_to_float(texture->resource.format, NULL, + texture->async.src_blt_color_key.color_space_high_value, &float_key); + GL_EXTCALL(glUniform4fv(ps->color_key_location, 1, &float_key.r)); +} + +/* Context activation is done by the caller (state handler). */ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context *context, const struct wined3d_state *state) { @@ -947,6 +960,8 @@ if (update_mask & WINED3D_SHADER_CONST_PS_NP2_FIXUP) shader_glsl_load_np2fixup_constants(&prog->ps, gl_info, state); + if (update_mask & WINED3D_SHADER_CONST_FFP_COLOR_KEY) + shader_glsl_load_color_key_constant(&prog->ps, gl_info, state); if (update_mask & WINED3D_SHADER_CONST_FFP_PS) { @@ -2650,13 +2665,13 @@ dst_write_mask = shader_glsl_append_dst(buffer, ins); dst_size = shader_glsl_get_write_mask_size(dst_write_mask); - /* dp3 works on vec3, dp4 on vec4 */ + /* dp4 works on vec4, dp3 on vec3, etc. */ if (ins->handler_idx == WINED3DSIH_DP4) - { src_write_mask = WINED3DSP_WRITEMASK_ALL; - } else { + else if (ins->handler_idx == WINED3DSIH_DP3) src_write_mask = WINED3DSP_WRITEMASK_0 | WINED3DSP_WRITEMASK_1 | WINED3DSP_WRITEMASK_2; - } + else + src_write_mask = WINED3DSP_WRITEMASK_0 | WINED3DSP_WRITEMASK_1; shader_glsl_add_src_param(ins, &ins->src[0], src_write_mask, &src0_param); shader_glsl_add_src_param(ins, &ins->src[1], src_write_mask, &src1_param); @@ -5499,7 +5514,8 @@ arg1 = settings->op[stage].carg1 & WINED3DTA_SELECTMASK; arg2 = settings->op[stage].carg2 & WINED3DTA_SELECTMASK; - if (arg0 == WINED3DTA_TEXTURE || arg1 == WINED3DTA_TEXTURE || arg2 == WINED3DTA_TEXTURE) + if (arg0 == WINED3DTA_TEXTURE || arg1 == WINED3DTA_TEXTURE || arg2 == WINED3DTA_TEXTURE + || (stage == 0 && settings->color_key_enabled)) tex_map |= 1 << stage; if (arg0 == WINED3DTA_TFACTOR || arg1 == WINED3DTA_TFACTOR || arg2 == WINED3DTA_TFACTOR) tfactor_used = TRUE; @@ -5603,6 +5619,8 @@ } if (tfactor_used) shader_addline(buffer, "uniform vec4 tex_factor;\n"); + if (settings->color_key_enabled) + shader_addline(buffer, "uniform vec4 color_key;\n"); shader_addline(buffer, "uniform vec4 specular_enable;\n"); if (settings->sRGB_write) @@ -5759,6 +5777,9 @@ settings->op[stage].color_fixup); } + if (settings->color_key_enabled) + shader_addline(buffer, "if (all(equal(tex0, color_key))) discard;\n"); + /* Generate the main shader */ for (stage = 0; stage < MAX_TEXTURES; ++stage) { @@ -5949,6 +5970,7 @@ ps->specular_enable_location = GL_EXTCALL(glGetUniformLocation(program_id, "specular_enable")); ps->np2_fixup_location = GL_EXTCALL(glGetUniformLocation(program_id, "ps_samplerNP2Fixup")); ps->ycorrection_location = GL_EXTCALL(glGetUniformLocation(program_id, "ycorrection")); + ps->color_key_location = GL_EXTCALL(glGetUniformLocation(program_id, "color_key")); } static void shader_glsl_init_uniform_block_bindings(const struct wined3d_gl_info *gl_info, GLuint program_id, @@ -6245,6 +6267,8 @@ if (entry->ps.np2_fixup_location != -1) entry->constant_update_mask |= WINED3D_SHADER_CONST_PS_NP2_FIXUP; + if (entry->ps.color_key_location != -1) + entry->constant_update_mask |= WINED3D_SHADER_CONST_FFP_COLOR_KEY; } } @@ -7184,6 +7208,11 @@ context->constant_update_mask |= WINED3D_SHADER_CONST_FFP_MODELVIEW; + /* Light settings are affected by the ModelView transform in OpenGL, the View transform in Direct3D. */ + gl_info->gl_ops.gl.p_glMatrixMode(GL_MODELVIEW); + gl_info->gl_ops.gl.p_glPushMatrix(); + gl_info->gl_ops.gl.p_glLoadMatrixf(&state->transforms[WINED3D_TS_VIEW]._11); + for (k = 0; k < gl_info->limits.lights; ++k) { if (!(light = state->lights[k])) @@ -7194,6 +7223,8 @@ checkGLcall("glLightfv dirn"); } + gl_info->gl_ops.gl.p_glPopMatrix(); + for (k = 0; k < gl_info->limits.clipplanes; ++k) { if (!isStateDirty(context, STATE_CLIPPLANE(k))) @@ -7405,7 +7436,8 @@ static void glsl_fragment_pipe_get_caps(const struct wined3d_gl_info *gl_info, struct fragment_caps *caps) { caps->wined3d_caps = WINED3D_FRAGMENT_CAP_PROJ_CONTROL - | WINED3D_FRAGMENT_CAP_SRGB_WRITE; + | WINED3D_FRAGMENT_CAP_SRGB_WRITE + | WINED3D_FRAGMENT_CAP_COLOR_KEY; caps->PrimitiveMiscCaps = WINED3DPMISCCAPS_TSSARGTEMP | WINED3DPMISCCAPS_PERSTAGECONSTANT; caps->TextureOpCaps = WINED3DTEXOPCAPS_DISABLE @@ -7547,6 +7579,43 @@ context->constant_update_mask |= WINED3D_SHADER_CONST_FFP_PS; } +static void glsl_fragment_pipe_alpha_test(struct wined3d_context *context, + const struct wined3d_state *state, DWORD state_id) +{ + const struct wined3d_gl_info *gl_info = context->gl_info; + int glParm; + float ref; + + TRACE("context %p, state %p, state_id %#x.\n", context, state, state_id); + + if (state->render_states[WINED3D_RS_ALPHATESTENABLE]) + { + gl_info->gl_ops.gl.p_glEnable(GL_ALPHA_TEST); + checkGLcall("glEnable GL_ALPHA_TEST"); + } + else + { + gl_info->gl_ops.gl.p_glDisable(GL_ALPHA_TEST); + checkGLcall("glDisable GL_ALPHA_TEST"); + return; + } + + ref = ((float)state->render_states[WINED3D_RS_ALPHAREF]) / 255.0f; + glParm = wined3d_gl_compare_func(state->render_states[WINED3D_RS_ALPHAFUNC]); + + if (glParm) + { + gl_info->gl_ops.gl.p_glAlphaFunc(glParm, ref); + checkGLcall("glAlphaFunc"); + } +} + +static void glsl_fragment_pipe_color_key(struct wined3d_context *context, + const struct wined3d_state *state, DWORD state_id) +{ + context->constant_update_mask |= WINED3D_SHADER_CONST_FFP_COLOR_KEY; +} + static const struct StateEntryTemplate glsl_fragment_pipe_state_template[] = { {STATE_VDECL, {STATE_VDECL, glsl_fragment_pipe_vdecl }, WINED3D_GL_EXT_NONE }, @@ -7624,6 +7693,11 @@ {STATE_TEXTURESTAGE(7, WINED3D_TSS_ALPHA_ARG0), {STATE_SHADER(WINED3D_SHADER_TYPE_PIXEL), NULL }, WINED3D_GL_EXT_NONE }, {STATE_TEXTURESTAGE(7, WINED3D_TSS_RESULT_ARG), {STATE_SHADER(WINED3D_SHADER_TYPE_PIXEL), NULL }, WINED3D_GL_EXT_NONE }, {STATE_SHADER(WINED3D_SHADER_TYPE_PIXEL), {STATE_SHADER(WINED3D_SHADER_TYPE_PIXEL), glsl_fragment_pipe_shader }, WINED3D_GL_EXT_NONE }, + {STATE_RENDER(WINED3D_RS_ALPHAFUNC), {STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), NULL }, WINED3D_GL_EXT_NONE }, + {STATE_RENDER(WINED3D_RS_ALPHAREF), {STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), NULL }, WINED3D_GL_EXT_NONE }, + {STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), {STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), glsl_fragment_pipe_alpha_test }, WINED3D_GL_EXT_NONE }, + {STATE_RENDER(WINED3D_RS_COLORKEYENABLE), {STATE_SHADER(WINED3D_SHADER_TYPE_PIXEL), NULL }, WINED3D_GL_EXT_NONE }, + {STATE_COLOR_KEY, { STATE_COLOR_KEY, glsl_fragment_pipe_color_key }, WINED3D_GL_EXT_NONE }, {STATE_RENDER(WINED3D_RS_FOGENABLE), {STATE_RENDER(WINED3D_RS_FOGENABLE), glsl_fragment_pipe_fog }, WINED3D_GL_EXT_NONE }, {STATE_RENDER(WINED3D_RS_FOGTABLEMODE), {STATE_RENDER(WINED3D_RS_FOGENABLE), NULL }, WINED3D_GL_EXT_NONE }, {STATE_RENDER(WINED3D_RS_FOGVERTEXMODE), {STATE_RENDER(WINED3D_RS_FOGENABLE), NULL }, WINED3D_GL_EXT_NONE }, diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/wined3d/nvidia_texture_shader.c wine-staging-1.7.41~ubuntu12.04.1/dlls/wined3d/nvidia_texture_shader.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/wined3d/nvidia_texture_shader.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/wined3d/nvidia_texture_shader.c 2015-04-18 23:36:02.000000000 +0000 @@ -880,6 +880,11 @@ { STATE_SHADER(WINED3D_SHADER_TYPE_PIXEL), { STATE_SHADER(WINED3D_SHADER_TYPE_PIXEL), apply_pixelshader }, WINED3D_GL_EXT_NONE }, { STATE_RENDER(WINED3D_RS_SRGBWRITEENABLE), { STATE_SHADER(WINED3D_SHADER_TYPE_PIXEL), NULL }, WINED3D_GL_EXT_NONE }, { STATE_RENDER(WINED3D_RS_TEXTUREFACTOR), { STATE_RENDER(WINED3D_RS_TEXTUREFACTOR), nvrc_texfactor }, WINED3D_GL_EXT_NONE }, + { STATE_RENDER(WINED3D_RS_ALPHAFUNC), { STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), NULL }, WINED3D_GL_EXT_NONE }, + { STATE_RENDER(WINED3D_RS_ALPHAREF), { STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), NULL }, WINED3D_GL_EXT_NONE }, + { STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), { STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), state_alpha_test }, WINED3D_GL_EXT_NONE }, + { STATE_RENDER(WINED3D_RS_COLORKEYENABLE), { STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), NULL }, WINED3D_GL_EXT_NONE }, + { STATE_COLOR_KEY, { STATE_COLOR_KEY, state_nop }, WINED3D_GL_EXT_NONE }, { STATE_RENDER(WINED3D_RS_FOGCOLOR), { STATE_RENDER(WINED3D_RS_FOGCOLOR), state_fogcolor }, WINED3D_GL_EXT_NONE }, { STATE_RENDER(WINED3D_RS_FOGDENSITY), { STATE_RENDER(WINED3D_RS_FOGDENSITY), state_fogdensity }, WINED3D_GL_EXT_NONE }, { STATE_RENDER(WINED3D_RS_FOGENABLE), { STATE_RENDER(WINED3D_RS_FOGENABLE), state_fog_fragpart }, WINED3D_GL_EXT_NONE }, diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/wined3d/shader.c wine-staging-1.7.41~ubuntu12.04.1/dlls/wined3d/shader.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/wined3d/shader.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/wined3d/shader.c 2015-04-18 23:36:02.000000000 +0000 @@ -2312,7 +2312,7 @@ shader->u.vs.attributes[input->register_idx].usage = shader_usage_from_semantic_name(input->semantic_name); - shader->u.vs.attributes[i].usage_idx = input->semantic_idx; + shader->u.vs.attributes[input->register_idx].usage_idx = input->semantic_idx; } shader->load_local_constsF = (reg_maps->usesrelconstF && !list_empty(&shader->constantsF)) || diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/wined3d/state.c wine-staging-1.7.41~ubuntu12.04.1/dlls/wined3d/state.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/wined3d/state.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/wined3d/state.c 2015-04-18 23:36:02.000000000 +0000 @@ -45,7 +45,7 @@ ERR("Undefined state.\n"); } -static void state_nop(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) +void state_nop(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { TRACE("%s: nop in current pipe config.\n", debug_d3dstate(state_id)); } @@ -505,7 +505,7 @@ checkGLcall("glBlendColor"); } -static void state_alpha(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) +void state_alpha_test(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { const struct wined3d_gl_info *gl_info = context->gl_info; int glParm = 0; @@ -521,7 +521,7 @@ * WINED3D_RS_COLORKEYENABLE state(which is d3d <= 3 only). The texture * function will call alpha in case it finds some texture + colorkeyenable * combination which needs extra care. */ - if (state->textures[0] && (state->textures[0]->color_key_flags & WINED3D_CKEY_SRC_BLT)) + if (state->textures[0] && (state->textures[0]->async.color_key_flags & WINED3D_CKEY_SRC_BLT)) enable_ckey = TRUE; if (enable_ckey || context->last_was_ckey) @@ -3210,7 +3210,7 @@ if (texture_dimensions == GL_TEXTURE_2D || texture_dimensions == GL_TEXTURE_RECTANGLE_ARB) { - if (texture->color_key_flags & WINED3D_CKEY_SRC_BLT && !texture->resource.format->alpha_size) + if (texture->async.color_key_flags & WINED3D_CKEY_SRC_BLT && !texture->resource.format->alpha_size) { /* Color keying needs to pass alpha values from the texture through to have the alpha test work * properly. On the other hand applications can still use texture combiners apparently. This code @@ -3717,7 +3717,7 @@ if (sampler) { - GL_EXTCALL(glBindSampler(sampler_idx, sampler->name)); + GL_EXTCALL(glBindSampler(mapped_stage, sampler->name)); checkGLcall("glBindSampler"); } } @@ -3741,32 +3741,12 @@ gl_tex->base_level = base_level; } - if (!use_ps(state) && sampler_idx < context->lowest_disabled_stage) - { - if (state->render_states[WINED3D_RS_COLORKEYENABLE] && !sampler_idx) - { - /* If color keying is enabled update the alpha test, it - * depends on the existence of a color key in stage 0. */ - state_alpha(context, state, WINED3D_RS_COLORKEYENABLE); - } - } - /* Trigger shader constant reloading (for NP2 texcoord fixup) */ if (!(texture->flags & WINED3D_TEXTURE_POW2_MAT_IDENT)) context->constant_update_mask |= WINED3D_SHADER_CONST_PS_NP2_FIXUP; } else { - if (sampler_idx < context->lowest_disabled_stage) - { - /* TODO: What should I do with pixel shaders here ??? */ - if (state->render_states[WINED3D_RS_COLORKEYENABLE] && !sampler_idx) - { - /* If color keying is enabled update the alpha test, it - * depends on the existence of a color key in stage 0. */ - state_alpha(context, state, WINED3D_RS_COLORKEYENABLE); - } - } /* Otherwise tex_colorop disables the stage */ context_bind_texture(context, GL_NONE, 0); } } @@ -5082,10 +5062,6 @@ { STATE_RENDER(WINED3D_RS_ROP2), { STATE_RENDER(WINED3D_RS_ROP2), state_rop2 }, WINED3D_GL_EXT_NONE }, { STATE_RENDER(WINED3D_RS_PLANEMASK), { STATE_RENDER(WINED3D_RS_PLANEMASK), state_planemask }, WINED3D_GL_EXT_NONE }, { STATE_RENDER(WINED3D_RS_ZWRITEENABLE), { STATE_RENDER(WINED3D_RS_ZWRITEENABLE), state_zwritenable }, WINED3D_GL_EXT_NONE }, - { STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), { STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), state_alpha }, WINED3D_GL_EXT_NONE }, - { STATE_RENDER(WINED3D_RS_ALPHAREF), { STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), NULL }, WINED3D_GL_EXT_NONE }, - { STATE_RENDER(WINED3D_RS_ALPHAFUNC), { STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), NULL }, WINED3D_GL_EXT_NONE }, - { STATE_RENDER(WINED3D_RS_COLORKEYENABLE), { STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), NULL }, WINED3D_GL_EXT_NONE }, { STATE_RENDER(WINED3D_RS_LASTPIXEL), { STATE_RENDER(WINED3D_RS_LASTPIXEL), state_lastpixel }, WINED3D_GL_EXT_NONE }, { STATE_RENDER(WINED3D_RS_CULLMODE), { STATE_RENDER(WINED3D_RS_CULLMODE), state_cullmode }, WINED3D_GL_EXT_NONE }, { STATE_RENDER(WINED3D_RS_ZFUNC), { STATE_RENDER(WINED3D_RS_ZFUNC), state_zfunc }, WINED3D_GL_EXT_NONE }, @@ -5674,6 +5650,11 @@ { STATE_TEXTURESTAGE(7, WINED3D_TSS_RESULT_ARG), { STATE_TEXTURESTAGE(7, WINED3D_TSS_COLOR_OP), NULL }, WINED3D_GL_EXT_NONE }, { STATE_TEXTURESTAGE(7, WINED3D_TSS_CONSTANT), { 0 /* As long as we don't support D3DTA_CONSTANT */, NULL }, WINED3D_GL_EXT_NONE }, { STATE_SHADER(WINED3D_SHADER_TYPE_PIXEL), { STATE_SHADER(WINED3D_SHADER_TYPE_PIXEL), apply_pixelshader }, WINED3D_GL_EXT_NONE }, + { STATE_RENDER(WINED3D_RS_ALPHAFUNC), { STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), NULL }, WINED3D_GL_EXT_NONE }, + { STATE_RENDER(WINED3D_RS_ALPHAREF), { STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), NULL }, WINED3D_GL_EXT_NONE }, + { STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), { STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), state_alpha_test }, WINED3D_GL_EXT_NONE }, + { STATE_RENDER(WINED3D_RS_COLORKEYENABLE), { STATE_RENDER(WINED3D_RS_ALPHATESTENABLE), NULL }, WINED3D_GL_EXT_NONE }, + { STATE_COLOR_KEY, { STATE_COLOR_KEY, state_nop }, WINED3D_GL_EXT_NONE }, { STATE_RENDER(WINED3D_RS_SRGBWRITEENABLE), { STATE_SHADER(WINED3D_SHADER_TYPE_PIXEL), NULL }, WINED3D_GL_EXT_NONE }, { STATE_RENDER(WINED3D_RS_TEXTUREFACTOR), { STATE_RENDER(WINED3D_RS_TEXTUREFACTOR), state_texfactor }, WINED3D_GL_EXT_NONE }, { STATE_RENDER(WINED3D_RS_FOGCOLOR), { STATE_RENDER(WINED3D_RS_FOGCOLOR), state_fogcolor }, WINED3D_GL_EXT_NONE }, @@ -5951,6 +5932,7 @@ STATE_BASEVERTEXINDEX, STATE_FRAMEBUFFER, STATE_POINT_SIZE_ENABLE, + STATE_COLOR_KEY, }; unsigned int i, current; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/wined3d/surface.c wine-staging-1.7.41~ubuntu12.04.1/dlls/wined3d/surface.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/wined3d/surface.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/wined3d/surface.c 2015-04-18 23:36:02.000000000 +0000 @@ -1013,62 +1013,6 @@ return TRUE; } -static BOOL surface_convert_color_to_float(const struct wined3d_surface *surface, - DWORD color, struct wined3d_color *float_color) -{ - const struct wined3d_format *format = surface->resource.format; - const struct wined3d_palette *palette; - - switch (format->id) - { - case WINED3DFMT_P8_UINT: - palette = surface->container->swapchain ? surface->container->swapchain->palette : NULL; - - if (palette) - { - float_color->r = palette->colors[color].rgbRed / 255.0f; - float_color->g = palette->colors[color].rgbGreen / 255.0f; - float_color->b = palette->colors[color].rgbBlue / 255.0f; - } - else - { - float_color->r = 0.0f; - float_color->g = 0.0f; - float_color->b = 0.0f; - } - float_color->a = color / 255.0f; - break; - - case WINED3DFMT_B5G6R5_UNORM: - float_color->r = ((color >> 11) & 0x1f) / 31.0f; - float_color->g = ((color >> 5) & 0x3f) / 63.0f; - float_color->b = (color & 0x1f) / 31.0f; - float_color->a = 1.0f; - break; - - case WINED3DFMT_B8G8R8_UNORM: - case WINED3DFMT_B8G8R8X8_UNORM: - float_color->r = D3DCOLOR_R(color); - float_color->g = D3DCOLOR_G(color); - float_color->b = D3DCOLOR_B(color); - float_color->a = 1.0f; - break; - - case WINED3DFMT_B8G8R8A8_UNORM: - float_color->r = D3DCOLOR_R(color); - float_color->g = D3DCOLOR_G(color); - float_color->b = D3DCOLOR_B(color); - float_color->a = D3DCOLOR_A(color); - break; - - default: - ERR("Unhandled conversion from %s to floating point.\n", debug_d3dformat(format->id)); - return FALSE; - } - - return TRUE; -} - static BOOL surface_convert_depth_to_float(const struct wined3d_surface *surface, DWORD depth, float *float_depth) { const struct wined3d_format *format = surface->resource.format; @@ -1106,7 +1050,7 @@ struct wined3d_device *device = resource->device; const struct blit_shader *blitter; - blitter = wined3d_select_blitter(&device->adapter->gl_info, WINED3D_BLIT_OP_DEPTH_FILL, + blitter = wined3d_select_blitter(&device->adapter->gl_info, &device->adapter->d3d_info, WINED3D_BLIT_OP_DEPTH_FILL, NULL, 0, 0, NULL, rect, resource->usage, resource->pool, resource->format); if (!blitter) { @@ -1694,7 +1638,7 @@ wined3d_texture_prepare_texture(dst_surface->container, context, FALSE); else surface_load_location(dst_surface, WINED3D_LOCATION_TEXTURE_RGB); - wined3d_texture_bind(dst_surface->container, context, FALSE); + wined3d_texture_bind_and_dirtify(dst_surface->container, context, FALSE); surface_get_memory(src_surface, &data, src_surface->locations); src_pitch = wined3d_surface_get_pitch(src_surface); @@ -1702,8 +1646,6 @@ wined3d_surface_upload_data(dst_surface, gl_info, src_format, src_rect, src_pitch, dst_point, FALSE, wined3d_const_bo_address(&data)); - context_invalidate_active_texture(context); - context_release(context); surface_validate_location(dst_surface, WINED3D_LOCATION_TEXTURE_RGB); @@ -3454,7 +3396,7 @@ if (!wined3d_resource_is_offscreen(&dst_surface->container->resource)) surface_translate_drawable_coords(dst_surface, context->win_handle, &dst_rect); - device->blitter->set_shader(device->blit_priv, context, src_surface); + device->blitter->set_shader(device->blit_priv, context, src_surface, NULL); if (alpha_test) { @@ -3466,7 +3408,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 / 255.0f); + (float)src_surface->container->async.src_blt_color_key.color_space_low_value / 255.0f); else gl_info->gl_ops.gl.p_glAlphaFunc(GL_NOTEQUAL, 0.0f); checkGLcall("glAlphaFunc"); @@ -3501,7 +3443,7 @@ struct wined3d_device *device = s->resource.device; const struct blit_shader *blitter; - blitter = wined3d_select_blitter(&device->adapter->gl_info, WINED3D_BLIT_OP_COLOR_FILL, + blitter = wined3d_select_blitter(&device->adapter->gl_info, &device->adapter->d3d_info, WINED3D_BLIT_OP_COLOR_FILL, NULL, 0, 0, NULL, rect, s->resource.usage, s->resource.pool, s->resource.format); if (!blitter) { @@ -3518,7 +3460,6 @@ { struct wined3d_device *device = dst_surface->resource.device; const struct wined3d_surface *rt = wined3d_rendertarget_view_get_surface(device->fb.render_targets[0]); - const struct wined3d_gl_info *gl_info = &device->adapter->gl_info; struct wined3d_swapchain *src_swapchain, *dst_swapchain; TRACE("dst_surface %p, dst_rect %s, src_surface %p, src_rect %s, flags %#x, blt_fx %p, filter %s.\n", @@ -3639,57 +3580,6 @@ return WINED3D_OK; } - else if (src_surface) - { - /* Blit from offscreen surface to render target */ - struct wined3d_color_key old_blt_key = src_surface->container->src_blt_color_key; - DWORD old_color_key_flags = src_surface->container->color_key_flags; - - TRACE("Blt from surface %p to rendertarget %p\n", src_surface, dst_surface); - - if (!device->blitter->blit_supported(gl_info, WINED3D_BLIT_OP_COLOR_BLIT, - src_rect, src_surface->resource.usage, src_surface->resource.pool, src_surface->resource.format, - dst_rect, dst_surface->resource.usage, dst_surface->resource.pool, dst_surface->resource.format)) - { - FIXME("Unsupported blit operation falling back to software\n"); - return WINED3DERR_INVALIDCALL; - } - - /* Color keying: Check if we have to do a color keyed blt, - * and if not check if a color key is activated. - * - * Just modify the color keying parameters in the surface and restore them afterwards - * The surface keeps track of the color key last used to load the opengl surface. - * PreLoad will catch the change to the flags and color key and reload if necessary. - */ - if (flags & WINEDDBLT_KEYSRC) - { - /* Use color key from surface */ - } - else if (flags & WINEDDBLT_KEYSRCOVERRIDE) - { - /* Use color key from DDBltFx */ - wined3d_texture_set_color_key(src_surface->container, WINED3D_CKEY_SRC_BLT, &DDBltFx->ddckSrcColorkey); - } - else - { - /* Do not use color key */ - wined3d_texture_set_color_key(src_surface->container, WINED3D_CKEY_SRC_BLT, NULL); - } - - surface_blt_to_drawable(device, filter, - flags & (WINEDDBLT_KEYSRC | WINEDDBLT_KEYSRCOVERRIDE | WINEDDBLT_ALPHATEST), - src_surface, src_rect, dst_surface, dst_rect); - - /* Restore the color key parameters */ - wined3d_texture_set_color_key(src_surface->container, WINED3D_CKEY_SRC_BLT, - (old_color_key_flags & WINED3D_CKEY_SRC_BLT) ? &old_blt_key : NULL); - - surface_validate_location(dst_surface, dst_surface->container->resource.draw_binding); - surface_invalidate_location(dst_surface, ~dst_surface->container->resource.draw_binding); - - return WINED3D_OK; - } /* Default: Fall back to the generic blt. Not an error, a TRACE is enough */ TRACE("Didn't find any usable render target setup for hw blit, falling back to software\n"); @@ -4224,7 +4114,7 @@ if (texture->swapchain && texture->swapchain->palette) palette = texture->swapchain->palette; conversion->convert(data.addr, src_pitch, mem, dst_pitch, - width, height, palette, &texture->gl_color_key); + width, height, palette, &texture->async.gl_color_key); src_pitch = dst_pitch; data.addr = mem; } @@ -4346,7 +4236,8 @@ static void ffp_blit_free(struct wined3d_device *device) { } /* Context activation is done by the caller. */ -static HRESULT ffp_blit_set(void *blit_priv, struct wined3d_context *context, const struct wined3d_surface *surface) +static HRESULT ffp_blit_set(void *blit_priv, struct wined3d_context *context, const struct wined3d_surface *surface, + const struct wined3d_color_key *color_key) { const struct wined3d_gl_info *gl_info = context->gl_info; @@ -4373,12 +4264,25 @@ } } -static BOOL ffp_blit_supported(const struct wined3d_gl_info *gl_info, enum wined3d_blit_op blit_op, +static BOOL ffp_blit_supported(const struct wined3d_gl_info *gl_info, + const struct wined3d_d3d_info *d3d_info, enum wined3d_blit_op blit_op, const RECT *src_rect, DWORD src_usage, enum wined3d_pool src_pool, const struct wined3d_format *src_format, const RECT *dst_rect, DWORD dst_usage, enum wined3d_pool dst_pool, const struct wined3d_format *dst_format) { + if (src_pool == WINED3D_POOL_SYSTEM_MEM || dst_pool == WINED3D_POOL_SYSTEM_MEM) + { + TRACE("Source or destination is in system memory.\n"); + return FALSE; + } + switch (blit_op) { + case WINED3D_BLIT_OP_COLOR_BLIT_CKEY: + if (d3d_info->shader_color_key) + { + TRACE("Color keying requires converted textures.\n"); + return FALSE; + } case WINED3D_BLIT_OP_COLOR_BLIT: if (src_pool == WINED3D_POOL_SYSTEM_MEM || dst_pool == WINED3D_POOL_SYSTEM_MEM) return FALSE; @@ -4397,12 +4301,14 @@ return FALSE; } + if (!(dst_usage & WINED3DUSAGE_RENDERTARGET)) + { + TRACE("Can only blit to render targets.\n"); + return FALSE; + } return TRUE; case WINED3D_BLIT_OP_COLOR_FILL: - if (dst_pool == WINED3D_POOL_SYSTEM_MEM) - return FALSE; - if (wined3d_settings.offscreen_rendering_mode == ORM_FBO) { if (!((dst_format->flags & WINED3DFMT_FLAG_FBO_ATTACHABLE) || (dst_usage & WINED3DUSAGE_RENDERTARGET))) @@ -4469,6 +4375,30 @@ return WINED3D_OK; } +static void ffp_blit_blit_surface(struct wined3d_device *device, DWORD filter, + struct wined3d_surface *src_surface, const RECT *src_rect, + struct wined3d_surface *dst_surface, const RECT *dst_rect, + const struct wined3d_color_key *color_key) +{ + /* Blit from offscreen surface to render target */ + struct wined3d_color_key old_blt_key = src_surface->container->async.src_blt_color_key; + DWORD old_color_key_flags = src_surface->container->async.color_key_flags; + + TRACE("Blt from surface %p to rendertarget %p\n", src_surface, dst_surface); + + wined3d_texture_set_color_key(src_surface->container, WINED3D_CKEY_SRC_BLT, color_key); + + surface_blt_to_drawable(device, filter, + !!color_key, src_surface, src_rect, dst_surface, dst_rect); + + /* Restore the color key parameters */ + wined3d_texture_set_color_key(src_surface->container, WINED3D_CKEY_SRC_BLT, + (old_color_key_flags & WINED3D_CKEY_SRC_BLT) ? &old_blt_key : NULL); + + surface_validate_location(dst_surface, dst_surface->container->resource.draw_binding); + surface_invalidate_location(dst_surface, ~dst_surface->container->resource.draw_binding); +} + const struct blit_shader ffp_blit = { ffp_blit_alloc, ffp_blit_free, @@ -4477,6 +4407,7 @@ ffp_blit_supported, ffp_blit_color_fill, ffp_blit_depth_fill, + ffp_blit_blit_surface, }; static HRESULT cpu_blit_alloc(struct wined3d_device *device) @@ -4490,7 +4421,8 @@ } /* Context activation is done by the caller. */ -static HRESULT cpu_blit_set(void *blit_priv, struct wined3d_context *context, const struct wined3d_surface *surface) +static HRESULT cpu_blit_set(void *blit_priv, struct wined3d_context *context, const struct wined3d_surface *surface, + const struct wined3d_color_key *color_key) { return WINED3D_OK; } @@ -4500,7 +4432,8 @@ { } -static BOOL cpu_blit_supported(const struct wined3d_gl_info *gl_info, enum wined3d_blit_op blit_op, +static BOOL cpu_blit_supported(const struct wined3d_gl_info *gl_info, + const struct wined3d_d3d_info *d3d_info, enum wined3d_blit_op blit_op, const RECT *src_rect, DWORD src_usage, enum wined3d_pool src_pool, const struct wined3d_format *src_format, const RECT *dst_rect, DWORD dst_usage, enum wined3d_pool dst_pool, const struct wined3d_format *dst_format) { @@ -4886,8 +4819,8 @@ /* The color keying flags are checked for correctness in ddraw */ if (flags & WINEDDBLT_KEYSRC) { - keylow = src_surface->container->src_blt_color_key.color_space_low_value; - keyhigh = src_surface->container->src_blt_color_key.color_space_high_value; + keylow = src_surface->container->async.src_blt_color_key.color_space_low_value; + keyhigh = src_surface->container->async.src_blt_color_key.color_space_high_value; } else if (flags & WINEDDBLT_KEYSRCOVERRIDE) { @@ -4898,8 +4831,8 @@ if (flags & WINEDDBLT_KEYDEST) { /* Destination color keys are taken from the source surface! */ - destkeylow = src_surface->container->dst_blt_color_key.color_space_low_value; - destkeyhigh = src_surface->container->dst_blt_color_key.color_space_high_value; + destkeylow = src_surface->container->async.dst_blt_color_key.color_space_low_value; + destkeyhigh = src_surface->container->async.dst_blt_color_key.color_space_high_value; } else if (flags & WINEDDBLT_KEYDESTOVERRIDE) { @@ -5112,6 +5045,15 @@ return WINED3DERR_INVALIDCALL; } +static void cpu_blit_blit_surface(struct wined3d_device *device, DWORD filter, + struct wined3d_surface *src_surface, const RECT *src_rect, + struct wined3d_surface *dst_surface, const RECT *dst_rect, + const struct wined3d_color_key *color_key) +{ + /* FIXME: Remove error returns from surface_blt_cpu. */ + ERR("Blit method not implemented by cpu_blit.\n"); +} + const struct blit_shader cpu_blit = { cpu_blit_alloc, cpu_blit_free, @@ -5120,6 +5062,7 @@ cpu_blit_supported, cpu_blit_color_fill, cpu_blit_depth_fill, + cpu_blit_blit_surface, }; HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst_rect_in, @@ -5134,6 +5077,8 @@ static const DWORD simple_blit = WINEDDBLT_ASYNC | WINEDDBLT_COLORFILL + | WINEDDBLT_KEYSRC + | WINEDDBLT_KEYSRCOVERRIDE | WINEDDBLT_WAIT | WINEDDBLT_DEPTHFILL | WINEDDBLT_DONOTWAIT; @@ -5317,6 +5262,8 @@ } else { + const struct blit_shader *blitter; + /* In principle this would apply to depth blits as well, but we don't * implement those in the CPU blitter at the moment. */ if ((dst_surface->locations & dst_surface->resource.map_binding) @@ -5333,10 +5280,12 @@ if (flags & WINEDDBLT_COLORFILL) { struct wined3d_color color; + const struct wined3d_palette *palette = dst_swapchain ? dst_swapchain->palette : NULL; TRACE("Color fill.\n"); - if (!surface_convert_color_to_float(dst_surface, fx->u5.dwFillColor, &color)) + if (!wined3d_format_convert_color_to_float(dst_surface->resource.format, + palette, fx->u5.dwFillColor, &color)) goto fallback; if (SUCCEEDED(surface_color_fill(dst_surface, &dst_rect, &color))) @@ -5344,12 +5293,24 @@ } else { - TRACE("Color blit.\n"); + enum wined3d_blit_op blit_op = WINED3D_BLIT_OP_COLOR_BLIT; + const struct wined3d_color_key *color_key = NULL; - /* Upload */ - if ((src_surface->locations & WINED3D_LOCATION_SYSMEM) + TRACE("Color blit.\n"); + if (flags & WINEDDBLT_KEYSRCOVERRIDE) + { + color_key = &fx->ddckSrcColorkey; + blit_op = WINED3D_BLIT_OP_COLOR_BLIT_CKEY; + } + else if (flags & WINEDDBLT_KEYSRC) + { + color_key = &src_surface->container->async.src_blt_color_key; + blit_op = WINED3D_BLIT_OP_COLOR_BLIT_CKEY; + } + else if ((src_surface->locations & WINED3D_LOCATION_SYSMEM) && !(dst_surface->locations & WINED3D_LOCATION_SYSMEM)) { + /* Upload */ if (scale) TRACE("Not doing upload because of scaling.\n"); else if (convert) @@ -5366,17 +5327,16 @@ } } } - - /* Use present for back -> front blits. The idea behind this is - * that present is potentially faster than a blit, in particular - * when FBO blits aren't available. Some ddraw applications like - * Half-Life and Prince of Persia 3D use Blt() from the backbuffer - * to the frontbuffer instead of doing a Flip(). D3D8 and D3D9 - * applications can't blit directly to the frontbuffer. */ - if (dst_swapchain && dst_swapchain->back_buffers + else if (dst_swapchain && dst_swapchain->back_buffers && dst_surface->container == dst_swapchain->front_buffer && src_surface->container == dst_swapchain->back_buffers[0]) { + /* Use present for back -> front blits. The idea behind this is + * that present is potentially faster than a blit, in particular + * when FBO blits aren't available. Some ddraw applications like + * Half-Life and Prince of Persia 3D use Blt() from the backbuffer + * to the frontbuffer instead of doing a Flip(). D3D8 and D3D9 + * applications can't blit directly to the frontbuffer. */ enum wined3d_swap_effect swap_effect = dst_swapchain->desc.swap_effect; TRACE("Using present for backbuffer -> frontbuffer blit.\n"); @@ -5390,7 +5350,7 @@ return WINED3D_OK; } - if (fbo_blit_supported(&device->adapter->gl_info, WINED3D_BLIT_OP_COLOR_BLIT, + if (fbo_blit_supported(&device->adapter->gl_info, blit_op, &src_rect, src_surface->resource.usage, src_surface->resource.pool, src_surface->resource.format, &dst_rect, dst_surface->resource.usage, dst_surface->resource.pool, dst_surface->resource.format)) { @@ -5405,14 +5365,13 @@ return WINED3D_OK; } - if (arbfp_blit.blit_supported(&device->adapter->gl_info, WINED3D_BLIT_OP_COLOR_BLIT, + blitter = wined3d_select_blitter(&device->adapter->gl_info, &device->adapter->d3d_info, blit_op, &src_rect, src_surface->resource.usage, src_surface->resource.pool, src_surface->resource.format, - &dst_rect, dst_surface->resource.usage, dst_surface->resource.pool, dst_surface->resource.format)) + &dst_rect, dst_surface->resource.usage, dst_surface->resource.pool, dst_surface->resource.format); + if (blitter) { - TRACE("Using arbfp blit.\n"); - - if (SUCCEEDED(arbfp_blit_surface(device, filter, src_surface, &src_rect, dst_surface, &dst_rect))) - return WINED3D_OK; + blitter->blit_surface(device, filter, src_surface, &src_rect, dst_surface, &dst_rect, color_key); + return WINED3D_OK; } } } diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/wined3d/swapchain.c wine-staging-1.7.41~ubuntu12.04.1/dlls/wined3d/swapchain.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/wined3d/swapchain.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/wined3d/swapchain.c 2015-04-18 23:36:02.000000000 +0000 @@ -367,7 +367,7 @@ /* Set up the texture. The surface is not in a wined3d_texture * container, so there are no D3D texture settings to dirtify. */ - device->blitter->set_shader(device->blit_priv, context2, backbuffer); + device->blitter->set_shader(device->blit_priv, context2, backbuffer, NULL); gl_info->gl_ops.gl.p_glTexParameteri(backbuffer->texture_target, GL_TEXTURE_MIN_FILTER, gl_filter); gl_info->gl_ops.gl.p_glTexParameteri(backbuffer->texture_target, GL_TEXTURE_MAG_FILTER, gl_filter); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/wined3d/texture.c wine-staging-1.7.41~ubuntu12.04.1/dlls/wined3d/texture.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/wined3d/texture.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/wined3d/texture.c 2015-04-18 23:36:02.000000000 +0000 @@ -437,12 +437,19 @@ return &texture->resource; } +static BOOL color_key_equal(const struct wined3d_color_key *c1, struct wined3d_color_key *c2) +{ + return c1->color_space_low_value == c2->color_space_low_value + && c1->color_space_high_value == c2->color_space_high_value; +} + /* Context activation is done by the caller */ void wined3d_texture_load(struct wined3d_texture *texture, struct wined3d_context *context, BOOL srgb) { UINT sub_count = texture->level_count * texture->layer_count; const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_d3d_info *d3d_info = context->d3d_info; DWORD flag; UINT i; @@ -456,10 +463,11 @@ else flag = WINED3D_TEXTURE_RGB_VALID; - if (!(texture->flags & WINED3D_TEXTURE_COLOR_KEY) != !(texture->color_key_flags & WINED3D_CKEY_SRC_BLT) - || (texture->flags & WINED3D_TEXTURE_COLOR_KEY - && (texture->gl_color_key.color_space_low_value != texture->src_blt_color_key.color_space_low_value - || texture->gl_color_key.color_space_high_value != texture->src_blt_color_key.color_space_high_value))) + if (!d3d_info->shader_color_key + && (!(texture->async.flags & WINED3D_TEXTURE_ASYNC_COLOR_KEY) + != !(texture->async.color_key_flags & WINED3D_CKEY_SRC_BLT) + || (texture->async.flags & WINED3D_TEXTURE_ASYNC_COLOR_KEY + && !color_key_equal(&texture->async.gl_color_key, &texture->async.src_blt_color_key)))) { unsigned int sub_count = texture->level_count * texture->layer_count; unsigned int i; @@ -469,7 +477,7 @@ texture->texture_ops->texture_sub_resource_add_dirty_region(texture->sub_resources[i], NULL); wined3d_texture_set_dirty(texture); - texture->gl_color_key = texture->src_blt_color_key; + texture->async.gl_color_key = texture->async.src_blt_color_key; } if (texture->flags & flag) @@ -571,61 +579,26 @@ HRESULT CDECL wined3d_texture_set_color_key(struct wined3d_texture *texture, DWORD flags, const struct wined3d_color_key *color_key) { + struct wined3d_device *device = texture->resource.device; + static const DWORD all_flags = WINED3D_CKEY_COLORSPACE | WINED3D_CKEY_DST_BLT + | WINED3D_CKEY_DST_OVERLAY | WINED3D_CKEY_SRC_BLT | WINED3D_CKEY_SRC_OVERLAY; + TRACE("texture %p, flags %#x, color_key %p.\n", texture, flags, color_key); - if (flags & WINED3D_CKEY_COLORSPACE) + if (flags & ~all_flags) { - FIXME("Unhandled flags %#x.\n", flags); + WARN("Invalid flags passed, returning WINED3DERR_INVALIDCALL.\n"); return WINED3DERR_INVALIDCALL; } - if (color_key) - { - switch (flags & ~WINED3D_CKEY_COLORSPACE) - { - case WINED3D_CKEY_DST_BLT: - texture->dst_blt_color_key = *color_key; - texture->color_key_flags |= WINED3D_CKEY_DST_BLT; - break; - - case WINED3D_CKEY_DST_OVERLAY: - texture->dst_overlay_color_key = *color_key; - texture->color_key_flags |= WINED3D_CKEY_DST_OVERLAY; - break; - - case WINED3D_CKEY_SRC_BLT: - texture->src_blt_color_key = *color_key; - texture->color_key_flags |= WINED3D_CKEY_SRC_BLT; - break; - - case WINED3D_CKEY_SRC_OVERLAY: - texture->src_overlay_color_key = *color_key; - texture->color_key_flags |= WINED3D_CKEY_SRC_OVERLAY; - break; - } - } - else + if (flags & WINED3D_CKEY_COLORSPACE) { - switch (flags & ~WINED3D_CKEY_COLORSPACE) - { - case WINED3D_CKEY_DST_BLT: - texture->color_key_flags &= ~WINED3D_CKEY_DST_BLT; - break; - - case WINED3D_CKEY_DST_OVERLAY: - texture->color_key_flags &= ~WINED3D_CKEY_DST_OVERLAY; - break; - - case WINED3D_CKEY_SRC_BLT: - texture->color_key_flags &= ~WINED3D_CKEY_SRC_BLT; - break; - - case WINED3D_CKEY_SRC_OVERLAY: - texture->color_key_flags &= ~WINED3D_CKEY_SRC_OVERLAY; - break; - } + FIXME("Unhandled flags %#x.\n", flags); + return WINED3DERR_INVALIDCALL; } + wined3d_cs_emit_set_color_key(device->cs, texture, flags, color_key); + return WINED3D_OK; } @@ -693,16 +666,21 @@ void wined3d_texture_prepare_texture(struct wined3d_texture *texture, struct wined3d_context *context, BOOL srgb) { DWORD alloc_flag = srgb ? WINED3D_TEXTURE_SRGB_ALLOCATED : WINED3D_TEXTURE_RGB_ALLOCATED; + const struct wined3d_d3d_info *d3d_info = context->d3d_info; - if (!(texture->flags & WINED3D_TEXTURE_COLOR_KEY) != !(texture->color_key_flags & WINED3D_CKEY_SRC_BLT)) + if (!d3d_info->shader_color_key + && !(texture->async.flags & WINED3D_TEXTURE_ASYNC_COLOR_KEY) + != !(texture->async.color_key_flags & WINED3D_CKEY_SRC_BLT)) + { wined3d_texture_force_reload(texture); + if (texture->async.color_key_flags & WINED3D_CKEY_SRC_BLT) + texture->async.flags |= WINED3D_TEXTURE_ASYNC_COLOR_KEY; + } + if (texture->flags & alloc_flag) return; - if (texture->color_key_flags & WINED3D_CKEY_SRC_BLT) - texture->flags |= WINED3D_TEXTURE_COLOR_KEY; - texture->texture_ops->texture_prepare_texture(texture, context, srgb); texture->flags |= alloc_flag; } @@ -713,7 +691,8 @@ unsigned int i; texture->flags &= ~(WINED3D_TEXTURE_RGB_ALLOCATED | WINED3D_TEXTURE_SRGB_ALLOCATED - | WINED3D_TEXTURE_CONVERTED | WINED3D_TEXTURE_COLOR_KEY); + | WINED3D_TEXTURE_CONVERTED); + texture->async.flags &= ~WINED3D_TEXTURE_ASYNC_COLOR_KEY; for (i = 0; i < sub_count; ++i) { texture->texture_ops->texture_sub_resource_invalidate_location(texture->sub_resources[i], @@ -770,7 +749,7 @@ context = context_acquire(texture->resource.device, NULL); wined3d_texture_prepare_texture(texture, context, FALSE); - wined3d_texture_bind(texture, context, FALSE); + wined3d_texture_bind_and_dirtify(texture, context, FALSE); for (i = 0; i < sub_count; ++i) { diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/wined3d/utils.c wine-staging-1.7.41~ubuntu12.04.1/dlls/wined3d/utils.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/wined3d/utils.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/wined3d/utils.c 2015-04-18 23:36:02.000000000 +0000 @@ -843,7 +843,7 @@ WINED3DFMT_B8G8R8A8_UNORM, convert_p8_uint_b8g8r8a8_unorm }; - if (need_alpha_ck && (texture->flags & WINED3D_TEXTURE_COLOR_KEY)) + if (need_alpha_ck && (texture->async.flags & WINED3D_TEXTURE_ASYNC_COLOR_KEY)) { for (i = 0; i < sizeof(color_key_info) / sizeof(*color_key_info); ++i) { @@ -3001,6 +3001,8 @@ return "STATE_FRAMEBUFFER"; if (STATE_IS_POINT_SIZE_ENABLE(state)) return "STATE_POINT_SIZE_ENABLE"; + if (STATE_IS_COLOR_KEY(state)) + return "STATE_COLOR_KEY"; return wine_dbg_sprintf("UNKNOWN_STATE(%#x)", state); } @@ -3511,6 +3513,70 @@ return 0; } +static float color_to_float(DWORD color, DWORD size, DWORD offset) +{ + DWORD mask = (1 << size) - 1; + + if (!size) + return 1.0f; + + color >>= offset; + color &= mask; + + return (float)color / (float)mask; +} + +BOOL wined3d_format_convert_color_to_float(const struct wined3d_format *format, + const struct wined3d_palette *palette, DWORD color, struct wined3d_color *float_color) +{ + switch (format->id) + { + case WINED3DFMT_B8G8R8_UNORM: + case WINED3DFMT_B8G8R8A8_UNORM: + case WINED3DFMT_B8G8R8X8_UNORM: + case WINED3DFMT_B5G6R5_UNORM: + case WINED3DFMT_B5G5R5X1_UNORM: + case WINED3DFMT_B5G5R5A1_UNORM: + case WINED3DFMT_B4G4R4A4_UNORM: + case WINED3DFMT_B2G3R3_UNORM: + case WINED3DFMT_R8_UNORM: + case WINED3DFMT_A8_UNORM: + case WINED3DFMT_B2G3R3A8_UNORM: + case WINED3DFMT_B4G4R4X4_UNORM: + case WINED3DFMT_R10G10B10A2_UNORM: + case WINED3DFMT_R10G10B10A2_SNORM: + case WINED3DFMT_R8G8B8A8_UNORM: + case WINED3DFMT_R8G8B8X8_UNORM: + case WINED3DFMT_R16G16_UNORM: + case WINED3DFMT_B10G10R10A2_UNORM: + float_color->r = color_to_float(color, format->red_size, format->red_offset); + float_color->g = color_to_float(color, format->green_size, format->green_size); + float_color->b = color_to_float(color, format->blue_size, format->blue_offset); + float_color->a = color_to_float(color, format->alpha_size, format->alpha_offset); + return TRUE; + + case WINED3DFMT_P8_UINT: + if (palette) + { + float_color->r = palette->colors[color].rgbRed / 255.0f; + float_color->g = palette->colors[color].rgbGreen / 255.0f; + float_color->b = palette->colors[color].rgbBlue / 255.0f; + } + else + { + float_color->r = 0.0f; + float_color->g = 0.0f; + float_color->b = 0.0f; + } + float_color->a = color / 255.0f; + return TRUE; + + default: + ERR("Unhandled conversion from %s to floating point.\n", debug_d3dformat(format->id)); + return FALSE; + } +} + /* DirectDraw stuff */ enum wined3d_format_id pixelformat_for_depth(DWORD depth) { @@ -3624,6 +3690,8 @@ const struct wined3d_gl_info *gl_info = context->gl_info; const struct wined3d_d3d_info *d3d_info = context->d3d_info; + settings->padding = 0; + for (i = 0; i < d3d_info->limits.ffp_blend_stages; ++i) { const struct wined3d_texture *texture; @@ -3717,7 +3785,7 @@ if (texture_dimensions == GL_TEXTURE_2D || texture_dimensions == GL_TEXTURE_RECTANGLE_ARB) { - if (texture->color_key_flags & WINED3D_CKEY_SRC_BLT && !texture->resource.format->alpha_size) + if (texture->async.color_key_flags & WINED3D_CKEY_SRC_BLT && !texture->resource.format->alpha_size) { if (aop == WINED3D_TOP_DISABLE) { @@ -3851,6 +3919,13 @@ } else { settings->emul_clipplanes = 1; } + + if (state->render_states[WINED3D_RS_COLORKEYENABLE] && state->textures[0] + && state->textures[0]->async.color_key_flags & WINED3D_CKEY_SRC_BLT + && settings->op[0].cop != WINED3D_TOP_DISABLE) + settings->color_key_enabled = 1; + else + settings->color_key_enabled = 0; } const struct ffp_frag_desc *find_ffp_frag_shader(const struct wine_rb_tree *fragment_shaders, @@ -4121,7 +4196,8 @@ wined3d_ffp_vertex_program_key_compare, }; -const struct blit_shader *wined3d_select_blitter(const struct wined3d_gl_info *gl_info, enum wined3d_blit_op blit_op, +const struct blit_shader *wined3d_select_blitter(const struct wined3d_gl_info *gl_info, + const struct wined3d_d3d_info *d3d_info, enum wined3d_blit_op blit_op, const RECT *src_rect, DWORD src_usage, enum wined3d_pool src_pool, const struct wined3d_format *src_format, const RECT *dst_rect, DWORD dst_usage, enum wined3d_pool dst_pool, const struct wined3d_format *dst_format) { @@ -4135,7 +4211,7 @@ for (i = 0; i < sizeof(blitters) / sizeof(*blitters); ++i) { - if (blitters[i]->blit_supported(gl_info, blit_op, + if (blitters[i]->blit_supported(gl_info, d3d_info, blit_op, src_rect, src_usage, src_pool, src_format, dst_rect, dst_usage, dst_pool, dst_format)) return blitters[i]; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/wined3d/volume.c wine-staging-1.7.41~ubuntu12.04.1/dlls/wined3d/volume.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/wined3d/volume.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/wined3d/volume.c 2015-04-18 23:36:02.000000000 +0000 @@ -64,6 +64,8 @@ TRACE("Returning row pitch %u, slice pitch %u.\n", *row_pitch, *slice_pitch); } +/* This call just uploads data, the caller is responsible for binding the + * correct texture. */ /* Context activation is done by the caller. */ void wined3d_volume_upload_data(struct wined3d_volume *volume, const struct wined3d_context *context, const struct wined3d_const_bo_address *data) @@ -273,11 +275,15 @@ else if (volume->locations & WINED3D_LOCATION_SYSMEM) { struct wined3d_const_bo_address data = {0, volume->resource.heap_memory}; + wined3d_texture_bind_and_dirtify(volume->container, context, + location == WINED3D_LOCATION_TEXTURE_SRGB); wined3d_volume_upload_data(volume, context, &data); } else if (volume->locations & WINED3D_LOCATION_BUFFER) { struct wined3d_const_bo_address data = {volume->pbo, NULL}; + wined3d_texture_bind_and_dirtify(volume->container, context, + location == WINED3D_LOCATION_TEXTURE_SRGB); wined3d_volume_upload_data(volume, context, &data); } else if (volume->locations & WINED3D_LOCATION_TEXTURE_RGB) diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/wined3d/wined3d_private.h wine-staging-1.7.41~ubuntu12.04.1/dlls/wined3d/wined3d_private.h --- wine-staging-1.7.40~ubuntu12.04.1/dlls/wined3d/wined3d_private.h 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/wined3d/wined3d_private.h 2015-04-18 23:36:02.000000000 +0000 @@ -309,6 +309,7 @@ #define WINED3D_SHADER_CONST_FFP_MODELVIEW 0x00000400 #define WINED3D_SHADER_CONST_FFP_PROJ 0x00000800 #define WINED3D_SHADER_CONST_FFP_PS 0x00001000 +#define WINED3D_SHADER_CONST_FFP_COLOR_KEY 0x00002000 enum wined3d_shader_register_type { @@ -1067,7 +1068,10 @@ #define STATE_POINT_SIZE_ENABLE (STATE_FRAMEBUFFER + 1) #define STATE_IS_POINT_SIZE_ENABLE(a) ((a) == STATE_POINT_SIZE_ENABLE) -#define STATE_HIGHEST (STATE_POINT_SIZE_ENABLE) +#define STATE_COLOR_KEY (STATE_POINT_SIZE_ENABLE + 1) +#define STATE_IS_COLOR_KEY(a) ((a) == STATE_COLOR_KEY) + +#define STATE_HIGHEST (STATE_COLOR_KEY) enum fogsource { FOGSOURCE_FFP, @@ -1258,6 +1262,7 @@ #define WINED3D_FRAGMENT_CAP_PROJ_CONTROL 0x00000001 #define WINED3D_FRAGMENT_CAP_SRGB_WRITE 0x00000002 +#define WINED3D_FRAGMENT_CAP_COLOR_KEY 0x00000004 struct fragment_caps { @@ -1323,6 +1328,7 @@ enum wined3d_blit_op { WINED3D_BLIT_OP_COLOR_BLIT, + WINED3D_BLIT_OP_COLOR_BLIT_CKEY, WINED3D_BLIT_OP_COLOR_FILL, WINED3D_BLIT_OP_DEPTH_FILL, WINED3D_BLIT_OP_DEPTH_BLIT, @@ -1334,31 +1340,33 @@ { HRESULT (*alloc_private)(struct wined3d_device *device); void (*free_private)(struct wined3d_device *device); - HRESULT (*set_shader)(void *blit_priv, struct wined3d_context *context, const struct wined3d_surface *surface); + HRESULT (*set_shader)(void *blit_priv, struct wined3d_context *context, const struct wined3d_surface *surface, + const struct wined3d_color_key *color_key); void (*unset_shader)(const struct wined3d_gl_info *gl_info); - BOOL (*blit_supported)(const struct wined3d_gl_info *gl_info, enum wined3d_blit_op blit_op, + BOOL (*blit_supported)(const struct wined3d_gl_info *gl_info, + const struct wined3d_d3d_info *d3d_info, enum wined3d_blit_op blit_op, const RECT *src_rect, DWORD src_usage, enum wined3d_pool src_pool, const struct wined3d_format *src_format, const RECT *dst_rect, DWORD dst_usage, enum wined3d_pool dst_pool, const struct wined3d_format *dst_format); HRESULT (*color_fill)(struct wined3d_device *device, struct wined3d_surface *dst_surface, const RECT *dst_rect, const struct wined3d_color *color); HRESULT (*depth_fill)(struct wined3d_device *device, struct wined3d_surface *surface, const RECT *rect, float depth); + void (*blit_surface)(struct wined3d_device *device, DWORD filter, + struct wined3d_surface *src_surface, const RECT *src_rect, + struct wined3d_surface *dst_surface, const RECT *dst_rect, + const struct wined3d_color_key *color_key); }; extern const struct blit_shader ffp_blit DECLSPEC_HIDDEN; extern const struct blit_shader arbfp_blit DECLSPEC_HIDDEN; extern const struct blit_shader cpu_blit DECLSPEC_HIDDEN; -const struct blit_shader *wined3d_select_blitter(const struct wined3d_gl_info *gl_info, enum wined3d_blit_op blit_op, +const struct blit_shader *wined3d_select_blitter(const struct wined3d_gl_info *gl_info, + const struct wined3d_d3d_info *d3d_info, enum wined3d_blit_op blit_op, const RECT *src_rect, DWORD src_usage, enum wined3d_pool src_pool, const struct wined3d_format *src_format, const RECT *dst_rect, DWORD dst_usage, enum wined3d_pool dst_pool, const struct wined3d_format *dst_format) DECLSPEC_HIDDEN; -/* Temporary blit_shader helper functions */ -HRESULT arbfp_blit_surface(struct wined3d_device *device, DWORD filter, - struct wined3d_surface *src_surface, const RECT *src_rect, - struct wined3d_surface *dst_surface, const RECT *dst_rect) DECLSPEC_HIDDEN; - struct wined3d_context *context_acquire(const struct wined3d_device *device, struct wined3d_surface *target) DECLSPEC_HIDDEN; void context_alloc_event_query(struct wined3d_context *context, @@ -1575,6 +1583,7 @@ CARD_NVIDIA_GEFORCE_GTX780 = 0x1004, CARD_NVIDIA_GEFORCE_GTX780TI = 0x100a, CARD_NVIDIA_GEFORCE_GTX970 = 0x13c2, + CARD_NVIDIA_GEFORCE_GTX970M = 0x13d8, CARD_VMWARE_SVGA3D = 0x0405, @@ -1740,6 +1749,7 @@ struct wined3d_ffp_attrib_ops ffp_attrib_ops; BOOL xyzrhw; BOOL vs_clipping; + BOOL shader_color_key; DWORD valid_rt_mask; }; @@ -1812,9 +1822,10 @@ { struct texture_stage_op op[MAX_TEXTURES]; enum wined3d_ffp_ps_fog_mode fog; - /* Use shorts instead of chars to get dword alignment */ - unsigned short sRGB_write; - unsigned short emul_clipplanes; + unsigned char sRGB_write; + unsigned char emul_clipplanes; + unsigned char color_key_enabled; + unsigned char padding; }; struct ffp_frag_desc @@ -2079,13 +2090,6 @@ return context->isStateDirty[idx] & (1 << shift); } -static inline void context_invalidate_active_texture(struct wined3d_context *context) -{ - DWORD sampler = context->rev_tex_unit_map[context->active_texture]; - if (sampler != WINED3D_UNMAPPED_STAGE) - context_invalidate_state(context, STATE_SAMPLER(sampler)); -} - #define WINED3D_RESOURCE_ACCESS_GPU 0x1 #define WINED3D_RESOURCE_ACCESS_CPU 0x2 @@ -2186,7 +2190,8 @@ #define WINED3D_TEXTURE_PIN_SYSMEM 0x00000100 #define WINED3D_TEXTURE_DYNAMIC_MAP 0x00000200 #define WINED3D_TEXTURE_NORMALIZED_COORDS 0x00000400 -#define WINED3D_TEXTURE_COLOR_KEY 0x00000800 + +#define WINED3D_TEXTURE_ASYNC_COLOR_KEY 0x00000001 struct wined3d_texture { @@ -2204,13 +2209,19 @@ DWORD flags; GLenum target; - /* Color keys for DDraw */ - struct wined3d_color_key dst_blt_color_key; - struct wined3d_color_key src_blt_color_key; - struct wined3d_color_key dst_overlay_color_key; - struct wined3d_color_key src_overlay_color_key; - struct wined3d_color_key gl_color_key; - DWORD color_key_flags; + /* May only be accessed from the command stream worker thread. */ + struct wined3d_texture_async + { + DWORD flags; + + /* Color keys for DDraw */ + struct wined3d_color_key dst_blt_color_key; + struct wined3d_color_key src_blt_color_key; + struct wined3d_color_key dst_overlay_color_key; + struct wined3d_color_key src_overlay_color_key; + struct wined3d_color_key gl_color_key; + DWORD color_key_flags; + } async; }; static inline struct wined3d_texture *wined3d_texture_from_resource(struct wined3d_resource *resource) @@ -2552,6 +2563,8 @@ void wined3d_cs_emit_reset_state(struct wined3d_cs *cs) DECLSPEC_HIDDEN; void wined3d_cs_emit_set_clip_plane(struct wined3d_cs *cs, UINT plane_idx, const struct wined3d_vec4 *plane) DECLSPEC_HIDDEN; +void wined3d_cs_emit_set_color_key(struct wined3d_cs *cs, struct wined3d_texture *texture, + WORD flags, const struct wined3d_color_key *color_key) DECLSPEC_HIDDEN; void wined3d_cs_emit_set_constant_buffer(struct wined3d_cs *cs, enum wined3d_shader_type type, UINT cb_idx, struct wined3d_buffer *buffer) DECLSPEC_HIDDEN; void wined3d_cs_emit_set_depth_stencil_view(struct wined3d_cs *cs, @@ -2797,6 +2810,8 @@ const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN; void apply_pixelshader(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN; +void state_alpha_test(struct wined3d_context *context, + const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN; void state_fogcolor(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN; void state_fogdensity(struct wined3d_context *context, @@ -2805,6 +2820,8 @@ const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN; void state_fog_fragpart(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN; +void state_nop(struct wined3d_context *context, + const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN; void state_srgbwrite(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN; @@ -3167,6 +3184,8 @@ UINT alignment, UINT width, UINT height, UINT depth) DECLSPEC_HIDDEN; DWORD wined3d_format_convert_from_float(const struct wined3d_surface *surface, const struct wined3d_color *color) DECLSPEC_HIDDEN; +BOOL wined3d_format_convert_color_to_float(const struct wined3d_format *format, + const struct wined3d_palette *palette, DWORD color, struct wined3d_color *float_color) DECLSPEC_HIDDEN; const struct wined3d_color_key_conversion * wined3d_format_get_color_key_conversion( const struct wined3d_texture *texture, BOOL need_alpha_ck) DECLSPEC_HIDDEN; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/wineoss.drv/mmdevdrv.c wine-staging-1.7.41~ubuntu12.04.1/dlls/wineoss.drv/mmdevdrv.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/wineoss.drv/mmdevdrv.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/wineoss.drv/mmdevdrv.c 2015-04-18 23:36:02.000000000 +0000 @@ -1412,6 +1412,12 @@ }else in_oss_frames = (This->oss_bufsize_bytes - bi.bytes) / This->fmt->nBlockAlign; + if(in_oss_frames > This->in_oss_frames){ + TRACE("Capping reported frames from %u to %u\n", + in_oss_frames, This->in_oss_frames); + in_oss_frames = This->in_oss_frames; + } + write_limit = 0; while(write_limit + in_oss_frames < max_period * 3) write_limit += max_period; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/wininet/cookie.c wine-staging-1.7.41~ubuntu12.04.1/dlls/wininet/cookie.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/wininet/cookie.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/wininet/cookie.c 2015-04-18 23:36:02.000000000 +0000 @@ -341,8 +341,10 @@ UnlockUrlCacheEntryStream(cookie, 0); cookie_container = get_cookie_container(domain, path, TRUE); - if(!cookie_container) + if(!cookie_container) { + heap_free(str); return FALSE; + } GetSystemTimeAsFileTime(&time); for(pbeg=str; pbeg && *pbeg; name=data=NULL) { diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/wininet/internet.c wine-staging-1.7.41~ubuntu12.04.1/dlls/wininet/internet.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/wininet/internet.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/wininet/internet.c 2015-04-18 23:36:02.000000000 +0000 @@ -748,7 +748,7 @@ if (wpi.proxyEnabled) { - TRACE("http proxy = %s bypass = %s\n", debugstr_w(lpwai->proxy), debugstr_w(lpwai->proxyBypass)); + TRACE("http proxy = %s bypass = %s\n", debugstr_w(wpi.proxy), debugstr_w(wpi.proxyBypass)); lpwai->accessType = INTERNET_OPEN_TYPE_PROXY; lpwai->proxy = wpi.proxy; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/wininet/tests/urlcache.c wine-staging-1.7.41~ubuntu12.04.1/dlls/wininet/tests/urlcache.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/wininet/tests/urlcache.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/wininet/tests/urlcache.c 2015-04-18 23:36:02.000000000 +0000 @@ -218,16 +218,16 @@ * is NULL. */ ret = IsUrlCacheEntryExpiredA(NULL, 0, NULL); - ok(!ret == ie10_cache, "IsUrlCacheEntryExpiredA returned %x\n", ret); + ok(ret != ie10_cache, "IsUrlCacheEntryExpiredA returned %x\n", ret); ft.dwLowDateTime = 0xdeadbeef; ft.dwHighDateTime = 0xbaadf00d; ret = IsUrlCacheEntryExpiredA(NULL, 0, &ft); - ok(!ret == ie10_cache, "IsUrlCacheEntryExpiredA returned %x\n", ret); + ok(ret != ie10_cache, "IsUrlCacheEntryExpiredA returned %x\n", ret); ok(ft.dwLowDateTime == 0xdeadbeef && ft.dwHighDateTime == 0xbaadf00d, "expected time to be unchanged, got (%u,%u)\n", ft.dwLowDateTime, ft.dwHighDateTime); ret = IsUrlCacheEntryExpiredA(test_url, 0, NULL); - ok(!ret == ie10_cache, "IsUrlCacheEntryExpiredA returned %x\n", ret); + ok(ret != ie10_cache, "IsUrlCacheEntryExpiredA returned %x\n", ret); /* The return value should indicate whether the URL is expired, * and the filetime indicates the last modified time, but a cache entry @@ -310,7 +310,7 @@ ft.dwLowDateTime = 0xdeadbeef; ft.dwHighDateTime = 0xbaadf00d; ret = IsUrlCacheEntryExpiredA(uncached_url, 0, &ft); - ok(!ret == ie10_cache, "IsUrlCacheEntryExpiredA returned %x\n", ret); + ok(ret != ie10_cache, "IsUrlCacheEntryExpiredA returned %x\n", ret); ok(!ft.dwLowDateTime && !ft.dwHighDateTime, "expected time (0,0), got (%u,%u)\n", ft.dwLowDateTime, ft.dwHighDateTime); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/wmvcore/wmvcore_main.c wine-staging-1.7.41~ubuntu12.04.1/dlls/wmvcore/wmvcore_main.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/wmvcore/wmvcore_main.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/wmvcore/wmvcore_main.c 2015-04-18 23:36:02.000000000 +0000 @@ -58,6 +58,7 @@ typedef struct { IWMReader IWMReader_iface; + IWMReaderAdvanced6 IWMReaderAdvanced6_iface; LONG ref; } WMReader; @@ -76,6 +77,24 @@ }else if(IsEqualGUID(riid, &IID_IWMReader)) { TRACE("(%p)->(IID_IWMReader %p)\n", This, ppv); *ppv = &This->IWMReader_iface; + }else if(IsEqualGUID(riid, &IID_IWMReaderAdvanced)) { + TRACE("(%p)->(IID_IWMReaderAdvanced %p)\n", This, ppv); + *ppv = &This->IWMReaderAdvanced6_iface; + }else if(IsEqualGUID(riid, &IID_IWMReaderAdvanced2)) { + TRACE("(%p)->(IID_IWMReaderAdvanced2 %p)\n", This, ppv); + *ppv = &This->IWMReaderAdvanced6_iface; + }else if(IsEqualGUID(riid, &IID_IWMReaderAdvanced3)) { + TRACE("(%p)->(IID_IWMReaderAdvanced3 %p)\n", This, ppv); + *ppv = &This->IWMReaderAdvanced6_iface; + }else if(IsEqualGUID(riid, &IID_IWMReaderAdvanced4)) { + TRACE("(%p)->(IID_IWMReaderAdvanced4 %p)\n", This, ppv); + *ppv = &This->IWMReaderAdvanced6_iface; + }else if(IsEqualGUID(riid, &IID_IWMReaderAdvanced5)) { + TRACE("(%p)->(IID_IWMReaderAdvanced5 %p)\n", This, ppv); + *ppv = &This->IWMReaderAdvanced6_iface; + }else if(IsEqualGUID(riid, &IID_IWMReaderAdvanced6)) { + TRACE("(%p)->(IID_IWMReaderAdvanced6 %p)\n", This, ppv); + *ppv = &This->IWMReaderAdvanced6_iface; }else { *ppv = NULL; FIXME("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv); @@ -203,6 +222,433 @@ WMReader_Resume }; +static inline WMReader *impl_from_IWMReaderAdvanced6(IWMReaderAdvanced6 *iface) +{ + return CONTAINING_RECORD(iface, WMReader, IWMReaderAdvanced6_iface); +} + +static HRESULT WINAPI WMReaderAdvanced_QueryInterface(IWMReaderAdvanced6 *iface, REFIID riid, void **ppv) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + return IWMReader_QueryInterface(&This->IWMReader_iface, riid, ppv); +} + +static ULONG WINAPI WMReaderAdvanced_AddRef(IWMReaderAdvanced6 *iface) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + return IWMReader_AddRef(&This->IWMReader_iface); +} + +static ULONG WINAPI WMReaderAdvanced_Release(IWMReaderAdvanced6 *iface) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + return IWMReader_Release(&This->IWMReader_iface); +} + +static HRESULT WINAPI WMReaderAdvanced_SetUserProvidedClock(IWMReaderAdvanced6 *iface, BOOL user_clock) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%x)\n", This, user_clock); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced_GetUserProvidedClock(IWMReaderAdvanced6 *iface, BOOL *user_clock) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%p)\n", This, user_clock); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced_DeliverTime(IWMReaderAdvanced6 *iface, QWORD time) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%s)\n", This, wine_dbgstr_longlong(time)); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced_SetManualStreamSelection(IWMReaderAdvanced6 *iface, BOOL selection) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%x)\n", This, selection); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced_GetManualStreamSelection(IWMReaderAdvanced6 *iface, BOOL *selection) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%p)\n", This, selection); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced_SetStreamsSelected(IWMReaderAdvanced6 *iface, WORD stream_count, + WORD *stream_numbers, WMT_STREAM_SELECTION *selections) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%d %p %p)\n", This, stream_count, stream_numbers, selections); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced_GetStreamSelected(IWMReaderAdvanced6 *iface, WORD stream_num, + WMT_STREAM_SELECTION *selection) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%d %p)\n", This, stream_num, selection); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced_SetReceiveSelectionCallbacks(IWMReaderAdvanced6 *iface, BOOL get_callbacks) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%x)\n", This, get_callbacks); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced_GetReceiveSelectionCallbacks(IWMReaderAdvanced6 *iface, BOOL *get_callbacks) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%p)\n", This, get_callbacks); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced_SetReceiveStreamSamples(IWMReaderAdvanced6 *iface, WORD stream_num, + BOOL receive_stream_samples) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%d %x)\n", This, stream_num, receive_stream_samples); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced_GetReceiveStreamSamples(IWMReaderAdvanced6 *iface, WORD stream_num, + BOOL *receive_stream_samples) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%d %p)\n", This, stream_num, receive_stream_samples); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced_SetAllocateForOutput(IWMReaderAdvanced6 *iface, DWORD output_num, BOOL allocate) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%d %x)\n", This, output_num, allocate); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced_GetAllocateForOutput(IWMReaderAdvanced6 *iface, DWORD output_num, BOOL *allocate) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%d %p)\n", This, output_num, allocate); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced_SetAllocateForStream(IWMReaderAdvanced6 *iface, WORD output_num, BOOL allocate) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%d %x)\n", This, output_num, allocate); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced_GetAllocateForStream(IWMReaderAdvanced6 *iface, WORD output_num, BOOL *allocate) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%d %p)\n", This, output_num, allocate); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced_GetStatistics(IWMReaderAdvanced6 *iface, WM_READER_STATISTICS *statistics) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%p)\n", This, statistics); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced_SetClientInfo(IWMReaderAdvanced6 *iface, WM_READER_CLIENTINFO *client_info) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%p)\n", This, client_info); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced_GetMaxOutputSampleSize(IWMReaderAdvanced6 *iface, DWORD output, DWORD *max) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%d %p)\n", This, output, max); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced_GetMaxStreamSampleSize(IWMReaderAdvanced6 *iface, WORD stream, DWORD *max) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%d %p)\n", This, stream, max); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced_NotifyLateDelivery(IWMReaderAdvanced6 *iface, QWORD lateness) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%s)\n", This, wine_dbgstr_longlong(lateness)); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced2_SetPlayMode(IWMReaderAdvanced6 *iface, WMT_PLAY_MODE mode) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%d)\n", This, mode); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced2_GetPlayMode(IWMReaderAdvanced6 *iface, WMT_PLAY_MODE *mode) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%p)\n", This, mode); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced2_GetBufferProgress(IWMReaderAdvanced6 *iface, DWORD *percent, QWORD *buffering) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%p %p)\n", This, percent, buffering); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced2_GetDownloadProgress(IWMReaderAdvanced6 *iface, DWORD *percent, + QWORD *bytes_downloaded, QWORD *download) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%p %p %p)\n", This, percent, bytes_downloaded, download); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced2_GetSaveAsProgress(IWMReaderAdvanced6 *iface, DWORD *percent) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%p)\n", This, percent); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced2_SaveFileAs(IWMReaderAdvanced6 *iface, const WCHAR *filename) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%s)\n", This, debugstr_w(filename)); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced2_GetProtocolName(IWMReaderAdvanced6 *iface, WCHAR *protocol, DWORD *protocol_len) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%p %p)\n", This, protocol, protocol_len); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced2_StartAtMarker(IWMReaderAdvanced6 *iface, WORD marker_index, + QWORD duration, float rate, void *context) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%d %s %f %p)\n", This, marker_index, wine_dbgstr_longlong(duration), rate, context); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced2_GetOutputSetting(IWMReaderAdvanced6 *iface, DWORD output_num, + const WCHAR *name, WMT_ATTR_DATATYPE *type, BYTE *value, WORD *length) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%d %s %p %p %p)\n", This, output_num, debugstr_w(name), type, value, length); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced2_SetOutputSetting(IWMReaderAdvanced6 *iface, DWORD output_num, + const WCHAR *name, WMT_ATTR_DATATYPE type, const BYTE *value, WORD length) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%d %s %d %p %d)\n", This, output_num, debugstr_w(name), type, value, length); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced2_Preroll(IWMReaderAdvanced6 *iface, QWORD start, QWORD duration, float rate) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%s %s %f)\n", This, wine_dbgstr_longlong(start), wine_dbgstr_longlong(duration), rate); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced2_SetLogClientID(IWMReaderAdvanced6 *iface, BOOL log_client_id) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%x)\n", This, log_client_id); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced2_GetLogClientID(IWMReaderAdvanced6 *iface, BOOL *log_client_id) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%p)\n", This, log_client_id); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced2_StopBuffering(IWMReaderAdvanced6 *iface) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)\n", This); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced2_OpenStream(IWMReaderAdvanced6 *iface, IStream *stream, + IWMReaderCallback *callback, void *context) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%p %p %p)\n", This, stream, callback, context); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced3_StopNetStreaming(IWMReaderAdvanced6 *iface) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)\n", This); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced3_StartAtPosition(IWMReaderAdvanced6 *iface, WORD stream_num, + void *offset_start, void *duration, WMT_OFFSET_FORMAT format, float rate, void *context) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%d %p %p %d %f %p)\n", This, stream_num, offset_start, duration, format, rate, context); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced4_GetLanguageCount(IWMReaderAdvanced6 *iface, DWORD output_num, WORD *language_count) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%d %p)\n", This, output_num, language_count); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced4_GetLanguage(IWMReaderAdvanced6 *iface, DWORD output_num, + WORD language, WCHAR *language_string, WORD *language_string_len) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%d %x %p %p)\n", This, output_num, language, language_string, language_string_len); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced4_GetMaxSpeedFactor(IWMReaderAdvanced6 *iface, double *factor) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%p)\n", This, factor); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced4_IsUsingFastCache(IWMReaderAdvanced6 *iface, BOOL *using_fast_cache) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%p)\n", This, using_fast_cache); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced4_AddLogParam(IWMReaderAdvanced6 *iface, const WCHAR *namespace, + const WCHAR *name, const WCHAR *value) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%s %s %s)\n", This, debugstr_w(namespace), debugstr_w(name), debugstr_w(value)); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced4_SendLogParams(IWMReaderAdvanced6 *iface) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)\n", This); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced4_CanSaveFileAs(IWMReaderAdvanced6 *iface, BOOL *can_save) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%p)\n", This, can_save); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced4_CancelSaveFileAs(IWMReaderAdvanced6 *iface) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)\n", This); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced4_GetURL(IWMReaderAdvanced6 *iface, WCHAR *url, DWORD *url_len) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%p %p)\n", This, url, url_len); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced5_SetPlayerHook(IWMReaderAdvanced6 *iface, DWORD output_num, IWMPlayerHook *hook) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%d %p)\n", This, output_num, hook); + return E_NOTIMPL; +} + +static HRESULT WINAPI WMReaderAdvanced6_SetProtextStreamSamples(IWMReaderAdvanced6 *iface, BYTE *cert, + DWORD cert_size, DWORD cert_type, DWORD flags, BYTE *initialization_vector, DWORD *initialization_vector_size) +{ + WMReader *This = impl_from_IWMReaderAdvanced6(iface); + FIXME("(%p)->(%p %d %d %x %p %p)\n", This, cert, cert_size, cert_type, flags, initialization_vector, + initialization_vector_size); + return E_NOTIMPL; +} + +static const IWMReaderAdvanced6Vtbl WMReaderAdvanced6Vtbl = { + WMReaderAdvanced_QueryInterface, + WMReaderAdvanced_AddRef, + WMReaderAdvanced_Release, + WMReaderAdvanced_SetUserProvidedClock, + WMReaderAdvanced_GetUserProvidedClock, + WMReaderAdvanced_DeliverTime, + WMReaderAdvanced_SetManualStreamSelection, + WMReaderAdvanced_GetManualStreamSelection, + WMReaderAdvanced_SetStreamsSelected, + WMReaderAdvanced_GetStreamSelected, + WMReaderAdvanced_SetReceiveSelectionCallbacks, + WMReaderAdvanced_GetReceiveSelectionCallbacks, + WMReaderAdvanced_SetReceiveStreamSamples, + WMReaderAdvanced_GetReceiveStreamSamples, + WMReaderAdvanced_SetAllocateForOutput, + WMReaderAdvanced_GetAllocateForOutput, + WMReaderAdvanced_SetAllocateForStream, + WMReaderAdvanced_GetAllocateForStream, + WMReaderAdvanced_GetStatistics, + WMReaderAdvanced_SetClientInfo, + WMReaderAdvanced_GetMaxOutputSampleSize, + WMReaderAdvanced_GetMaxStreamSampleSize, + WMReaderAdvanced_NotifyLateDelivery, + WMReaderAdvanced2_SetPlayMode, + WMReaderAdvanced2_GetPlayMode, + WMReaderAdvanced2_GetBufferProgress, + WMReaderAdvanced2_GetDownloadProgress, + WMReaderAdvanced2_GetSaveAsProgress, + WMReaderAdvanced2_SaveFileAs, + WMReaderAdvanced2_GetProtocolName, + WMReaderAdvanced2_StartAtMarker, + WMReaderAdvanced2_GetOutputSetting, + WMReaderAdvanced2_SetOutputSetting, + WMReaderAdvanced2_Preroll, + WMReaderAdvanced2_SetLogClientID, + WMReaderAdvanced2_GetLogClientID, + WMReaderAdvanced2_StopBuffering, + WMReaderAdvanced2_OpenStream, + WMReaderAdvanced3_StopNetStreaming, + WMReaderAdvanced3_StartAtPosition, + WMReaderAdvanced4_GetLanguageCount, + WMReaderAdvanced4_GetLanguage, + WMReaderAdvanced4_GetMaxSpeedFactor, + WMReaderAdvanced4_IsUsingFastCache, + WMReaderAdvanced4_AddLogParam, + WMReaderAdvanced4_SendLogParams, + WMReaderAdvanced4_CanSaveFileAs, + WMReaderAdvanced4_CancelSaveFileAs, + WMReaderAdvanced4_GetURL, + WMReaderAdvanced5_SetPlayerHook, + WMReaderAdvanced6_SetProtextStreamSamples +}; + HRESULT WINAPI WMCreateReader(IUnknown *reserved, DWORD rights, IWMReader **ret_reader) { WMReader *reader; @@ -214,6 +660,7 @@ return E_OUTOFMEMORY; reader->IWMReader_iface.lpVtbl = &WMReaderVtbl; + reader->IWMReaderAdvanced6_iface.lpVtbl = &WMReaderAdvanced6Vtbl; reader->ref = 1; *ret_reader = &reader->IWMReader_iface; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/ws2_32/socket.c wine-staging-1.7.41~ubuntu12.04.1/dlls/ws2_32/socket.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/ws2_32/socket.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/ws2_32/socket.c 2015-04-18 23:36:02.000000000 +0000 @@ -146,6 +146,7 @@ #include "ws2tcpip.h" #include "ws2spi.h" #include "wsipx.h" +#include "wsnwlink.h" #include "wshisotp.h" #include "mstcpip.h" #include "af_irda.h" @@ -157,10 +158,6 @@ #include "wine/exception.h" #include "wine/unicode.h" -#ifdef HAS_IPX -# include "wsnwlink.h" -#endif - #if defined(linux) && !defined(IP_UNICAST_IF) #define IP_UNICAST_IF 50 #endif @@ -866,7 +863,6 @@ switch(err) { case EINTR: return WSAEINTR; - case EBADF: return WSAEBADF; case EPERM: case EACCES: return WSAEACCES; case EFAULT: return WSAEFAULT; @@ -875,6 +871,7 @@ case EWOULDBLOCK: return WSAEWOULDBLOCK; case EINPROGRESS: return WSAEINPROGRESS; case EALREADY: return WSAEALREADY; + case EBADF: case ENOTSOCK: return WSAENOTSOCK; case EDESTADDRREQ: return WSAEDESTADDRREQ; case EMSGSIZE: return WSAEMSGSIZE; @@ -1078,19 +1075,23 @@ (void)_is_blocking(s, &dummy); } -static int _get_sock_error(SOCKET s, unsigned int bit) +static void _get_sock_errors(SOCKET s, int *events) { - int events[FD_MAX_EVENTS]; - SERVER_START_REQ( get_socket_event ) { req->handle = wine_server_obj_handle( SOCKET2HANDLE(s) ); req->service = FALSE; req->c_event = 0; - wine_server_set_reply( req, events, sizeof(events) ); + wine_server_set_reply( req, events, sizeof(int) * FD_MAX_EVENTS ); wine_server_call( req ); } SERVER_END_REQ; +} + +static int _get_sock_error(SOCKET s, unsigned int bit) +{ + int events[FD_MAX_EVENTS]; + _get_sock_errors(s, events); return events[bit]; } @@ -2900,9 +2901,6 @@ errno = loc_errno; switch (errno) { - case EBADF: - SetLastError(WSAENOTSOCK); - break; case EADDRNOTAVAIL: SetLastError(WSAEINVAL); break; @@ -3093,6 +3091,7 @@ if (ret <= 0) { SetLastError(ret == -1 ? wsaErrno() : WSAEINVAL); + release_sock_fd( s, fd ); return FALSE; } @@ -3217,6 +3216,61 @@ return res; } +/* When binding to an UDP address with filter support the getsockname call on the socket + * will always return 0.0.0.0 instead of the filtered interface address. This function + * checks if the socket is interface-bound on UDP and return the correct address. + * This is required because applications often do a bind() with port zero followed by a + * getsockname() to retrieve the port and address acquired. + */ +static void interface_bind_check(int fd, struct sockaddr_in *addr) +{ +#if !defined(IP_BOUND_IF) && !defined(LINUX_BOUND_IF) + return; +#else + int ifindex; + socklen_t len = sizeof(ifindex); + + /* Check for IPv4, address 0.0.0.0 and UDP socket */ + if (addr->sin_family != AF_INET || addr->sin_addr.s_addr != 0) + return; + if (getsockopt(fd, SOL_SOCKET, SO_TYPE, &ifindex, &len) || ifindex != SOCK_DGRAM) + return; + + ifindex = -1; + len = sizeof(ifindex); +#if defined(IP_BOUND_IF) + getsockopt(fd, IPPROTO_IP, IP_BOUND_IF, &ifindex, &len); +#elif defined(LINUX_BOUND_IF) + getsockopt(fd, IPPROTO_IP, IP_UNICAST_IF, &ifindex, &len); + if (ifindex > 0) ifindex = ntohl(ifindex); +#endif + if (ifindex > 0) + { + PIP_ADAPTER_INFO adapters, adapter; + DWORD adap_size; + + if (GetAdaptersInfo(NULL, &adap_size) != ERROR_BUFFER_OVERFLOW) + return; + adapters = HeapAlloc(GetProcessHeap(), 0, adap_size); + if (adapters && GetAdaptersInfo(adapters, &adap_size) == NO_ERROR) + { + /* Search the IPv4 adapter list for the appropriate bound interface */ + for (adapter = adapters; adapter != NULL; adapter = adapter->Next) + { + in_addr_t adapter_addr; + if (adapter->Index != ifindex) continue; + + adapter_addr = inet_addr(adapter->IpAddressList.IpAddress.String); + addr->sin_addr.s_addr = adapter_addr; + TRACE("reporting interface address from adapter %d\n", ifindex); + break; + } + } + HeapFree(GetProcessHeap(), 0, adapters); + } +#endif +} + /*********************************************************************** * getsockname (WS2_32.6) */ @@ -3254,8 +3308,17 @@ } else { - res = 0; - TRACE("=> %s\n", debugstr_sockaddr(name)); + interface_bind_check(fd, (struct sockaddr_in*) &uaddr); + if (ws_sockaddr_u2ws(&uaddr.addr, name, namelen) != 0) + { + /* The buffer was too small */ + SetLastError(WSAEFAULT); + } + else + { + res = 0; + TRACE("=> %s\n", debugstr_sockaddr(name)); + } } release_sock_fd( s, fd ); } @@ -3285,7 +3348,6 @@ * alphabetically */ case WS_SO_BROADCAST: case WS_SO_DEBUG: - case WS_SO_ERROR: case WS_SO_KEEPALIVE: case WS_SO_OOBINLINE: case WS_SO_RCVBUF: @@ -3296,7 +3358,7 @@ convert_sockopt(&level, &optname); if (getsockopt(fd, level, optname, optval, (socklen_t *)optlen) != 0 ) { - SetLastError((errno == EBADF) ? WSAENOTSOCK : wsaErrno()); + SetLastError(wsaErrno()); ret = SOCKET_ERROR; } release_sock_fd( s, fd ); @@ -3306,7 +3368,7 @@ return SOCKET_ERROR; if (getsockopt(fd, SOL_SOCKET, SO_ACCEPTCONN, optval, (socklen_t *)optlen) != 0 ) { - SetLastError((errno == EBADF) ? WSAENOTSOCK : wsaErrno()); + SetLastError(wsaErrno()); ret = SOCKET_ERROR; } else @@ -3403,7 +3465,7 @@ if (getsockopt(fd, SOL_SOCKET, SO_LINGER, &lingval, &len) != 0 ) { - SetLastError((errno == EBADF) ? WSAENOTSOCK : wsaErrno()); + SetLastError(wsaErrno()); ret = SOCKET_ERROR; } else @@ -3449,6 +3511,36 @@ *optlen = sizeof(BOOL); return 0; + case WS_SO_ERROR: + { + if ( (fd = get_sock_fd( s, 0, NULL )) == -1) + return SOCKET_ERROR; + if (getsockopt(fd, SOL_SOCKET, SO_ERROR, optval, (socklen_t *)optlen) != 0 ) + { + SetLastError(wsaErrno()); + ret = SOCKET_ERROR; + } + release_sock_fd( s, fd ); + + /* The wineserver may have swallowed the error before us */ + if (!ret && *(int*) optval == 0) + { + int i, events[FD_MAX_EVENTS]; + _get_sock_errors(s, events); + for (i = 0; i < FD_MAX_EVENTS; i++) + { + if(events[i]) + { + events[i] = NtStatusToWSAError(events[i]); + TRACE("returning SO_ERROR %d from wine server\n", events[i]); + *(int*) optval = events[i]; + break; + } + } + } + return ret; + } + case WS_SO_LINGER: { struct linger lingval; @@ -3471,7 +3563,7 @@ } else if (getsockopt(fd, SOL_SOCKET, SO_LINGER, &lingval, &len) != 0) { - SetLastError((errno == EBADF) ? WSAENOTSOCK : wsaErrno()); + SetLastError(wsaErrno()); ret = SOCKET_ERROR; } else @@ -3549,7 +3641,7 @@ convert_sockopt(&level, &optname); if (getsockopt(fd, level, optname, &tv, &len) != 0 ) { - SetLastError((errno == EBADF) ? WSAENOTSOCK : wsaErrno()); + SetLastError(wsaErrno()); ret = SOCKET_ERROR; } else @@ -3574,7 +3666,7 @@ if (getsockopt(fd, SOL_SOCKET, SO_TYPE, optval, (socklen_t *)optlen) != 0 ) { - SetLastError((errno == EBADF) ? WSAENOTSOCK : wsaErrno()); + SetLastError(wsaErrno()); ret = SOCKET_ERROR; } else @@ -3735,7 +3827,7 @@ convert_sockopt(&level, &optname); if (getsockopt(fd, level, optname, optval, (socklen_t *)optlen) != 0 ) { - SetLastError((errno == EBADF) ? WSAENOTSOCK : wsaErrno()); + SetLastError(wsaErrno()); ret = SOCKET_ERROR; } release_sock_fd( s, fd ); @@ -3769,7 +3861,7 @@ convert_sockopt(&level, &optname); if (getsockopt(fd, level, optname, optval, (socklen_t *)optlen) != 0 ) { - SetLastError((errno == EBADF) ? WSAENOTSOCK : wsaErrno()); + SetLastError(wsaErrno()); ret = SOCKET_ERROR; } release_sock_fd( s, fd ); @@ -3804,7 +3896,7 @@ convert_sockopt(&level, &optname); if (getsockopt(fd, level, optname, optval, (socklen_t *)optlen) != 0 ) { - SetLastError((errno == EBADF) ? WSAENOTSOCK : wsaErrno()); + SetLastError(wsaErrno()); ret = SOCKET_ERROR; } release_sock_fd( s, fd ); @@ -4070,7 +4162,7 @@ } if ((fd = get_sock_fd( s, 0, NULL )) == -1) return SOCKET_ERROR; if (ioctl(fd, FIONREAD, out_buff ) == -1) - status = (errno == EBADF) ? WSAENOTSOCK : wsaErrno(); + status = wsaErrno(); release_sock_fd( s, fd ); break; } @@ -4088,7 +4180,7 @@ /* SO_OOBINLINE sockets must always return TRUE to SIOCATMARK */ if ((getsockopt(fd, SOL_SOCKET, SO_OOBINLINE, &oob, &oobsize ) == -1) || (!oob && ioctl(fd, SIOCATMARK, &atmark ) == -1)) - status = (errno == EBADF) ? WSAENOTSOCK : wsaErrno(); + status = wsaErrno(); else { /* The SIOCATMARK value read from ioctl() is reversed @@ -4628,7 +4720,7 @@ } else { - release_sock_fd( readfds->fd_array[i], fds[j].fd ); + release_sock_fd( writefds->fd_array[i], fds[j].fd ); fds[j].fd = -1; fds[j].events = 0; } @@ -4653,7 +4745,7 @@ } else { - release_sock_fd( readfds->fd_array[i], fds[j].fd ); + release_sock_fd( exceptfds->fd_array[i], fds[j].fd ); fds[j].fd = -1; fds[j].events = 0; } @@ -4783,7 +4875,11 @@ } timeout = torig - (tv2.tv_sec * 1000) - (tv2.tv_usec + 999) / 1000; - if (timeout <= 0) break; + if (timeout <= 0) + { + ret = 0; + break; + } } else break; } release_poll_fds( ws_readfds, ws_writefds, ws_exceptfds, pollfds ); @@ -5366,10 +5462,10 @@ int WINAPI WS_shutdown(SOCKET s, int how) { int fd, err = WSAENOTSOCK; - unsigned int options, clear_flags = 0; + unsigned int options = 0, clear_flags = 0; fd = get_sock_fd( s, 0, &options ); - TRACE("socket %04lx, how %i %x\n", s, how, options ); + TRACE("socket %04lx, how 0x%x, options 0x%x\n", s, how, options ); if (fd == -1) return SOCKET_ERROR; @@ -5435,7 +5531,7 @@ { TRACE("af=%d type=%d protocol=%d\n", af, type, protocol); - return WSASocketA( af, type, protocol, NULL, 0, + return WSASocketW( af, type, protocol, NULL, 0, get_per_thread_data()->opentype ? 0 : WSA_FLAG_OVERLAPPED ); } diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/ws2_32/tests/sock.c wine-staging-1.7.41~ubuntu12.04.1/dlls/ws2_32/tests/sock.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/ws2_32/tests/sock.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/ws2_32/tests/sock.c 2015-04-18 23:36:02.000000000 +0000 @@ -1387,6 +1387,16 @@ err, WSAGetLastError()); closesocket(s); + /* Test with the closed socket */ + SetLastError(0xdeadbeef); + size = sizeof(i); + i = 1234; + err = getsockopt(s, SOL_SOCKET, SO_ERROR, (char *) &i, &size); +todo_wine + ok( (err == SOCKET_ERROR) && (WSAGetLastError() == WSAENOTSOCK), + "got %d with %d (expected SOCKET_ERROR with WSAENOTSOCK)\n", + err, WSAGetLastError()); + ok (i == 1234, "expected 1234, got %d\n", i); /* Test WS_IP_MULTICAST_TTL with 8, 16, 24 and 32 bits values */ s = socket(AF_INET, SOCK_DGRAM, 0); @@ -3368,6 +3378,14 @@ return 0; } +static DWORD WINAPI SelectCloseThread(void *param) +{ + SOCKET s = *(SOCKET*)param; + Sleep(500); + closesocket(s); + return 0; +} + static void test_errors(void) { SOCKET sock; @@ -3675,6 +3693,12 @@ select_timeout.tv_sec = 1; select_timeout.tv_usec = 250000; + /* When no events are pending select returns 0 with no error */ + FD_ZERO_ALL(); + FD_SET_ALL(fdListen); + ret = select(0, &readfds, &writefds, &exceptfds, &select_timeout); + ok(ret == 0, "expected 0, got %d\n", ret); + /* When a socket is attempting to connect the listening socket receives the read descriptor */ fdWrite = setup_connector_socket(&address, len, TRUE); FD_ZERO_ALL(); @@ -3695,6 +3719,10 @@ ok(ret == 2, "expected 2, got %d\n", ret); ok(FD_ISSET(fdWrite, &writefds), "fdWrite socket is not in the set\n"); ok(FD_ISSET(fdRead, &writefds), "fdRead socket is not in the set\n"); + len = sizeof(id); + id = 0xdeadbeef; + ok(!getsockopt(fdWrite, SOL_SOCKET, SO_ERROR, (char*)&id, &len), "getsockopt failed with %d\n",WSAGetLastError()); + ok(id == 0, "expected 0, got %d\n", id); /* When data is received the receiver gets the read descriptor */ ret = send(fdWrite, "1234", 4, 0); @@ -3767,6 +3795,7 @@ ok(ret == 0, "expected 0, got %d\n", ret); ret = closesocket(fdListen); ok(ret == 0, "expected 0, got %d\n", ret); + len = sizeof(address); fdWrite = setup_connector_socket(&address, len, TRUE); FD_ZERO_ALL(); FD_SET(fdWrite, &writefds); @@ -3774,9 +3803,56 @@ select_timeout.tv_sec = 2; /* requires more time to realize it will not connect */ ret = select(0, &readfds, &writefds, &exceptfds, &select_timeout); ok(ret == 1, "expected 1, got %d\n", ret); + len = sizeof(id); + id = 0xdeadbeef; + ok(!getsockopt(fdWrite, SOL_SOCKET, SO_ERROR, (char*)&id, &len), "getsockopt failed with %d\n",WSAGetLastError()); + ok(id == WSAECONNREFUSED, "expected 10061, got %d\n", id); ok(FD_ISSET(fdWrite, &exceptfds), "fdWrite socket is not in the set\n"); ok(select_timeout.tv_usec == 250000, "select timeout should not have changed\n"); closesocket(fdWrite); + + /* Try select() on a closed socket after connection */ + ok(!tcp_socketpair(&fdRead, &fdWrite), "creating socket pair failed\n"); + closesocket(fdRead); + FD_ZERO_ALL(); + FD_SET_ALL(fdWrite); + FD_SET_ALL(fdRead); + SetLastError(0xdeadbeef); + ret = select(0, &readfds, NULL, &exceptfds, &select_timeout); + ok(ret == SOCKET_ERROR, "expected 1, got %d\n", ret); +todo_wine + ok(GetLastError() == WSAENOTSOCK, "expected 10038, got %d\n", GetLastError()); + /* descriptor sets are unchanged */ + ok(readfds.fd_count == 2, "expected 2, got %d\n", readfds.fd_count); + ok(exceptfds.fd_count == 2, "expected 2, got %d\n", exceptfds.fd_count); + closesocket(fdWrite); + + /* Close the socket currently being selected in a thread - bug 38399 */ + ok(!tcp_socketpair(&fdRead, &fdWrite), "creating socket pair failed\n"); + thread_handle = CreateThread(NULL, 0, SelectCloseThread, &fdWrite, 0, &id); + ok(thread_handle != NULL, "CreateThread failed unexpectedly: %d\n", GetLastError()); + FD_ZERO_ALL(); + FD_SET_ALL(fdWrite); + ret = select(0, &readfds, NULL, &exceptfds, &select_timeout); +todo_wine + ok(ret == 1, "expected 1, got %d\n", ret); + ok(FD_ISSET(fdWrite, &readfds), "fdWrite socket is not in the set\n"); + WaitForSingleObject (thread_handle, 1000); + closesocket(fdRead); + /* test again with only the except descriptor */ + ok(!tcp_socketpair(&fdRead, &fdWrite), "creating socket pair failed\n"); + thread_handle = CreateThread(NULL, 0, SelectCloseThread, &fdWrite, 0, &id); + ok(thread_handle != NULL, "CreateThread failed unexpectedly: %d\n", GetLastError()); + FD_ZERO_ALL(); + FD_SET(fdWrite, &exceptfds); + SetLastError(0xdeadbeef); + ret = select(0, NULL, NULL, &exceptfds, &select_timeout); +todo_wine + ok(ret == SOCKET_ERROR, "expected 1, got %d\n", ret); +todo_wine + ok(GetLastError() == WSAENOTSOCK, "expected 10038, got %d\n", GetLastError()); + WaitForSingleObject (thread_handle, 1000); + closesocket(fdRead); } #undef FD_SET_ALL #undef FD_ZERO_ALL @@ -4150,6 +4226,7 @@ int sa_get_len = sa_set_len; static const unsigned char null_padding[] = {0,0,0,0,0,0,0,0}; int ret; + struct hostent *h; if(WSAStartup(MAKEWORD(2,0), &wsa)){ trace("Winsock failed: %d. Aborting test\n", WSAGetLastError()); @@ -4197,6 +4274,38 @@ "getsockname did not zero the sockaddr_in structure\n"); closesocket(sock); + + h = gethostbyname(""); + if (h && h->h_length == 4) /* this test is only meaningful in IPv4 */ + { + int i; + for (i = 0; h->h_addr_list[i]; i++) + { + char ipstr[32]; + struct in_addr ip; + ip.s_addr = *(ULONG *) h->h_addr_list[i]; + + sock = socket(AF_INET, SOCK_DGRAM, 0); + ok(sock != INVALID_SOCKET, "socket failed with %d\n", GetLastError()); + + memset(&sa_set, 0, sizeof(sa_set)); + sa_set.sin_family = AF_INET; + sa_set.sin_addr.s_addr = ip.s_addr; + /* The same address we bind must be the same address we get */ + ret = bind(sock, (struct sockaddr*)&sa_set, sizeof(sa_set)); + ok(ret == 0, "bind failed with %d\n", GetLastError()); + sa_get_len = sizeof(sa_get); + ret = getsockname(sock, (struct sockaddr*)&sa_get, &sa_get_len); + ok(ret == 0, "getsockname failed with %d\n", GetLastError()); + strcpy(ipstr, inet_ntoa(sa_get.sin_addr)); + trace("testing bind on interface %s\n", ipstr); + ok(sa_get.sin_addr.s_addr == sa_set.sin_addr.s_addr, + "address does not match: %s != %s", ipstr, inet_ntoa(sa_set.sin_addr)); + + closesocket(sock); + } + } + WSACleanup(); } diff -Nru wine-staging-1.7.40~ubuntu12.04.1/dlls/wshom.ocx/tests/wshom.c wine-staging-1.7.41~ubuntu12.04.1/dlls/wshom.ocx/tests/wshom.c --- wine-staging-1.7.40~ubuntu12.04.1/dlls/wshom.ocx/tests/wshom.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/dlls/wshom.ocx/tests/wshom.c 2015-04-18 23:36:02.000000000 +0000 @@ -406,6 +406,7 @@ hr = IWshShell3_RegRead(sh3, name, &value); ok(hr == S_OK, "got 0x%08x\n", hr); ok(V_VT(&value) == (VT_ARRAY|VT_VARIANT), "got 0x%x\n", V_VT(&value)); + SysFreeString(name); dim = SafeArrayGetDim(V_ARRAY(&value)); ok(dim == 1, "got %u\n", dim); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/include/control.idl wine-staging-1.7.41~ubuntu12.04.1/include/control.idl --- wine-staging-1.7.40~ubuntu12.04.1/include/control.idl 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/include/control.idl 2015-04-18 23:36:02.000000000 +0000 @@ -69,9 +69,9 @@ interface IBasicAudio : IDispatch { [propput] HRESULT Volume( [in] LONG lVolume ); - [propget] HRESULT Volume( [out] LONG *plVolume ); + [propget] HRESULT Volume( [out, retval] LONG *plVolume ); [propput] HRESULT Balance( [in] LONG lBalance ); - [propget] HRESULT Balance( [out] LONG *plBalance ); + [propget] HRESULT Balance( [out, retval] LONG *plBalance ); } @@ -86,34 +86,34 @@ interface IVideoWindow : IDispatch { [propput] HRESULT Caption( [in] BSTR strCaption ); - [propget] HRESULT Caption( [out] BSTR *strCaption ); + [propget] HRESULT Caption( [out, retval] BSTR *strCaption ); [propput] HRESULT WindowStyle( [in] LONG WindowStyle ); - [propget] HRESULT WindowStyle( [out] LONG *WindowStyle ); + [propget] HRESULT WindowStyle( [out, retval] LONG *WindowStyle ); [propput] HRESULT WindowStyleEx( [in] LONG WindowStyleEx ); - [propget] HRESULT WindowStyleEx( [out] LONG *WindowStyleEx ); + [propget] HRESULT WindowStyleEx( [out, retval] LONG *WindowStyleEx ); [propput] HRESULT AutoShow( [in] LONG AutoShow ); - [propget] HRESULT AutoShow( [out] LONG *AutoShow ); + [propget] HRESULT AutoShow( [out, retval] LONG *AutoShow ); [propput] HRESULT WindowState( [in] LONG WindowState ); - [propget] HRESULT WindowState( [out] LONG *WindowState ); + [propget] HRESULT WindowState( [out, retval] LONG *WindowState ); [propput] HRESULT BackgroundPalette( [in] LONG BackgroundPalette ); - [propget] HRESULT BackgroundPalette( [out] LONG *pBackgroundPalette ); + [propget] HRESULT BackgroundPalette( [out, retval] LONG *pBackgroundPalette ); [propput] HRESULT Visible( [in] LONG Visible ); - [propget] HRESULT Visible( [out] LONG *pVisible ); + [propget] HRESULT Visible( [out, retval] LONG *pVisible ); [propput] HRESULT Left( [in] LONG Left ); - [propget] HRESULT Left( [out] LONG *pLeft ); + [propget] HRESULT Left( [out, retval] LONG *pLeft ); [propput] HRESULT Width( [in] LONG Width ); - [propget] HRESULT Width( [out] LONG *pWidth ); + [propget] HRESULT Width( [out, retval] LONG *pWidth ); [propput] HRESULT Top( [in] LONG Top ); - [propget] HRESULT Top( [out] LONG *pTop ); + [propget] HRESULT Top( [out, retval] LONG *pTop ); [propput] HRESULT Height( [in] LONG Height ); - [propget] HRESULT Height( [out] LONG *pHeight ); + [propget] HRESULT Height( [out, retval] LONG *pHeight ); [propput] HRESULT Owner( [in] OAHWND Owner ); - [propget] HRESULT Owner( [out] OAHWND *Owner ); + [propget] HRESULT Owner( [out, retval] OAHWND *Owner ); [propput] HRESULT MessageDrain( [in] OAHWND Drain ); - [propget] HRESULT MessageDrain( [out] OAHWND *Drain ); - [propget] HRESULT BorderColor( [out] LONG *Color ); + [propget] HRESULT MessageDrain( [out, retval] OAHWND *Drain ); + [propget] HRESULT BorderColor( [out, retval] LONG *Color ); [propput] HRESULT BorderColor( [in] LONG Color ); - [propget] HRESULT FullScreenMode( [out] LONG *FullScreenMode ); + [propget] HRESULT FullScreenMode( [out, retval] LONG *FullScreenMode ); [propput] HRESULT FullScreenMode( [in] LONG FullScreenMode ); HRESULT SetWindowForeground( [in] LONG Focus ); HRESULT NotifyOwnerMessage( [in] OAHWND hwnd, [in] LONG uMsg, [in] LONG_PTR wParam, [in] LONG_PTR lParam ); @@ -137,27 +137,27 @@ ] interface IBasicVideo : IDispatch { - [propget] HRESULT AvgTimePerFrame( [out] REFTIME *pAvgTimePerFrame ); - [propget] HRESULT BitRate( [out] LONG *pBitRate ); - [propget] HRESULT BitErrorRate( [out] LONG *pBitErrorRate ); - [propget] HRESULT VideoWidth( [out] LONG *pVideoWidth ); - [propget] HRESULT VideoHeight( [out] LONG *pVideoHeight ); + [propget] HRESULT AvgTimePerFrame( [out, retval] REFTIME *pAvgTimePerFrame ); + [propget] HRESULT BitRate( [out, retval] LONG *pBitRate ); + [propget] HRESULT BitErrorRate( [out, retval] LONG *pBitErrorRate ); + [propget] HRESULT VideoWidth( [out, retval] LONG *pVideoWidth ); + [propget] HRESULT VideoHeight( [out, retval] LONG *pVideoHeight ); [propput] HRESULT SourceLeft( [in] LONG SourceLeft ); - [propget] HRESULT SourceLeft( [out] LONG *pSourceLeft ); + [propget] HRESULT SourceLeft( [out, retval] LONG *pSourceLeft ); [propput] HRESULT SourceWidth( [in] LONG SourceWidth ); - [propget] HRESULT SourceWidth( [out] LONG *pSourceWidth ); + [propget] HRESULT SourceWidth( [out, retval] LONG *pSourceWidth ); [propput] HRESULT SourceTop( [in] LONG SourceTop ); - [propget] HRESULT SourceTop( [out] LONG *pSourceTop ); + [propget] HRESULT SourceTop( [out, retval] LONG *pSourceTop ); [propput] HRESULT SourceHeight( [in] LONG SourceHeight ); - [propget] HRESULT SourceHeight( [out] LONG *pSourceHeight ); + [propget] HRESULT SourceHeight( [out, retval] LONG *pSourceHeight ); [propput] HRESULT DestinationLeft( [in] LONG DestinationLeft ); - [propget] HRESULT DestinationLeft( [out] LONG *pDestinationLeft ); + [propget] HRESULT DestinationLeft( [out, retval] LONG *pDestinationLeft ); [propput] HRESULT DestinationWidth( [in] LONG DestinationWidth ); - [propget] HRESULT DestinationWidth( [out] LONG *pDestinationWidth ); + [propget] HRESULT DestinationWidth( [out, retval] LONG *pDestinationWidth ); [propput] HRESULT DestinationTop( [in] LONG DestinationTop ); - [propget] HRESULT DestinationTop( [out] LONG *pDestinationTop ); + [propget] HRESULT DestinationTop( [out, retval] LONG *pDestinationTop ); [propput] HRESULT DestinationHeight( [in] LONG DestinationHeight ); - [propget] HRESULT DestinationHeight( [out] LONG *pDestinationHeight ); + [propget] HRESULT DestinationHeight( [out, retval] LONG *pDestinationHeight ); HRESULT SetSourcePosition( [in] LONG Left, [in] LONG Top, [in] LONG Width, [in] LONG Height ); HRESULT GetSourcePosition( [out] LONG *pLeft, [out] LONG *pTop, [out] LONG *pWidth, [out] LONG *pHeight ); HRESULT SetDefaultSourcePosition(); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/include/devicetopology.idl wine-staging-1.7.41~ubuntu12.04.1/include/devicetopology.idl --- wine-staging-1.7.40~ubuntu12.04.1/include/devicetopology.idl 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/include/devicetopology.idl 2015-04-18 23:36:02.000000000 +0000 @@ -350,7 +350,7 @@ [ pointer_default(unique), nonextensible, - uuid(bb515f69-94a7-429e-8b9c-271b3f11a3ab), + uuid(df45aeea-b74a-4b6b-afad-2366b6aa012e), local, object ] @@ -404,7 +404,7 @@ [ pointer_default(unique), nonextensible, - uuid(bb515f69-94a7-429e-8b9c-271b3f11a3ab), + uuid(85401fd4-6de4-4b9d-9869-2d6753a82f3c), local, object ] @@ -722,6 +722,7 @@ } [ + uuid(51b9a01d-8181-4363-b59c-e678f476dd0e), version(1.0) ] library DevTopologyLib diff -Nru wine-staging-1.7.40~ubuntu12.04.1/include/iptypes.h wine-staging-1.7.41~ubuntu12.04.1/include/iptypes.h --- wine-staging-1.7.40~ubuntu12.04.1/include/iptypes.h 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/include/iptypes.h 2015-04-18 23:36:02.000000000 +0000 @@ -188,6 +188,11 @@ typedef IP_ADAPTER_GATEWAY_ADDRESS_LH IP_ADAPTER_GATEWAY_ADDRESS; typedef IP_ADAPTER_GATEWAY_ADDRESS_LH *PIP_ADAPTER_GATEWAY_ADDRESS; +typedef struct _IP_ADAPTER_DNS_SUFFIX { + struct _IP_ADAPTER_DNS_SUFFIX *Next; + WCHAR String[MAX_DNS_SUFFIX_STRING_LENGTH]; +} IP_ADAPTER_DNS_SUFFIX, *PIP_ADAPTER_DNS_SUFFIX; + #define IP_ADAPTER_DDNS_ENABLED 0x1 #define IP_ADAPTER_REGISTER_ADAPTER_SUFFIX 0x2 #define IP_ADAPTER_DHCP_ENABLED 0x4 @@ -199,7 +204,7 @@ #define IP_ADAPTER_IPV6_ENABLED 0x100 #define IP_ADAPTER_IPV6_MANAGE_ADDRESS_CONFIG 0x200 -typedef struct _IP_ADAPTER_ADDRESSES { +typedef struct _IP_ADAPTER_ADDRESSES_LH { union { ULONGLONG Alignment; struct { @@ -207,7 +212,7 @@ DWORD IfIndex; } DUMMYSTRUCTNAME; } DUMMYUNIONNAME; - struct _IP_ADAPTER_ADDRESSES *Next; + struct _IP_ADAPTER_ADDRESSES_LH *Next; PCHAR AdapterName; PIP_ADAPTER_UNICAST_ADDRESS FirstUnicastAddress; PIP_ADAPTER_ANYCAST_ADDRESS FirstAnycastAddress; @@ -241,7 +246,39 @@ BYTE Dhcpv6ClientDuid[MAX_DHCPV6_DUID_LENGTH]; ULONG Dhcpv6ClientDuidLength; ULONG Dhcpv6Iaid; -} IP_ADAPTER_ADDRESSES, *PIP_ADAPTER_ADDRESSES; + PIP_ADAPTER_DNS_SUFFIX FirstDnsSuffix; +} IP_ADAPTER_ADDRESSES_LH, *PIP_ADAPTER_ADDRESSES_LH; + +typedef struct _IP_ADAPTER_ADDRESSES_XP { + union { + ULONGLONG Alignment; + struct { + ULONG Length; + DWORD IfIndex; + } DUMMYSTRUCTNAME; + } DUMMYUNIONNAME; + struct _IP_ADAPTER_ADDRESSES_XP *Next; + PCHAR AdapterName; + PIP_ADAPTER_UNICAST_ADDRESS FirstUnicastAddress; + PIP_ADAPTER_ANYCAST_ADDRESS FirstAnycastAddress; + PIP_ADAPTER_MULTICAST_ADDRESS FirstMulticastAddress; + PIP_ADAPTER_DNS_SERVER_ADDRESS FirstDnsServerAddress; + PWCHAR DnsSuffix; + PWCHAR Description; + PWCHAR FriendlyName; + BYTE PhysicalAddress[MAX_ADAPTER_ADDRESS_LENGTH]; + DWORD PhysicalAddressLength; + DWORD Flags; + DWORD Mtu; + DWORD IfType; + IF_OPER_STATUS OperStatus; + DWORD Ipv6IfIndex; + DWORD ZoneIndices[16]; + PIP_ADAPTER_PREFIX FirstPrefix; +} IP_ADAPTER_ADDRESSES_XP, *PIP_ADAPTER_ADDRESSES_XP; + +#define IP_ADAPTER_ADDRESSES IP_ADAPTER_ADDRESSES_LH +#define PIP_ADAPTER_ADDRESSES PIP_ADAPTER_ADDRESSES_LH #define GAA_FLAG_SKIP_UNICAST 0x00000001 #define GAA_FLAG_SKIP_ANYCAST 0x00000002 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/include/mshtml.idl wine-staging-1.7.41~ubuntu12.04.1/include/mshtml.idl --- wine-staging-1.7.40~ubuntu12.04.1/include/mshtml.idl 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/include/mshtml.idl 2015-04-18 23:36:02.000000000 +0000 @@ -26,6 +26,11 @@ import "shtypes.idl"; import "dispex.idl"; +#ifndef __WIDL__ +#define progid(str) +#define vi_progid(str) +#endif + cpp_quote("#include ") cpp_quote("DEFINE_GUID(SID_SEditCommandTarget, 0x3050f4b5,0x98b5,0x11cf,0xbb,0x82,0x00,0xaa,0x00,0xbd,0xce,0x0b);") @@ -6943,7 +6948,7 @@ [propput, id(DISPID_IHTMLLINKELEMENT_MEDIA), displaybind, bindable] HRESULT media([in] BSTR v); - [propget, id(DISPID_IHTMLLINKELEMENT_MEDIA), displaybind, bindable]\ + [propget, id(DISPID_IHTMLLINKELEMENT_MEDIA), displaybind, bindable] HRESULT media([out, retval] BSTR *p); } @@ -7922,7 +7927,7 @@ [ noncreatable, - uuid(3050F24D-98B5-11CF-BB82-00AA00BDCE0B) + uuid(3050F251-98B5-11CF-BB82-00AA00BDCE0B) ] coclass HTMLFormElement { @@ -10463,9 +10468,6 @@ methods: WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL; - [propget, id(DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] - IDispatch *constructor(); - [propget, id(DISPID_IHTMLBUTTONELEMENT_TYPE)] BSTR type(); @@ -14313,13 +14315,13 @@ HRESULT onstorage([in] VARIANT v); [propget, id(DISPID_IHTMLDOCUMENT6_ONSTORAGE), displaybind, bindable] - HRESULT onstorage([out] VARIANT *p); + HRESULT onstorage([retval, out] VARIANT *p); [propput, id(DISPID_IHTMLDOCUMENT6_ONSTORAGECOMMIT), displaybind, bindable] HRESULT onstoragecommit([in] VARIANT v); [propget, id(DISPID_IHTMLDOCUMENT6_ONSTORAGECOMMIT), displaybind, bindable] - HRESULT onstoragecommit([out] VARIANT *p); + HRESULT onstoragecommit([retval, out] VARIANT *p); [id(DISPID_IHTMLDOCUMENT6_IE8_GETELEMENTBYID)] HRESULT getElementById( diff -Nru wine-staging-1.7.40~ubuntu12.04.1/include/shdeprecated.idl wine-staging-1.7.41~ubuntu12.04.1/include/shdeprecated.idl --- wine-staging-1.7.40~ubuntu12.04.1/include/shdeprecated.idl 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/include/shdeprecated.idl 2015-04-18 23:36:02.000000000 +0000 @@ -400,8 +400,8 @@ LRESULT WndProcBS( [in] HWND hwnd, [in] UINT uMsg, - [in, out] WPARAM wParam, - [in, out] LPARAM lParam); + [in] WPARAM wParam, + [in] LPARAM lParam); HRESULT SetAsDefFolderSettings(); @@ -511,8 +511,8 @@ [in] HWND hwndBar, [in] BOOL fBroadcast, [in] UINT uMsg, - [in, out] WPARAM wParam, - [in, out] LPARAM lParam); + [in] WPARAM wParam, + [in] LPARAM lParam); HRESULT GetFolderSetData( [in, out] struct tagFolderSetData *pfsd); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/include/textstor.idl wine-staging-1.7.41~ubuntu12.04.1/include/textstor.idl --- wine-staging-1.7.40~ubuntu12.04.1/include/textstor.idl 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/include/textstor.idl 2015-04-18 23:36:02.000000000 +0000 @@ -66,6 +66,9 @@ const DWORD TS_ST_CORRECTION = 0x1; +const DWORD GXFPF_ROUND_NEAREST = 0x1; +const DWORD GXFPF_NEAREST = 0x2; + typedef [uuid(05fcf85b-5e9c-4c3e-ab71-29471d4f38e7)] enum { TS_AE_NONE, TS_AE_START, TS_AE_END } TsActiveSelEnd; typedef [uuid(033b0df0-f193-4170-b47b-141afc247878)] enum { TS_RT_PLAIN, TS_RT_HIDDEN, TS_RT_OPAQUE } TsRunType; typedef [uuid(ef3457d9-8446-49a7-a9e6-b50d9d5f3fd9)] GUID TS_ATTRID; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/include/uxtheme.h wine-staging-1.7.41~ubuntu12.04.1/include/uxtheme.h --- wine-staging-1.7.40~ubuntu12.04.1/include/uxtheme.h 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/include/uxtheme.h 2015-04-18 23:36:02.000000000 +0000 @@ -97,7 +97,8 @@ HRESULT WINAPI GetThemeFont(HTHEME,HDC,int,int,int,LOGFONTW*); HRESULT WINAPI GetThemeInt(HTHEME,int,int,int,int*); -#define MAX_INTLIST_COUNT 10 +/* MAX_INTLIST_COUNT was 10 before Vista */ +#define MAX_INTLIST_COUNT 402 typedef struct _INTLIST { int iValueCount; int iValues[MAX_INTLIST_COUNT]; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/include/winbase.h wine-staging-1.7.41~ubuntu12.04.1/include/winbase.h --- wine-staging-1.7.40~ubuntu12.04.1/include/winbase.h 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/include/winbase.h 2015-04-18 23:36:02.000000000 +0000 @@ -865,6 +865,12 @@ DWORD BatteryFullLifeTime; } SYSTEM_POWER_STATUS, *LPSYSTEM_POWER_STATUS; +typedef enum _POWER_REQUEST_TYPE +{ + PowerRequestDisplayRequired, + PowerRequestSystemRequired, + PowerRequestAwayModeRequired +} POWER_REQUEST_TYPE, *PPOWER_REQUEST_TYPE; typedef struct _SYSTEM_INFO { diff -Nru wine-staging-1.7.40~ubuntu12.04.1/include/wincodecsdk.idl wine-staging-1.7.41~ubuntu12.04.1/include/wincodecsdk.idl --- wine-staging-1.7.40~ubuntu12.04.1/include/wincodecsdk.idl 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/include/wincodecsdk.idl 2015-04-18 23:36:02.000000000 +0000 @@ -37,6 +37,7 @@ } WICMetadataCreationOptions; cpp_quote("DEFINE_GUID(GUID_MetadataFormatUnknown, 0xa45e592f,0x9078,0x4a7c,0xad,0xb5,0x4e,0xdc,0x4f,0xd6,0x1b,0x1f);") +cpp_quote("DEFINE_GUID(GUID_MetadataFormatChunkgAMA, 0xf00935a5,0x1d5d,0x4cd1,0x81,0xb2,0x93,0x24,0xd7,0xec,0xa7,0x81);") cpp_quote("DEFINE_GUID(GUID_MetadataFormatChunktEXt, 0x568d8936,0xc0a9,0x4923,0x90,0x5d,0xdf,0x2b,0x38,0x23,0x8f,0xbc);") cpp_quote("DEFINE_GUID(GUID_MetadataFormatChunktIME, 0x6b00ae2d,0xe24b,0x460a,0x98,0xb6,0x87,0x8b,0xd0,0x30,0x72,0xfd);") cpp_quote("DEFINE_GUID(GUID_MetadataFormatIfd, 0x537396c6,0x2d8a,0x4bb6,0x9b,0xf8,0x2f,0x0a,0x8e,0x2a,0x3a,0xdf);") @@ -51,6 +52,7 @@ cpp_quote("DEFINE_GUID(CLSID_WICUnknownMetadataReader, 0x699745c2,0x5066,0x4b82,0xa8,0xe3,0xd4,0x04,0x78,0xdb,0xec,0x8c);") cpp_quote("DEFINE_GUID(CLSID_WICUnknownMetadataWriter, 0xa09cca86,0x27ba,0x4f39,0x90,0x53,0x12,0x1f,0xa4,0xdc,0x08,0xfc);") +cpp_quote("DEFINE_GUID(CLSID_WICPngGamaMetadataReader, 0x3692ca39,0xe082,0x4350,0x9e,0x1f,0x37,0x04,0xcb,0x08,0x3c,0xd5);") cpp_quote("DEFINE_GUID(CLSID_WICPngTextMetadataReader, 0x4b59afcc,0xb8c3,0x408a,0xb6,0x70,0x89,0xe5,0xfa,0xb6,0xfd,0xa7);") cpp_quote("DEFINE_GUID(CLSID_WICPngTextMetadataWriter, 0xb5ebafb9,0x253e,0x4a72,0xa7,0x44,0x07,0x62,0xd2,0x68,0x56,0x83);") cpp_quote("DEFINE_GUID(CLSID_WICIfdMetadataReader, 0x8f914656,0x9d0a,0x4eb2,0x90,0x19,0x0b,0xf9,0x6d,0x8a,0x9e,0xe6);") diff -Nru wine-staging-1.7.40~ubuntu12.04.1/include/wine/server_protocol.h wine-staging-1.7.41~ubuntu12.04.1/include/wine/server_protocol.h --- wine-staging-1.7.40~ubuntu12.04.1/include/wine/server_protocol.h 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/include/wine/server_protocol.h 2015-04-18 23:36:02.000000000 +0000 @@ -5156,6 +5156,20 @@ }; + +struct terminate_job_request +{ + struct request_header __header; + obj_handle_t handle; + int status; + char __pad_20[4]; +}; +struct terminate_job_reply +{ + struct reply_header __header; +}; + + enum request { REQ_new_process, @@ -5419,6 +5433,7 @@ REQ_process_in_job, REQ_set_job_limits, REQ_set_job_completion_port, + REQ_terminate_job, REQ_NB_REQUESTS }; @@ -5687,6 +5702,7 @@ struct process_in_job_request process_in_job_request; struct set_job_limits_request set_job_limits_request; struct set_job_completion_port_request set_job_completion_port_request; + struct terminate_job_request terminate_job_request; }; union generic_reply { @@ -5953,8 +5969,9 @@ struct process_in_job_reply process_in_job_reply; struct set_job_limits_reply set_job_limits_reply; struct set_job_completion_port_reply set_job_completion_port_reply; + struct terminate_job_reply terminate_job_reply; }; -#define SERVER_PROTOCOL_VERSION 466 +#define SERVER_PROTOCOL_VERSION 467 #endif /* __WINE_WINE_SERVER_PROTOCOL_H */ diff -Nru wine-staging-1.7.40~ubuntu12.04.1/include/wine/test.h wine-staging-1.7.41~ubuntu12.04.1/include/wine/test.h --- wine-staging-1.7.40~ubuntu12.04.1/include/wine/test.h 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/include/wine/test.h 2015-04-18 23:36:02.000000000 +0000 @@ -618,6 +618,14 @@ return EXCEPTION_EXECUTE_HANDLER; } +/* check if we're running under wine */ +static BOOL running_under_wine(void) +{ + HMODULE module = GetModuleHandleA( "ntdll.dll" ); + if (!module) return FALSE; + return (GetProcAddress( module, "wine_server_call" ) != NULL); +} + #ifdef __GNUC__ void _fpreset(void) {} /* override the mingw fpu init code */ #endif @@ -632,7 +640,11 @@ winetest_argc = argc; winetest_argv = argv; - if (GetEnvironmentVariableA( "WINETEST_PLATFORM", p, sizeof(p) )) winetest_platform = strdup(p); + if (GetEnvironmentVariableA( "WINETEST_PLATFORM", p, sizeof(p) )) + winetest_platform = strdup(p); + else if (running_under_wine()) + winetest_platform = "wine"; + if (GetEnvironmentVariableA( "WINETEST_DEBUG", p, sizeof(p) )) winetest_debug = atoi(p); if (GetEnvironmentVariableA( "WINETEST_INTERACTIVE", p, sizeof(p) )) winetest_interactive = atoi(p); if (GetEnvironmentVariableA( "WINETEST_REPORT_SUCCESS", p, sizeof(p) )) report_success = atoi(p); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/include/wingdi.h wine-staging-1.7.41~ubuntu12.04.1/include/wingdi.h --- wine-staging-1.7.40~ubuntu12.04.1/include/wingdi.h 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/include/wingdi.h 2015-04-18 23:36:02.000000000 +0000 @@ -3470,12 +3470,14 @@ WINGDIAPI BOOL WINAPI GdiComment(HDC,UINT,const BYTE *); WINGDIAPI DEVMODEW * WINAPI GdiConvertToDevmodeW(const DEVMODEA *); WINGDIAPI BOOL WINAPI GdiFlush(void); +WINGDIAPI DWORD WINAPI GdiGetBatchLimit(void); WINGDIAPI LONG WINAPI GdiGetCharDimensions(HDC, LPTEXTMETRICW, LONG *); WINGDIAPI DWORD WINAPI GdiGetCodePage(HDC); WINGDIAPI BOOL WINAPI GdiGradientFill(HDC,PTRIVERTEX,ULONG,PVOID,ULONG,ULONG); WINGDIAPI BOOL WINAPI GdiIsMetaFileDC(HDC); WINGDIAPI BOOL WINAPI GdiIsMetaPrintDC(HDC); WINGDIAPI BOOL WINAPI GdiIsPlayMetafileDC(HDC); +WINGDIAPI DWORD WINAPI GdiSetBatchLimit(DWORD); WINGDIAPI BOOL WINAPI GdiTransparentBlt(HDC,int,int,int,int,HDC,int,int,int,int,UINT); WINGDIAPI INT WINAPI GetArcDirection(HDC); WINGDIAPI BOOL WINAPI GetAspectRatioFilterEx(HDC,LPSIZE); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/include/winioctl.h wine-staging-1.7.41~ubuntu12.04.1/include/winioctl.h --- wine-staging-1.7.40~ubuntu12.04.1/include/winioctl.h 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/include/winioctl.h 2015-04-18 23:36:02.000000000 +0000 @@ -439,6 +439,20 @@ WCHAR FileSystemName[1]; } FILE_FS_ATTRIBUTE_INFORMATION, *PFILE_FS_ATTRIBUTE_INFORMATION; +/*FileFsControlInformation = 6 */ +/* + unknown + */ + +/*FileFsFullSizeInformation = 7 */ +typedef struct _FILE_FS_FULL_SIZE_INFORMATION { + LARGE_INTEGER TotalAllocationUnits; + LARGE_INTEGER CallerAvailableAllocationUnits; + LARGE_INTEGER ActualAvailableAllocationUnits; + ULONG SectorsPerAllocationUnit; + ULONG BytesPerSector; +} FILE_FS_FULL_SIZE_INFORMATION, *PFILE_FS_FULL_SIZE_INFORMATION; + typedef struct _FILE_PIPE_WAIT_FOR_BUFFER { LARGE_INTEGER Timeout; ULONG NameLength; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/include/winnls.h wine-staging-1.7.41~ubuntu12.04.1/include/winnls.h --- wine-staging-1.7.40~ubuntu12.04.1/include/winnls.h 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/include/winnls.h 2015-04-18 23:36:02.000000000 +0000 @@ -574,6 +574,36 @@ #define IDN_ALLOW_UNASSIGNED 0x1 #define IDN_USE_STD3_ASCII_RULES 0x2 +/* MUI defines. */ +#define MUI_LANGUAGE_ID 0x04 +#define MUI_LANGUAGE_NAME 0x08 +#define MUI_MERGE_SYSTEM_FALLBACK 0x10 +#define MUI_MERGE_USER_FALLBACK 0x20 +#define MUI_UI_FALLBACK MUI_MERGE_SYSTEM_FALLBACK | MUI_MERGE_USER_FALLBACK +#define MUI_THREAD_LANGUAGES 0x40 +#define MUI_CONSOLE_FILTER 0x100 +#define MUI_COMPLEX_SCRIPT_FILTER 0x200 +#define MUI_RESET_FILTERS 0x001 +#define MUI_USER_PREFERRED_UI_LANGUAGES 0x10 +#define MUI_USE_INSTALLED_LANGUAGES 0x20 +#define MUI_USE_SEARCH_ALL_LANGUAGES 0x40 +#define MUI_LANG_NEUTRAL_PE_FILE 0x100 +#define MUI_NON_LANG_NEUTRAL_FILE 0x200 +#define MUI_MACHINE_LANGUAGE_SETTINGS 0x400 +#define MUI_FILETYPE_NOT_LANGUAGE_NEUTRAL 0x001 +#define MUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN 0x002 +#define MUI_FILETYPE_LANGUAGE_NEUTRAL_MUI 0x004 +#define MUI_QUERY_TYPE 0x001 +#define MUI_QUERY_CHECKSUM 0x002 +#define MUI_QUERY_LANGUAGE_NAME 0x004 +#define MUI_QUERY_RESOURCE_TYPES 0x008 +#define MUI_FILEINFO_VERSION 0x001 +#define MUI_FULL_LANGUAGE 0x01 +#define MUI_PARTIAL_LANGUAGE 0x02 +#define MUI_LIP_LANGUAGE 0x04 +#define MUI_LANGUAGE_INSTALLED 0x20 +#define MUI_LANGUAGE_LICENSED 0x40 + /* Types */ diff -Nru wine-staging-1.7.40~ubuntu12.04.1/include/winnt.h wine-staging-1.7.41~ubuntu12.04.1/include/winnt.h --- wine-staging-1.7.40~ubuntu12.04.1/include/winnt.h 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/include/winnt.h 2015-04-18 23:36:02.000000000 +0000 @@ -4445,6 +4445,7 @@ #define ACCESS_DENIED_ACE_TYPE 1 #define SYSTEM_AUDIT_ACE_TYPE 2 #define SYSTEM_ALARM_ACE_TYPE 3 +#define SYSTEM_MANDATORY_LABEL_ACE_TYPE 0x11 /* inherit AceFlags */ #define OBJECT_INHERIT_ACE 0x01 @@ -4489,6 +4490,16 @@ DWORD SidStart; } SYSTEM_ALARM_ACE,*PSYSTEM_ALARM_ACE; +typedef struct _SYSTEM_MANDATORY_LABEL_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} SYSTEM_MANDATORY_LABEL_ACE,*PSYSTEM_MANDATORY_LABEL_ACE; + +#define SYSTEM_MANDATORY_LABEL_NO_WRITE_UP 0x1 +#define SYSTEM_MANDATORY_LABEL_NO_READ_UP 0x2 +#define SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP 0x4 + typedef enum tagSID_NAME_USE { SidTypeUser = 1, SidTypeGroup, diff -Nru wine-staging-1.7.40~ubuntu12.04.1/include/winuser.h wine-staging-1.7.41~ubuntu12.04.1/include/winuser.h --- wine-staging-1.7.40~ubuntu12.04.1/include/winuser.h 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/include/winuser.h 2015-04-18 23:36:02.000000000 +0000 @@ -982,6 +982,7 @@ #define SM_SERVERR2 89 #define SM_CMETRICS 90 #define SM_MOUSEHORIZONTALWHEELPRESENT 91 +#define SM_CXPADDEDBORDER 92 #define SM_REMOTESESSION 0x1000 #define SM_SHUTTINGDOWN 0x2000 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/include/wmsdkidl.idl wine-staging-1.7.41~ubuntu12.04.1/include/wmsdkidl.idl --- wine-staging-1.7.40~ubuntu12.04.1/include/wmsdkidl.idl 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/include/wmsdkidl.idl 2015-04-18 23:36:02.000000000 +0000 @@ -1017,6 +1017,7 @@ } cpp_quote("HRESULT WINAPI WMCreateWriter(IUnknown*,IWMWriter**);") +cpp_quote("HRESULT WINAPI WMCreateReader(IUnknown*,DWORD,IWMReader**);") cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_Base, 0x00000000,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") cpp_quote("EXTERN_GUID(WMMEDIATYPE_Video, 0x73646976,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/advapi32-LsaLookupSids/0001-advapi32-Initialize-buffer-length-to-zero-in-LsaLook.patch wine-staging-1.7.41~ubuntu12.04.1/patches/advapi32-LsaLookupSids/0001-advapi32-Initialize-buffer-length-to-zero-in-LsaLook.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/advapi32-LsaLookupSids/0001-advapi32-Initialize-buffer-length-to-zero-in-LsaLook.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/advapi32-LsaLookupSids/0001-advapi32-Initialize-buffer-length-to-zero-in-LsaLook.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,31 @@ +From be28c746d013c16fa6c2e50f5f9debc45d39d81b Mon Sep 17 00:00:00 2001 +From: Qian Hong +Date: Tue, 7 Apr 2015 13:18:31 +0800 +Subject: advapi32: Initialize buffer length to zero in LsaLookupSids to + prevent crash. (try 2) + +Superseded 110588-110594 + +Try 2: +- Use RtlInitUnicodeStringEx to simplify code when possible. Same for +other patches in this series. (Thanks Nikolay) +--- + dlls/advapi32/lsa.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/dlls/advapi32/lsa.c b/dlls/advapi32/lsa.c +index 2a8b791..69c29c5 100644 +--- a/dlls/advapi32/lsa.c ++++ b/dlls/advapi32/lsa.c +@@ -502,7 +502,7 @@ NTSTATUS WINAPI LsaLookupSids( + { + (*Names)[i].Use = SidTypeUnknown; + (*Names)[i].DomainIndex = -1; +- (*Names)[i].Name.Buffer = NULL; ++ RtlInitUnicodeStringEx(&(*Names)[i].Name, NULL); + + memset(&(*ReferencedDomains)->Domains[i], 0, sizeof(LSA_TRUST_INFORMATION)); + +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/advapi32-LsaLookupSids/0002-advapi32-Prepend-a-hidden-LSA_TRUST_INFORMATION-in-L.patch wine-staging-1.7.41~ubuntu12.04.1/patches/advapi32-LsaLookupSids/0002-advapi32-Prepend-a-hidden-LSA_TRUST_INFORMATION-in-L.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/advapi32-LsaLookupSids/0002-advapi32-Prepend-a-hidden-LSA_TRUST_INFORMATION-in-L.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/advapi32-LsaLookupSids/0002-advapi32-Prepend-a-hidden-LSA_TRUST_INFORMATION-in-L.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,47 @@ +From 246cb6b72666dcb77fb2f553d318d7dabbe8811d Mon Sep 17 00:00:00 2001 +From: Qian Hong +Date: Tue, 7 Apr 2015 13:18:47 +0800 +Subject: advapi32: Prepend a hidden LSA_TRUST_INFORMATION in LsaLookupSids to + avoid crash when Domains[-1] incorrectly accessed by application. (try 2) + +--- + dlls/advapi32/lsa.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +diff --git a/dlls/advapi32/lsa.c b/dlls/advapi32/lsa.c +index 69c29c5..dfe25b3 100644 +--- a/dlls/advapi32/lsa.c ++++ b/dlls/advapi32/lsa.c +@@ -488,14 +488,17 @@ NTSTATUS WINAPI LsaLookupSids( + if (!(*Names = heap_alloc(name_fullsize))) return STATUS_NO_MEMORY; + /* maximum count of stored domain infos is Count, allocate it like that cause really needed + count could only be computed after sid data is retrieved */ +- domain_fullsize = sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION)*Count; ++ domain_fullsize = sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION) * (Count + 1); + if (!(*ReferencedDomains = heap_alloc(domain_fullsize))) + { + heap_free(*Names); + return STATUS_NO_MEMORY; + } + (*ReferencedDomains)->Entries = 0; +- (*ReferencedDomains)->Domains = (LSA_TRUST_INFORMATION*)((char*)*ReferencedDomains + sizeof(LSA_REFERENCED_DOMAIN_LIST)); ++ (*ReferencedDomains)->Domains = (LSA_TRUST_INFORMATION*)((char*)*ReferencedDomains + ++ sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION)); ++ (*ReferencedDomains)->Domains[-1].Sid = NULL; ++ RtlInitUnicodeStringEx(&(*ReferencedDomains)->Domains[-1].Name, NULL); + + /* Get full names data length and full length needed to store domain name and SID */ + for (i = 0; i < Count; i++) +@@ -555,7 +558,8 @@ NTSTATUS WINAPI LsaLookupSids( + + *ReferencedDomains = heap_realloc(*ReferencedDomains, domain_fullsize); + /* fix pointer after reallocation */ +- (*ReferencedDomains)->Domains = (LSA_TRUST_INFORMATION*)((char*)*ReferencedDomains + sizeof(LSA_REFERENCED_DOMAIN_LIST)); ++ (*ReferencedDomains)->Domains = (LSA_TRUST_INFORMATION*)((char*)*ReferencedDomains + ++ sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION)); + domain_data = (char*)(*ReferencedDomains)->Domains + sizeof(LSA_TRUST_INFORMATION)*Count; + + mapped = 0; +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/advapi32-LsaLookupSids/0003-advapi32-Prepend-a-hidden-LSA_TRUST_INFORMATION-in-L.patch wine-staging-1.7.41~ubuntu12.04.1/patches/advapi32-LsaLookupSids/0003-advapi32-Prepend-a-hidden-LSA_TRUST_INFORMATION-in-L.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/advapi32-LsaLookupSids/0003-advapi32-Prepend-a-hidden-LSA_TRUST_INFORMATION-in-L.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/advapi32-LsaLookupSids/0003-advapi32-Prepend-a-hidden-LSA_TRUST_INFORMATION-in-L.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,39 @@ +From ce254ac3659e0c040136341d035629f99ec6d1ea Mon Sep 17 00:00:00 2001 +From: Qian Hong +Date: Tue, 7 Apr 2015 13:19:06 +0800 +Subject: advapi32: Prepend a hidden LSA_TRUST_INFORMATION in LsaLookupNames2 + to avoid crash when Domains[-1] incorrectly accessed by application. (try 2) + +--- + dlls/advapi32/lsa.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +diff --git a/dlls/advapi32/lsa.c b/dlls/advapi32/lsa.c +index dfe25b3..258b8ca 100644 +--- a/dlls/advapi32/lsa.c ++++ b/dlls/advapi32/lsa.c +@@ -404,14 +404,18 @@ NTSTATUS WINAPI LsaLookupNames2( LSA_HANDLE policy, ULONG flags, ULONG count, + sid = (SID *)(*sids + count); + + /* use maximum domain count */ +- if (!(*domains = heap_alloc(sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION)*count + +- sid_size_total + domainname_size_total*sizeof(WCHAR)))) ++ if (!(*domains = heap_alloc(sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION) * (count + 1) + ++ sid_size_total + domainname_size_total * sizeof(WCHAR)))) + { + heap_free(*sids); + return STATUS_NO_MEMORY; + } + (*domains)->Entries = 0; +- (*domains)->Domains = (LSA_TRUST_INFORMATION*)((char*)*domains + sizeof(LSA_REFERENCED_DOMAIN_LIST)); ++ (*domains)->Domains = (LSA_TRUST_INFORMATION*)((char*)*domains + ++ sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION)); ++ (*domains)->Domains[-1].Sid = NULL; ++ RtlInitUnicodeStringEx(&(*domains)->Domains[-1].Name, NULL); ++ + domain_data = (char*)(*domains)->Domains + sizeof(LSA_TRUST_INFORMATION)*count; + + domain.Buffer = heap_alloc(domain_size_max*sizeof(WCHAR)); +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/advapi32-LsaLookupSids/0004-advapi32-Fallback-to-Sid-string-when-LookupAccountSi.patch wine-staging-1.7.41~ubuntu12.04.1/patches/advapi32-LsaLookupSids/0004-advapi32-Fallback-to-Sid-string-when-LookupAccountSi.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/advapi32-LsaLookupSids/0004-advapi32-Fallback-to-Sid-string-when-LookupAccountSi.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/advapi32-LsaLookupSids/0004-advapi32-Fallback-to-Sid-string-when-LookupAccountSi.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,67 @@ +From 9a19e77a0334f91e370e73099066484f20b24321 Mon Sep 17 00:00:00 2001 +From: Qian Hong +Date: Tue, 7 Apr 2015 11:23:34 +0800 +Subject: advapi32: Fallback to Sid string when LookupAccountSid fails. + +--- + dlls/advapi32/lsa.c | 30 ++++++++++++++++++++++++++++++ + 1 file changed, 30 insertions(+) + +diff --git a/dlls/advapi32/lsa.c b/dlls/advapi32/lsa.c +index 258b8ca..2b2c6b6 100644 +--- a/dlls/advapi32/lsa.c ++++ b/dlls/advapi32/lsa.c +@@ -29,6 +29,7 @@ + #include "winbase.h" + #include "winreg.h" + #include "winternl.h" ++#include "sddl.h" + #include "advapi32_misc.h" + + #include "wine/debug.h" +@@ -554,6 +555,21 @@ NTSTATUS WINAPI LsaLookupSids( + heap_free(name); + } + } ++ else ++ { ++ WCHAR *strsid = NULL; ++ ++ if (ConvertSidToStringSidW(Sids[i], &strsid)) ++ { ++ name_size = strlenW(strsid) + 1; ++ ++ (*Names)[i].Name.Length = (name_size - 1) * sizeof(WCHAR); ++ (*Names)[i].Name.MaximumLength = name_size * sizeof(WCHAR); ++ name_fullsize += (*Names)[i].Name.MaximumLength; ++ ++ LocalFree(strsid); ++ } ++ } + } + + /* now we have full length needed for both */ +@@ -593,6 +609,20 @@ NTSTATUS WINAPI LsaLookupSids( + heap_free(domain.Buffer); + } + } ++ else ++ { ++ WCHAR *strsid = NULL; ++ ++ if (ConvertSidToStringSidW(Sids[i], &strsid)) ++ { ++ name_size = strlenW(strsid) + 1; ++ ++ (*Names)[i].Name.Buffer = name_buffer; ++ memcpy((*Names)[i].Name.Buffer, strsid, name_size * sizeof(WCHAR)); ++ ++ LocalFree(strsid); ++ } ++ } + + name_buffer += name_size; + } +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/advapi32-Revert_DACL/0001-Revert-advapi32-Add-DACL-inheritance-support-in-SetS.patch wine-staging-1.7.41~ubuntu12.04.1/patches/advapi32-Revert_DACL/0001-Revert-advapi32-Add-DACL-inheritance-support-in-SetS.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/advapi32-Revert_DACL/0001-Revert-advapi32-Add-DACL-inheritance-support-in-SetS.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/advapi32-Revert_DACL/0001-Revert-advapi32-Add-DACL-inheritance-support-in-SetS.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,216 +0,0 @@ -From e498b901443fffeb344b2dcc4627da4b520f0af9 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Fri, 27 Mar 2015 15:32:04 +0100 -Subject: Revert "advapi32: Add DACL inheritance support in SetSecurityInfo." - -This reverts commit f974d726720eff4fcd7371bca95e6cdcc4b4a848. ---- - dlls/advapi32/security.c | 130 +---------------------------------------- - dlls/advapi32/tests/security.c | 23 ++++---- - 2 files changed, 14 insertions(+), 139 deletions(-) - -diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c -index 2cd3f74..e8cdcc5 100644 ---- a/dlls/advapi32/security.c -+++ b/dlls/advapi32/security.c -@@ -4052,8 +4052,6 @@ DWORD WINAPI SetNamedSecurityInfoW(LPWSTR pObjectName, - } - break; - case SE_FILE_OBJECT: -- if (SecurityInfo & DACL_SECURITY_INFORMATION) -- access |= READ_CONTROL; - if (!(err = get_security_file( pObjectName, access, &handle ))) - { - err = SetSecurityInfo( handle, ObjectType, SecurityInfo, psidOwner, psidGroup, pDacl, pSacl ); -@@ -5731,7 +5729,6 @@ DWORD WINAPI SetSecurityInfo(HANDLE handle, SE_OBJECT_TYPE ObjectType, - PSID psidGroup, PACL pDacl, PACL pSacl) - { - SECURITY_DESCRIPTOR sd; -- PACL dacl = pDacl; - NTSTATUS status; - - if (!InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION)) -@@ -5742,130 +5739,7 @@ DWORD WINAPI SetSecurityInfo(HANDLE handle, SE_OBJECT_TYPE ObjectType, - if (SecurityInfo & GROUP_SECURITY_INFORMATION) - SetSecurityDescriptorGroup(&sd, psidGroup, FALSE); - if (SecurityInfo & DACL_SECURITY_INFORMATION) -- { -- if (ObjectType == SE_FILE_OBJECT && pDacl) -- { -- SECURITY_DESCRIPTOR_CONTROL control; -- PSECURITY_DESCRIPTOR psd; -- OBJECT_NAME_INFORMATION *name_info; -- DWORD size, rev; -- -- status = NtQuerySecurityObject(handle, SecurityInfo, NULL, 0, &size); -- if (status != STATUS_BUFFER_TOO_SMALL) -- return RtlNtStatusToDosError(status); -- -- psd = heap_alloc(size); -- if (!psd) -- return ERROR_NOT_ENOUGH_MEMORY; -- -- status = NtQuerySecurityObject(handle, SecurityInfo, psd, size, &size); -- if (status) -- { -- heap_free(psd); -- return RtlNtStatusToDosError(status); -- } -- -- status = RtlGetControlSecurityDescriptor(psd, &control, &rev); -- heap_free(psd); -- if (status) -- return RtlNtStatusToDosError(status); -- /* TODO: copy some control flags to new sd */ -- -- /* inherit parent directory DACL */ -- if (!(control & SE_DACL_PROTECTED)) -- { -- status = NtQueryObject(handle, ObjectNameInformation, NULL, 0, &size); -- if (status != STATUS_INFO_LENGTH_MISMATCH) -- return RtlNtStatusToDosError(status); -- -- name_info = heap_alloc(size); -- if (!name_info) -- return ERROR_NOT_ENOUGH_MEMORY; -- -- status = NtQueryObject(handle, ObjectNameInformation, name_info, size, NULL); -- if (status) -- { -- heap_free(name_info); -- return RtlNtStatusToDosError(status); -- } -- -- for (name_info->Name.Length-=2; name_info->Name.Length>0; name_info->Name.Length-=2) -- if (name_info->Name.Buffer[name_info->Name.Length/2-1]=='\\' || -- name_info->Name.Buffer[name_info->Name.Length/2-1]=='/') -- break; -- if (name_info->Name.Length) -- { -- OBJECT_ATTRIBUTES attr; -- IO_STATUS_BLOCK io; -- HANDLE parent; -- PSECURITY_DESCRIPTOR parent_sd; -- ACL *parent_dacl; -- DWORD err = ERROR_ACCESS_DENIED; -- -- name_info->Name.Buffer[name_info->Name.Length/2] = 0; -- -- attr.Length = sizeof(attr); -- attr.RootDirectory = 0; -- attr.Attributes = 0; -- attr.ObjectName = &name_info->Name; -- attr.SecurityDescriptor = NULL; -- status = NtOpenFile(&parent, READ_CONTROL, &attr, &io, -- FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE, -- FILE_OPEN_FOR_BACKUP_INTENT); -- heap_free(name_info); -- if (!status) -- { -- err = GetSecurityInfo(parent, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, -- NULL, NULL, &parent_dacl, NULL, &parent_sd); -- CloseHandle(parent); -- } -- -- if (!err) -- { -- int i; -- -- dacl = heap_alloc_zero(pDacl->AclSize+parent_dacl->AclSize); -- if (!dacl) -- { -- LocalFree(parent_sd); -- return ERROR_NOT_ENOUGH_MEMORY; -- } -- memcpy(dacl, pDacl, pDacl->AclSize); -- dacl->AclSize = pDacl->AclSize+parent_dacl->AclSize; -- -- for (i=0; iAceCount; i++) -- { -- ACE_HEADER *ace; -- -- if (!GetAce(parent_dacl, i, (void*)&ace)) -- continue; -- if (!(ace->AceFlags & (OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE))) -- continue; -- if ((ace->AceFlags & (OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE)) != -- (OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE)) -- { -- FIXME("unsupported flags: %x\n", ace->AceFlags); -- continue; -- } -- -- if (ace->AceFlags & NO_PROPAGATE_INHERIT_ACE) -- ace->AceFlags &= ~(OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE|NO_PROPAGATE_INHERIT_ACE); -- ace->AceFlags &= ~INHERIT_ONLY_ACE; -- ace->AceFlags |= INHERITED_ACE; -- -- if(!AddAce(dacl, ACL_REVISION, MAXDWORD, ace, ace->AceSize)) -- WARN("error adding inherited ACE\n"); -- } -- LocalFree(parent_sd); -- } -- } -- else -- heap_free(name_info); -- } -- } -- -- SetSecurityDescriptorDacl(&sd, TRUE, dacl, FALSE); -- } -+ SetSecurityDescriptorDacl(&sd, TRUE, pDacl, FALSE); - if (SecurityInfo & SACL_SECURITY_INFORMATION) - SetSecurityDescriptorSacl(&sd, TRUE, pSacl, FALSE); - -@@ -5879,8 +5753,6 @@ DWORD WINAPI SetSecurityInfo(HANDLE handle, SE_OBJECT_TYPE ObjectType, - status = NtSetSecurityObject(handle, SecurityInfo, &sd); - break; - } -- if (dacl != pDacl) -- heap_free(dacl); - return RtlNtStatusToDosError(status); - } - -diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c -index 466100d..53fd643 100644 ---- a/dlls/advapi32/tests/security.c -+++ b/dlls/advapi32/tests/security.c -@@ -3615,22 +3615,25 @@ static void test_GetNamedSecurityInfoA(void) - - error = pGetNamedSecurityInfoA(tmpfile, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, - NULL, NULL, &pDacl, NULL, &pSD); -- ok(!error, "GetNamedSecurityInfo failed with error %d\n", error); -+ todo_wine ok(!error, "GetNamedSecurityInfo failed with error %d\n", error); - -- bret = pGetAclInformation(pDacl, &acl_size, sizeof(acl_size), AclSizeInformation); -- ok(bret, "GetAclInformation failed\n"); -- if (acl_size.AceCount > 0) -+ if (!error) - { -- bret = pGetAce(pDacl, 0, (VOID **)&ace); -- ok(bret, "Failed to get ACE.\n"); -- todo_wine ok(((ACE_HEADER *)ace)->AceFlags & INHERITED_ACE, -- "ACE has unexpected flags: 0x%x\n", ((ACE_HEADER *)ace)->AceFlags); -+ bret = pGetAclInformation(pDacl, &acl_size, sizeof(acl_size), AclSizeInformation); -+ ok(bret, "GetAclInformation failed\n"); -+ if (acl_size.AceCount > 0) -+ { -+ bret = pGetAce(pDacl, 0, (VOID **)&ace); -+ ok(bret, "Failed to get ACE.\n"); -+ ok(((ACE_HEADER *)ace)->AceFlags & INHERITED_ACE, -+ "ACE has unexpected flags: 0x%x\n", ((ACE_HEADER *)ace)->AceFlags); -+ } -+ LocalFree(pSD); - } -- LocalFree(pSD); - - h = CreateFileA(tmpfile, GENERIC_READ, FILE_SHARE_DELETE|FILE_SHARE_WRITE|FILE_SHARE_READ, - NULL, OPEN_EXISTING, 0, NULL); -- ok(h != INVALID_HANDLE_VALUE, "CreateFile error %d\n", GetLastError()); -+ todo_wine ok(h != INVALID_HANDLE_VALUE, "CreateFile error %d\n", GetLastError()); - CloseHandle(h); - - /* test setting NULL DACL */ --- -2.3.3 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/advapi32-Revert_DACL/0002-Revert-advapi32-tests-Add-test-for-mapping-DACL-to-p.patch wine-staging-1.7.41~ubuntu12.04.1/patches/advapi32-Revert_DACL/0002-Revert-advapi32-tests-Add-test-for-mapping-DACL-to-p.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/advapi32-Revert_DACL/0002-Revert-advapi32-tests-Add-test-for-mapping-DACL-to-p.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/advapi32-Revert_DACL/0002-Revert-advapi32-tests-Add-test-for-mapping-DACL-to-p.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,75 +0,0 @@ -From eb05c44d59763b99851106cac937107f4c101639 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Fri, 27 Mar 2015 15:32:17 +0100 -Subject: Revert "advapi32/tests: Add test for mapping DACL to permission." - -This reverts commit a4b12eb9f937202848b229ed15f2c7d1823b41da. ---- - dlls/advapi32/tests/security.c | 36 ++---------------------------------- - 1 file changed, 2 insertions(+), 34 deletions(-) - -diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c -index a12fb7b..91d8600 100644 ---- a/dlls/advapi32/tests/security.c -+++ b/dlls/advapi32/tests/security.c -@@ -3405,6 +3405,7 @@ static void test_GetNamedSecurityInfoA(void) - "Administators Group ACE has unexpected mask (0x%x != 0x1f01ff)\n", ace->Mask); - } - LocalFree(pSD); -+ HeapFree(GetProcessHeap(), 0, user); - - /* show that setting empty DACL is not removing all file permissions */ - pDacl = HeapAlloc(GetProcessHeap(), 0, sizeof(ACL)); -@@ -3441,7 +3442,7 @@ static void test_GetNamedSecurityInfoA(void) - /* NtSetSecurityObject doesn't inherit DACL entries */ - pSD = sd+sizeof(void*)-((ULONG_PTR)sd)%sizeof(void*); - InitializeSecurityDescriptor(pSD, SECURITY_DESCRIPTOR_REVISION); -- pDacl = HeapAlloc(GetProcessHeap(), 0, 100); -+ pDacl = HeapAlloc(GetProcessHeap(), 0, sizeof(ACL)); - bret = InitializeAcl(pDacl, sizeof(ACL), ACL_REVISION); - ok(bret, "Failed to initialize ACL.\n"); - bret = SetSecurityDescriptorDacl(pSD, TRUE, pDacl, FALSE); -@@ -3472,40 +3473,7 @@ static void test_GetNamedSecurityInfoA(void) - NULL, OPEN_EXISTING, 0, NULL); - ok(h == INVALID_HANDLE_VALUE, "CreateFile error %d\n", GetLastError()); - CloseHandle(h); -- -- /* test if DACL is properly mapped to permission */ -- bret = InitializeAcl(pDacl, 100, ACL_REVISION); -- ok(bret, "Failed to initialize ACL.\n"); -- bret = pAddAccessAllowedAceEx(pDacl, ACL_REVISION, 0, GENERIC_ALL, user_sid); -- ok(bret, "Failed to add Current User to ACL.\n"); -- bret = pAddAccessDeniedAceEx(pDacl, ACL_REVISION, 0, GENERIC_ALL, user_sid); -- ok(bret, "Failed to add Current User to ACL.\n"); -- bret = SetSecurityDescriptorDacl(pSD, TRUE, pDacl, FALSE); -- ok(bret, "Failed to add ACL to security desciptor.\n"); -- status = pNtSetSecurityObject(hTemp, DACL_SECURITY_INFORMATION, pSD); -- ok(status == ERROR_SUCCESS, "NtSetSecurityObject returned %x\n", status); -- -- h = CreateFileA(tmpfile, GENERIC_READ, FILE_SHARE_DELETE|FILE_SHARE_WRITE|FILE_SHARE_READ, -- NULL, OPEN_EXISTING, 0, NULL); -- ok(h != INVALID_HANDLE_VALUE, "CreateFile error %d\n", GetLastError()); -- CloseHandle(h); -- -- bret = InitializeAcl(pDacl, 100, ACL_REVISION); -- ok(bret, "Failed to initialize ACL.\n"); -- bret = pAddAccessDeniedAceEx(pDacl, ACL_REVISION, 0, GENERIC_ALL, user_sid); -- ok(bret, "Failed to add Current User to ACL.\n"); -- bret = pAddAccessAllowedAceEx(pDacl, ACL_REVISION, 0, GENERIC_ALL, user_sid); -- ok(bret, "Failed to add Current User to ACL.\n"); -- bret = SetSecurityDescriptorDacl(pSD, TRUE, pDacl, FALSE); -- ok(bret, "Failed to add ACL to security desciptor.\n"); -- status = pNtSetSecurityObject(hTemp, DACL_SECURITY_INFORMATION, pSD); -- ok(status == ERROR_SUCCESS, "NtSetSecurityObject returned %x\n", status); -- -- h = CreateFileA(tmpfile, GENERIC_READ, FILE_SHARE_DELETE|FILE_SHARE_WRITE|FILE_SHARE_READ, -- NULL, OPEN_EXISTING, 0, NULL); -- ok(h == INVALID_HANDLE_VALUE, "CreateFile error %d\n", GetLastError()); - HeapFree(GetProcessHeap(), 0, pDacl); -- HeapFree(GetProcessHeap(), 0, user); - CloseHandle(hTemp); - - /* Test querying the ownership of a built-in registry key */ --- -2.3.3 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/advapi32-Revert_DACL/0003-Revert-advapi32-Add-SetNamedSecurityInfo-test-with-e.patch wine-staging-1.7.41~ubuntu12.04.1/patches/advapi32-Revert_DACL/0003-Revert-advapi32-Add-SetNamedSecurityInfo-test-with-e.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/advapi32-Revert_DACL/0003-Revert-advapi32-Add-SetNamedSecurityInfo-test-with-e.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/advapi32-Revert_DACL/0003-Revert-advapi32-Add-SetNamedSecurityInfo-test-with-e.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,158 +0,0 @@ -From 0e64055fbe7f17de05328353457b93f720ef3bb7 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Fri, 27 Mar 2015 15:32:32 +0100 -Subject: Revert "advapi32: Add SetNamedSecurityInfo test with empty DACL." - -This reverts commit 02c4f5bd275d70d1dcb48bf95775efa376b50c22. ---- - dlls/advapi32/tests/security.c | 95 ++---------------------------------------- - 1 file changed, 4 insertions(+), 91 deletions(-) - -diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c -index 00dd9e8..b19dbe8 100644 ---- a/dlls/advapi32/tests/security.c -+++ b/dlls/advapi32/tests/security.c -@@ -125,7 +125,6 @@ static BOOL (WINAPI *pCreateRestrictedToken)(HANDLE, DWORD, DWORD, PSID_AND_ATTR - PLUID_AND_ATTRIBUTES, DWORD, PSID_AND_ATTRIBUTES, PHANDLE); - static BOOL (WINAPI *pGetAclInformation)(PACL,LPVOID,DWORD,ACL_INFORMATION_CLASS); - static BOOL (WINAPI *pGetAce)(PACL,DWORD,LPVOID*); --static NTSTATUS (WINAPI *pNtSetSecurityObject)(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR); - static NTSTATUS (WINAPI *pNtCreateFile)(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,PLARGE_INTEGER,ULONG,ULONG,ULONG,ULONG,PVOID,ULONG); - static BOOL (WINAPI *pRtlDosPathNameToNtPathName_U)(LPCWSTR,PUNICODE_STRING,PWSTR*,CURDIR*); - static NTSTATUS (WINAPI *pRtlAnsiStringToUnicodeString)(PUNICODE_STRING,PCANSI_STRING,BOOLEAN); -@@ -155,7 +154,6 @@ static void init(void) - hntdll = GetModuleHandleA("ntdll.dll"); - pNtQueryObject = (void *)GetProcAddress( hntdll, "NtQueryObject" ); - pNtAccessCheck = (void *)GetProcAddress( hntdll, "NtAccessCheck" ); -- pNtSetSecurityObject = (void *)GetProcAddress(hntdll, "NtSetSecurityObject"); - pNtCreateFile = (void *)GetProcAddress(hntdll, "NtCreateFile"); - pRtlDosPathNameToNtPathName_U = (void *)GetProcAddress(hntdll, "RtlDosPathNameToNtPathName_U"); - pRtlAnsiStringToUnicodeString = (void *)GetProcAddress(hntdll, "RtlAnsiStringToUnicodeString"); -@@ -3429,7 +3427,7 @@ static void test_GetNamedSecurityInfoA(void) - char invalid_path[] = "/an invalid file path"; - int users_ace_id = -1, admins_ace_id = -1, i; - char software_key[] = "MACHINE\\Software"; -- char sd[SECURITY_DESCRIPTOR_MIN_LENGTH+sizeof(void*)]; -+ char sd[SECURITY_DESCRIPTOR_MIN_LENGTH]; - SECURITY_DESCRIPTOR_CONTROL control; - ACL_SIZE_INFORMATION acl_size; - CHAR windows_dir[MAX_PATH]; -@@ -3441,12 +3439,11 @@ static void test_GetNamedSecurityInfoA(void) - BOOL owner_defaulted; - BOOL group_defaulted; - BOOL dacl_defaulted; -- HANDLE token, hTemp, h; -+ HANDLE token, hTemp; - PSID owner, group; - BOOL dacl_present; - PACL pDacl; - BYTE flags; -- NTSTATUS status; - - if (!pSetNamedSecurityInfoA || !pGetNamedSecurityInfoA || !pCreateWellKnownSid) - { -@@ -3551,8 +3548,8 @@ static void test_GetNamedSecurityInfoA(void) - bret = SetSecurityDescriptorDacl(pSD, TRUE, pDacl, FALSE); - ok(bret, "Failed to add ACL to security desciptor.\n"); - GetTempFileNameA(".", "foo", 0, tmpfile); -- hTemp = CreateFileA(tmpfile, WRITE_DAC|GENERIC_WRITE, FILE_SHARE_DELETE|FILE_SHARE_READ, -- NULL, OPEN_EXISTING, FILE_FLAG_DELETE_ON_CLOSE, NULL); -+ hTemp = CreateFileA(tmpfile, GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, -+ FILE_FLAG_DELETE_ON_CLOSE, NULL); - SetLastError(0xdeadbeef); - error = pSetNamedSecurityInfoA(tmpfile, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NULL, - NULL, pDacl, NULL); -@@ -3604,90 +3601,6 @@ static void test_GetNamedSecurityInfoA(void) - } - LocalFree(pSD); - HeapFree(GetProcessHeap(), 0, user); -- -- /* show that setting empty DACL is not removing all file permissions */ -- pDacl = HeapAlloc(GetProcessHeap(), 0, sizeof(ACL)); -- bret = InitializeAcl(pDacl, sizeof(ACL), ACL_REVISION); -- ok(bret, "Failed to initialize ACL.\n"); -- error = pSetNamedSecurityInfoA(tmpfile, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, -- NULL, NULL, pDacl, NULL); -- ok(!error, "SetNamedSecurityInfoA failed with error %d\n", error); -- HeapFree(GetProcessHeap(), 0, pDacl); -- -- error = pGetNamedSecurityInfoA(tmpfile, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, -- NULL, NULL, &pDacl, NULL, &pSD); -- todo_wine ok(!error, "GetNamedSecurityInfo failed with error %d\n", error); -- -- if (!error) -- { -- bret = pGetAclInformation(pDacl, &acl_size, sizeof(acl_size), AclSizeInformation); -- ok(bret, "GetAclInformation failed\n"); -- if (acl_size.AceCount > 0) -- { -- bret = pGetAce(pDacl, 0, (VOID **)&ace); -- ok(bret, "Failed to get ACE.\n"); -- ok(((ACE_HEADER *)ace)->AceFlags & INHERITED_ACE, -- "ACE has unexpected flags: 0x%x\n", ((ACE_HEADER *)ace)->AceFlags); -- } -- LocalFree(pSD); -- } -- -- h = CreateFileA(tmpfile, GENERIC_READ, FILE_SHARE_DELETE|FILE_SHARE_WRITE|FILE_SHARE_READ, -- NULL, OPEN_EXISTING, 0, NULL); -- todo_wine ok(h != INVALID_HANDLE_VALUE, "CreateFile error %d\n", GetLastError()); -- CloseHandle(h); -- -- /* test setting NULL DACL */ -- error = pSetNamedSecurityInfoA(tmpfile, SE_FILE_OBJECT, -- DACL_SECURITY_INFORMATION, NULL, NULL, NULL, NULL); -- ok(!error, "SetNamedSecurityInfoA failed with error %d\n", error); -- -- error = pGetNamedSecurityInfoA(tmpfile, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, -- NULL, NULL, &pDacl, NULL, &pSD); -- ok(!error, "GetNamedSecurityInfo failed with error %d\n", error); -- todo_wine ok(!pDacl, "pDacl != NULL\n"); -- LocalFree(pSD); -- -- h = CreateFileA(tmpfile, GENERIC_READ, FILE_SHARE_DELETE|FILE_SHARE_WRITE|FILE_SHARE_READ, -- NULL, OPEN_EXISTING, 0, NULL); -- ok(h != INVALID_HANDLE_VALUE, "CreateFile error %d\n", GetLastError()); -- CloseHandle(h); -- -- /* NtSetSecurityObject doesn't inherit DACL entries */ -- pSD = sd+sizeof(void*)-((ULONG_PTR)sd)%sizeof(void*); -- InitializeSecurityDescriptor(pSD, SECURITY_DESCRIPTOR_REVISION); -- pDacl = HeapAlloc(GetProcessHeap(), 0, sizeof(ACL)); -- bret = InitializeAcl(pDacl, sizeof(ACL), ACL_REVISION); -- ok(bret, "Failed to initialize ACL.\n"); -- bret = SetSecurityDescriptorDacl(pSD, TRUE, pDacl, FALSE); -- ok(bret, "Failed to add ACL to security desciptor.\n"); -- status = pNtSetSecurityObject(hTemp, DACL_SECURITY_INFORMATION, pSD); -- ok(status == ERROR_SUCCESS, "NtSetSecurityObject returned %x\n", status); -- -- h = CreateFileA(tmpfile, GENERIC_READ, FILE_SHARE_DELETE|FILE_SHARE_WRITE|FILE_SHARE_READ, -- NULL, OPEN_EXISTING, 0, NULL); -- ok(h == INVALID_HANDLE_VALUE, "CreateFile error %d\n", GetLastError()); -- CloseHandle(h); -- -- pSetSecurityDescriptorControl(pSD, SE_DACL_AUTO_INHERIT_REQ, SE_DACL_AUTO_INHERIT_REQ); -- status = pNtSetSecurityObject(hTemp, DACL_SECURITY_INFORMATION, pSD); -- ok(status == ERROR_SUCCESS, "NtSetSecurityObject returned %x\n", status); -- -- h = CreateFileA(tmpfile, GENERIC_READ, FILE_SHARE_DELETE|FILE_SHARE_WRITE|FILE_SHARE_READ, -- NULL, OPEN_EXISTING, 0, NULL); -- ok(h == INVALID_HANDLE_VALUE, "CreateFile error %d\n", GetLastError()); -- CloseHandle(h); -- -- pSetSecurityDescriptorControl(pSD, SE_DACL_AUTO_INHERIT_REQ|SE_DACL_AUTO_INHERITED, -- SE_DACL_AUTO_INHERIT_REQ|SE_DACL_AUTO_INHERITED); -- status = pNtSetSecurityObject(hTemp, DACL_SECURITY_INFORMATION, pSD); -- ok(status == ERROR_SUCCESS, "NtSetSecurityObject returned %x\n", status); -- -- h = CreateFileA(tmpfile, GENERIC_READ, FILE_SHARE_DELETE|FILE_SHARE_WRITE|FILE_SHARE_READ, -- NULL, OPEN_EXISTING, 0, NULL); -- ok(h == INVALID_HANDLE_VALUE, "CreateFile error %d\n", GetLastError()); -- CloseHandle(h); -- HeapFree(GetProcessHeap(), 0, pDacl); - CloseHandle(hTemp); - - /* Test querying the ownership of a built-in registry key */ --- -2.3.3 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/advapi32-Revert_DACL/0004-Revert-server-Make-directory-DACL-entries-inheritabl.patch wine-staging-1.7.41~ubuntu12.04.1/patches/advapi32-Revert_DACL/0004-Revert-server-Make-directory-DACL-entries-inheritabl.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/advapi32-Revert_DACL/0004-Revert-server-Make-directory-DACL-entries-inheritabl.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/advapi32-Revert_DACL/0004-Revert-server-Make-directory-DACL-entries-inheritabl.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,67 +0,0 @@ -From 41ffec5994a45a7f18cd77e98d8cf7bedecfd9a4 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Fri, 27 Mar 2015 15:32:44 +0100 -Subject: Revert "server: Make directory DACL entries inheritable." - -This reverts commit 3eb448cf33b6b6635bac4e06ea7fddd190e26450. ---- - dlls/advapi32/tests/security.c | 2 +- - server/file.c | 8 ++++---- - 2 files changed, 5 insertions(+), 5 deletions(-) - -diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c -index b19dbe8..a757c22 100644 ---- a/dlls/advapi32/tests/security.c -+++ b/dlls/advapi32/tests/security.c -@@ -3262,7 +3262,7 @@ static void test_CreateDirectoryA(void) - } - ok(!error, "GetNamedSecurityInfo failed with error %d\n", error); - test_inherited_dacl(pDacl, admin_sid, user_sid, OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE, -- 0x1f01ff, FALSE, TRUE, FALSE, __LINE__); -+ 0x1f01ff, FALSE, TRUE, TRUE, __LINE__); - LocalFree(pSD); - - /* Test inheritance of ACLs in CreateFile without security descriptor */ -diff --git a/server/file.c b/server/file.c -index aa5ff01..c8c880b 100644 ---- a/server/file.c -+++ b/server/file.c -@@ -367,7 +367,7 @@ struct security_descriptor *mode_to_sd( mode_t mode, const SID *user, const SID - aaa = (ACCESS_ALLOWED_ACE *)(dacl + 1); - current_ace = &aaa->Header; - aaa->Header.AceType = ACCESS_ALLOWED_ACE_TYPE; -- aaa->Header.AceFlags = (mode & S_IFDIR) ? OBJECT_INHERIT_ACE | CONTAINER_INHERIT_ACE : 0; -+ aaa->Header.AceFlags = 0; - aaa->Header.AceSize = FIELD_OFFSET(ACCESS_ALLOWED_ACE, SidStart) + security_sid_len( local_system_sid ); - aaa->Mask = FILE_ALL_ACCESS; - sid = (SID *)&aaa->SidStart; -@@ -379,7 +379,7 @@ struct security_descriptor *mode_to_sd( mode_t mode, const SID *user, const SID - aaa = (ACCESS_ALLOWED_ACE *)ace_next( current_ace ); - current_ace = &aaa->Header; - aaa->Header.AceType = ACCESS_ALLOWED_ACE_TYPE; -- aaa->Header.AceFlags = (mode & S_IFDIR) ? OBJECT_INHERIT_ACE | CONTAINER_INHERIT_ACE : 0; -+ aaa->Header.AceFlags = 0; - aaa->Header.AceSize = FIELD_OFFSET(ACCESS_ALLOWED_ACE, SidStart) + security_sid_len( user ); - aaa->Mask = WRITE_DAC | WRITE_OWNER; - if (mode & S_IRUSR) -@@ -397,7 +397,7 @@ struct security_descriptor *mode_to_sd( mode_t mode, const SID *user, const SID - ACCESS_DENIED_ACE *ada = (ACCESS_DENIED_ACE *)ace_next( current_ace ); - current_ace = &ada->Header; - ada->Header.AceType = ACCESS_DENIED_ACE_TYPE; -- ada->Header.AceFlags = (mode & S_IFDIR) ? OBJECT_INHERIT_ACE | CONTAINER_INHERIT_ACE : 0; -+ ada->Header.AceFlags = 0; - ada->Header.AceSize = FIELD_OFFSET(ACCESS_DENIED_ACE, SidStart) + security_sid_len( user ); - ada->Mask = 0; - if (!(mode & S_IRUSR) && (mode & (S_IRGRP|S_IROTH))) -@@ -414,7 +414,7 @@ struct security_descriptor *mode_to_sd( mode_t mode, const SID *user, const SID - aaa = (ACCESS_ALLOWED_ACE *)ace_next( current_ace ); - current_ace = &aaa->Header; - aaa->Header.AceType = ACCESS_ALLOWED_ACE_TYPE; -- aaa->Header.AceFlags = (mode & S_IFDIR) ? OBJECT_INHERIT_ACE | CONTAINER_INHERIT_ACE : 0; -+ aaa->Header.AceFlags = 0; - aaa->Header.AceSize = FIELD_OFFSET(ACCESS_ALLOWED_ACE, SidStart) + security_sid_len( world_sid ); - aaa->Mask = 0; - if (mode & S_IROTH) --- -2.3.3 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/advapi32-Revert_DACL/0005-Revert-advapi-Don-t-use-CreateFile-when-opening-file.patch wine-staging-1.7.41~ubuntu12.04.1/patches/advapi32-Revert_DACL/0005-Revert-advapi-Don-t-use-CreateFile-when-opening-file.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/advapi32-Revert_DACL/0005-Revert-advapi-Don-t-use-CreateFile-when-opening-file.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/advapi32-Revert_DACL/0005-Revert-advapi-Don-t-use-CreateFile-when-opening-file.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,77 +0,0 @@ -From 59067deb0ad4afb77deca29300133bff9d49f9f7 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Fri, 27 Mar 2015 15:32:56 +0100 -Subject: Revert "advapi: Don't use CreateFile when opening file with possibly - empty DACL." - -This reverts commit f956bb4caa442ccde1ddaf483c5cb619bbf4049a. ---- - dlls/advapi32/security.c | 22 +++++++++------------- - 1 file changed, 9 insertions(+), 13 deletions(-) - -diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c -index e8cdcc5..097b0da 100644 ---- a/dlls/advapi32/security.c -+++ b/dlls/advapi32/security.c -@@ -397,7 +397,7 @@ static inline BOOL set_ntstatus( NTSTATUS status ) - } - - /* helper function for SE_FILE_OBJECT objects in [Get|Set]NamedSecurityInfo */ --static inline DWORD get_security_file( LPCWSTR full_file_name, DWORD access, HANDLE *file ) -+static inline DWORD get_security_file( LPWSTR full_file_name, DWORD access, HANDLE *file ) - { - UNICODE_STRING file_nameW; - OBJECT_ATTRIBUTES attr; -@@ -2029,7 +2029,7 @@ GetFileSecurityW( LPCWSTR lpFileName, - { - HANDLE hfile; - NTSTATUS status; -- DWORD access = 0, err; -+ DWORD access = 0; - - TRACE("(%s,%d,%p,%d,%p)\n", debugstr_w(lpFileName), - RequestedInformation, pSecurityDescriptor, -@@ -2041,12 +2041,10 @@ GetFileSecurityW( LPCWSTR lpFileName, - if (RequestedInformation & SACL_SECURITY_INFORMATION) - access |= ACCESS_SYSTEM_SECURITY; - -- err = get_security_file( lpFileName, access, &hfile); -- if (err) -- { -- SetLastError(err); -+ hfile = CreateFileW( lpFileName, access, FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE, -+ NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0 ); -+ if ( hfile == INVALID_HANDLE_VALUE ) - return FALSE; -- } - - status = NtQuerySecurityObject( hfile, RequestedInformation, pSecurityDescriptor, - nLength, lpnLengthNeeded ); -@@ -2327,7 +2325,7 @@ SetFileSecurityW( LPCWSTR lpFileName, - PSECURITY_DESCRIPTOR pSecurityDescriptor ) - { - HANDLE file; -- DWORD access = 0, err; -+ DWORD access = 0; - NTSTATUS status; - - TRACE("(%s, 0x%x, %p)\n", debugstr_w(lpFileName), RequestedInformation, -@@ -2341,12 +2339,10 @@ SetFileSecurityW( LPCWSTR lpFileName, - if (RequestedInformation & DACL_SECURITY_INFORMATION) - access |= WRITE_DAC; - -- err = get_security_file( lpFileName, access, &file); -- if (err) -- { -- SetLastError(err); -+ file = CreateFileW( lpFileName, access, FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE, -+ NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL ); -+ if (file == INVALID_HANDLE_VALUE) - return FALSE; -- } - - status = NtSetSecurityObject( file, RequestedInformation, pSecurityDescriptor ); - CloseHandle( file ); --- -2.3.3 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/Compiler_Warnings/0001-Appease-the-blessed-version-of-gcc-4.5-when-Werror-i.patch wine-staging-1.7.41~ubuntu12.04.1/patches/Compiler_Warnings/0001-Appease-the-blessed-version-of-gcc-4.5-when-Werror-i.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/Compiler_Warnings/0001-Appease-the-blessed-version-of-gcc-4.5-when-Werror-i.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/Compiler_Warnings/0001-Appease-the-blessed-version-of-gcc-4.5-when-Werror-i.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,81 @@ +From aa76ae0448583e87dbe7f374101eb5b20d55dea8 Mon Sep 17 00:00:00 2001 +From: "Erich E. Hoover" +Date: Fri, 8 Aug 2014 19:33:14 -0600 +Subject: Appease the blessed version of gcc (4.5) when -Werror is enabled. + +--- + dlls/d3d9/tests/visual.c | 2 +- + dlls/netapi32/netapi32.c | 2 +- + dlls/winealsa.drv/mmdevdrv.c | 2 +- + dlls/wined3d/glsl_shader.c | 2 +- + tools/makedep.c | 2 +- + 5 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c +index 0c10ffa..2f35992 100644 +--- a/dlls/d3d9/tests/visual.c ++++ b/dlls/d3d9/tests/visual.c +@@ -11161,7 +11161,7 @@ static void yuv_layout_test(void) + IDirect3D9 *d3d; + D3DCOLOR color; + DWORD ref_color; +- BYTE *buf, *chroma_buf, *u_buf, *v_buf; ++ BYTE *buf, *chroma_buf, *u_buf = NULL, *v_buf = NULL; + UINT width = 20, height = 16; + IDirect3DDevice9 *device; + ULONG refcount; +diff --git a/dlls/netapi32/netapi32.c b/dlls/netapi32/netapi32.c +index d2a61fa..bb7ac1c 100644 +--- a/dlls/netapi32/netapi32.c ++++ b/dlls/netapi32/netapi32.c +@@ -779,7 +779,7 @@ static NET_API_STATUS share_info_to_samba( DWORD level, const BYTE *buf, unsigne + static NET_API_STATUS share_add( LMSTR servername, DWORD level, LPBYTE buf, LPDWORD parm_err ) + { + char *server = NULL; +- unsigned char *info; ++ unsigned char *info = NULL; + NET_API_STATUS status; + + if (servername && !(server = strdup_unixcp( servername ))) return ERROR_OUTOFMEMORY; +diff --git a/dlls/winealsa.drv/mmdevdrv.c b/dlls/winealsa.drv/mmdevdrv.c +index e32cb54..ddf972d 100644 +--- a/dlls/winealsa.drv/mmdevdrv.c ++++ b/dlls/winealsa.drv/mmdevdrv.c +@@ -359,7 +359,7 @@ static WCHAR *construct_device_id(EDataFlow flow, const WCHAR *chunk1, const cha + { + WCHAR *ret; + const WCHAR *prefix; +- DWORD len_wchars = 0, chunk1_len, copied = 0, prefix_len; ++ DWORD len_wchars = 0, chunk1_len = 0, copied = 0, prefix_len; + + static const WCHAR dashW[] = {' ','-',' ',0}; + static const size_t dashW_len = (sizeof(dashW) / sizeof(*dashW)) - 1; +diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c +index f3e921c..fa64436 100644 +--- a/dlls/wined3d/glsl_shader.c ++++ b/dlls/wined3d/glsl_shader.c +@@ -5834,7 +5834,7 @@ static void set_glsl_shader_program(const struct wined3d_context *context, const + GLuint vs_id = 0; + GLuint gs_id = 0; + GLuint ps_id = 0; +- struct list *ps_list, *vs_list; ++ struct list *ps_list = NULL, *vs_list = NULL; + + if (!(context->shader_update_mask & (1 << WINED3D_SHADER_TYPE_VERTEX))) + { +diff --git a/tools/makedep.c b/tools/makedep.c +index 54aab45..103422e 100644 +--- a/tools/makedep.c ++++ b/tools/makedep.c +@@ -1480,7 +1480,7 @@ static char *get_make_variable( struct makefile *make, const char *name ) + */ + static char *get_expanded_make_variable( struct makefile *make, const char *name ) + { +- char *p, *end, *var, *expand, *tmp; ++ char *p, *end, *var, *expand, *tmp = NULL; + + expand = get_make_variable( make, name ); + if (!expand) return NULL; +-- +2.2.1 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/ddraw-EnumSurfaces/0001-ddraw-Fix-arguments-to-IDirectDraw7-EnumSurfaces-in-.patch wine-staging-1.7.41~ubuntu12.04.1/patches/ddraw-EnumSurfaces/0001-ddraw-Fix-arguments-to-IDirectDraw7-EnumSurfaces-in-.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/ddraw-EnumSurfaces/0001-ddraw-Fix-arguments-to-IDirectDraw7-EnumSurfaces-in-.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/ddraw-EnumSurfaces/0001-ddraw-Fix-arguments-to-IDirectDraw7-EnumSurfaces-in-.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,27 @@ +From 2958e8aaaf0ea5dd63199b884edb94b4c11f2903 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20M=C3=BCller?= +Date: Thu, 9 Apr 2015 05:46:09 +0200 +Subject: ddraw: Fix arguments to IDirectDraw7::EnumSurfaces in DllMain. + +--- + dlls/ddraw/main.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/dlls/ddraw/main.c b/dlls/ddraw/main.c +index 2f5d113..aa50f35 100644 +--- a/dlls/ddraw/main.c ++++ b/dlls/ddraw/main.c +@@ -936,8 +936,8 @@ BOOL WINAPI DllMain(HINSTANCE inst, DWORD reason, void *reserved) + desc.dwSize = sizeof(desc); + for(i = 0; i <= 1; i++) + { +- hr = IDirectDraw7_EnumSurfaces(&ddraw->IDirectDraw7_iface, DDENUMSURFACES_ALL, +- &desc, ddraw, DestroyCallback); ++ hr = IDirectDraw7_EnumSurfaces(&ddraw->IDirectDraw7_iface, ++ DDENUMSURFACES_DOESEXIST | DDENUMSURFACES_ALL, &desc, ddraw, DestroyCallback); + if(hr != D3D_OK) + ERR("(%p) EnumSurfaces failed, prepare for trouble\n", ddraw); + } +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/ddraw-EnumSurfaces/0001-ddraw-Implement-DDENUMSURFACES_CANBECREATED-in-IDire.patch wine-staging-1.7.41~ubuntu12.04.1/patches/ddraw-EnumSurfaces/0001-ddraw-Implement-DDENUMSURFACES_CANBECREATED-in-IDire.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/ddraw-EnumSurfaces/0001-ddraw-Implement-DDENUMSURFACES_CANBECREATED-in-IDire.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/ddraw-EnumSurfaces/0001-ddraw-Implement-DDENUMSURFACES_CANBECREATED-in-IDire.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,360 +0,0 @@ -From e01ecc956620d02c29ed92b56372087868a4149e Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Michael=20M=C3=BCller?= -Date: Sat, 4 Apr 2015 05:49:09 +0200 -Subject: ddraw: Implement DDENUMSURFACES_CANBECREATED in - IDirectDraw7::EnumSurfaces and fix some bugs. - ---- - dlls/ddraw/ddraw.c | 97 +++++++++++++++++++------ - dlls/ddraw/tests/d3d.c | 190 ++++++++++++++++++++++++++++++++++++++++++++++--- - 2 files changed, 256 insertions(+), 31 deletions(-) - -diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c -index 31ec6bf..b860834 100644 ---- a/dlls/ddraw/ddraw.c -+++ b/dlls/ddraw/ddraw.c -@@ -3119,46 +3119,97 @@ static HRESULT WINAPI ddraw7_EnumSurfaces(IDirectDraw7 *iface, DWORD Flags, - { - struct ddraw *ddraw = impl_from_IDirectDraw7(iface); - struct ddraw_surface *surf; -- BOOL all, nomatch; -- DDSURFACEDESC2 desc; -- struct list *entry, *entry2; -+ DWORD match_flags = Flags & (DDENUMSURFACES_ALL | DDENUMSURFACES_NOMATCH | DDENUMSURFACES_MATCH); - - TRACE("iface %p, flags %#x, surface_desc %p, context %p, callback %p.\n", - iface, Flags, DDSD, Context, Callback); - -- all = Flags & DDENUMSURFACES_ALL; -- nomatch = Flags & DDENUMSURFACES_NOMATCH; -- - if (!Callback) - return DDERR_INVALIDPARAMS; - -- wined3d_mutex_lock(); -- -- /* Use the _SAFE enumeration, the app may destroy enumerated surfaces */ -- LIST_FOR_EACH_SAFE(entry, entry2, &ddraw->surface_list) -+ if (Flags & DDENUMSURFACES_CANBECREATED) - { -- surf = LIST_ENTRY(entry, struct ddraw_surface, surface_list_entry); -+ IDirectDrawSurface7 *surface; -+ DDSURFACEDESC2 testdesc; -+ -+ if (match_flags != DDENUMSURFACES_MATCH) -+ return DDERR_INVALIDPARAMS; -+ -+ if (!DDSD) -+ return DDERR_INVALIDPARAMS; -+ -+ memcpy(&testdesc, DDSD, sizeof(testdesc)); -+ -+ if (!(testdesc.dwFlags & DDSD_WIDTH)) -+ { -+ testdesc.dwFlags |= DDSD_WIDTH; -+ testdesc.dwWidth = 512; -+ } - -- if (!surf->iface_count) -+ if (!(testdesc.dwFlags & DDSD_HEIGHT)) - { -- WARN("Not enumerating surface %p because it doesn't have any references.\n", surf); -- continue; -+ testdesc.dwFlags |= DDSD_HEIGHT; -+ testdesc.dwHeight = 512; - } - -- if (all || (nomatch != ddraw_match_surface_desc(DDSD, &surf->surface_desc))) -+ if (IDirectDraw7_CreateSurface(iface, &testdesc, &surface, NULL) == DD_OK) -+ { -+ surf = unsafe_impl_from_IDirectDrawSurface7(surface); -+ Callback(NULL, &surf->surface_desc, Context); -+ IDirectDrawSurface7_Release(surface); -+ } -+ else -+ FIXME("Failed to create surface!\n"); -+ } -+ else if (Flags & DDENUMSURFACES_DOESEXIST) -+ { -+ DDSURFACEDESC2 desc; -+ struct list *entry, *entry2; -+ BOOL nomatch, all; -+ -+ /* a combination of match flags is not allowed */ -+ if (match_flags != 0 && -+ match_flags != DDENUMSURFACES_ALL && -+ match_flags != DDENUMSURFACES_MATCH && -+ match_flags != DDENUMSURFACES_NOMATCH) -+ return DDERR_INVALIDPARAMS; -+ -+ all = (Flags & DDENUMSURFACES_ALL) != 0; -+ nomatch = (Flags & DDENUMSURFACES_NOMATCH) != 0; -+ -+ if (!all && !DDSD) -+ return DDERR_INVALIDPARAMS; -+ -+ wined3d_mutex_lock(); -+ -+ /* Use the _SAFE enumeration, the app may destroy enumerated surfaces */ -+ LIST_FOR_EACH_SAFE(entry, entry2, &ddraw->surface_list) - { -- TRACE("Enumerating surface %p.\n", surf); -- desc = surf->surface_desc; -- IDirectDrawSurface7_AddRef(&surf->IDirectDrawSurface7_iface); -- if (Callback(&surf->IDirectDrawSurface7_iface, &desc, Context) != DDENUMRET_OK) -+ surf = LIST_ENTRY(entry, struct ddraw_surface, surface_list_entry); -+ -+ if (!surf->iface_count) - { -- wined3d_mutex_unlock(); -- return DD_OK; -+ WARN("Not enumerating surface %p because it doesn't have any references.\n", surf); -+ continue; -+ } -+ -+ if (all || (nomatch != ddraw_match_surface_desc(DDSD, &surf->surface_desc))) -+ { -+ TRACE("Enumerating surface %p.\n", surf); -+ desc = surf->surface_desc; -+ IDirectDrawSurface7_AddRef(&surf->IDirectDrawSurface7_iface); -+ if (Callback(&surf->IDirectDrawSurface7_iface, &desc, Context) != DDENUMRET_OK) -+ { -+ wined3d_mutex_unlock(); -+ return DD_OK; -+ } - } - } -- } - -- wined3d_mutex_unlock(); -+ wined3d_mutex_unlock(); -+ } -+ else -+ return DDERR_INVALIDPARAMS; - - return DD_OK; - } -diff --git a/dlls/ddraw/tests/d3d.c b/dlls/ddraw/tests/d3d.c -index ec4197a..457ebbc 100644 ---- a/dlls/ddraw/tests/d3d.c -+++ b/dlls/ddraw/tests/d3d.c -@@ -57,6 +57,11 @@ typedef struct { - int total; - } D3D7ECancelTest; - -+typedef struct { -+ UINT found; -+ UINT surfaces; -+} EnumSurfaceTest; -+ - #define MAX_ENUMERATION_COUNT 10 - typedef struct - { -@@ -85,17 +90,21 @@ static ULONG getRefcount(IUnknown *iface) - - static HRESULT WINAPI SurfaceCounter(IDirectDrawSurface7 *surface, DDSURFACEDESC2 *desc, void *context) - { -- UINT *num = context; -- (*num)++; -- IDirectDrawSurface_Release(surface); -+ EnumSurfaceTest *count = context; -+ count->found++; -+ if (surface) -+ { -+ count->surfaces++; -+ IDirectDrawSurface_Release(surface); -+ } - return DDENUMRET_OK; - } - - static BOOL CreateDirect3D(void) - { - HRESULT rc; -- DDSURFACEDESC2 ddsd; -- UINT num; -+ DDSURFACEDESC2 ddsd, ddsd2; -+ EnumSurfaceTest count; - - rc = pDirectDrawCreateEx(NULL, (void**)&lpDD, - &IID_IDirectDraw7, NULL); -@@ -122,9 +131,174 @@ static BOOL CreateDirect3D(void) - if (FAILED(rc)) - return FALSE; - -- num = 0; -- IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_ALL | DDENUMSURFACES_DOESEXIST, NULL, &num, SurfaceCounter); -- ok(num == 1, "Has %d surfaces, expected 1\n", num); -+ memset(&ddsd2, 0, sizeof(ddsd2)); -+ ddsd2.dwSize = sizeof(ddsd2); -+ ddsd2.dwFlags = DDSD_WIDTH | DDSD_HEIGHT; -+ ddsd2.dwWidth = 256; -+ ddsd2.dwHeight = 256; -+ -+ /* without search type flags */ -+ count.found = 0; -+ count.surfaces = 0; -+ rc = IDirectDraw7_EnumSurfaces(lpDD, 0, NULL, &count, SurfaceCounter); -+ ok(rc == DDERR_INVALIDPARAMS, "Expected DDERR_INVALIDPARAMS, got %x\n", rc); -+ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); -+ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); -+ -+ count.found = 0; -+ count.surfaces = 0; -+ rc = IDirectDraw7_EnumSurfaces(lpDD, 0, &ddsd, &count, SurfaceCounter); -+ ok(rc == DDERR_INVALIDPARAMS, "Expected DDERR_INVALIDPARAMS, got %x\n", rc); -+ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); -+ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); -+ -+ count.found = 0; -+ count.surfaces = 0; -+ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_ALL, NULL, &count, SurfaceCounter); -+ ok(rc == DDERR_INVALIDPARAMS, "Expected DDERR_INVALIDPARAMS, got %x\n", rc); -+ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); -+ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); -+ -+ count.found = 0; -+ count.surfaces = 0; -+ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_MATCH, NULL, &count, SurfaceCounter); -+ ok(rc == DDERR_INVALIDPARAMS, "Expected DDERR_INVALIDPARAMS, got %x\n", rc); -+ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); -+ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); -+ -+ count.found = 0; -+ count.surfaces = 0; -+ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_NOMATCH, NULL, &count, SurfaceCounter); -+ ok(rc == DDERR_INVALIDPARAMS, "Expected DDERR_INVALIDPARAMS, got %x\n", rc); -+ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); -+ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); -+ -+ /* search type DDENUMSURFACES_DOESEXIST */ -+ count.found = 0; -+ count.surfaces = 0; -+ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_DOESEXIST, NULL, &count, SurfaceCounter); -+ ok(rc == DDERR_INVALIDPARAMS, "Expected DDERR_INVALIDPARAMS, got %x\n", rc); -+ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); -+ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); -+ -+ count.found = 0; -+ count.surfaces = 0; -+ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_DOESEXIST, &ddsd, &count, SurfaceCounter); -+ ok(rc == DD_OK, "Expected DD_OK, got %x\n", rc); -+ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); -+ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); -+ -+ count.found = 0; -+ count.surfaces = 0; -+ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_DOESEXIST, &ddsd2, &count, SurfaceCounter); -+ ok(rc == DD_OK, "Expected DD_OK, got %x\n", rc); -+ ok(count.found == 1, "Has %d surface descriptions, expected 1\n", count.found); -+ ok(count.surfaces == 1, "Has %d surfaces, expected 1\n", count.surfaces); -+ -+ count.found = 0; -+ count.surfaces = 0; -+ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_DOESEXIST | DDENUMSURFACES_ALL, NULL, &count, SurfaceCounter); -+ ok(rc == DD_OK, "Expected DD_OK, got %x\n", rc); -+ ok(count.found == 1, "Has %d surface descriptions, expected 1\n", count.found); -+ ok(count.surfaces == 1, "Has %d surfaces, expected 1\n", count.surfaces); -+ -+ count.found = 0; -+ count.surfaces = 0; -+ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_DOESEXIST | DDENUMSURFACES_MATCH, &ddsd, &count, SurfaceCounter); -+ ok(rc == DD_OK, "Expected DD_OK, got %x\n", rc); -+ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); -+ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); -+ -+ count.found = 0; -+ count.surfaces = 0; -+ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_DOESEXIST | DDENUMSURFACES_NOMATCH, &ddsd, &count, SurfaceCounter); -+ ok(rc == DD_OK, "Expected DD_OK, got %x\n", rc); -+ ok(count.found == 1, "Has %d surface descriptions, expected 1\n", count.found); -+ ok(count.surfaces == 1, "Has %d surfaces, expected 1\n", count.surfaces); -+ -+ count.found = 0; -+ count.surfaces = 0; -+ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_DOESEXIST | DDENUMSURFACES_MATCH, &ddsd2, &count, SurfaceCounter); -+ ok(rc == DD_OK, "Expected DD_OK, got %x\n", rc); -+ ok(count.found == 1, "Has %d surface descriptions, expected 1\n", count.found); -+ ok(count.surfaces == 1, "Has %d surfaces, expected 1\n", count.surfaces); -+ -+ count.found = 0; -+ count.surfaces = 0; -+ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_DOESEXIST | DDENUMSURFACES_NOMATCH, &ddsd2, &count, SurfaceCounter); -+ ok(rc == DD_OK, "Expected DD_OK, got %x\n", rc); -+ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); -+ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); -+ -+ count.found = 0; -+ count.surfaces = 0; -+ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_DOESEXIST | DDENUMSURFACES_ALL | DDENUMSURFACES_MATCH, -+ NULL, &count, SurfaceCounter); -+ ok(rc == DDERR_INVALIDPARAMS, "Expected DDERR_INVALIDPARAMS, got %x\n", rc); -+ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); -+ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); -+ -+ count.found = 0; -+ count.surfaces = 0; -+ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_DOESEXIST | DDENUMSURFACES_ALL | DDENUMSURFACES_NOMATCH, -+ NULL, &count, SurfaceCounter); -+ ok(rc == DDERR_INVALIDPARAMS, "Expected DDERR_INVALIDPARAMS, got %x\n", rc); -+ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); -+ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); -+ -+ count.found = 0; -+ count.surfaces = 0; -+ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_DOESEXIST | DDENUMSURFACES_MATCH | DDENUMSURFACES_NOMATCH, -+ NULL, &count, SurfaceCounter); -+ ok(rc == DDERR_INVALIDPARAMS, "Expected DDERR_INVALIDPARAMS, got %x\n", rc); -+ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); -+ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); -+ -+ /* search type DDENUMSURFACES_CANBECREATED */ -+ count.found = 0; -+ count.surfaces = 0; -+ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_CANBECREATED, &ddsd, &count, SurfaceCounter); -+ ok(rc == DDERR_INVALIDPARAMS, "Expected DDERR_INVALIDPARAMS, got %x\n", rc); -+ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); -+ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); -+ -+ count.found = 0; -+ count.surfaces = 0; -+ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_CANBECREATED | DDENUMSURFACES_ALL, &ddsd, &count, SurfaceCounter); -+ ok(rc == DDERR_INVALIDPARAMS, "Expected DDERR_INVALIDPARAMS, got %x\n", rc); -+ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); -+ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); -+ -+ count.found = 0; -+ count.surfaces = 0; -+ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_CANBECREATED | DDENUMSURFACES_NOMATCH, &ddsd, &count, SurfaceCounter); -+ ok(rc == DDERR_INVALIDPARAMS, "Expected DDERR_INVALIDPARAMS, got %x\n", rc); -+ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); -+ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); -+ -+ count.found = 0; -+ count.surfaces = 0; -+ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_CANBECREATED | DDENUMSURFACES_MATCH, NULL, &count, SurfaceCounter); -+ ok(rc == DDERR_INVALIDPARAMS, "Expected DDERR_INVALIDPARAMS, got %x\n", rc); -+ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); -+ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); -+ -+ count.found = 0; -+ count.surfaces = 0; -+ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_CANBECREATED | DDENUMSURFACES_MATCH, &ddsd, &count, SurfaceCounter); -+ ok(rc == DD_OK, "Expected DD_OK, got %x\n", rc); -+ ok(count.found == 1, "Has %d surface descriptions, expected 1\n", count.found); -+ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); -+ -+ /* combination of DDENUMSURFACES_DOESEXIST and DDENUMSURFACES_CANBECREATED */ -+ -+ count.found = 0; -+ count.surfaces = 0; -+ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_DOESEXIST | DDENUMSURFACES_CANBECREATED | DDENUMSURFACES_MATCH, -+ &ddsd, &count, SurfaceCounter); -+ ok(rc == DD_OK, "Expected DD_OK, got %x\n", rc); -+ ok(count.found == 1, "Has %d surface descriptions, expected 1\n", count.found); -+ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); - - memset(&ddsd, 0, sizeof(ddsd)); - ddsd.dwSize = sizeof(ddsd); --- -2.1.0 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/ddraw-EnumSurfaces/0002-ddraw-Implement-DDENUMSURFACES_CANBECREATED-in-IDire.patch wine-staging-1.7.41~ubuntu12.04.1/patches/ddraw-EnumSurfaces/0002-ddraw-Implement-DDENUMSURFACES_CANBECREATED-in-IDire.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/ddraw-EnumSurfaces/0002-ddraw-Implement-DDENUMSURFACES_CANBECREATED-in-IDire.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/ddraw-EnumSurfaces/0002-ddraw-Implement-DDENUMSURFACES_CANBECREATED-in-IDire.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,360 @@ +From e01ecc956620d02c29ed92b56372087868a4149e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20M=C3=BCller?= +Date: Sat, 4 Apr 2015 05:49:09 +0200 +Subject: ddraw: Implement DDENUMSURFACES_CANBECREATED in + IDirectDraw7::EnumSurfaces and fix some bugs. + +--- + dlls/ddraw/ddraw.c | 97 +++++++++++++++++++------ + dlls/ddraw/tests/d3d.c | 190 ++++++++++++++++++++++++++++++++++++++++++++++--- + 2 files changed, 256 insertions(+), 31 deletions(-) + +diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c +index 31ec6bf..b860834 100644 +--- a/dlls/ddraw/ddraw.c ++++ b/dlls/ddraw/ddraw.c +@@ -3119,46 +3119,97 @@ static HRESULT WINAPI ddraw7_EnumSurfaces(IDirectDraw7 *iface, DWORD Flags, + { + struct ddraw *ddraw = impl_from_IDirectDraw7(iface); + struct ddraw_surface *surf; +- BOOL all, nomatch; +- DDSURFACEDESC2 desc; +- struct list *entry, *entry2; ++ DWORD match_flags = Flags & (DDENUMSURFACES_ALL | DDENUMSURFACES_NOMATCH | DDENUMSURFACES_MATCH); + + TRACE("iface %p, flags %#x, surface_desc %p, context %p, callback %p.\n", + iface, Flags, DDSD, Context, Callback); + +- all = Flags & DDENUMSURFACES_ALL; +- nomatch = Flags & DDENUMSURFACES_NOMATCH; +- + if (!Callback) + return DDERR_INVALIDPARAMS; + +- wined3d_mutex_lock(); +- +- /* Use the _SAFE enumeration, the app may destroy enumerated surfaces */ +- LIST_FOR_EACH_SAFE(entry, entry2, &ddraw->surface_list) ++ if (Flags & DDENUMSURFACES_CANBECREATED) + { +- surf = LIST_ENTRY(entry, struct ddraw_surface, surface_list_entry); ++ IDirectDrawSurface7 *surface; ++ DDSURFACEDESC2 testdesc; ++ ++ if (match_flags != DDENUMSURFACES_MATCH) ++ return DDERR_INVALIDPARAMS; ++ ++ if (!DDSD) ++ return DDERR_INVALIDPARAMS; ++ ++ memcpy(&testdesc, DDSD, sizeof(testdesc)); ++ ++ if (!(testdesc.dwFlags & DDSD_WIDTH)) ++ { ++ testdesc.dwFlags |= DDSD_WIDTH; ++ testdesc.dwWidth = 512; ++ } + +- if (!surf->iface_count) ++ if (!(testdesc.dwFlags & DDSD_HEIGHT)) + { +- WARN("Not enumerating surface %p because it doesn't have any references.\n", surf); +- continue; ++ testdesc.dwFlags |= DDSD_HEIGHT; ++ testdesc.dwHeight = 512; + } + +- if (all || (nomatch != ddraw_match_surface_desc(DDSD, &surf->surface_desc))) ++ if (IDirectDraw7_CreateSurface(iface, &testdesc, &surface, NULL) == DD_OK) ++ { ++ surf = unsafe_impl_from_IDirectDrawSurface7(surface); ++ Callback(NULL, &surf->surface_desc, Context); ++ IDirectDrawSurface7_Release(surface); ++ } ++ else ++ FIXME("Failed to create surface!\n"); ++ } ++ else if (Flags & DDENUMSURFACES_DOESEXIST) ++ { ++ DDSURFACEDESC2 desc; ++ struct list *entry, *entry2; ++ BOOL nomatch, all; ++ ++ /* a combination of match flags is not allowed */ ++ if (match_flags != 0 && ++ match_flags != DDENUMSURFACES_ALL && ++ match_flags != DDENUMSURFACES_MATCH && ++ match_flags != DDENUMSURFACES_NOMATCH) ++ return DDERR_INVALIDPARAMS; ++ ++ all = (Flags & DDENUMSURFACES_ALL) != 0; ++ nomatch = (Flags & DDENUMSURFACES_NOMATCH) != 0; ++ ++ if (!all && !DDSD) ++ return DDERR_INVALIDPARAMS; ++ ++ wined3d_mutex_lock(); ++ ++ /* Use the _SAFE enumeration, the app may destroy enumerated surfaces */ ++ LIST_FOR_EACH_SAFE(entry, entry2, &ddraw->surface_list) + { +- TRACE("Enumerating surface %p.\n", surf); +- desc = surf->surface_desc; +- IDirectDrawSurface7_AddRef(&surf->IDirectDrawSurface7_iface); +- if (Callback(&surf->IDirectDrawSurface7_iface, &desc, Context) != DDENUMRET_OK) ++ surf = LIST_ENTRY(entry, struct ddraw_surface, surface_list_entry); ++ ++ if (!surf->iface_count) + { +- wined3d_mutex_unlock(); +- return DD_OK; ++ WARN("Not enumerating surface %p because it doesn't have any references.\n", surf); ++ continue; ++ } ++ ++ if (all || (nomatch != ddraw_match_surface_desc(DDSD, &surf->surface_desc))) ++ { ++ TRACE("Enumerating surface %p.\n", surf); ++ desc = surf->surface_desc; ++ IDirectDrawSurface7_AddRef(&surf->IDirectDrawSurface7_iface); ++ if (Callback(&surf->IDirectDrawSurface7_iface, &desc, Context) != DDENUMRET_OK) ++ { ++ wined3d_mutex_unlock(); ++ return DD_OK; ++ } + } + } +- } + +- wined3d_mutex_unlock(); ++ wined3d_mutex_unlock(); ++ } ++ else ++ return DDERR_INVALIDPARAMS; + + return DD_OK; + } +diff --git a/dlls/ddraw/tests/d3d.c b/dlls/ddraw/tests/d3d.c +index ec4197a..457ebbc 100644 +--- a/dlls/ddraw/tests/d3d.c ++++ b/dlls/ddraw/tests/d3d.c +@@ -57,6 +57,11 @@ typedef struct { + int total; + } D3D7ECancelTest; + ++typedef struct { ++ UINT found; ++ UINT surfaces; ++} EnumSurfaceTest; ++ + #define MAX_ENUMERATION_COUNT 10 + typedef struct + { +@@ -85,17 +90,21 @@ static ULONG getRefcount(IUnknown *iface) + + static HRESULT WINAPI SurfaceCounter(IDirectDrawSurface7 *surface, DDSURFACEDESC2 *desc, void *context) + { +- UINT *num = context; +- (*num)++; +- IDirectDrawSurface_Release(surface); ++ EnumSurfaceTest *count = context; ++ count->found++; ++ if (surface) ++ { ++ count->surfaces++; ++ IDirectDrawSurface_Release(surface); ++ } + return DDENUMRET_OK; + } + + static BOOL CreateDirect3D(void) + { + HRESULT rc; +- DDSURFACEDESC2 ddsd; +- UINT num; ++ DDSURFACEDESC2 ddsd, ddsd2; ++ EnumSurfaceTest count; + + rc = pDirectDrawCreateEx(NULL, (void**)&lpDD, + &IID_IDirectDraw7, NULL); +@@ -122,9 +131,174 @@ static BOOL CreateDirect3D(void) + if (FAILED(rc)) + return FALSE; + +- num = 0; +- IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_ALL | DDENUMSURFACES_DOESEXIST, NULL, &num, SurfaceCounter); +- ok(num == 1, "Has %d surfaces, expected 1\n", num); ++ memset(&ddsd2, 0, sizeof(ddsd2)); ++ ddsd2.dwSize = sizeof(ddsd2); ++ ddsd2.dwFlags = DDSD_WIDTH | DDSD_HEIGHT; ++ ddsd2.dwWidth = 256; ++ ddsd2.dwHeight = 256; ++ ++ /* without search type flags */ ++ count.found = 0; ++ count.surfaces = 0; ++ rc = IDirectDraw7_EnumSurfaces(lpDD, 0, NULL, &count, SurfaceCounter); ++ ok(rc == DDERR_INVALIDPARAMS, "Expected DDERR_INVALIDPARAMS, got %x\n", rc); ++ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); ++ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); ++ ++ count.found = 0; ++ count.surfaces = 0; ++ rc = IDirectDraw7_EnumSurfaces(lpDD, 0, &ddsd, &count, SurfaceCounter); ++ ok(rc == DDERR_INVALIDPARAMS, "Expected DDERR_INVALIDPARAMS, got %x\n", rc); ++ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); ++ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); ++ ++ count.found = 0; ++ count.surfaces = 0; ++ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_ALL, NULL, &count, SurfaceCounter); ++ ok(rc == DDERR_INVALIDPARAMS, "Expected DDERR_INVALIDPARAMS, got %x\n", rc); ++ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); ++ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); ++ ++ count.found = 0; ++ count.surfaces = 0; ++ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_MATCH, NULL, &count, SurfaceCounter); ++ ok(rc == DDERR_INVALIDPARAMS, "Expected DDERR_INVALIDPARAMS, got %x\n", rc); ++ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); ++ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); ++ ++ count.found = 0; ++ count.surfaces = 0; ++ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_NOMATCH, NULL, &count, SurfaceCounter); ++ ok(rc == DDERR_INVALIDPARAMS, "Expected DDERR_INVALIDPARAMS, got %x\n", rc); ++ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); ++ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); ++ ++ /* search type DDENUMSURFACES_DOESEXIST */ ++ count.found = 0; ++ count.surfaces = 0; ++ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_DOESEXIST, NULL, &count, SurfaceCounter); ++ ok(rc == DDERR_INVALIDPARAMS, "Expected DDERR_INVALIDPARAMS, got %x\n", rc); ++ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); ++ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); ++ ++ count.found = 0; ++ count.surfaces = 0; ++ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_DOESEXIST, &ddsd, &count, SurfaceCounter); ++ ok(rc == DD_OK, "Expected DD_OK, got %x\n", rc); ++ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); ++ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); ++ ++ count.found = 0; ++ count.surfaces = 0; ++ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_DOESEXIST, &ddsd2, &count, SurfaceCounter); ++ ok(rc == DD_OK, "Expected DD_OK, got %x\n", rc); ++ ok(count.found == 1, "Has %d surface descriptions, expected 1\n", count.found); ++ ok(count.surfaces == 1, "Has %d surfaces, expected 1\n", count.surfaces); ++ ++ count.found = 0; ++ count.surfaces = 0; ++ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_DOESEXIST | DDENUMSURFACES_ALL, NULL, &count, SurfaceCounter); ++ ok(rc == DD_OK, "Expected DD_OK, got %x\n", rc); ++ ok(count.found == 1, "Has %d surface descriptions, expected 1\n", count.found); ++ ok(count.surfaces == 1, "Has %d surfaces, expected 1\n", count.surfaces); ++ ++ count.found = 0; ++ count.surfaces = 0; ++ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_DOESEXIST | DDENUMSURFACES_MATCH, &ddsd, &count, SurfaceCounter); ++ ok(rc == DD_OK, "Expected DD_OK, got %x\n", rc); ++ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); ++ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); ++ ++ count.found = 0; ++ count.surfaces = 0; ++ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_DOESEXIST | DDENUMSURFACES_NOMATCH, &ddsd, &count, SurfaceCounter); ++ ok(rc == DD_OK, "Expected DD_OK, got %x\n", rc); ++ ok(count.found == 1, "Has %d surface descriptions, expected 1\n", count.found); ++ ok(count.surfaces == 1, "Has %d surfaces, expected 1\n", count.surfaces); ++ ++ count.found = 0; ++ count.surfaces = 0; ++ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_DOESEXIST | DDENUMSURFACES_MATCH, &ddsd2, &count, SurfaceCounter); ++ ok(rc == DD_OK, "Expected DD_OK, got %x\n", rc); ++ ok(count.found == 1, "Has %d surface descriptions, expected 1\n", count.found); ++ ok(count.surfaces == 1, "Has %d surfaces, expected 1\n", count.surfaces); ++ ++ count.found = 0; ++ count.surfaces = 0; ++ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_DOESEXIST | DDENUMSURFACES_NOMATCH, &ddsd2, &count, SurfaceCounter); ++ ok(rc == DD_OK, "Expected DD_OK, got %x\n", rc); ++ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); ++ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); ++ ++ count.found = 0; ++ count.surfaces = 0; ++ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_DOESEXIST | DDENUMSURFACES_ALL | DDENUMSURFACES_MATCH, ++ NULL, &count, SurfaceCounter); ++ ok(rc == DDERR_INVALIDPARAMS, "Expected DDERR_INVALIDPARAMS, got %x\n", rc); ++ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); ++ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); ++ ++ count.found = 0; ++ count.surfaces = 0; ++ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_DOESEXIST | DDENUMSURFACES_ALL | DDENUMSURFACES_NOMATCH, ++ NULL, &count, SurfaceCounter); ++ ok(rc == DDERR_INVALIDPARAMS, "Expected DDERR_INVALIDPARAMS, got %x\n", rc); ++ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); ++ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); ++ ++ count.found = 0; ++ count.surfaces = 0; ++ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_DOESEXIST | DDENUMSURFACES_MATCH | DDENUMSURFACES_NOMATCH, ++ NULL, &count, SurfaceCounter); ++ ok(rc == DDERR_INVALIDPARAMS, "Expected DDERR_INVALIDPARAMS, got %x\n", rc); ++ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); ++ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); ++ ++ /* search type DDENUMSURFACES_CANBECREATED */ ++ count.found = 0; ++ count.surfaces = 0; ++ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_CANBECREATED, &ddsd, &count, SurfaceCounter); ++ ok(rc == DDERR_INVALIDPARAMS, "Expected DDERR_INVALIDPARAMS, got %x\n", rc); ++ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); ++ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); ++ ++ count.found = 0; ++ count.surfaces = 0; ++ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_CANBECREATED | DDENUMSURFACES_ALL, &ddsd, &count, SurfaceCounter); ++ ok(rc == DDERR_INVALIDPARAMS, "Expected DDERR_INVALIDPARAMS, got %x\n", rc); ++ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); ++ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); ++ ++ count.found = 0; ++ count.surfaces = 0; ++ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_CANBECREATED | DDENUMSURFACES_NOMATCH, &ddsd, &count, SurfaceCounter); ++ ok(rc == DDERR_INVALIDPARAMS, "Expected DDERR_INVALIDPARAMS, got %x\n", rc); ++ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); ++ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); ++ ++ count.found = 0; ++ count.surfaces = 0; ++ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_CANBECREATED | DDENUMSURFACES_MATCH, NULL, &count, SurfaceCounter); ++ ok(rc == DDERR_INVALIDPARAMS, "Expected DDERR_INVALIDPARAMS, got %x\n", rc); ++ ok(count.found == 0, "Has %d surface descriptions, expected 0\n", count.found); ++ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); ++ ++ count.found = 0; ++ count.surfaces = 0; ++ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_CANBECREATED | DDENUMSURFACES_MATCH, &ddsd, &count, SurfaceCounter); ++ ok(rc == DD_OK, "Expected DD_OK, got %x\n", rc); ++ ok(count.found == 1, "Has %d surface descriptions, expected 1\n", count.found); ++ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); ++ ++ /* combination of DDENUMSURFACES_DOESEXIST and DDENUMSURFACES_CANBECREATED */ ++ ++ count.found = 0; ++ count.surfaces = 0; ++ rc = IDirectDraw7_EnumSurfaces(lpDD, DDENUMSURFACES_DOESEXIST | DDENUMSURFACES_CANBECREATED | DDENUMSURFACES_MATCH, ++ &ddsd, &count, SurfaceCounter); ++ ok(rc == DD_OK, "Expected DD_OK, got %x\n", rc); ++ ok(count.found == 1, "Has %d surface descriptions, expected 1\n", count.found); ++ ok(count.surfaces == 0, "Has %d surfaces, expected 0\n", count.surfaces); + + memset(&ddsd, 0, sizeof(ddsd)); + ddsd.dwSize = sizeof(ddsd); +-- +2.1.0 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/dinput-DeviceState/0001-dinput-Reset-device-state-in-SysKeyboard-Impl_Acquir.patch wine-staging-1.7.41~ubuntu12.04.1/patches/dinput-DeviceState/0001-dinput-Reset-device-state-in-SysKeyboard-Impl_Acquir.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/dinput-DeviceState/0001-dinput-Reset-device-state-in-SysKeyboard-Impl_Acquir.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/dinput-DeviceState/0001-dinput-Reset-device-state-in-SysKeyboard-Impl_Acquir.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,96 @@ +From f5c29408aee51ad967cf7aa02578c72d3b573198 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Sat, 11 Apr 2015 10:06:05 +0200 +Subject: dinput: Reset device state in SysKeyboard*Impl_Acquire. + +--- + dlls/dinput/keyboard.c | 27 +++++++++++++++++++++++++-- + dlls/dinput/tests/keyboard.c | 20 ++++++++++++++++++++ + 2 files changed, 45 insertions(+), 2 deletions(-) + +diff --git a/dlls/dinput/keyboard.c b/dlls/dinput/keyboard.c +index a5967d7..f3ac30e 100644 +--- a/dlls/dinput/keyboard.c ++++ b/dlls/dinput/keyboard.c +@@ -527,6 +527,29 @@ static HRESULT WINAPI SysKeyboardAImpl_GetProperty(LPDIRECTINPUTDEVICE8A iface, + return SysKeyboardWImpl_GetProperty(IDirectInputDevice8W_from_impl(This), rguid, pdiph); + } + ++static HRESULT WINAPI SysKeyboardWImpl_Acquire(LPDIRECTINPUTDEVICE8W iface) ++{ ++ SysKeyboardImpl *This = impl_from_IDirectInputDevice8W(iface); ++ HRESULT res; ++ ++ TRACE("(%p)\n", This); ++ ++ res = IDirectInputDevice2WImpl_Acquire(iface); ++ if (res == DI_OK) ++ { ++ TRACE("clearing keystate\n"); ++ memset(This->DInputKeyState, 0, sizeof(This->DInputKeyState)); ++ } ++ ++ return res; ++} ++ ++static HRESULT WINAPI SysKeyboardAImpl_Acquire(LPDIRECTINPUTDEVICE8A iface) ++{ ++ SysKeyboardImpl *This = impl_from_IDirectInputDevice8A(iface); ++ return SysKeyboardWImpl_Acquire(IDirectInputDevice8W_from_impl(This)); ++} ++ + static HRESULT WINAPI SysKeyboardWImpl_BuildActionMap(LPDIRECTINPUTDEVICE8W iface, + LPDIACTIONFORMATW lpdiaf, + LPCWSTR lpszUserName, +@@ -615,7 +638,7 @@ static const IDirectInputDevice8AVtbl SysKeyboardAvt = + IDirectInputDevice2AImpl_EnumObjects, + SysKeyboardAImpl_GetProperty, + IDirectInputDevice2AImpl_SetProperty, +- IDirectInputDevice2AImpl_Acquire, ++ SysKeyboardAImpl_Acquire, + IDirectInputDevice2AImpl_Unacquire, + SysKeyboardAImpl_GetDeviceState, + IDirectInputDevice2AImpl_GetDeviceData, +@@ -651,7 +674,7 @@ static const IDirectInputDevice8WVtbl SysKeyboardWvt = + IDirectInputDevice2WImpl_EnumObjects, + SysKeyboardWImpl_GetProperty, + IDirectInputDevice2WImpl_SetProperty, +- IDirectInputDevice2WImpl_Acquire, ++ SysKeyboardWImpl_Acquire, + IDirectInputDevice2WImpl_Unacquire, + SysKeyboardWImpl_GetDeviceState, + IDirectInputDevice2WImpl_GetDeviceData, +diff --git a/dlls/dinput/tests/keyboard.c b/dlls/dinput/tests/keyboard.c +index ef5f06a..eaec276 100644 +--- a/dlls/dinput/tests/keyboard.c ++++ b/dlls/dinput/tests/keyboard.c +@@ -91,6 +91,26 @@ static void acquire_tests(IDirectInputA *pDI, HWND hwnd) + for (i = 0; i < sizeof(custom_state) / sizeof(custom_state[0]); i++) + ok(custom_state[i] == 0, "Should be zeroed, got 0x%08x\n", custom_state[i]); + ++ /* simulate some keyboard input */ ++ SetFocus(hwnd); ++ keybd_event('Q', 0, 0, 0); ++ hr = IDirectInputDevice_GetDeviceState(pKeyboard, sizeof(custom_state), custom_state); ++ ok(SUCCEEDED(hr), "IDirectInputDevice_GetDeviceState(4,) failed: %08x\n", hr); ++ if (!custom_state[0]) ++ win_skip("Keyboard event not processed, skipping test\n"); ++ else ++ { ++ /* unacquiring should reset the device state */ ++ hr = IDirectInputDevice_Unacquire(pKeyboard); ++ ok(SUCCEEDED(hr), "IDirectInputDevice_Unacquire() failed: %08x\n", hr); ++ hr = IDirectInputDevice_Acquire(pKeyboard); ++ ok(SUCCEEDED(hr), "IDirectInputDevice_Acquire() failed: %08x\n", hr); ++ hr = IDirectInputDevice_GetDeviceState(pKeyboard, sizeof(custom_state), custom_state); ++ ok(SUCCEEDED(hr), "IDirectInputDevice_GetDeviceState failed: %08x\n", hr); ++ for (i = 0; i < sizeof(custom_state) / sizeof(custom_state[0]); i++) ++ ok(custom_state[i] == 0, "Should be zeroed, got 0x%08x\n", custom_state[i]); ++ } ++ + if (pKeyboard) IUnknown_Release(pKeyboard); + } + +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/dinput-DeviceState/definition wine-staging-1.7.41~ubuntu12.04.1/patches/dinput-DeviceState/definition --- wine-staging-1.7.40~ubuntu12.04.1/patches/dinput-DeviceState/definition 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/dinput-DeviceState/definition 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1 @@ +Fixes: [11607] Reset device state in SysKeyboard*Impl_Acquire diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/dsound-3DSound/0001-dsound-Fix-angle-to-sound-source-calculation.patch wine-staging-1.7.41~ubuntu12.04.1/patches/dsound-3DSound/0001-dsound-Fix-angle-to-sound-source-calculation.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/dsound-3DSound/0001-dsound-Fix-angle-to-sound-source-calculation.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/dsound-3DSound/0001-dsound-Fix-angle-to-sound-source-calculation.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,66 +0,0 @@ -From a0b63f4c0c9695606fe8466cb9574ebfb9230d7b Mon Sep 17 00:00:00 2001 -From: Stas Cymbalov -Date: Sun, 22 Mar 2015 18:22:49 +0300 -Subject: dsound: Fix angle to sound source calculation. - -This patch fixes incorrect sound positioning in dsound. -As of now, angle to sound source is calculated as angle between -vDistance and vOrientFront. -This leads to incorrect results for all sources that are not in the -same plane as speakers. -In extreme case: for sources directly above or below origin, angle is -calculated to -90 degrees, and they are played in the left speaker. - -This patch changes angle calculation: angle to sound source is -calculated as angle between vDistance and plane given by vectors -vOrientFront and vOrientTop. ---- - dlls/dsound/sound3d.c | 25 ++++++++++++++----------- - 1 file changed, 14 insertions(+), 11 deletions(-) - -diff --git a/dlls/dsound/sound3d.c b/dlls/dsound/sound3d.c -index 9a0226a..ffd4d45 100644 ---- a/dlls/dsound/sound3d.c -+++ b/dlls/dsound/sound3d.c -@@ -112,7 +112,6 @@ static inline D3DVALUE AngleBetweenVectorsRad (const D3DVECTOR *a, const D3DVECT - - cos = product/(la*lb); - angle = acos(cos); -- if (cos < 0.0f) { angle -= M_PI; } - TRACE("angle between (%f,%f,%f) and (%f,%f,%f) = %f radians (%f degrees)\n", a->x, a->y, a->z, b->x, - b->y, b->z, angle, RadToDeg(angle)); - return angle; -@@ -264,16 +263,20 @@ void DSOUND_Calc3DBuffer(IDirectSoundBufferImpl *dsb) - else - { - vLeft = VectorProduct(&dsb->device->ds3dl.vOrientFront, &dsb->device->ds3dl.vOrientTop); -- flAngle = AngleBetweenVectorsRad(&dsb->device->ds3dl.vOrientFront, &vDistance); -- flAngle2 = AngleBetweenVectorsRad(&vLeft, &vDistance); -- -- /* AngleBetweenVectorsRad performs a dot product, which gives us the cosine of the angle -- * between two vectors. Unfortunately, because cos(theta) = cos(-theta), we've no idea from -- * this whether the sound is to our left or to our right. We have to perform another dot -- * product, with a vector at right angles to the initial one, to get the correct angle. -- * The angle should be between -180 degrees and 180 degrees. */ -- if (flAngle < 0.0f) { flAngle += M_PI; } -- if (flAngle2 > 0.0f) { flAngle = -flAngle; } -+ /* To calculate angle to sound source we need to: -+ * 1) Get angle between vDistance and a plane on which angle to sound source should be 0. -+ * Such a plane is given by vectors vOrientFront and vOrientTop, and angle between vector -+ * and a plane equals to M_PI_2 - angle between vector and normal to this plane (vLeft in this case). -+ * 2) Determine if the source is behind or in front of us by calculating angle between vDistance -+ * and vOrientFront. -+ */ -+ flAngle = AngleBetweenVectorsRad(&vLeft, &vDistance); -+ flAngle2 = AngleBetweenVectorsRad(&dsb->device->ds3dl.vOrientFront, &vDistance); -+ if (flAngle2 > M_PI_2) -+ flAngle = -flAngle; -+ flAngle -= M_PI_2; -+ if (flAngle < -M_PI) -+ flAngle += 2*M_PI; - } - TRACE("panning: Angle = %f rad, lPan = %d\n", flAngle, dsb->volpan.lPan); - --- -2.3.3 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/dsound-3DSound/definition wine-staging-1.7.41~ubuntu12.04.1/patches/dsound-3DSound/definition --- wine-staging-1.7.40~ubuntu12.04.1/patches/dsound-3DSound/definition 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/dsound-3DSound/definition 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -Fixes: [38041] Fix calculation of 3D sound source diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/dsound-EAX/0019-dsound-Allow-disabling-of-EAX-support-in-the-registr.patch wine-staging-1.7.41~ubuntu12.04.1/patches/dsound-EAX/0019-dsound-Allow-disabling-of-EAX-support-in-the-registr.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/dsound-EAX/0019-dsound-Allow-disabling-of-EAX-support-in-the-registr.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/dsound-EAX/0019-dsound-Allow-disabling-of-EAX-support-in-the-registr.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,169 @@ +From b69c6b88a3628dcaf0f5520f2a33a47013c50aef Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Sun, 5 Apr 2015 19:13:18 +0200 +Subject: dsound: Allow disabling of EAX support in the registry. + +Based on a patch by Mark Harmstone. +--- + dlls/dsound/buffer.c | 16 ++++++---------- + dlls/dsound/dsound_main.c | 10 ++++++++-- + dlls/dsound/dsound_private.h | 2 ++ + dlls/dsound/eax.c | 28 ++++++++++++++++++++++++++++ + 4 files changed, 44 insertions(+), 12 deletions(-) + +diff --git a/dlls/dsound/buffer.c b/dlls/dsound/buffer.c +index 3641e32..ca6a5b5 100644 +--- a/dlls/dsound/buffer.c ++++ b/dlls/dsound/buffer.c +@@ -35,6 +35,7 @@ + #include "dsconf.h" + + WINE_DEFAULT_DEBUG_CHANNEL(dsound); ++WINE_DECLARE_DEBUG_CHANNEL(winediag); + + /******************************************************************************* + * IDirectSoundNotify +@@ -1331,16 +1332,11 @@ static HRESULT WINAPI IKsPropertySetImpl_QuerySupport(IKsPropertySet *iface, REF + + TRACE("(%p,%s,%d,%p)\n",This,debugstr_guid(guidPropSet),dwPropID,pTypeSupport); + +- if (IsEqualGUID(&DSPROPSETID_EAX_ReverbProperties, guidPropSet)) { +- if (dwPropID <= DSPROPERTY_EAX_DAMPING) { +- *pTypeSupport = KSPROPERTY_SUPPORT_GET | KSPROPERTY_SUPPORT_SET; +- return S_OK; +- } +- } else if (IsEqualGUID(&DSPROPSETID_EAXBUFFER_ReverbProperties, guidPropSet)) { +- if (dwPropID <= DSPROPERTY_EAXBUFFER_REVERBMIX) { +- *pTypeSupport = KSPROPERTY_SUPPORT_GET | KSPROPERTY_SUPPORT_SET; +- return S_OK; +- } ++ if (EAX_QuerySupport(guidPropSet, dwPropID, pTypeSupport)) { ++ static int once; ++ if (!once++) ++ FIXME_(winediag)("EAX sound effects are enabled - try to disable it if your app crashes unexpectedly\n"); ++ return S_OK; + } + + return E_PROP_ID_UNSUPPORTED; +diff --git a/dlls/dsound/dsound_main.c b/dlls/dsound/dsound_main.c +index 1f512a4..4b7e7b0 100644 +--- a/dlls/dsound/dsound_main.c ++++ b/dlls/dsound/dsound_main.c +@@ -95,8 +95,12 @@ WCHAR wine_vxd_drv[] = { 'w','i','n','e','m','m','.','v','x','d', 0 }; + int ds_hel_buflen = 32768 * 2; + int ds_snd_queue_max = 10; + int ds_hq_buffers_max = 4; ++BOOL ds_eax_enabled = FALSE; + static HINSTANCE instance; + ++#define IS_OPTION_TRUE(ch) \ ++ ((ch) == 'y' || (ch) == 'Y' || (ch) == 't' || (ch) == 'T' || (ch) == '1') ++ + /* + * Get a config key from either the app-specific or the default config + */ +@@ -109,7 +113,6 @@ static inline DWORD get_config_key( HKEY defkey, HKEY appkey, const char *name, + return ERROR_FILE_NOT_FOUND; + } + +- + /* + * Setup the dsound options. + */ +@@ -150,16 +153,19 @@ void setup_dsound_options(void) + if (!get_config_key( hkey, appkey, "SndQueueMax", buffer, MAX_PATH )) + ds_snd_queue_max = atoi(buffer); + +- + if (!get_config_key( hkey, appkey, "HQBuffersMax", buffer, MAX_PATH )) + ds_hq_buffers_max = atoi(buffer); + ++ if (!get_config_key( hkey, appkey, "EAXEnabled", buffer, MAX_PATH )) ++ ds_eax_enabled = IS_OPTION_TRUE( buffer[0] ); ++ + if (appkey) RegCloseKey( appkey ); + if (hkey) RegCloseKey( hkey ); + + TRACE("ds_hel_buflen = %d\n", ds_hel_buflen); + TRACE("ds_snd_queue_max = %d\n", ds_snd_queue_max); + TRACE("ds_hq_buffers_max = %d\n", ds_hq_buffers_max); ++ TRACE("ds_eax_enabled = %u\n", ds_eax_enabled); + } + + static const char * get_device_id(LPCGUID pGuid) +diff --git a/dlls/dsound/dsound_private.h b/dlls/dsound/dsound_private.h +index a9987d0..5c21d1f 100644 +--- a/dlls/dsound/dsound_private.h ++++ b/dlls/dsound/dsound_private.h +@@ -38,6 +38,7 @@ + extern int ds_hel_buflen DECLSPEC_HIDDEN; + extern int ds_snd_queue_max DECLSPEC_HIDDEN; + extern int ds_hq_buffers_max DECLSPEC_HIDDEN; ++extern BOOL ds_eax_enabled DECLSPEC_HIDDEN; + + /***************************************************************************** + * Predeclare the interface implementation structures +@@ -234,6 +235,7 @@ LONG capped_refcount_dec(LONG *ref) DECLSPEC_HIDDEN; + HRESULT DSOUND_FullDuplexCreate(REFIID riid, void **ppv) DECLSPEC_HIDDEN; + + /* eax.c */ ++BOOL WINAPI EAX_QuerySupport(REFGUID guidPropSet, ULONG dwPropID, ULONG *pTypeSupport) DECLSPEC_HIDDEN; + HRESULT WINAPI EAX_Get(IDirectSoundBufferImpl *buf, REFGUID guidPropSet, + ULONG dwPropID, void *pInstanceData, ULONG cbInstanceData, void *pPropData, + ULONG cbPropData, ULONG *pcbReturned) DECLSPEC_HIDDEN; +diff --git a/dlls/dsound/eax.c b/dlls/dsound/eax.c +index 4e98812..c9d5b6c 100644 +--- a/dlls/dsound/eax.c ++++ b/dlls/dsound/eax.c +@@ -809,6 +809,28 @@ void free_eax_buffer(IDirectSoundBufferImpl *dsb) + HeapFree(GetProcessHeap(), 0, dsb->eax.SampleBuffer); + } + ++BOOL WINAPI EAX_QuerySupport(REFGUID guidPropSet, ULONG dwPropID, ULONG *pTypeSupport) ++{ ++ TRACE("(%s,%d,%p)\n", debugstr_guid(guidPropSet), dwPropID, pTypeSupport); ++ ++ if (!ds_eax_enabled) ++ return FALSE; ++ ++ if (IsEqualGUID(&DSPROPSETID_EAX_ReverbProperties, guidPropSet)) { ++ if (dwPropID <= DSPROPERTY_EAX_DAMPING) { ++ *pTypeSupport = KSPROPERTY_SUPPORT_GET | KSPROPERTY_SUPPORT_SET; ++ return TRUE; ++ } ++ } else if (IsEqualGUID(&DSPROPSETID_EAXBUFFER_ReverbProperties, guidPropSet)) { ++ if (dwPropID <= DSPROPERTY_EAXBUFFER_REVERBMIX) { ++ *pTypeSupport = KSPROPERTY_SUPPORT_GET | KSPROPERTY_SUPPORT_SET; ++ return TRUE; ++ } ++ } ++ ++ return FALSE; ++} ++ + HRESULT WINAPI EAX_Get(IDirectSoundBufferImpl *buf, REFGUID guidPropSet, + ULONG dwPropID, void *pInstanceData, ULONG cbInstanceData, void *pPropData, + ULONG cbPropData, ULONG *pcbReturned) +@@ -816,6 +838,9 @@ HRESULT WINAPI EAX_Get(IDirectSoundBufferImpl *buf, REFGUID guidPropSet, + TRACE("(buf=%p,guidPropSet=%s,dwPropID=%d,pInstanceData=%p,cbInstanceData=%d,pPropData=%p,cbPropData=%d,pcbReturned=%p)\n", + buf, debugstr_guid(guidPropSet), dwPropID, pInstanceData, cbInstanceData, pPropData, cbPropData, pcbReturned); + ++ if (!ds_eax_enabled) ++ return E_PROP_ID_UNSUPPORTED; ++ + *pcbReturned = 0; + + if (IsEqualGUID(&DSPROPSETID_EAX_ReverbProperties, guidPropSet)) { +@@ -922,6 +947,9 @@ HRESULT WINAPI EAX_Set(IDirectSoundBufferImpl *buf, REFGUID guidPropSet, + TRACE("(%p,%s,%d,%p,%d,%p,%d)\n", + buf, debugstr_guid(guidPropSet), dwPropID, pInstanceData, cbInstanceData, pPropData, cbPropData); + ++ if (!ds_eax_enabled) ++ return E_PROP_ID_UNSUPPORTED; ++ + if (IsEqualGUID(&DSPROPSETID_EAX_ReverbProperties, guidPropSet)) { + buf->device->eax.using_eax = TRUE; + +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/include-Winetest/0001-include-Automatically-detect-if-tests-are-running-un.patch wine-staging-1.7.41~ubuntu12.04.1/patches/include-Winetest/0001-include-Automatically-detect-if-tests-are-running-un.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/include-Winetest/0001-include-Automatically-detect-if-tests-are-running-un.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/include-Winetest/0001-include-Automatically-detect-if-tests-are-running-un.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ -From dc6ade01aa4c28b675218453d7da818af1a6f827 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Sun, 23 Nov 2014 22:50:34 +0100 -Subject: include: Automatically detect if tests are running under Wine when - WINETEST_PLATFORM is not specified. - ---- - include/wine/test.h | 14 +++++++++++++- - 1 file changed, 13 insertions(+), 1 deletion(-) - -diff --git a/include/wine/test.h b/include/wine/test.h -index f8b608f..567229a 100644 ---- a/include/wine/test.h -+++ b/include/wine/test.h -@@ -618,6 +618,14 @@ static LONG CALLBACK exc_filter( EXCEPTION_POINTERS *ptrs ) - return EXCEPTION_EXECUTE_HANDLER; - } - -+/* check if we're running under wine */ -+static BOOL running_under_wine(void) -+{ -+ HMODULE module = GetModuleHandleA( "ntdll.dll" ); -+ if (!module) return FALSE; -+ return (GetProcAddress( module, "wine_server_call" ) != NULL); -+} -+ - #ifdef __GNUC__ - void _fpreset(void) {} /* override the mingw fpu init code */ - #endif -@@ -632,7 +640,11 @@ int main( int argc, char **argv ) - winetest_argc = argc; - winetest_argv = argv; - -- if (GetEnvironmentVariableA( "WINETEST_PLATFORM", p, sizeof(p) )) winetest_platform = strdup(p); -+ if (GetEnvironmentVariableA( "WINETEST_PLATFORM", p, sizeof(p) )) -+ winetest_platform = strdup(p); -+ else if (running_under_wine()) -+ winetest_platform = "wine"; -+ - if (GetEnvironmentVariableA( "WINETEST_DEBUG", p, sizeof(p) )) winetest_debug = atoi(p); - if (GetEnvironmentVariableA( "WINETEST_INTERACTIVE", p, sizeof(p) )) winetest_interactive = atoi(p); - if (GetEnvironmentVariableA( "WINETEST_REPORT_SUCCESS", p, sizeof(p) )) report_success = atoi(p); --- -2.1.3 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/kernel32-CompareStringEx/0001-kernel32-Silence-repeated-CompareStringEx-FIXME.patch wine-staging-1.7.41~ubuntu12.04.1/patches/kernel32-CompareStringEx/0001-kernel32-Silence-repeated-CompareStringEx-FIXME.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/kernel32-CompareStringEx/0001-kernel32-Silence-repeated-CompareStringEx-FIXME.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/kernel32-CompareStringEx/0001-kernel32-Silence-repeated-CompareStringEx-FIXME.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,50 @@ +From 33fa174b6404cfea673d510457d21d784a23efbd Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Sun, 4 May 2014 00:18:11 +0200 +Subject: kernel32: Silence repeated CompareStringEx FIXME. + +--- + dlls/kernel32/locale.c | 14 +++++++++----- + 1 file changed, 9 insertions(+), 5 deletions(-) + +diff --git a/dlls/kernel32/locale.c b/dlls/kernel32/locale.c +index eca0e39..55ef3d6 100644 +--- a/dlls/kernel32/locale.c ++++ b/dlls/kernel32/locale.c +@@ -2985,9 +2985,10 @@ INT WINAPI CompareStringW(LCID lcid, DWORD flags, + INT WINAPI CompareStringEx(LPCWSTR locale, DWORD flags, LPCWSTR str1, INT len1, + LPCWSTR str2, INT len2, LPNLSVERSIONINFO version, LPVOID reserved, LPARAM lParam) + { +- DWORD supported_flags = NORM_IGNORECASE|NORM_IGNORENONSPACE|NORM_IGNORESYMBOLS|SORT_STRINGSORT +- |NORM_IGNOREKANATYPE|NORM_IGNOREWIDTH|LOCALE_USE_CP_ACP; +- DWORD semistub_flags = NORM_LINGUISTIC_CASING|LINGUISTIC_IGNORECASE|0x10000000; ++ static const DWORD supported_flags = NORM_IGNORECASE|NORM_IGNORENONSPACE|NORM_IGNORESYMBOLS|SORT_STRINGSORT ++ |NORM_IGNOREKANATYPE|NORM_IGNOREWIDTH|LOCALE_USE_CP_ACP ++ |NORM_LINGUISTIC_CASING|LINGUISTIC_IGNORECASE|0x10000000; ++ static DWORD semistub_flags = NORM_LINGUISTIC_CASING|LINGUISTIC_IGNORECASE|0x10000000; + /* 0x10000000 is related to diacritics in Arabic, Japanese, and Hebrew */ + INT ret; + +@@ -3001,14 +3002,17 @@ INT WINAPI CompareStringEx(LPCWSTR locale, DWORD flags, LPCWSTR str1, INT len1, + return 0; + } + +- if (flags & ~(supported_flags|semistub_flags)) ++ if (flags & ~supported_flags) + { + SetLastError(ERROR_INVALID_FLAGS); + return 0; + } + + if (flags & semistub_flags) +- FIXME("semi-stub behavor for flag(s) 0x%x\n", flags & semistub_flags); ++ { ++ FIXME("semi-stub behavior for flag(s) 0x%x\n", flags & semistub_flags); ++ semistub_flags &= ~flags; ++ } + + if (len1 < 0) len1 = strlenW(str1); + if (len2 < 0) len2 = strlenW(str2); +-- +1.7.9.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/kernel32-get_registry_locale_info/0001-kernel32-Fix-calculation-of-returned-buffer-in-get_r.patch wine-staging-1.7.41~ubuntu12.04.1/patches/kernel32-get_registry_locale_info/0001-kernel32-Fix-calculation-of-returned-buffer-in-get_r.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/kernel32-get_registry_locale_info/0001-kernel32-Fix-calculation-of-returned-buffer-in-get_r.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/kernel32-get_registry_locale_info/0001-kernel32-Fix-calculation-of-returned-buffer-in-get_r.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,46 +0,0 @@ -From 702df8220cc4393c65e280d3706311dd0a41ded1 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Fri, 3 Apr 2015 14:44:27 +0200 -Subject: kernel32: Fix calculation of returned buffer in - get_registry_locale_info. - -Fixes a regression introduced by 8826ba1bc86fefa22c543608585ae8f3b4310a5f. -We cannot decide if we have to append a terminating null char unless we have queried again with a bigger buffer. ---- - dlls/kernel32/locale.c | 13 +++++++++++-- - 1 file changed, 11 insertions(+), 2 deletions(-) - -diff --git a/dlls/kernel32/locale.c b/dlls/kernel32/locale.c -index afc5b9d..7798b91 100644 ---- a/dlls/kernel32/locale.c -+++ b/dlls/kernel32/locale.c -@@ -1177,6 +1177,17 @@ static INT get_registry_locale_info( struct registry_value *registry_value, LPWS - - status = NtQueryValueKey( hkey, &nameW, KeyValuePartialInformation, info, size, &size ); - -+ /* try again with a bigger buffer when we have to return the correct size */ -+ if (status == STATUS_BUFFER_OVERFLOW && !buffer && size > info_size) -+ { -+ KEY_VALUE_PARTIAL_INFORMATION *new_info; -+ if ((new_info = HeapReAlloc( GetProcessHeap(), 0, info, size ))) -+ { -+ info = new_info; -+ status = NtQueryValueKey( hkey, &nameW, KeyValuePartialInformation, info, size, &size ); -+ } -+ } -+ - NtClose( hkey ); - - if (!status) -@@ -1207,8 +1218,6 @@ static INT get_registry_locale_info( struct registry_value *registry_value, LPWS - if (status == STATUS_BUFFER_OVERFLOW && !buffer) - { - ret = (size - info_size) / sizeof(WCHAR); -- if (!ret || ((WCHAR *)&info->Data)[ret-1]) -- ret++; - } - else if (status == STATUS_OBJECT_NAME_NOT_FOUND) - { --- -2.3.3 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/kernel32-get_registry_locale_info/definition wine-staging-1.7.41~ubuntu12.04.1/patches/kernel32-get_registry_locale_info/definition --- wine-staging-1.7.40~ubuntu12.04.1/patches/kernel32-get_registry_locale_info/definition 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/kernel32-get_registry_locale_info/definition 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -Fixes: [38344] Fix invalid memory access in get_registry_locale_info diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/kernel32-PowerRequest/0001-kernel32-Add-stub-for-PowerCreateRequest.patch wine-staging-1.7.41~ubuntu12.04.1/patches/kernel32-PowerRequest/0001-kernel32-Add-stub-for-PowerCreateRequest.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/kernel32-PowerRequest/0001-kernel32-Add-stub-for-PowerCreateRequest.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/kernel32-PowerRequest/0001-kernel32-Add-stub-for-PowerCreateRequest.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ -From 79d38918a2d7a45de932c0f9b04a6b5c40d1303b Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Sun, 15 Mar 2015 01:44:12 +0100 -Subject: kernel32: Add stub for PowerCreateRequest. - ---- - dlls/kernel32/kernel32.spec | 2 +- - dlls/kernel32/powermgnt.c | 11 +++++++++++ - 2 files changed, 12 insertions(+), 1 deletion(-) - -diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec -index c95c446..df5b505 100644 ---- a/dlls/kernel32/kernel32.spec -+++ b/dlls/kernel32/kernel32.spec -@@ -1135,7 +1135,7 @@ - @ stdcall PeekNamedPipe(long ptr long ptr ptr ptr) - @ stdcall PostQueuedCompletionStatus(long long ptr ptr) - # @ stub PowerClearRequest --# @ stub PowerCreateRequest -+@ stdcall PowerCreateRequest(ptr) - # @ stub PowerSetRequest - @ stdcall PrepareTape(ptr long long) - @ stub PrivCopyFileExW -diff --git a/dlls/kernel32/powermgnt.c b/dlls/kernel32/powermgnt.c -index 6d4336d..74ec397 100644 ---- a/dlls/kernel32/powermgnt.c -+++ b/dlls/kernel32/powermgnt.c -@@ -100,3 +100,14 @@ EXECUTION_STATE WINAPI SetThreadExecutionState(EXECUTION_STATE flags) - current = flags; - return old; - } -+ -+/*********************************************************************** -+ * PowerCreateRequest (KERNEL32.@) -+ */ -+HANDLE WINAPI PowerCreateRequest(REASON_CONTEXT *context) -+{ -+ FIXME("(%p): stub\n", context); -+ -+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); -+ return INVALID_HANDLE_VALUE; -+} --- -2.3.2 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/kernel32-PowerRequest/0002-kernel32-Add-stubs-for-Power-Set-Clear-Request.patch wine-staging-1.7.41~ubuntu12.04.1/patches/kernel32-PowerRequest/0002-kernel32-Add-stubs-for-Power-Set-Clear-Request.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/kernel32-PowerRequest/0002-kernel32-Add-stubs-for-Power-Set-Clear-Request.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/kernel32-PowerRequest/0002-kernel32-Add-stubs-for-Power-Set-Clear-Request.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,77 +0,0 @@ -From cebca02c89236793ddfbab05adf8dd557b9c6ae4 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Fri, 27 Mar 2015 06:59:11 +0100 -Subject: kernel32: Add stubs for Power{Set,Clear}Request. - ---- - dlls/kernel32/kernel32.spec | 4 ++-- - dlls/kernel32/powermgnt.c | 22 ++++++++++++++++++++++ - include/winbase.h | 6 ++++++ - 3 files changed, 30 insertions(+), 2 deletions(-) - -diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec -index fd1d625..0b90e3c 100644 ---- a/dlls/kernel32/kernel32.spec -+++ b/dlls/kernel32/kernel32.spec -@@ -1134,9 +1134,9 @@ - @ stdcall PeekConsoleInputW(ptr ptr long ptr) - @ stdcall PeekNamedPipe(long ptr long ptr ptr ptr) - @ stdcall PostQueuedCompletionStatus(long long ptr ptr) --# @ stub PowerClearRequest -+@ stdcall PowerClearRequest(ptr long) - @ stdcall PowerCreateRequest(ptr) --# @ stub PowerSetRequest -+@ stdcall PowerSetRequest(ptr long) - @ stdcall PrepareTape(ptr long long) - @ stub PrivCopyFileExW - @ stub PrivMoveFileIdentityW -diff --git a/dlls/kernel32/powermgnt.c b/dlls/kernel32/powermgnt.c -index 74ec397..b5bd0d9 100644 ---- a/dlls/kernel32/powermgnt.c -+++ b/dlls/kernel32/powermgnt.c -@@ -111,3 +111,25 @@ HANDLE WINAPI PowerCreateRequest(REASON_CONTEXT *context) - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return INVALID_HANDLE_VALUE; - } -+ -+/*********************************************************************** -+ * PowerSetRequest (KERNEL32.@) -+ */ -+BOOL WINAPI PowerSetRequest(HANDLE request, POWER_REQUEST_TYPE type) -+{ -+ FIXME("(%p, %u): stub\n", request, type); -+ -+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); -+ return FALSE; -+} -+ -+/*********************************************************************** -+ * PowerClearRequest (KERNEL32.@) -+ */ -+BOOL WINAPI PowerClearRequest(HANDLE request, POWER_REQUEST_TYPE type) -+{ -+ FIXME("(%p, %u): stub\n", request, type); -+ -+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); -+ return FALSE; -+} -diff --git a/include/winbase.h b/include/winbase.h -index 58ed07c..6683312 100644 ---- a/include/winbase.h -+++ b/include/winbase.h -@@ -865,6 +865,12 @@ typedef struct _SYSTEM_POWER_STATUS - DWORD BatteryFullLifeTime; - } SYSTEM_POWER_STATUS, *LPSYSTEM_POWER_STATUS; - -+typedef enum _POWER_REQUEST_TYPE -+{ -+ PowerRequestDisplayRequired, -+ PowerRequestSystemRequired, -+ PowerRequestAwayModeRequired -+} POWER_REQUEST_TYPE, *PPOWER_REQUEST_TYPE; - - typedef struct _SYSTEM_INFO - { --- -2.3.3 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/kernel32-PowerRequest/definition wine-staging-1.7.41~ubuntu12.04.1/patches/kernel32-PowerRequest/definition --- wine-staging-1.7.40~ubuntu12.04.1/patches/kernel32-PowerRequest/definition 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/kernel32-PowerRequest/definition 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -Fixes: Add stub for PowerCreateRequest -Fixes: Add stubs for Power[Set|Clear]Request diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/libs-Debug_Channel/0001-libwine-Add-process-specific-debug-channels.patch wine-staging-1.7.41~ubuntu12.04.1/patches/libs-Debug_Channel/0001-libwine-Add-process-specific-debug-channels.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/libs-Debug_Channel/0001-libwine-Add-process-specific-debug-channels.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/libs-Debug_Channel/0001-libwine-Add-process-specific-debug-channels.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,67 @@ +From 90d826bf3bfe4cb92334bdab29fd0b71d5cb947b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20M=C3=BCller?= +Date: Thu, 16 Apr 2015 21:23:10 +0200 +Subject: libwine: Add process specific debug channels. + +--- + libs/wine/debug.c | 27 +++++++++++++++++++++++++-- + 1 file changed, 25 insertions(+), 2 deletions(-) + +diff --git a/libs/wine/debug.c b/libs/wine/debug.c +index 548ef22..caaf383 100644 +--- a/libs/wine/debug.c ++++ b/libs/wine/debug.c +@@ -125,10 +125,22 @@ static void add_option( const char *name, unsigned char set, unsigned char clear + nb_debug_options++; + } + ++/* get name of the current process */ ++static const char *get_process_name( void ) ++{ ++ const char *ret, *tmp; ++ if (__wine_main_argc < 2) return NULL; ++ ret = __wine_main_argv[1]; ++ if ((tmp = strrchr(ret, '/'))) ret = ++tmp; ++ if ((tmp = strrchr(ret, '\\'))) ret = ++tmp; ++ return ret; ++} ++ + /* parse a set of debugging option specifications and add them to the option list */ + static void parse_options( const char *str ) + { +- char *opt, *next, *options; ++ char *opt, *next, *popt, *options; ++ const char *process = get_process_name(); + unsigned int i; + + if (!(options = strdup(str))) return; +@@ -139,6 +151,17 @@ static void parse_options( const char *str ) + + if ((next = strchr( opt, ',' ))) *next++ = 0; + ++ if ((popt = strchr( opt, ':' ))) ++ { ++ unsigned int inv = 0; ++ *popt = 0; ++ if (!process) continue; ++ if (*opt == '-' || *opt == '+') ++ inv = (*opt++ == '-'); ++ if (inv == !strcmp( opt, process )) continue; ++ opt = ++popt; ++ } ++ + p = opt + strcspn( opt, "+-" ); + if (!p[0]) p = opt; /* assume it's a debug channel name */ + +@@ -180,7 +203,7 @@ static void debug_usage(void) + { + static const char usage[] = + "Syntax of the WINEDEBUG variable:\n" +- " WINEDEBUG=[class]+xxx,[class]-yyy,...\n\n" ++ " WINEDEBUG=[+process:][class]+xxx,[-process:][class]-yyy,...\n\n" + "Example: WINEDEBUG=+all,warn-heap\n" + " turns on all messages except warning heap messages\n" + "Available message classes: err, warn, fixme, trace\n"; +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/libs-Debug_Channel/definition wine-staging-1.7.41~ubuntu12.04.1/patches/libs-Debug_Channel/definition --- wine-staging-1.7.40~ubuntu12.04.1/patches/libs-Debug_Channel/definition 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/libs-Debug_Channel/definition 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1 @@ +Fixes: Add support for process specific debug channels diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/mfplat-MFTRegister/0001-mfplat-Implement-MFTRegister.patch wine-staging-1.7.41~ubuntu12.04.1/patches/mfplat-MFTRegister/0001-mfplat-Implement-MFTRegister.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/mfplat-MFTRegister/0001-mfplat-Implement-MFTRegister.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/mfplat-MFTRegister/0001-mfplat-Implement-MFTRegister.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,239 @@ +From b761ffadb87d3464eefaba9cfc9f15c0297c22b5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20M=C3=BCller?= +Date: Fri, 17 Apr 2015 14:39:17 +0200 +Subject: mfplat: Implement MFTRegister. + +--- + dlls/mfplat/Makefile.in | 1 + + dlls/mfplat/main.c | 144 ++++++++++++++++++++++++++++++++++++++++++++++++ + dlls/mfplat/mfplat.spec | 3 +- + include/mfapi.h | 4 +- + loader/wine.inf.in | 4 ++ + 5 files changed, 153 insertions(+), 3 deletions(-) + +diff --git a/dlls/mfplat/Makefile.in b/dlls/mfplat/Makefile.in +index 2b5bd24..9679f53 100644 +--- a/dlls/mfplat/Makefile.in ++++ b/dlls/mfplat/Makefile.in +@@ -1,4 +1,5 @@ + MODULE = mfplat.dll ++IMPORTS = user32 advapi32 + + C_SRCS = \ + main.c +diff --git a/dlls/mfplat/main.c b/dlls/mfplat/main.c +index 3376a2c..34f17ee 100644 +--- a/dlls/mfplat/main.c ++++ b/dlls/mfplat/main.c +@@ -22,13 +22,42 @@ + + #include "windef.h" + #include "winbase.h" ++#include "winuser.h" ++#include "winreg.h" + #include "mfapi.h" + #include "mferror.h" + + #include "wine/debug.h" ++#include "wine/unicode.h" + + WINE_DEFAULT_DEBUG_CHANNEL(mfplat); + ++static WCHAR transform_keyW[] = {'S','o','f','t','w','a','r','e','\\','C','l','a','s','s','e','s', ++ '\\','M','e','d','i','a','F','o','u','n','d','a','t','i','o','n','\\', ++ 'T','r','a','n','s','f','o','r','m','s',0}; ++static WCHAR categories_keyW[] = {'S','o','f','t','w','a','r','e','\\','C','l','a','s','s','e','s', ++ '\\','M','e','d','i','a','F','o','u','n','d','a','t','i','o','n','\\', ++ 'T','r','a','n','s','f','o','r','m','s','\\', ++ 'C','a','t','e','g','o','r','i','e','s',0}; ++static WCHAR inputtypesW[] = {'I','n','p','u','t','T','y','p','e','s',0}; ++static WCHAR outputtypesW[] = {'O','u','t','p','u','t','T','y','p','e','s',0}; ++static const WCHAR szGUIDFmt[] = ++{ ++ '%','0','8','x','-','%','0','4','x','-','%','0','4','x','-','%','0', ++ '2','x','%','0','2','x','-','%','0','2','x','%','0','2','x','%','0','2', ++ 'x','%','0','2','x','%','0','2','x','%','0','2','x',0 ++}; ++ ++static LPWSTR GUIDToString(LPWSTR lpwstr, REFGUID lpcguid) ++{ ++ wsprintfW(lpwstr, szGUIDFmt, lpcguid->Data1, lpcguid->Data2, ++ lpcguid->Data3, lpcguid->Data4[0], lpcguid->Data4[1], ++ lpcguid->Data4[2], lpcguid->Data4[3], lpcguid->Data4[4], ++ lpcguid->Data4[5], lpcguid->Data4[6], lpcguid->Data4[7]); ++ ++ return lpwstr; ++} ++ + BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved) + { + switch (reason) +@@ -43,6 +72,121 @@ BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved) + return TRUE; + } + ++static HRESULT register_transform(CLSID *clsid, WCHAR *name, ++ UINT32 cinput, MFT_REGISTER_TYPE_INFO *inputTypes, ++ UINT32 coutput, MFT_REGISTER_TYPE_INFO *outputTypes) ++{ ++ HKEY htransform, hclsid = 0; ++ WCHAR buffer[64]; ++ GUID *types; ++ DWORD size; ++ LONG ret; ++ UINT32 i; ++ ++ if (RegOpenKeyW(HKEY_LOCAL_MACHINE, transform_keyW, &htransform)) ++ return E_FAIL; ++ ++ GUIDToString(buffer, clsid); ++ ret = RegCreateKeyW(htransform, buffer, &hclsid); ++ RegCloseKey(htransform); ++ if (ret) return E_FAIL; ++ ++ size = (strlenW(name) + 1) * sizeof(WCHAR); ++ if (RegSetValueExW(hclsid, NULL, 0, REG_SZ, (BYTE *)name, size)) ++ goto err; ++ ++ if (cinput) ++ { ++ size = 2 * cinput * sizeof(GUID); ++ types = HeapAlloc(GetProcessHeap(), 0, size); ++ if (!types) goto err; ++ ++ for (i = 0; i < cinput; i++) ++ { ++ memcpy(&types[2 * i], &inputTypes[i].guidMajorType, sizeof(GUID)); ++ memcpy(&types[2 * i + 1], &inputTypes[i].guidSubtype, sizeof(GUID)); ++ } ++ ++ ret = RegSetValueExW(hclsid, inputtypesW, 0, REG_BINARY, (BYTE *)types, size); ++ HeapFree(GetProcessHeap(), 0, types); ++ if (ret) goto err; ++ } ++ ++ if (coutput) ++ { ++ size = 2 * coutput * sizeof(GUID); ++ types = HeapAlloc(GetProcessHeap(), 0, size); ++ if (!types) goto err; ++ ++ for (i = 0; i < coutput; i++) ++ { ++ memcpy(&types[2 * i], &outputTypes[i].guidMajorType, sizeof(GUID)); ++ memcpy(&types[2 * i + 1], &outputTypes[i].guidSubtype, sizeof(GUID)); ++ } ++ ++ ret = RegSetValueExW(hclsid, outputtypesW, 0, REG_BINARY, (BYTE *)types, size); ++ HeapFree(GetProcessHeap(), 0, types); ++ if (ret) goto err; ++ } ++ ++ RegCloseKey(hclsid); ++ return S_OK; ++ ++err: ++ RegCloseKey(hclsid); ++ return E_FAIL; ++} ++ ++static HRESULT register_category(CLSID *clsid, GUID *category) ++{ ++ HKEY hcategory, htmp1, htmp2; ++ WCHAR buffer[64]; ++ DWORD ret; ++ ++ if (RegOpenKeyW(HKEY_LOCAL_MACHINE, categories_keyW, &hcategory)) ++ return E_FAIL; ++ ++ GUIDToString(buffer, category); ++ ret = RegCreateKeyW(hcategory, buffer, &htmp1); ++ RegCloseKey(hcategory); ++ if (ret) return E_FAIL; ++ ++ GUIDToString(buffer, clsid); ++ ret = RegCreateKeyW(htmp1, buffer, &htmp2); ++ RegCloseKey(htmp1); ++ if (ret) return E_FAIL; ++ ++ RegCloseKey(htmp2); ++ return S_OK; ++} ++ ++/*********************************************************************** ++ * MFTRegister (mfplat.@) ++ */ ++HRESULT WINAPI MFTRegister(CLSID clsid, GUID category, LPWSTR name, UINT32 flags, UINT32 cinput, ++ MFT_REGISTER_TYPE_INFO *inputTypes, UINT32 coutput, ++ MFT_REGISTER_TYPE_INFO *outputTypes, void *attributes) ++{ ++ HRESULT hr; ++ ++ FIXME("(%s, %s, %s, %x, %u, %p, %u, %p, %p)\n", debugstr_guid(&clsid), debugstr_guid(&category), ++ debugstr_w(name), flags, cinput, inputTypes, ++ coutput, outputTypes, attributes); ++ ++ if (attributes) ++ FIXME("attributes not yet supported.\n"); ++ ++ if (flags) ++ FIXME("flags not yet supported.\n"); ++ ++ hr = register_transform(&clsid, name, cinput, inputTypes, coutput, outputTypes); ++ ++ if (SUCCEEDED(hr)) ++ hr = register_category(&clsid, &category); ++ ++ return hr; ++} ++ + /*********************************************************************** + * MFStartup (mfplat.@) + */ +diff --git a/dlls/mfplat/mfplat.spec b/dlls/mfplat/mfplat.spec +index 7100dfd..5b24aa9 100644 +--- a/dlls/mfplat/mfplat.spec ++++ b/dlls/mfplat/mfplat.spec +@@ -137,7 +137,8 @@ + @ stub MFTEnum + @ stub MFTEnumEx + @ stub MFTGetInfo +-@ stub MFTRegister ++# Structures are directly pushed on the stack ++@ stdcall -norelay MFTRegister() + @ stub MFTRegisterLocal + @ stub MFTRegisterLocalByCLSID + @ stub MFTUnregister +diff --git a/include/mfapi.h b/include/mfapi.h +index 929a36d..49a86ac 100644 +--- a/include/mfapi.h ++++ b/include/mfapi.h +@@ -24,8 +24,8 @@ + #define MFSTARTUP_FULL 0 + + typedef struct _MFT_REGISTER_TYPE_INFO { +- GUID major_type; +- GUID sub_type; ++ GUID guidMajorType; ++ GUID guidSubtype; + } MFT_REGISTER_TYPE_INFO; + + typedef unsigned __int64 MFWORKITEM_KEY; +diff --git a/loader/wine.inf.in b/loader/wine.inf.in +index d901251..b6a45e7 100644 +--- a/loader/wine.inf.in ++++ b/loader/wine.inf.in +@@ -620,6 +620,10 @@ HKLM,Software\Borland\Database Engine\Settings\SYSTEM\INIT,SHAREDMEMLOCATION,,90 + HKLM,Software\Clients\Mail,,2,"Native Mail Client" + HKLM,Software\Clients\Mail\Native Mail Client,,2,"Native Mail Client" + HKLM,Software\Clients\Mail\Native Mail Client,"DLLPath",2,"%11%\winemapi.dll" ++HKLM,Software\Classes\MediaFoundation,,16 ++HKLM,Software\Classes\MediaFoundation\MediaSources,,16 ++HKLM,Software\Classes\MediaFoundation\Transforms,,16 ++HKLM,Software\Classes\MediaFoundation\Transforms\Categories,,16 + HKLM,Software\Microsoft\Advanced INF Setup,,16 + HKLM,Software\Microsoft\Clients,,16 + HKLM,Software\Microsoft\Cryptography\Calais\Current,,16 +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/mfplat-MFTRegister/definition wine-staging-1.7.41~ubuntu12.04.1/patches/mfplat-MFTRegister/definition --- wine-staging-1.7.40~ubuntu12.04.1/patches/mfplat-MFTRegister/definition 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/mfplat-MFTRegister/definition 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1 @@ +Fixes: [37811] Add implementation for mfplat.MFTRegister diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/Miscellaneous/0001-wined3d-Silence-repeated-resource_check_usage-FIXME.patch wine-staging-1.7.41~ubuntu12.04.1/patches/Miscellaneous/0001-wined3d-Silence-repeated-resource_check_usage-FIXME.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/Miscellaneous/0001-wined3d-Silence-repeated-resource_check_usage-FIXME.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/Miscellaneous/0001-wined3d-Silence-repeated-resource_check_usage-FIXME.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,36 +0,0 @@ -From 018b5f5d6211aa706e5aef762acb98d39240d9f1 Mon Sep 17 00:00:00 2001 -From: "Erich E. Hoover" -Date: Sun, 20 Jul 2014 22:29:02 +0200 -Subject: wined3d: Silence repeated resource_check_usage FIXME. (try 2) - ---- - dlls/wined3d/resource.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c -index 2f44d36..5988c82 100644 ---- a/dlls/wined3d/resource.c -+++ b/dlls/wined3d/resource.c -@@ -50,7 +50,7 @@ static DWORD resource_access_from_pool(enum wined3d_pool pool) - - static void resource_check_usage(DWORD usage) - { -- static const DWORD handled = WINED3DUSAGE_RENDERTARGET -+ static DWORD handled = WINED3DUSAGE_RENDERTARGET - | WINED3DUSAGE_DEPTHSTENCIL - | WINED3DUSAGE_WRITEONLY - | WINED3DUSAGE_DYNAMIC -@@ -66,7 +66,10 @@ static void resource_check_usage(DWORD usage) - * driver. */ - - if (usage & ~handled) -+ { - FIXME("Unhandled usage flags %#x.\n", usage & ~handled); -+ handled |= usage; -+ } - if ((usage & (WINED3DUSAGE_DYNAMIC | WINED3DUSAGE_WRITEONLY)) == WINED3DUSAGE_DYNAMIC) - WARN_(d3d_perf)("WINED3DUSAGE_DYNAMIC used without WINED3DUSAGE_WRITEONLY.\n"); - } --- -1.8.3.2 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/Miscellaneous/0002-kernel32-Silence-repeated-CompareStringEx-FIXME.patch wine-staging-1.7.41~ubuntu12.04.1/patches/Miscellaneous/0002-kernel32-Silence-repeated-CompareStringEx-FIXME.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/Miscellaneous/0002-kernel32-Silence-repeated-CompareStringEx-FIXME.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/Miscellaneous/0002-kernel32-Silence-repeated-CompareStringEx-FIXME.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,50 +0,0 @@ -From 33fa174b6404cfea673d510457d21d784a23efbd Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Sun, 4 May 2014 00:18:11 +0200 -Subject: kernel32: Silence repeated CompareStringEx FIXME. - ---- - dlls/kernel32/locale.c | 14 +++++++++----- - 1 file changed, 9 insertions(+), 5 deletions(-) - -diff --git a/dlls/kernel32/locale.c b/dlls/kernel32/locale.c -index eca0e39..55ef3d6 100644 ---- a/dlls/kernel32/locale.c -+++ b/dlls/kernel32/locale.c -@@ -2985,9 +2985,10 @@ INT WINAPI CompareStringW(LCID lcid, DWORD flags, - INT WINAPI CompareStringEx(LPCWSTR locale, DWORD flags, LPCWSTR str1, INT len1, - LPCWSTR str2, INT len2, LPNLSVERSIONINFO version, LPVOID reserved, LPARAM lParam) - { -- DWORD supported_flags = NORM_IGNORECASE|NORM_IGNORENONSPACE|NORM_IGNORESYMBOLS|SORT_STRINGSORT -- |NORM_IGNOREKANATYPE|NORM_IGNOREWIDTH|LOCALE_USE_CP_ACP; -- DWORD semistub_flags = NORM_LINGUISTIC_CASING|LINGUISTIC_IGNORECASE|0x10000000; -+ static const DWORD supported_flags = NORM_IGNORECASE|NORM_IGNORENONSPACE|NORM_IGNORESYMBOLS|SORT_STRINGSORT -+ |NORM_IGNOREKANATYPE|NORM_IGNOREWIDTH|LOCALE_USE_CP_ACP -+ |NORM_LINGUISTIC_CASING|LINGUISTIC_IGNORECASE|0x10000000; -+ static DWORD semistub_flags = NORM_LINGUISTIC_CASING|LINGUISTIC_IGNORECASE|0x10000000; - /* 0x10000000 is related to diacritics in Arabic, Japanese, and Hebrew */ - INT ret; - -@@ -3001,14 +3002,17 @@ INT WINAPI CompareStringEx(LPCWSTR locale, DWORD flags, LPCWSTR str1, INT len1, - return 0; - } - -- if (flags & ~(supported_flags|semistub_flags)) -+ if (flags & ~supported_flags) - { - SetLastError(ERROR_INVALID_FLAGS); - return 0; - } - - if (flags & semistub_flags) -- FIXME("semi-stub behavor for flag(s) 0x%x\n", flags & semistub_flags); -+ { -+ FIXME("semi-stub behavior for flag(s) 0x%x\n", flags & semistub_flags); -+ semistub_flags &= ~flags; -+ } - - if (len1 < 0) len1 = strlenW(str1); - if (len2 < 0) len2 = strlenW(str2); --- -1.7.9.5 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/Miscellaneous/0003-wined3d-Silence-repeated-wined3d_swapchain_present-F.patch wine-staging-1.7.41~ubuntu12.04.1/patches/Miscellaneous/0003-wined3d-Silence-repeated-wined3d_swapchain_present-F.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/Miscellaneous/0003-wined3d-Silence-repeated-wined3d_swapchain_present-F.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/Miscellaneous/0003-wined3d-Silence-repeated-wined3d_swapchain_present-F.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,36 +0,0 @@ -From a347c9baa86ec4503d51b03c1659d08a7062839a Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Sun, 4 May 2014 00:53:51 +0200 -Subject: wined3d: Silence repeated wined3d_swapchain_present FIXME. - ---- - dlls/wined3d/swapchain.c | 9 +++++++-- - 1 file changed, 7 insertions(+), 2 deletions(-) - -diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c -index 75e6628..10c3911 100644 ---- a/dlls/wined3d/swapchain.c -+++ b/dlls/wined3d/swapchain.c -@@ -136,12 +136,17 @@ HRESULT CDECL wined3d_swapchain_present(struct wined3d_swapchain *swapchain, - const RECT *src_rect, const RECT *dst_rect, HWND dst_window_override, - const RGNDATA *dirty_region, DWORD flags) - { -+ static DWORD notified_flags = 0; -+ - TRACE("swapchain %p, src_rect %s, dst_rect %s, dst_window_override %p, dirty_region %p, flags %#x.\n", - swapchain, wine_dbgstr_rect(src_rect), wine_dbgstr_rect(dst_rect), - dst_window_override, dirty_region, flags); - -- if (flags) -- FIXME("Ignoring flags %#x.\n", flags); -+ if (flags & ~notified_flags) -+ { -+ FIXME("Ignoring flags %#x.\n", flags & ~notified_flags); -+ notified_flags |= flags; -+ } - - if (!swapchain->back_buffers) - { --- -1.7.9.5 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/Miscellaneous/0004-Appease-the-blessed-version-of-gcc-4.5-when-Werror-i.patch wine-staging-1.7.41~ubuntu12.04.1/patches/Miscellaneous/0004-Appease-the-blessed-version-of-gcc-4.5-when-Werror-i.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/Miscellaneous/0004-Appease-the-blessed-version-of-gcc-4.5-when-Werror-i.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/Miscellaneous/0004-Appease-the-blessed-version-of-gcc-4.5-when-Werror-i.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,81 +0,0 @@ -From aa76ae0448583e87dbe7f374101eb5b20d55dea8 Mon Sep 17 00:00:00 2001 -From: "Erich E. Hoover" -Date: Fri, 8 Aug 2014 19:33:14 -0600 -Subject: Appease the blessed version of gcc (4.5) when -Werror is enabled. - ---- - dlls/d3d9/tests/visual.c | 2 +- - dlls/netapi32/netapi32.c | 2 +- - dlls/winealsa.drv/mmdevdrv.c | 2 +- - dlls/wined3d/glsl_shader.c | 2 +- - tools/makedep.c | 2 +- - 5 files changed, 5 insertions(+), 5 deletions(-) - -diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c -index 0c10ffa..2f35992 100644 ---- a/dlls/d3d9/tests/visual.c -+++ b/dlls/d3d9/tests/visual.c -@@ -11161,7 +11161,7 @@ static void yuv_layout_test(void) - IDirect3D9 *d3d; - D3DCOLOR color; - DWORD ref_color; -- BYTE *buf, *chroma_buf, *u_buf, *v_buf; -+ BYTE *buf, *chroma_buf, *u_buf = NULL, *v_buf = NULL; - UINT width = 20, height = 16; - IDirect3DDevice9 *device; - ULONG refcount; -diff --git a/dlls/netapi32/netapi32.c b/dlls/netapi32/netapi32.c -index d2a61fa..bb7ac1c 100644 ---- a/dlls/netapi32/netapi32.c -+++ b/dlls/netapi32/netapi32.c -@@ -779,7 +779,7 @@ static NET_API_STATUS share_info_to_samba( DWORD level, const BYTE *buf, unsigne - static NET_API_STATUS share_add( LMSTR servername, DWORD level, LPBYTE buf, LPDWORD parm_err ) - { - char *server = NULL; -- unsigned char *info; -+ unsigned char *info = NULL; - NET_API_STATUS status; - - if (servername && !(server = strdup_unixcp( servername ))) return ERROR_OUTOFMEMORY; -diff --git a/dlls/winealsa.drv/mmdevdrv.c b/dlls/winealsa.drv/mmdevdrv.c -index e32cb54..ddf972d 100644 ---- a/dlls/winealsa.drv/mmdevdrv.c -+++ b/dlls/winealsa.drv/mmdevdrv.c -@@ -359,7 +359,7 @@ static WCHAR *construct_device_id(EDataFlow flow, const WCHAR *chunk1, const cha - { - WCHAR *ret; - const WCHAR *prefix; -- DWORD len_wchars = 0, chunk1_len, copied = 0, prefix_len; -+ DWORD len_wchars = 0, chunk1_len = 0, copied = 0, prefix_len; - - static const WCHAR dashW[] = {' ','-',' ',0}; - static const size_t dashW_len = (sizeof(dashW) / sizeof(*dashW)) - 1; -diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c -index f3e921c..fa64436 100644 ---- a/dlls/wined3d/glsl_shader.c -+++ b/dlls/wined3d/glsl_shader.c -@@ -5834,7 +5834,7 @@ static void set_glsl_shader_program(const struct wined3d_context *context, const - GLuint vs_id = 0; - GLuint gs_id = 0; - GLuint ps_id = 0; -- struct list *ps_list, *vs_list; -+ struct list *ps_list = NULL, *vs_list = NULL; - - if (!(context->shader_update_mask & (1 << WINED3D_SHADER_TYPE_VERTEX))) - { -diff --git a/tools/makedep.c b/tools/makedep.c -index 54aab45..103422e 100644 ---- a/tools/makedep.c -+++ b/tools/makedep.c -@@ -1480,7 +1480,7 @@ static char *get_make_variable( struct makefile *make, const char *name ) - */ - static char *get_expanded_make_variable( struct makefile *make, const char *name ) - { -- char *p, *end, *var, *expand, *tmp; -+ char *p, *end, *var, *expand, *tmp = NULL; - - expand = get_make_variable( make, name ); - if (!expand) return NULL; --- -2.2.1 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/mscoree-CorValidateImage/0001-mscoree-Implement-_CorValidateImage.patch wine-staging-1.7.41~ubuntu12.04.1/patches/mscoree-CorValidateImage/0001-mscoree-Implement-_CorValidateImage.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/mscoree-CorValidateImage/0001-mscoree-Implement-_CorValidateImage.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/mscoree-CorValidateImage/0001-mscoree-Implement-_CorValidateImage.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,14 +1,14 @@ -From 813e87c2f979a552a0573abfd6afcfcec8584edf Mon Sep 17 00:00:00 2001 +From 8a95b2a4647c5a92cc2f91b3baaaf2b9756176b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Thu, 2 Apr 2015 02:38:29 +0200 Subject: mscoree: Implement _CorValidateImage. --- - dlls/mscoree/mscoree_main.c | 71 +++++++++++++++++++++++++++++++++++++++++++-- - 1 file changed, 69 insertions(+), 2 deletions(-) + dlls/mscoree/mscoree_main.c | 74 +++++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 72 insertions(+), 2 deletions(-) diff --git a/dlls/mscoree/mscoree_main.c b/dlls/mscoree/mscoree_main.c -index 8b46fd5..6e02c79 100644 +index 8b46fd5..3644a18 100644 --- a/dlls/mscoree/mscoree_main.c +++ b/dlls/mscoree/mscoree_main.c @@ -21,11 +21,14 @@ @@ -26,7 +26,7 @@ #include "winuser.h" #include "winnls.h" #include "winreg.h" -@@ -259,8 +262,72 @@ VOID WINAPI _CorImageUnloading(PVOID imageBase) +@@ -259,8 +262,75 @@ VOID WINAPI _CorImageUnloading(PVOID imageBase) HRESULT WINAPI _CorValidateImage(PVOID* imageBase, LPCWSTR imageName) { @@ -42,7 +42,8 @@ + return E_INVALIDARG; + + nt = RtlImageNtHeader(*imageBase); -+ if (!nt) return STATUS_INVALID_IMAGE_FORMAT; ++ if (!nt) ++ return STATUS_INVALID_IMAGE_FORMAT; + + cliheader = RtlImageDirectoryEntryToData(*imageBase, TRUE, IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR, &size); + if (!cliheader || size < sizeof(*cliheader)) @@ -54,8 +55,7 @@ + + if (nt->OptionalHeader.Magic == IMAGE_NT_OPTIONAL_HDR64_MAGIC) + { -+ /* Clear out the entrypoint if nonzero */ -+ if ((cliheader->Flags & COMIMAGE_FLAGS_ILONLY) && nt->OptionalHeader.AddressOfEntryPoint) ++ if (cliheader->Flags & COMIMAGE_FLAGS_ILONLY) + { + DWORD *entry = &nt->OptionalHeader.AddressOfEntryPoint; + DWORD old_protect; @@ -75,22 +75,25 @@ + if (!(cliheader->Flags & COMIMAGE_FLAGS_ILONLY)) + return STATUS_INVALID_IMAGE_FORMAT; + -+ FIXME("conversion of IMAGE_NT_HEADERS32 -> IMAGE_NT_HEADERS64 header not implemented\n"); ++ FIXME("conversion of IMAGE_NT_HEADERS32 -> IMAGE_NT_HEADERS64 not implemented\n"); + return STATUS_NOT_IMPLEMENTED; + } + +#else + if (nt->OptionalHeader.Magic == IMAGE_NT_OPTIONAL_HDR32_MAGIC) + { -+ DWORD *entry = &nt->OptionalHeader.AddressOfEntryPoint; -+ DWORD old_protect; ++ if (cliheader->Flags & COMIMAGE_FLAGS_ILONLY) ++ { ++ DWORD *entry = &nt->OptionalHeader.AddressOfEntryPoint; ++ DWORD old_protect; + -+ if (!VirtualProtect(entry, sizeof(*entry), PAGE_READWRITE, &old_protect)) -+ return E_UNEXPECTED; -+ *entry = (nt->FileHeader.Characteristics & IMAGE_FILE_DLL) ? -+ ((DWORD)&_CorDllMain - (DWORD)*imageBase) : (DWORD)&_CorExeMain - (DWORD)*imageBase; -+ if (!VirtualProtect(entry, sizeof(*entry), old_protect, &old_protect)) -+ return E_UNEXPECTED; ++ if (!VirtualProtect(entry, sizeof(*entry), PAGE_READWRITE, &old_protect)) ++ return E_UNEXPECTED; ++ *entry = (nt->FileHeader.Characteristics & IMAGE_FILE_DLL) ? ++ ((DWORD)&_CorDllMain - (DWORD)*imageBase) : ((DWORD)&_CorExeMain - (DWORD)*imageBase); ++ if (!VirtualProtect(entry, sizeof(*entry), old_protect, &old_protect)) ++ return E_UNEXPECTED; ++ } + + return STATUS_SUCCESS; + } @@ -102,5 +105,5 @@ HRESULT WINAPI GetCORSystemDirectory(LPWSTR pbuffer, DWORD cchBuffer, DWORD *dwLength) -- -2.3.3 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/mshtml-Event_Scripts/0001-mshtml-Avoid-crash-when-trying-to-bind-event-scripts.patch wine-staging-1.7.41~ubuntu12.04.1/patches/mshtml-Event_Scripts/0001-mshtml-Avoid-crash-when-trying-to-bind-event-scripts.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/mshtml-Event_Scripts/0001-mshtml-Avoid-crash-when-trying-to-bind-event-scripts.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/mshtml-Event_Scripts/0001-mshtml-Avoid-crash-when-trying-to-bind-event-scripts.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,28 @@ +From 86412d7f8bd47ab0228e3a2375e353003f27c199 Mon Sep 17 00:00:00 2001 +From: Jacek Caban +Date: Sat, 18 Apr 2015 21:48:00 +0200 +Subject: mshtml: Avoid crash when trying to bind event scripts to window. + +--- + dlls/mshtml/script.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/dlls/mshtml/script.c b/dlls/mshtml/script.c +index 4590854..e38e5bf 100644 +--- a/dlls/mshtml/script.c ++++ b/dlls/mshtml/script.c +@@ -1506,8 +1506,10 @@ void bind_event_scripts(HTMLDocumentNode *doc) + + if(SUCCEEDED(hres)) + bind_activex_event(doc, plugin_container, event, event_disp); +- else ++ else if(target_node) + bind_node_event(doc, event_target, target_node, event, event_disp); ++ else ++ FIXME("binding to window not supported.\n"); + + if(target_node) { + IHTMLDOMNode_Release(&target_node->IHTMLDOMNode_iface); +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/mshtml-Event_Scripts/definition wine-staging-1.7.41~ubuntu12.04.1/patches/mshtml-Event_Scripts/definition --- wine-staging-1.7.40~ubuntu12.04.1/patches/mshtml-Event_Scripts/definition 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/mshtml-Event_Scripts/definition 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1 @@ +Fixes: [38419] Avoid crash when trying to bind mshtml event scripts to window diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/msvcrt-Math_Precision/0001-msvcrt-Calculate-sinh-cosh-exp-pow-with-higher-preci.patch wine-staging-1.7.41~ubuntu12.04.1/patches/msvcrt-Math_Precision/0001-msvcrt-Calculate-sinh-cosh-exp-pow-with-higher-preci.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/msvcrt-Math_Precision/0001-msvcrt-Calculate-sinh-cosh-exp-pow-with-higher-preci.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/msvcrt-Math_Precision/0001-msvcrt-Calculate-sinh-cosh-exp-pow-with-higher-preci.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,117 @@ +From af8345987e58c2a5e6df44590e677a65ca71594c Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Fri, 10 Apr 2015 07:51:16 +0200 +Subject: msvcrt: Calculate sinh/cosh/exp/pow with higher precision. + +Based on a patch by Zheng Chen. +--- + configure.ac | 32 ++++++++++++++++++++++++++++++++ + dlls/msvcrt/math.c | 21 +++++++++++++++++---- + 2 files changed, 49 insertions(+), 4 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 688ab26..30e8ef2 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2586,6 +2586,38 @@ then + AC_DEFINE(HAVE_ISNAN, 1, [Define to 1 if you have the `isnan' function.]) + fi + ++dnl Check for coshl ++AC_CACHE_CHECK([for coshl], ac_cv_have_coshl, ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[float f = 0.0; return coshl(f)]])],[ac_cv_have_coshl="yes"],[ac_cv_have_coshl="no"])) ++if test "$ac_cv_have_coshl" = "yes" ++then ++ AC_DEFINE(HAVE_COSHL, 1, [Define to 1 if you have the `coshl' function.]) ++fi ++ ++dnl Check for sinhl ++AC_CACHE_CHECK([for sinhl], ac_cv_have_sinhl, ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[float f = 0.0; return sinhl(f)]])],[ac_cv_have_sinhl="yes"],[ac_cv_have_sinhl="no"])) ++if test "$ac_cv_have_sinhl" = "yes" ++then ++ AC_DEFINE(HAVE_SINHL, 1, [Define to 1 if you have the `sinhl' function.]) ++fi ++ ++dnl Check for expl ++AC_CACHE_CHECK([for expl], ac_cv_have_expl, ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[float f = 0.0; return expl(f)]])],[ac_cv_have_expl="yes"],[ac_cv_have_expl="no"])) ++if test "$ac_cv_have_expl" = "yes" ++then ++ AC_DEFINE(HAVE_EXPL, 1, [Define to 1 if you have the `expl' function.]) ++fi ++ ++dnl Check for powl ++AC_CACHE_CHECK([for powl], ac_cv_have_powl, ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[float f = 0.0; return powl(f, f)]])],[ac_cv_have_powl="yes"],[ac_cv_have_powl="no"])) ++if test "$ac_cv_have_powl" = "yes" ++then ++ AC_DEFINE(HAVE_POWL, 1, [Define to 1 if you have the `powl' function.]) ++fi ++ + AC_CHECK_FUNCS(\ + cbrt \ + cbrtf \ +diff --git a/dlls/msvcrt/math.c b/dlls/msvcrt/math.c +index 7c971d3..d48199e 100644 +--- a/dlls/msvcrt/math.c ++++ b/dlls/msvcrt/math.c +@@ -51,6 +51,19 @@ WINE_DEFAULT_DEBUG_CHANNEL(msvcrt); + #define signbit(x) ((x) < 0) + #endif + ++#ifndef HAVE_COSHL ++#define coshl(x) cosh(x) ++#endif ++#ifndef HAVE_SINHL ++#define sinhl(x) sinh(x) ++#endif ++#ifndef HAVE_EXPL ++#define expl(x) exp(x) ++#endif ++#ifndef HAVE_POWL ++#define powl(x,y) pow(x,y) ++#endif ++ + typedef int (CDECL *MSVCRT_matherr_func)(struct MSVCRT__exception *); + typedef double LDOUBLE; /* long double is just a double */ + +@@ -394,7 +407,7 @@ double CDECL MSVCRT_cos( double x ) + double CDECL MSVCRT_cosh( double x ) + { + if (!isfinite(x)) *MSVCRT__errno() = MSVCRT_EDOM; +- return cosh(x); ++ return coshl(x); + } + + /********************************************************************* +@@ -403,7 +416,7 @@ double CDECL MSVCRT_cosh( double x ) + double CDECL MSVCRT_exp( double x ) + { + if (isnan(x)) *MSVCRT__errno() = MSVCRT_EDOM; +- return exp(x); ++ return expl(x); + } + + /********************************************************************* +@@ -441,7 +454,7 @@ double CDECL MSVCRT_log10( double x ) + double CDECL MSVCRT_pow( double x, double y ) + { + /* FIXME: If x < 0 and y is not integral, set EDOM */ +- double z = pow(x,y); ++ double z = powl(x,y); + if (!isfinite(z)) *MSVCRT__errno() = MSVCRT_EDOM; + return z; + } +@@ -461,7 +474,7 @@ double CDECL MSVCRT_sin( double x ) + double CDECL MSVCRT_sinh( double x ) + { + if (!isfinite(x)) *MSVCRT__errno() = MSVCRT_EDOM; +- return sinh(x); ++ return sinhl(x); + } + + /********************************************************************* +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/msvcrt-Math_Precision/definition wine-staging-1.7.41~ubuntu12.04.1/patches/msvcrt-Math_Precision/definition --- wine-staging-1.7.40~ubuntu12.04.1/patches/msvcrt-Math_Precision/definition 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/msvcrt-Math_Precision/definition 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1 @@ +Fixes: [37149] Calculate msvcrt exponential math operations with higher precision diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/msxml3-Coverity/0001-msxml3-Add-a-missing-break-Coverity.patch wine-staging-1.7.41~ubuntu12.04.1/patches/msxml3-Coverity/0001-msxml3-Add-a-missing-break-Coverity.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/msxml3-Coverity/0001-msxml3-Add-a-missing-break-Coverity.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/msxml3-Coverity/0001-msxml3-Add-a-missing-break-Coverity.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,24 @@ +From 5533c5dcaaecdca695a44018611d37d06ffe6522 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Sat, 18 Apr 2015 23:31:02 +0200 +Subject: msxml3: Add a missing break (Coverity). + +--- + dlls/msxml3/node.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c +index 7119a43..1ddc9bf 100644 +--- a/dlls/msxml3/node.c ++++ b/dlls/msxml3/node.c +@@ -2055,6 +2055,7 @@ IXMLDOMNode *create_node( xmlNodePtr node ) + new_node->ref = 1; + init_xmlnode(&new_node->node, node, &new_node->IXMLDOMNode_iface, NULL); + pUnk = (IUnknown*)&new_node->IXMLDOMNode_iface; ++ break; + } + default: + ERR("Called for unsupported node type %d\n", node->type); +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/ntdll-FileDispositionInformation/0004-ntdll-tests-Added-tests-to-set-disposition-on-file-w.patch wine-staging-1.7.41~ubuntu12.04.1/patches/ntdll-FileDispositionInformation/0004-ntdll-tests-Added-tests-to-set-disposition-on-file-w.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/ntdll-FileDispositionInformation/0004-ntdll-tests-Added-tests-to-set-disposition-on-file-w.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/ntdll-FileDispositionInformation/0004-ntdll-tests-Added-tests-to-set-disposition-on-file-w.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,106 @@ +From 915da8ef1214b9378683e144ba18e3a185909dbf Mon Sep 17 00:00:00 2001 +From: Qian Hong +Date: Fri, 17 Apr 2015 00:59:02 +0800 +Subject: ntdll/tests: Added tests to set disposition on file which is mapped + to memory + +--- + dlls/ntdll/tests/file.c | 71 ++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 70 insertions(+), 1 deletion(-) + +diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c +index 05ce517..1726546 100644 +--- a/dlls/ntdll/tests/file.c ++++ b/dlls/ntdll/tests/file.c +@@ -1355,11 +1355,12 @@ static void test_file_disposition_information(void) + { + char tmp_path[MAX_PATH], buffer[MAX_PATH + 16]; + DWORD dirpos; +- HANDLE handle, handle2; ++ HANDLE handle, handle2, mapping; + NTSTATUS res; + IO_STATUS_BLOCK io; + FILE_DISPOSITION_INFORMATION fdi; + BOOL fileDeleted; ++ void *ptr; + + GetTempPathA( MAX_PATH, tmp_path ); + +@@ -1523,6 +1524,74 @@ static void test_file_disposition_information(void) + todo_wine + ok( !fileDeleted, "Directory shouldn't have been deleted\n" ); + RemoveDirectoryA( buffer ); ++ ++ /* cannot set disposition on file with file mapping opened */ ++ GetTempFileNameA( tmp_path, "dis", 0, buffer ); ++ handle = CreateFileA(buffer, GENERIC_READ | GENERIC_WRITE | DELETE, 0, NULL, CREATE_ALWAYS, 0, 0); ++ ok( handle != INVALID_HANDLE_VALUE, "failed to create temp file\n" ); ++ mapping = CreateFileMappingA( handle, NULL, PAGE_READWRITE, 0, 64 * 1024, "DelFileTest" ); ++ ok( mapping != NULL, "failed to create file mapping\n"); ++ fdi.DoDeleteFile = TRUE; ++ res = pNtSetInformationFile( handle, &io, &fdi, sizeof fdi, FileDispositionInformation ); ++ todo_wine ++ ok( res == STATUS_CANNOT_DELETE, "unexpected FileDispositionInformation result (expected STATUS_CANNOT_DELETE, got %x)\n", res ); ++ CloseHandle( handle ); ++ fileDeleted = GetFileAttributesA( buffer ) == INVALID_FILE_ATTRIBUTES && GetLastError() == ERROR_FILE_NOT_FOUND; ++ ok( !fileDeleted, "File shouldn't have been deleted\n" ); ++ CloseHandle( mapping ); ++ DeleteFileA( buffer ); ++ ++ /* can set disposition on file with file mapping closed */ ++ GetTempFileNameA( tmp_path, "dis", 0, buffer ); ++ handle = CreateFileA(buffer, GENERIC_READ | GENERIC_WRITE | DELETE, 0, NULL, CREATE_ALWAYS, 0, 0); ++ ok( handle != INVALID_HANDLE_VALUE, "failed to create temp file\n" ); ++ mapping = CreateFileMappingA( handle, NULL, PAGE_READWRITE, 0, 64 * 1024, "DelFileTest" ); ++ ok( mapping != NULL, "failed to create file mapping\n"); ++ CloseHandle( mapping ); ++ fdi.DoDeleteFile = TRUE; ++ res = pNtSetInformationFile( handle, &io, &fdi, sizeof fdi, FileDispositionInformation ); ++ ok( res == STATUS_SUCCESS, "unexpected FileDispositionInformation result (expected STATUS_SUCCESS, got %x)\n", res ); ++ CloseHandle( handle ); ++ fileDeleted = GetFileAttributesA( buffer ) == INVALID_FILE_ATTRIBUTES && GetLastError() == ERROR_FILE_NOT_FOUND; ++ ok( fileDeleted, "File should have been deleted\n" ); ++ DeleteFileA( buffer ); ++ ++ /* cannot set disposition on file which is mapped to memory */ ++ GetTempFileNameA( tmp_path, "dis", 0, buffer ); ++ handle = CreateFileA(buffer, GENERIC_READ | GENERIC_WRITE | DELETE, 0, NULL, CREATE_ALWAYS, 0, 0); ++ ok( handle != INVALID_HANDLE_VALUE, "failed to create temp file\n" ); ++ mapping = CreateFileMappingA( handle, NULL, PAGE_READWRITE, 0, 64 * 1024, "DelFileTest" ); ++ ok( mapping != NULL, "failed to create file mapping\n"); ++ ptr = MapViewOfFile( mapping, FILE_MAP_READ, 0, 0, 4096 ); ++ ok( ptr != NULL, "MapViewOfFile failed\n"); ++ CloseHandle( mapping ); ++ fdi.DoDeleteFile = TRUE; ++ res = pNtSetInformationFile( handle, &io, &fdi, sizeof fdi, FileDispositionInformation ); ++ todo_wine ++ ok( res == STATUS_CANNOT_DELETE, "unexpected FileDispositionInformation result (expected STATUS_CANNOT_DELETE, got %x)\n", res ); ++ CloseHandle( handle ); ++ fileDeleted = GetFileAttributesA( buffer ) == INVALID_FILE_ATTRIBUTES && GetLastError() == ERROR_FILE_NOT_FOUND; ++ ok( !fileDeleted, "File shouldn't have been deleted\n" ); ++ UnmapViewOfFile( ptr ); ++ DeleteFileA( buffer ); ++ ++ /* can set disposition on file which is mapped to memory and unmapped again */ ++ GetTempFileNameA( tmp_path, "dis", 0, buffer ); ++ handle = CreateFileA(buffer, GENERIC_READ | GENERIC_WRITE | DELETE, 0, NULL, CREATE_ALWAYS, 0, 0); ++ ok( handle != INVALID_HANDLE_VALUE, "failed to create temp file\n" ); ++ mapping = CreateFileMappingA( handle, NULL, PAGE_READWRITE, 0, 64 * 1024, "DelFileTest" ); ++ ok( mapping != NULL, "failed to create file mapping\n"); ++ ptr = MapViewOfFile( mapping, FILE_MAP_READ, 0, 0, 4096 ); ++ ok( ptr != NULL, "MapViewOfFile failed\n"); ++ CloseHandle( mapping ); ++ UnmapViewOfFile( ptr ); ++ fdi.DoDeleteFile = TRUE; ++ res = pNtSetInformationFile( handle, &io, &fdi, sizeof fdi, FileDispositionInformation ); ++ ok( res == STATUS_SUCCESS, "unexpected FileDispositionInformation result (expected STATUS_SUCCESS, got %x)\n", res ); ++ CloseHandle( handle ); ++ fileDeleted = GetFileAttributesA( buffer ) == INVALID_FILE_ATTRIBUTES && GetLastError() == ERROR_FILE_NOT_FOUND; ++ ok( fileDeleted, "File should have been deleted\n" ); ++ DeleteFileA( buffer ); + } + + static void test_iocompletion(void) +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/ntdll-FileDispositionInformation/0005-server-Do-not-allow-to-set-disposition-on-file-which.patch wine-staging-1.7.41~ubuntu12.04.1/patches/ntdll-FileDispositionInformation/0005-server-Do-not-allow-to-set-disposition-on-file-which.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/ntdll-FileDispositionInformation/0005-server-Do-not-allow-to-set-disposition-on-file-which.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/ntdll-FileDispositionInformation/0005-server-Do-not-allow-to-set-disposition-on-file-which.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,67 @@ +From f32616e681bebc98e6969e142edabbd4b5cf86dd Mon Sep 17 00:00:00 2001 +From: Qian Hong +Date: Fri, 17 Apr 2015 18:39:59 +0800 +Subject: server: Do not allow to set disposition on file which has a file + mapping. + +--- + dlls/ntdll/tests/file.c | 2 -- + server/fd.c | 15 +++++++++++++++ + 2 files changed, 15 insertions(+), 2 deletions(-) + +diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c +index 1726546..2784e9b 100644 +--- a/dlls/ntdll/tests/file.c ++++ b/dlls/ntdll/tests/file.c +@@ -1533,7 +1533,6 @@ static void test_file_disposition_information(void) + ok( mapping != NULL, "failed to create file mapping\n"); + fdi.DoDeleteFile = TRUE; + res = pNtSetInformationFile( handle, &io, &fdi, sizeof fdi, FileDispositionInformation ); +- todo_wine + ok( res == STATUS_CANNOT_DELETE, "unexpected FileDispositionInformation result (expected STATUS_CANNOT_DELETE, got %x)\n", res ); + CloseHandle( handle ); + fileDeleted = GetFileAttributesA( buffer ) == INVALID_FILE_ATTRIBUTES && GetLastError() == ERROR_FILE_NOT_FOUND; +@@ -1567,7 +1566,6 @@ static void test_file_disposition_information(void) + CloseHandle( mapping ); + fdi.DoDeleteFile = TRUE; + res = pNtSetInformationFile( handle, &io, &fdi, sizeof fdi, FileDispositionInformation ); +- todo_wine + ok( res == STATUS_CANNOT_DELETE, "unexpected FileDispositionInformation result (expected STATUS_CANNOT_DELETE, got %x)\n", res ); + CloseHandle( handle ); + fileDeleted = GetFileAttributesA( buffer ) == INVALID_FILE_ATTRIBUTES && GetLastError() == ERROR_FILE_NOT_FOUND; +diff --git a/server/fd.c b/server/fd.c +index 036478a..90487cc 100644 +--- a/server/fd.c ++++ b/server/fd.c +@@ -1951,6 +1951,7 @@ unsigned int get_fd_options( struct fd *fd ) + void set_fd_disposition( struct fd *fd, int unlink ) + { + struct stat st; ++ struct list *ptr; + + if (fd->unix_fd == -1) + { +@@ -1978,6 +1979,20 @@ void set_fd_disposition( struct fd *fd, int unlink ) + return; + } + ++ LIST_FOR_EACH( ptr, &fd->inode->open ) ++ { ++ struct fd *fd_ptr = LIST_ENTRY( ptr, struct fd, inode_entry ); ++ if (fd_ptr != fd) ++ { ++ if (fd_ptr->access & FILE_MAPPING_ACCESS) ++ { ++ /* can't unlink files which are mapped to memory */ ++ set_error( STATUS_CANNOT_DELETE ); ++ return; ++ } ++ } ++ } ++ + if (unlink) + fd->closed->unlink = 1; + else if (!(fd->options & FILE_DELETE_ON_CLOSE)) +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/ntdll-RtlIpStringToAddress/0004-ntdll-tests-Add-tests-for-RtlIpv6AddressToString-and.patch wine-staging-1.7.41~ubuntu12.04.1/patches/ntdll-RtlIpStringToAddress/0004-ntdll-tests-Add-tests-for-RtlIpv6AddressToString-and.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/ntdll-RtlIpStringToAddress/0004-ntdll-tests-Add-tests-for-RtlIpv6AddressToString-and.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/ntdll-RtlIpStringToAddress/0004-ntdll-tests-Add-tests-for-RtlIpv6AddressToString-and.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,291 @@ +From 569439573a4b64588331359269f90a32f0d93b9c Mon Sep 17 00:00:00 2001 +From: Mark Jansen +Date: Mon, 6 Apr 2015 00:48:33 +0200 +Subject: ntdll/tests: Add tests for RtlIpv6AddressToString and + RtlIpv6AddressToStringEx. + +--- + dlls/ntdll/tests/rtl.c | 246 +++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 246 insertions(+) + +diff --git a/dlls/ntdll/tests/rtl.c b/dlls/ntdll/tests/rtl.c +index 6d41589..37f74b5 100644 +--- a/dlls/ntdll/tests/rtl.c ++++ b/dlls/ntdll/tests/rtl.c +@@ -91,6 +91,8 @@ static CHAR * (WINAPI *pRtlIpv4AddressToStringA)(const IN_ADDR *, LPSTR); + static NTSTATUS (WINAPI *pRtlIpv4AddressToStringExA)(const IN_ADDR *, USHORT, LPSTR, PULONG); + static NTSTATUS (WINAPI *pRtlIpv4StringToAddressA)(PCSTR, BOOLEAN, PCSTR *, IN_ADDR *); + static NTSTATUS (WINAPI *pRtlIpv4StringToAddressExA)(PCSTR, BOOLEAN, IN_ADDR *, PUSHORT); ++static CHAR * (WINAPI *pRtlIpv6AddressToStringA)(struct in6_addr *, PSTR); ++static NTSTATUS (WINAPI *pRtlIpv6AddressToStringExA)(struct in6_addr *, ULONG, USHORT, PCHAR, PULONG); + static NTSTATUS (WINAPI *pRtlIpv6StringToAddressA)(PCSTR, PCSTR *, struct in6_addr *); + static NTSTATUS (WINAPI *pRtlIpv6StringToAddressW)(PCWSTR, PCWSTR *, struct in6_addr *); + static NTSTATUS (WINAPI *pRtlIpv6StringToAddressExA)(PCSTR, struct in6_addr *, PULONG, PUSHORT); +@@ -148,6 +150,8 @@ static void InitFunctionPtrs(void) + pRtlIpv4AddressToStringExA = (void *)GetProcAddress(hntdll, "RtlIpv4AddressToStringExA"); + pRtlIpv4StringToAddressA = (void *)GetProcAddress(hntdll, "RtlIpv4StringToAddressA"); + pRtlIpv4StringToAddressExA = (void *)GetProcAddress(hntdll, "RtlIpv4StringToAddressExA"); ++ pRtlIpv6AddressToStringA = (void *)GetProcAddress(hntdll, "RtlIpv6AddressToStringA"); ++ pRtlIpv6AddressToStringExA = (void *)GetProcAddress(hntdll, "RtlIpv6AddressToStringExA"); + pRtlIpv6StringToAddressA = (void *)GetProcAddress(hntdll, "RtlIpv6StringToAddressA"); + pRtlIpv6StringToAddressW = (void *)GetProcAddress(hntdll, "RtlIpv6StringToAddressW"); + pRtlIpv6StringToAddressExA = (void *)GetProcAddress(hntdll, "RtlIpv6StringToAddressExA"); +@@ -1924,6 +1928,246 @@ static void init_ip6(IN6_ADDR* addr, const int src[8]) + } + } + ++static void test_RtlIpv6AddressToString(void) ++{ ++ CHAR buffer[50]; ++ LPCSTR result; ++ IN6_ADDR ip; ++ DWORD_PTR len; ++ struct ++ { ++ PCSTR address; ++ int ip[8]; ++ } tests[] = ++ { ++ /* ipv4 addresses & ISATAP addresses */ ++ { "::13.1.68.3", { 0, 0, 0, 0, 0, 0, 0x10d, 0x344 } }, ++ { "::ffff:13.1.68.3", { 0, 0, 0, 0, 0, 0xffff, 0x10d, 0x344 } }, ++ { "::feff:d01:4403", { 0, 0, 0, 0, 0, 0xfffe, 0x10d, 0x344 } }, ++ { "::fffe:d01:4403", { 0, 0, 0, 0, 0, 0xfeff, 0x10d, 0x344 } }, ++ { "::100:d01:4403", { 0, 0, 0, 0, 0, 1, 0x10d, 0x344 } }, ++ { "::1:d01:4403", { 0, 0, 0, 0, 0, 0x100, 0x10d, 0x344 } }, ++ { "::ffff:0:4403", { 0, 0, 0, 0, 0, 0xffff, 0, 0x344 } }, ++ { "::ffff:13.1.0.0", { 0, 0, 0, 0, 0, 0xffff, 0x10d, 0 } }, ++ { "::ffff:0:0", { 0, 0, 0, 0, 0, 0xffff, 0, 0 } }, ++ { "::ffff:0:13.1.68.3", { 0, 0, 0, 0, 0xffff, 0, 0x10d, 0x344 } }, ++ { "::ffff:ffff:d01:4403", { 0, 0, 0, 0, 0xffff, 0xffff, 0x10d, 0x344 } }, ++ { "::ffff:0:0:d01:4403", { 0, 0, 0, 0xffff, 0, 0, 0x10d, 0x344 } }, ++ { "::ffff:255.255.255.255", { 0, 0, 0, 0, 0, 0xffff, 0xffff, 0xffff } }, ++ { "::ffff:129.144.52.38", { 0, 0, 0, 0, 0, 0xffff, 0x9081, 0x2634 } }, ++ { "::5efe:129.144.52.38", { 0, 0, 0, 0, 0, 0xfe5e, 0x9081, 0x2634 } }, ++ { "1111:2222:3333:4444:0:5efe:129.144.52.38", { 0x1111, 0x2222, 0x3333, 0x4444, 0, 0xfe5e, 0x9081, 0x2634 } }, ++ { "1111:2222:3333::5efe:129.144.52.38", { 0x1111, 0x2222, 0x3333, 0, 0, 0xfe5e, 0x9081, 0x2634 } }, ++ { "1111:2222::5efe:129.144.52.38", { 0x1111, 0x2222, 0, 0, 0, 0xfe5e, 0x9081, 0x2634 } }, ++ { "1111::5efe:129.144.52.38", { 0x1111, 0, 0, 0, 0, 0xfe5e, 0x9081, 0x2634 } }, ++ { "::200:5efe:129.144.52.38", { 0, 0, 0, 0, 2, 0xfe5e, 0x9081, 0x2634 } }, ++ { "::100:5efe:8190:3426", { 0, 0, 0, 0, 1, 0xfe5e, 0x9081, 0x2634 } }, ++ /* 'normal' addresses */ ++ { "::1", { 0, 0, 0, 0, 0, 0, 0, 0x100 } }, ++ { "0:1:2:3:4:5:6:7", { 0, 0x100, 0x200, 0x300, 0x400, 0x500, 0x600, 0x700 } }, ++ { "1080::8:800:200c:417a", { 0x8010, 0, 0, 0, 0x800, 0x8, 0x0c20, 0x7a41 } }, ++ { "1111:2222:3333:4444:5555:6666:7b7b:7b7b", { 0x1111, 0x2222, 0x3333, 0x4444, 0x5555, 0x6666, 0x7b7b, 0x7b7b } }, ++ { "1111:2222:3333:4444:5555:6666:7777:8888", { 0x1111, 0x2222, 0x3333, 0x4444, 0x5555, 0x6666, 0x7777, 0x8888 } }, ++ { "1111:2222:3333:4444:5555:6666::", { 0x1111, 0x2222, 0x3333, 0x4444, 0x5555, 0x6666, 0, 0 } }, ++ { "1111:2222:3333:4444:5555:6666:0:8888", { 0x1111, 0x2222, 0x3333, 0x4444, 0x5555, 0x6666, 0, 0x8888 } }, ++ { "1111:2222:3333:4444:5555::", { 0x1111, 0x2222, 0x3333, 0x4444, 0x5555, 0, 0, 0 } }, ++ { "1111:2222:3333:4444:5555:0:7b7b:7b7b", { 0x1111, 0x2222, 0x3333, 0x4444, 0x5555, 0, 0x7b7b, 0x7b7b } }, ++ { "1111:2222:3333:4444:5555:0:7777:8888", { 0x1111, 0x2222, 0x3333, 0x4444, 0x5555, 0, 0x7777, 0x8888 } }, ++ { "1111:2222:3333:4444:5555::8888", { 0x1111, 0x2222, 0x3333, 0x4444, 0x5555, 0, 0, 0x8888 } }, ++ { "1111::", { 0x1111, 0, 0, 0, 0, 0, 0, 0 } }, ++ { "1111::7b7b:7b7b", { 0x1111, 0, 0, 0, 0, 0, 0x7b7b, 0x7b7b } }, ++ { "1111:0:3333:4444:5555:6666:7b7b:7b7b", { 0x1111, 0, 0x3333, 0x4444, 0x5555, 0x6666, 0x7b7b, 0x7b7b } }, ++ { "1111:0:3333:4444:5555:6666:7777:8888", { 0x1111, 0, 0x3333, 0x4444, 0x5555, 0x6666, 0x7777, 0x8888 } }, ++ { "1111::4444:5555:6666:7b7b:7b7b", { 0x1111, 0, 0, 0x4444, 0x5555, 0x6666, 0x7b7b, 0x7b7b } }, ++ { "1111::4444:5555:6666:7777:8888", { 0x1111, 0, 0, 0x4444, 0x5555, 0x6666, 0x7777, 0x8888 } }, ++ { "1111::5555:6666:7b7b:7b7b", { 0x1111, 0, 0, 0, 0x5555, 0x6666, 0x7b7b, 0x7b7b } }, ++ { "1111::5555:6666:7777:8888", { 0x1111, 0, 0, 0, 0x5555, 0x6666, 0x7777, 0x8888 } }, ++ { "1111::6666:7b7b:7b7b", { 0x1111, 0, 0, 0, 0, 0x6666, 0x7b7b, 0x7b7b } }, ++ { "1111::6666:7777:8888", { 0x1111, 0, 0, 0, 0, 0x6666, 0x7777, 0x8888 } }, ++ { "1111::7777:8888", { 0x1111, 0, 0, 0, 0, 0, 0x7777, 0x8888 } }, ++ { "1111::8888", { 0x1111, 0, 0, 0, 0, 0, 0, 0x8888 } }, ++ { "1:2:3:4:5:6:102:304", { 0x100, 0x200, 0x300, 0x400, 0x500, 0x600, 0x201, 0x403 } }, ++ { "1:2:3:4:5:6:7:8", { 0x100, 0x200, 0x300, 0x400, 0x500, 0x600, 0x700, 0x800 } }, ++ { "1:2:3:4:5:6::", { 0x100, 0x200, 0x300, 0x400, 0x500, 0x600, 0, 0 } }, ++ { "1:2:3:4:5:6:0:8", { 0x100, 0x200, 0x300, 0x400, 0x500, 0x600, 0, 0x800 } }, ++ { "2001:0:1234::c1c0:abcd:876", { 0x120, 0, 0x3412, 0, 0, 0xc0c1, 0xcdab, 0x7608 } }, ++ { "2001:0:4136:e378:8000:63bf:3fff:fdd2", { 0x120, 0, 0x3641, 0x78e3, 0x80, 0xbf63, 0xff3f, 0xd2fd } }, ++ { "2001:db8::1428:57ab", { 0x120, 0xb80d, 0, 0, 0, 0, 0x2814, 0xab57 } }, ++ { "2001:db8:1234:ffff:ffff:ffff:ffff:ffff", { 0x120, 0xb80d, 0x3412, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff } }, ++ { "2001:0:ce49:7601:2cad:dfff:7c94:fffe", { 0x120, 0, 0x49ce, 0x176, 0xad2c, 0xffdf, 0x947c, 0xfeff } }, ++ { "2001:db8:85a3::8a2e:370:7334", { 0x120, 0xb80d, 0xa385, 0, 0, 0x2e8a, 0x7003, 0x3473 } }, ++ { "3ffe:b00::1:0:0:a", { 0xfe3f, 0xb, 0, 0, 0x100, 0, 0, 0xa00 } }, ++ { "::a:b:c:d:e", { 0, 0, 0, 0xa00, 0xb00, 0xc00, 0xd00, 0xe00 } }, ++ { "::123.123.123.123", { 0, 0, 0, 0, 0, 0, 0x7b7b, 0x7b7b } }, ++ { "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff", { 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff } }, ++ { "1111:2222:3333:4444:5555:6666:7777:1", { 0x1111, 0x2222, 0x3333, 0x4444, 0x5555, 0x6666, 0x7777, 0x100 } }, ++ { "1111:2222:3333:4444:5555:6666:7777:8888", { 0x1111, 0x2222, 0x3333, 0x4444, 0x5555, 0x6666, 0x7777, 0x8888 } }, ++ { "1111:2222::", { 0x1111, 0x2222, 0, 0, 0, 0, 0, 0 } }, ++ { "1111::3333:4444:5555:6666:7777", { 0x1111, 0, 0, 0x3333, 0x4444, 0x5555, 0x6666, 0x7777 } }, ++ { "1111:2222::", { 0x1111, 0x2222, 0, 0, 0, 0, 0, 0 } }, ++ { "1111::3333", { 0x1111, 0, 0, 0, 0, 0, 0, 0x3333 } }, ++ { "2001:0:1234::c1c0:abcd:876", { 0x120, 0, 0x3412, 0, 0, 0xc0c1, 0xcdab, 0x7608 } }, ++ { "2001::ffd3", { 0x120, 0, 0, 0, 0, 0, 0, 0xd3ff } }, ++ }; ++ const size_t testcount = sizeof(tests) / sizeof(tests[0]); ++ unsigned int i; ++ ++ if (!pRtlIpv6AddressToStringA) ++ { ++ skip("RtlIpv6AddressToStringA not available\n"); ++ return; ++ } ++ ++ memset(buffer, '#', sizeof(buffer)); ++ buffer[sizeof(buffer)-1] = 0; ++ memset(&ip, 0, sizeof(ip)); ++ result = pRtlIpv6AddressToStringA(&ip, buffer); ++ ++ len = strlen(buffer); ++ ok(result == (buffer + len) && !strcmp(buffer, "::"), ++ "got %p with '%s' (expected %p with '::')\n", result, buffer, buffer + len); ++ ++ result = pRtlIpv6AddressToStringA(&ip, NULL); ++ ok(result == (LPCSTR)~0 || broken(result == (LPCSTR)len) /* WinXP / Win2k3 */, ++ "got %p, expected %p\n", result, (LPCSTR)~0); ++ ++ for (i = 0; i < testcount; i++) ++ { ++ init_ip6(&ip, tests[i].ip); ++ memset(buffer, '#', sizeof(buffer)); ++ buffer[sizeof(buffer)-1] = 0; ++ ++ result = pRtlIpv6AddressToStringA(&ip, buffer); ++ len = strlen(buffer); ++ ok(result == (buffer + len) && !strcmp(buffer, tests[i].address), ++ "got %p with '%s' (expected %p with '%s')\n", result, buffer, buffer + len, tests[i].address); ++ ++ ok(buffer[45] == 0 || broken(buffer[45] != 0) /* WinXP / Win2k3 */, ++ "expected data at buffer[45] to always be NULL\n"); ++ ok(buffer[46] == '#', "expected data at buffer[46] not to change\n"); ++ } ++} ++ ++static void test_RtlIpv6AddressToStringEx(void) ++{ ++ CHAR buffer[70]; ++ NTSTATUS res; ++ IN6_ADDR ip; ++ ULONG len; ++ struct ++ { ++ PCSTR address; ++ ULONG scopeid; ++ USHORT port; ++ int ip[8]; ++ } tests[] = ++ { ++ /* ipv4 addresses & ISATAP addresses */ ++ { "::13.1.68.3", 0, 0, { 0, 0, 0, 0, 0, 0, 0x10d, 0x344 } }, ++ { "::13.1.68.3%1", 1, 0, { 0, 0, 0, 0, 0, 0, 0x10d, 0x344 } }, ++ { "::13.1.68.3%4294949819", 0xffffbbbb, 0, { 0, 0, 0, 0, 0, 0, 0x10d, 0x344 } }, ++ { "[::13.1.68.3%4294949819]:65518", 0xffffbbbb, 0xeeff, { 0, 0, 0, 0, 0, 0, 0x10d, 0x344 } }, ++ { "[::13.1.68.3%4294949819]:256", 0xffffbbbb, 1, { 0, 0, 0, 0, 0, 0, 0x10d, 0x344 } }, ++ { "[::13.1.68.3]:256", 0, 1, { 0, 0, 0, 0, 0, 0, 0x10d, 0x344 } }, ++ ++ { "::1:d01:4403", 0, 0, { 0, 0, 0, 0, 0, 0x100, 0x10d, 0x344 } }, ++ { "::1:d01:4403%1", 1, 0, { 0, 0, 0, 0, 0, 0x100, 0x10d, 0x344 } }, ++ { "::1:d01:4403%4294949819", 0xffffbbbb, 0, { 0, 0, 0, 0, 0, 0x100, 0x10d, 0x344 } }, ++ { "[::1:d01:4403%4294949819]:65518", 0xffffbbbb, 0xeeff, { 0, 0, 0, 0, 0, 0x100, 0x10d, 0x344 } }, ++ { "[::1:d01:4403%4294949819]:256", 0xffffbbbb, 1, { 0, 0, 0, 0, 0, 0x100, 0x10d, 0x344 } }, ++ { "[::1:d01:4403]:256", 0, 1, { 0, 0, 0, 0, 0, 0x100, 0x10d, 0x344 } }, ++ ++ { "1111:2222:3333:4444:0:5efe:129.144.52.38", 0, 0, { 0x1111, 0x2222, 0x3333, 0x4444, 0, 0xfe5e, 0x9081, 0x2634 } }, ++ { "1111:2222:3333:4444:0:5efe:129.144.52.38%1", 1, 0, { 0x1111, 0x2222, 0x3333, 0x4444, 0, 0xfe5e, 0x9081, 0x2634 } }, ++ { "1111:2222:3333:4444:0:5efe:129.144.52.38%4294949819", 0xffffbbbb, 0, { 0x1111, 0x2222, 0x3333, 0x4444, 0, 0xfe5e, 0x9081, 0x2634 } }, ++ { "[1111:2222:3333:4444:0:5efe:129.144.52.38%4294949819]:65518",0xffffbbbb, 0xeeff, { 0x1111, 0x2222, 0x3333, 0x4444, 0, 0xfe5e, 0x9081, 0x2634 } }, ++ { "[1111:2222:3333:4444:0:5efe:129.144.52.38%4294949819]:256", 0xffffbbbb, 1, { 0x1111, 0x2222, 0x3333, 0x4444, 0, 0xfe5e, 0x9081, 0x2634 } }, ++ { "[1111:2222:3333:4444:0:5efe:129.144.52.38]:256", 0, 1, { 0x1111, 0x2222, 0x3333, 0x4444, 0, 0xfe5e, 0x9081, 0x2634 } }, ++ ++ { "::1", 0, 0, { 0, 0, 0, 0, 0, 0, 0, 0x100 } }, ++ { "::1%1", 1, 0, { 0, 0, 0, 0, 0, 0, 0, 0x100 } }, ++ { "::1%4294949819", 0xffffbbbb, 0, { 0, 0, 0, 0, 0, 0, 0, 0x100 } }, ++ { "[::1%4294949819]:65518", 0xffffbbbb, 0xeeff, { 0, 0, 0, 0, 0, 0, 0, 0x100 } }, ++ { "[::1%4294949819]:256", 0xffffbbbb, 1, { 0, 0, 0, 0, 0, 0, 0, 0x100 } }, ++ { "[::1]:256", 0, 1, { 0, 0, 0, 0, 0, 0, 0, 0x100 } }, ++ ++ { "1111:2222:3333:4444:5555:6666:7b7b:7b7b", 0, 0, { 0x1111, 0x2222, 0x3333, 0x4444, 0x5555, 0x6666, 0x7b7b, 0x7b7b } }, ++ { "1111:2222:3333:4444:5555:6666:7b7b:7b7b%1", 1, 0, { 0x1111, 0x2222, 0x3333, 0x4444, 0x5555, 0x6666, 0x7b7b, 0x7b7b } }, ++ { "1111:2222:3333:4444:5555:6666:7b7b:7b7b%4294949819", 0xffffbbbb, 0, { 0x1111, 0x2222, 0x3333, 0x4444, 0x5555, 0x6666, 0x7b7b, 0x7b7b } }, ++ { "[1111:2222:3333:4444:5555:6666:7b7b:7b7b%4294949819]:65518", 0xffffbbbb, 0xeeff, { 0x1111, 0x2222, 0x3333, 0x4444, 0x5555, 0x6666, 0x7b7b, 0x7b7b } }, ++ { "[1111:2222:3333:4444:5555:6666:7b7b:7b7b%4294949819]:256", 0xffffbbbb, 1, { 0x1111, 0x2222, 0x3333, 0x4444, 0x5555, 0x6666, 0x7b7b, 0x7b7b } }, ++ { "[1111:2222:3333:4444:5555:6666:7b7b:7b7b]:256", 0, 1, { 0x1111, 0x2222, 0x3333, 0x4444, 0x5555, 0x6666, 0x7b7b, 0x7b7b } }, ++ ++ { "1111::", 0, 0, { 0x1111, 0, 0, 0, 0, 0, 0, 0 } }, ++ { "1111::%1", 1, 0, { 0x1111, 0, 0, 0, 0, 0, 0, 0 } }, ++ { "1111::%4294949819", 0xffffbbbb, 0, { 0x1111, 0, 0, 0, 0, 0, 0, 0 } }, ++ { "[1111::%4294949819]:65518", 0xffffbbbb, 0xeeff, { 0x1111, 0, 0, 0, 0, 0, 0, 0 } }, ++ { "[1111::%4294949819]:256", 0xffffbbbb, 1, { 0x1111, 0, 0, 0, 0, 0, 0, 0 } }, ++ { "[1111::]:256", 0, 1, { 0x1111, 0, 0, 0, 0, 0, 0, 0 } }, ++ ++ { "2001::ffd3", 0, 0, { 0x120, 0, 0, 0, 0, 0, 0, 0xd3ff } }, ++ { "2001::ffd3%1", 1, 0, { 0x120, 0, 0, 0, 0, 0, 0, 0xd3ff } }, ++ { "2001::ffd3%4294949819", 0xffffbbbb, 0, { 0x120, 0, 0, 0, 0, 0, 0, 0xd3ff } }, ++ { "[2001::ffd3%4294949819]:65518", 0xffffbbbb, 0xeeff, { 0x120, 0, 0, 0, 0, 0, 0, 0xd3ff } }, ++ { "[2001::ffd3%4294949819]:256", 0xffffbbbb, 1, { 0x120, 0, 0, 0, 0, 0, 0, 0xd3ff } }, ++ { "[2001::ffd3]:256", 0, 1, { 0x120, 0, 0, 0, 0, 0, 0, 0xd3ff } }, ++ }; ++ const size_t testcount = sizeof(tests) / sizeof(tests[0]); ++ unsigned int i; ++ ++ if (!pRtlIpv6AddressToStringExA) ++ { ++ skip("RtlIpv6AddressToStringExA not available\n"); ++ return; ++ } ++ ++ memset(buffer, '#', sizeof(buffer)); ++ buffer[sizeof(buffer)-1] = 0; ++ memset(&ip, 0, sizeof(ip)); ++ len = sizeof(buffer); ++ res = pRtlIpv6AddressToStringExA(&ip, 0, 0, buffer, &len); ++ ++ ok(res == STATUS_SUCCESS, "[validate] res = 0x%08x, expected STATUS_SUCCESS\n", res); ++ ok(len == 3 && !strcmp(buffer, "::"), ++ "got len %d with '%s' (expected 3 with '::')\n", len, buffer); ++ ++ memset(buffer, '#', sizeof(buffer)); ++ buffer[sizeof(buffer)-1] = 0; ++ ++ len = sizeof(buffer); ++ res = pRtlIpv6AddressToStringExA(NULL, 0, 0, buffer, &len); ++ ok(res == STATUS_INVALID_PARAMETER, "[null ip] res = 0x%08x, expected STATUS_INVALID_PARAMETER\n", res); ++ ++ len = sizeof(buffer); ++ res = pRtlIpv6AddressToStringExA(&ip, 0, 0, NULL, &len); ++ ok(res == STATUS_INVALID_PARAMETER, "[null buffer] res = 0x%08x, expected STATUS_INVALID_PARAMETER\n", res); ++ ++ res = pRtlIpv6AddressToStringExA(&ip, 0, 0, buffer, NULL); ++ ok(res == STATUS_INVALID_PARAMETER, "[null length] res = 0x%08x, expected STATUS_INVALID_PARAMETER\n", res); ++ ++ len = 2; ++ memset(buffer, '#', sizeof(buffer)); ++ buffer[sizeof(buffer)-1] = 0; ++ res = pRtlIpv6AddressToStringExA(&ip, 0, 0, buffer, &len); ++ ok(res == STATUS_INVALID_PARAMETER, "[null length] res = 0x%08x, expected STATUS_INVALID_PARAMETER\n", res); ++ ok(buffer[0] == '#', "got first char %c (expected '#')\n", buffer[0]); ++ ok(len == 3, "got len %d (expected len 3)\n", len); ++ ++ for (i = 0; i < testcount; i++) ++ { ++ init_ip6(&ip, tests[i].ip); ++ len = sizeof(buffer); ++ memset(buffer, '#', sizeof(buffer)); ++ buffer[sizeof(buffer)-1] = 0; ++ ++ res = pRtlIpv6AddressToStringExA(&ip, tests[i].scopeid, tests[i].port, buffer, &len); ++ ++ ok(res == STATUS_SUCCESS, "[validate] res = 0x%08x, expected STATUS_SUCCESS\n", res); ++ ok(len == (strlen(tests[i].address) + 1) && !strcmp(buffer, tests[i].address), ++ "got len %d with '%s' (expected %d with '%s')\n", len, buffer, strlen(tests[i].address), tests[i].address); ++ } ++} ++ + static void compare_RtlIpv6StringToAddressW(PCSTR name_a, int terminator_offset_a, + const struct in6_addr *addr_a, NTSTATUS res_a) + { +@@ -3173,6 +3417,8 @@ START_TEST(rtl) + test_RtlIpv4AddressToStringEx(); + test_RtlIpv4StringToAddress(); + test_RtlIpv4StringToAddressEx(); ++ test_RtlIpv6AddressToString(); ++ test_RtlIpv6AddressToStringEx(); + test_RtlIpv6StringToAddress(); + test_RtlIpv6StringToAddressEx(); + test_LdrAddRefDll(); +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/ntdll-WinSqm/0002-ntdll-Add-stub-for-WinSqmIsOptedIn.patch wine-staging-1.7.41~ubuntu12.04.1/patches/ntdll-WinSqm/0002-ntdll-Add-stub-for-WinSqmIsOptedIn.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/ntdll-WinSqm/0002-ntdll-Add-stub-for-WinSqmIsOptedIn.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/ntdll-WinSqm/0002-ntdll-Add-stub-for-WinSqmIsOptedIn.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,74 @@ +From 335eee22883daada4e4c95c0ac13c64fe92e3d3a Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Sat, 18 Apr 2015 15:25:30 +0200 +Subject: ntdll: Add stub for WinSqmIsOptedIn. + +Based on a patch by Stefan Leichter. +--- + dlls/ntdll/ntdll.spec | 1 + + dlls/ntdll/rtl.c | 9 +++++++++ + dlls/ntdll/tests/rtl.c | 4 ++++ + 3 files changed, 14 insertions(+) + +diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec +index 4053388..9225898 100644 +--- a/dlls/ntdll/ntdll.spec ++++ b/dlls/ntdll/ntdll.spec +@@ -971,4 +971,5 @@ + @ stdcall -ret64 VerSetConditionMask(int64 long long) + @ stdcall WinSqmEndSession(ptr) ++@ stdcall WinSqmIsOptedIn() + @ stdcall WinSqmStartSession(ptr long long) + @ stdcall ZwAcceptConnectPort(ptr long ptr long long ptr) NtAcceptConnectPort +diff --git a/dlls/ntdll/rtl.c b/dlls/ntdll/rtl.c +index 2e87beb..971c964 100644 +--- a/dlls/ntdll/rtl.c ++++ b/dlls/ntdll/rtl.c +@@ -1321,6 +1321,15 @@ NTSTATUS WINAPI WinSqmEndSession(PVOID unknown1) + return STATUS_NOT_IMPLEMENTED; + } + ++/********************************************************************* ++ * WinSqmIsOptedIn [NTDLL.@] ++ */ ++BOOL WINAPI WinSqmIsOptedIn(void) ++{ ++ FIXME("() stub!\n"); ++ return FALSE; ++} ++ + /****************************************************************************** + * WinSqmStartSession [NTDLL.@] + */ +diff --git a/dlls/ntdll/tests/rtl.c b/dlls/ntdll/tests/rtl.c +index 1e6c6f8..7b5f07d 100644 +--- a/dlls/ntdll/tests/rtl.c ++++ b/dlls/ntdll/tests/rtl.c +@@ -63,6 +63,7 @@ static inline USHORT __my_ushort_swap(USHORT s) + /* Function ptrs for ntdll calls */ + static HMODULE hntdll = 0; + static PVOID (WINAPI *pWinSqmStartSession)(PVOID unknown1, DWORD unknown2, DWORD unknown3); ++static BOOL (WINAPI *pWinSqmIsOptedIn)(void); + static NTSTATUS (WINAPI *pWinSqmEndSession)(PVOID unknown1); + static SIZE_T (WINAPI *pRtlCompareMemory)(LPCVOID,LPCVOID,SIZE_T); + static SIZE_T (WINAPI *pRtlCompareMemoryUlong)(PULONG, SIZE_T, ULONG); +@@ -112,6 +113,7 @@ static void InitFunctionPtrs(void) + ok(hntdll != 0, "LoadLibrary failed\n"); + if (hntdll) { + pWinSqmStartSession = (void *)GetProcAddress(hntdll, "WinSqmStartSession"); ++ pWinSqmIsOptedIn = (void *)GetProcAddress(hntdll, "WinSqmIsOptedIn"); + pWinSqmEndSession = (void *)GetProcAddress(hntdll, "WinSqmEndSession"); + pRtlCompareMemory = (void *)GetProcAddress(hntdll, "RtlCompareMemory"); + pRtlCompareMemoryUlong = (void *)GetProcAddress(hntdll, "RtlCompareMemoryUlong"); +@@ -186,6 +188,8 @@ static void test_WinSqm(void) + + args = 3 - call_stdcall_func3( pWinSqmStartSession, NULL, 0, 0 ) / 4; + ok(args == 3, "WinSqmStartSession expected to take %d arguments instead of 3\n", args); ++ args = 3 - call_stdcall_func3( pWinSqmIsOptedIn, NULL, 0, 0 ) / 4; ++ ok(args == 0, "WinSqmIsOptedIn expected to take %d arguments instead of 0\n", args); + args = 3 - call_stdcall_func3( pWinSqmEndSession, NULL, 0, 0 ) / 4; + ok(args == 1, "WinSqmEndSession expected to take %d arguments instead of 1\n", args); + +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/ntdll-WinSqm/definition wine-staging-1.7.41~ubuntu12.04.1/patches/ntdll-WinSqm/definition --- wine-staging-1.7.40~ubuntu12.04.1/patches/ntdll-WinSqm/definition 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/ntdll-WinSqm/definition 2015-04-18 23:54:01.000000000 +0000 @@ -1 +1,2 @@ Fixes: [31971] ntdll is missing WinSqm[Start|End]Session implementation +Fixes: [38388] Add stub for WinSqmIsOptedIn diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/ntoskrnl-PsLookupProcessByProcessId/0001-ntoskrnl-Avoid-repeated-FIXME-messages-in-PsLookupPr.patch wine-staging-1.7.41~ubuntu12.04.1/patches/ntoskrnl-PsLookupProcessByProcessId/0001-ntoskrnl-Avoid-repeated-FIXME-messages-in-PsLookupPr.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/ntoskrnl-PsLookupProcessByProcessId/0001-ntoskrnl-Avoid-repeated-FIXME-messages-in-PsLookupPr.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/ntoskrnl-PsLookupProcessByProcessId/0001-ntoskrnl-Avoid-repeated-FIXME-messages-in-PsLookupPr.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -From 7c0c2b354c261c898ac9acfea575cc022a1bbb34 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Fri, 27 Mar 2015 08:15:14 +0100 -Subject: ntoskrnl: Avoid repeated FIXME messages in - PsLookupProcessByProcessId. - ---- - dlls/ntoskrnl.exe/ntoskrnl.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c -index 95dcdc9..bb26424 100644 ---- a/dlls/ntoskrnl.exe/ntoskrnl.c -+++ b/dlls/ntoskrnl.exe/ntoskrnl.c -@@ -1885,7 +1885,8 @@ NTSTATUS WINAPI PsSetLoadImageNotifyRoutine(PLOAD_IMAGE_NOTIFY_ROUTINE routine) - */ - NTSTATUS WINAPI PsLookupProcessByProcessId(HANDLE processid, PEPROCESS *process) - { -- FIXME("(%p %p) stub\n", processid, process); -+ static int once; -+ if (!once++) FIXME("(%p %p) stub\n", processid, process); - return STATUS_NOT_IMPLEMENTED; - } - --- -2.3.3 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/ntoskrnl-PsLookupProcessByProcessId/definition wine-staging-1.7.41~ubuntu12.04.1/patches/ntoskrnl-PsLookupProcessByProcessId/definition --- wine-staging-1.7.40~ubuntu12.04.1/patches/ntoskrnl-PsLookupProcessByProcessId/definition 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/ntoskrnl-PsLookupProcessByProcessId/definition 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -Fixes: [36821] Avoid spam of FIXME messages for PsLookupProcessByProcessId stub diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/opengl32-Revert_Disable_Ext/0001-Revert-opengl32-Return-a-NULL-pointer-for-functions-.patch wine-staging-1.7.41~ubuntu12.04.1/patches/opengl32-Revert_Disable_Ext/0001-Revert-opengl32-Return-a-NULL-pointer-for-functions-.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/opengl32-Revert_Disable_Ext/0001-Revert-opengl32-Return-a-NULL-pointer-for-functions-.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/opengl32-Revert_Disable_Ext/0001-Revert-opengl32-Return-a-NULL-pointer-for-functions-.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,29 @@ +From 8981a08726f04d4c0f8360dc469b532724199d62 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Fri, 10 Apr 2015 08:17:22 +0200 +Subject: Revert "opengl32: Return a NULL pointer for functions requiring + unsupported or disabled extensions." + +This reverts commit bfd4836867d6d90eaeae6ccbc02e37678b59b8f1. +--- + dlls/opengl32/wgl.c | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/dlls/opengl32/wgl.c b/dlls/opengl32/wgl.c +index 9482c75..1903807 100644 +--- a/dlls/opengl32/wgl.c ++++ b/dlls/opengl32/wgl.c +@@ -875,10 +875,7 @@ PROC WINAPI wglGetProcAddress( LPCSTR name ) + void *driver_func = funcs->wgl.p_wglGetProcAddress( name ); + + if (!is_extension_supported(ext_ret->extension)) +- { + WARN("Extension %s required for %s not supported\n", ext_ret->extension, name); +- return NULL; +- } + + if (driver_func == NULL) + { +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/opengl32-Revert_Disable_Ext/definition wine-staging-1.7.41~ubuntu12.04.1/patches/opengl32-Revert_Disable_Ext/definition --- wine-staging-1.7.40~ubuntu12.04.1/patches/opengl32-Revert_Disable_Ext/definition 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/opengl32-Revert_Disable_Ext/definition 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1 @@ +Fixes: [38264] Fix regression caused by blacklisting supported OpenGL extensions diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/patchinstall.sh wine-staging-1.7.41~ubuntu12.04.1/patches/patchinstall.sh --- wine-staging-1.7.40~ubuntu12.04.1/patches/patchinstall.sh 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/patchinstall.sh 2015-04-18 23:54:01.000000000 +0000 @@ -62,11 +62,11 @@ # Enable or disable all patchsets patch_enable_all () { + enable_Compiler_Warnings="$1" enable_Exagear="$1" - enable_Miscellaneous="$1" enable_Pipelight="$1" enable_Staging="$1" - enable_advapi32_Revert_DACL="$1" + enable_advapi32_LsaLookupSids="$1" enable_browseui_Progress_Dialog="$1" enable_combase_String="$1" enable_comctl32_LoadIconMetric="$1" @@ -94,8 +94,8 @@ enable_ddraw_EnumSurfaces="$1" enable_ddraw_Hotpatch="$1" enable_ddraw_d3d_execute_buffer="$1" + enable_dinput_DeviceState="$1" enable_dinput_Events="$1" - enable_dsound_3DSound="$1" enable_dsound_EAX="$1" enable_dsound_Fast_Mixer="$1" enable_dxgi_GetDesc="$1" @@ -107,8 +107,8 @@ enable_gdiplus_GdipCreateEffect="$1" enable_gdiplus_GdipCreateRegionRgnData="$1" enable_imagehlp_BindImageEx="$1" - enable_include_Winetest="$1" enable_iphlpapi_TCP_Table="$1" + enable_kernel32_CompareStringEx="$1" enable_kernel32_Console_Handles="$1" enable_kernel32_CopyFileEx="$1" enable_kernel32_GetDriveTypeW="$1" @@ -120,19 +120,22 @@ enable_kernel32_GetVolumePathName="$1" enable_kernel32_Named_Pipe="$1" enable_kernel32_NeedCurrentDirectoryForExePath="$1" - enable_kernel32_PowerRequest="$1" enable_kernel32_Profile="$1" enable_kernel32_SetFileInformationByHandle="$1" enable_kernel32_VerifyVersionInfo="$1" - enable_kernel32_get_registry_locale_info="$1" + enable_libs_Debug_Channel="$1" enable_libs_Unicode_Collation="$1" enable_makedep_PARENTSPEC="$1" + enable_mfplat_MFTRegister="$1" enable_mmdevapi_AEV_Stubs="$1" enable_mountmgr_DosDevices="$1" enable_mscoree_CorValidateImage="$1" + enable_mshtml_Event_Scripts="$1" enable_msvcp90_basic_string_wchar_dtor="$1" + enable_msvcrt_Math_Precision="$1" enable_msvcrt_atof_strtod="$1" enable_msvfw32_Image_Size="$1" + enable_msxml3_Coverity="$1" enable_ntdll_APC_Performance="$1" enable_ntdll_APC_Start_Process="$1" enable_ntdll_Activation_Context="$1" @@ -162,23 +165,22 @@ enable_ntdll_WriteWatches="$1" enable_ntoskrnl_DriverTest="$1" enable_ntoskrnl_Emulator="$1" - enable_ntoskrnl_PsLookupProcessByProcessId="$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_opengl32_Revert_Disable_Ext="$1" enable_quartz_MediaSeeking_Positions="$1" enable_regedit_String_Termination="$1" enable_riched20_IText_Interface="$1" enable_secur32_ANSI_NTLM_Credentials="$1" - enable_secur32_Gnutls28_Compat="$1" - enable_secur32_Schannel_ContextAttr="$1" enable_server_ACL_Compat="$1" enable_server_Address_List_Change="$1" enable_server_ClipCursor="$1" enable_server_CreateProcess_ACLs="$1" + enable_server_Delete_On_Close="$1" enable_server_File_Permissions="$1" enable_server_Inherited_ACLs="$1" enable_server_JobObjects="$1" @@ -191,6 +193,7 @@ enable_server_Stored_ACLs="$1" enable_server_Unexpected_Wakeup="$1" enable_setupapi_SetupDiSelectBestCompatDrv="$1" + enable_setupapi_SetupDiSetDeviceInstallParamsW="$1" enable_setupapi_SetupPromptForDisk="$1" enable_shdocvw_ParseURLFromOutsideSource_Tests="$1" enable_shell32_Default_Folder_ACLs="$1" @@ -207,7 +210,6 @@ enable_user32_DrawTextExW="$1" enable_user32_GetRawInputDeviceList="$1" enable_user32_GetSystemMetrics="$1" - enable_user32_Key_State="$1" enable_user32_Mouse_Message_Hwnd="$1" enable_user32_Painting="$1" enable_user32_ScrollWindowEx="$1" @@ -215,28 +217,31 @@ enable_vcomp_Stub_Functions="$1" enable_version_VerQueryValue="$1" enable_version_VersionInfoEx="$1" + enable_wbemprox_Localhost="$1" + enable_wbemprox_Win32_SystemEnclosure="$1" enable_wiaservc_IEnumWIA_DEV_INFO="$1" enable_windowscodecs_TIFF_Decoder="$1" enable_wine_inf_Performance="$1" + enable_wine_inf_ProfileList_UserSID="$1" enable_wineboot_HKEY_DYN_DATA="$1" enable_winebuild_LinkerVersion="$1" enable_winecfg_Libraries="$1" enable_winecfg_Staging="$1" enable_winecfg_Unmounted_Devices="$1" - enable_wineconsole_Buffer_Size="$1" enable_wined3d_CSMT_Helper="$1" enable_wined3d_CSMT_Main="$1" enable_wined3d_DXTn="$1" enable_wined3d_Multisampling="$1" enable_wined3d_Revert_PixelFormat="$1" enable_wined3d_UnhandledBlendFactor="$1" + enable_wined3d_resource_check_usage="$1" + enable_wined3d_wined3d_swapchain_present="$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_Thread_Data="$1" - enable_winex11_ToUnicodeEx="$1" enable_winex11_Window_Groups="$1" enable_winex11_Window_Style="$1" enable_winex11_XEMBED="$1" @@ -246,8 +251,8 @@ enable_wpcap_Dynamic_Linking="$1" enable_ws2_32_APC_Performance="$1" enable_ws2_32_Connect_Time="$1" + enable_ws2_32_Select="$1" enable_ws2_32_TransmitFile="$1" - enable_ws2_32_WS_select="$1" enable_ws2_32_WriteWatches="$1" enable_ws2_32_getaddrinfo="$1" enable_wtsapi32_EnumerateProcesses="$1" @@ -257,20 +262,20 @@ patch_enable () { case "$1" in + Compiler_Warnings) + enable_Compiler_Warnings="$2" + ;; Exagear) enable_Exagear="$2" ;; - Miscellaneous) - enable_Miscellaneous="$2" - ;; Pipelight) enable_Pipelight="$2" ;; Staging) enable_Staging="$2" ;; - advapi32-Revert_DACL) - enable_advapi32_Revert_DACL="$2" + advapi32-LsaLookupSids) + enable_advapi32_LsaLookupSids="$2" ;; browseui-Progress_Dialog) enable_browseui_Progress_Dialog="$2" @@ -353,12 +358,12 @@ ddraw-d3d_execute_buffer) enable_ddraw_d3d_execute_buffer="$2" ;; + dinput-DeviceState) + enable_dinput_DeviceState="$2" + ;; dinput-Events) enable_dinput_Events="$2" ;; - dsound-3DSound) - enable_dsound_3DSound="$2" - ;; dsound-EAX) enable_dsound_EAX="$2" ;; @@ -392,12 +397,12 @@ imagehlp-BindImageEx) enable_imagehlp_BindImageEx="$2" ;; - include-Winetest) - enable_include_Winetest="$2" - ;; iphlpapi-TCP_Table) enable_iphlpapi_TCP_Table="$2" ;; + kernel32-CompareStringEx) + enable_kernel32_CompareStringEx="$2" + ;; kernel32-Console_Handles) enable_kernel32_Console_Handles="$2" ;; @@ -431,9 +436,6 @@ kernel32-NeedCurrentDirectoryForExePath) enable_kernel32_NeedCurrentDirectoryForExePath="$2" ;; - kernel32-PowerRequest) - enable_kernel32_PowerRequest="$2" - ;; kernel32-Profile) enable_kernel32_Profile="$2" ;; @@ -443,8 +445,8 @@ kernel32-VerifyVersionInfo) enable_kernel32_VerifyVersionInfo="$2" ;; - kernel32-get_registry_locale_info) - enable_kernel32_get_registry_locale_info="$2" + libs-Debug_Channel) + enable_libs_Debug_Channel="$2" ;; libs-Unicode_Collation) enable_libs_Unicode_Collation="$2" @@ -452,6 +454,9 @@ makedep-PARENTSPEC) enable_makedep_PARENTSPEC="$2" ;; + mfplat-MFTRegister) + enable_mfplat_MFTRegister="$2" + ;; mmdevapi-AEV_Stubs) enable_mmdevapi_AEV_Stubs="$2" ;; @@ -461,15 +466,24 @@ mscoree-CorValidateImage) enable_mscoree_CorValidateImage="$2" ;; + mshtml-Event_Scripts) + enable_mshtml_Event_Scripts="$2" + ;; msvcp90-basic_string_wchar_dtor) enable_msvcp90_basic_string_wchar_dtor="$2" ;; + msvcrt-Math_Precision) + enable_msvcrt_Math_Precision="$2" + ;; msvcrt-atof_strtod) enable_msvcrt_atof_strtod="$2" ;; msvfw32-Image_Size) enable_msvfw32_Image_Size="$2" ;; + msxml3-Coverity) + enable_msxml3_Coverity="$2" + ;; ntdll-APC_Performance) enable_ntdll_APC_Performance="$2" ;; @@ -557,9 +571,6 @@ ntoskrnl-Emulator) enable_ntoskrnl_Emulator="$2" ;; - ntoskrnl-PsLookupProcessByProcessId) - enable_ntoskrnl_PsLookupProcessByProcessId="$2" - ;; ntoskrnl-Stubs) enable_ntoskrnl_Stubs="$2" ;; @@ -578,6 +589,9 @@ ole32-CoWaitForMultipleHandles) enable_ole32_CoWaitForMultipleHandles="$2" ;; + opengl32-Revert_Disable_Ext) + enable_opengl32_Revert_Disable_Ext="$2" + ;; quartz-MediaSeeking_Positions) enable_quartz_MediaSeeking_Positions="$2" ;; @@ -590,12 +604,6 @@ secur32-ANSI_NTLM_Credentials) enable_secur32_ANSI_NTLM_Credentials="$2" ;; - secur32-Gnutls28_Compat) - enable_secur32_Gnutls28_Compat="$2" - ;; - secur32-Schannel_ContextAttr) - enable_secur32_Schannel_ContextAttr="$2" - ;; server-ACL_Compat) enable_server_ACL_Compat="$2" ;; @@ -608,6 +616,9 @@ server-CreateProcess_ACLs) enable_server_CreateProcess_ACLs="$2" ;; + server-Delete_On_Close) + enable_server_Delete_On_Close="$2" + ;; server-File_Permissions) enable_server_File_Permissions="$2" ;; @@ -644,6 +655,9 @@ setupapi-SetupDiSelectBestCompatDrv) enable_setupapi_SetupDiSelectBestCompatDrv="$2" ;; + setupapi-SetupDiSetDeviceInstallParamsW) + enable_setupapi_SetupDiSetDeviceInstallParamsW="$2" + ;; setupapi-SetupPromptForDisk) enable_setupapi_SetupPromptForDisk="$2" ;; @@ -692,9 +706,6 @@ user32-GetSystemMetrics) enable_user32_GetSystemMetrics="$2" ;; - user32-Key_State) - enable_user32_Key_State="$2" - ;; user32-Mouse_Message_Hwnd) enable_user32_Mouse_Message_Hwnd="$2" ;; @@ -716,6 +727,12 @@ version-VersionInfoEx) enable_version_VersionInfoEx="$2" ;; + wbemprox-Localhost) + enable_wbemprox_Localhost="$2" + ;; + wbemprox-Win32_SystemEnclosure) + enable_wbemprox_Win32_SystemEnclosure="$2" + ;; wiaservc-IEnumWIA_DEV_INFO) enable_wiaservc_IEnumWIA_DEV_INFO="$2" ;; @@ -725,6 +742,9 @@ wine.inf-Performance) enable_wine_inf_Performance="$2" ;; + wine.inf-ProfileList_UserSID) + enable_wine_inf_ProfileList_UserSID="$2" + ;; wineboot-HKEY_DYN_DATA) enable_wineboot_HKEY_DYN_DATA="$2" ;; @@ -740,9 +760,6 @@ winecfg-Unmounted_Devices) enable_winecfg_Unmounted_Devices="$2" ;; - wineconsole-Buffer_Size) - enable_wineconsole_Buffer_Size="$2" - ;; wined3d-CSMT_Helper) enable_wined3d_CSMT_Helper="$2" ;; @@ -761,6 +778,12 @@ wined3d-UnhandledBlendFactor) enable_wined3d_UnhandledBlendFactor="$2" ;; + wined3d-resource_check_usage) + enable_wined3d_resource_check_usage="$2" + ;; + wined3d-wined3d_swapchain_present) + enable_wined3d_wined3d_swapchain_present="$2" + ;; winedevice-Fix_Relocation) enable_winedevice_Fix_Relocation="$2" ;; @@ -779,9 +802,6 @@ winex11-Thread_Data) enable_winex11_Thread_Data="$2" ;; - winex11-ToUnicodeEx) - enable_winex11_ToUnicodeEx="$2" - ;; winex11-Window_Groups) enable_winex11_Window_Groups="$2" ;; @@ -809,12 +829,12 @@ ws2_32-Connect_Time) enable_ws2_32_Connect_Time="$2" ;; + ws2_32-Select) + enable_ws2_32_Select="$2" + ;; ws2_32-TransmitFile) enable_ws2_32_TransmitFile="$2" ;; - ws2_32-WS_select) - enable_ws2_32_WS_select="$2" - ;; ws2_32-WriteWatches) enable_ws2_32_WriteWatches="$2" ;; @@ -1071,15 +1091,11 @@ if test "$enable_server_PeekMessage" -gt 1; then abort "Patchset server-PeekMessage disabled, but server-Shared_Memory depends on that." fi - if test "$enable_user32_Key_State" -gt 1; then - abort "Patchset user32-Key_State disabled, but server-Shared_Memory depends on that." - fi enable_dinput_Events=1 enable_ntdll_Threading=1 enable_server_ClipCursor=1 enable_server_Key_State=1 enable_server_PeekMessage=1 - enable_user32_Key_State=1 fi if test "$enable_server_JobObjects" -eq 1; then @@ -1105,25 +1121,21 @@ fi if test "$enable_server_Inherited_ACLs" -eq 1; then - if test "$enable_server_File_Permissions" -gt 1; then - abort "Patchset server-File_Permissions disabled, but server-Inherited_ACLs depends on that." - fi if test "$enable_server_Stored_ACLs" -gt 1; then abort "Patchset server-Stored_ACLs disabled, but server-Inherited_ACLs depends on that." fi - enable_server_File_Permissions=1 enable_server_Stored_ACLs=1 fi if test "$enable_server_Stored_ACLs" -eq 1; then - if test "$enable_advapi32_Revert_DACL" -gt 1; then - abort "Patchset advapi32-Revert_DACL disabled, but server-Stored_ACLs depends on that." - fi if test "$enable_ntdll_DOS_Attributes" -gt 1; then abort "Patchset ntdll-DOS_Attributes disabled, but server-Stored_ACLs depends on that." fi - enable_advapi32_Revert_DACL=1 + if test "$enable_server_File_Permissions" -gt 1; then + abort "Patchset server-File_Permissions disabled, but server-Stored_ACLs depends on that." + fi enable_ntdll_DOS_Attributes=1 + enable_server_File_Permissions=1 fi if test "$enable_nvencodeapi_Video_Encoder" -eq 1; then @@ -1297,6 +1309,19 @@ fi +# Patchset Compiler_Warnings +# | +# | Modified files: +# | * dlls/d3d9/tests/visual.c, dlls/netapi32/netapi32.c, dlls/winealsa.drv/mmdevdrv.c, dlls/wined3d/glsl_shader.c, +# | tools/makedep.c +# | +if test "$enable_Compiler_Warnings" -eq 1; then + patch_apply Compiler_Warnings/0001-Appease-the-blessed-version-of-gcc-4.5-when-Werror-i.patch + ( + echo '+ { "Erich E. Hoover", "Appease the blessed version of gcc (4.5) when -Werror is enabled.", 1 },'; + ) >> "$patchlist" +fi + # Patchset ws2_32-WriteWatches # | # | Modified files: @@ -1354,25 +1379,6 @@ ) >> "$patchlist" fi -# Patchset Miscellaneous -# | -# | Modified files: -# | * dlls/d3d9/tests/visual.c, dlls/kernel32/locale.c, dlls/netapi32/netapi32.c, dlls/winealsa.drv/mmdevdrv.c, -# | dlls/wined3d/glsl_shader.c, dlls/wined3d/resource.c, dlls/wined3d/swapchain.c, tools/makedep.c -# | -if test "$enable_Miscellaneous" -eq 1; then - patch_apply Miscellaneous/0001-wined3d-Silence-repeated-resource_check_usage-FIXME.patch - patch_apply Miscellaneous/0002-kernel32-Silence-repeated-CompareStringEx-FIXME.patch - patch_apply Miscellaneous/0003-wined3d-Silence-repeated-wined3d_swapchain_present-F.patch - patch_apply Miscellaneous/0004-Appease-the-blessed-version-of-gcc-4.5-when-Werror-i.patch - ( - echo '+ { "Erich E. Hoover", "wined3d: Silence repeated resource_check_usage FIXME.", 2 },'; - echo '+ { "Sebastian Lackner", "kernel32: Silence repeated CompareStringEx FIXME.", 1 },'; - echo '+ { "Sebastian Lackner", "wined3d: Silence repeated wined3d_swapchain_present FIXME.", 1 },'; - echo '+ { "Erich E. Hoover", "Appease the blessed version of gcc (4.5) when -Werror is enabled.", 1 },'; - ) >> "$patchlist" -fi - # Patchset Pipelight # | # | Modified files: @@ -1418,23 +1424,21 @@ ) >> "$patchlist" fi -# Patchset advapi32-Revert_DACL +# Patchset advapi32-LsaLookupSids # | # | Modified files: -# | * dlls/advapi32/security.c, dlls/advapi32/tests/security.c, server/file.c +# | * dlls/advapi32/lsa.c # | -if test "$enable_advapi32_Revert_DACL" -eq 1; then - patch_apply advapi32-Revert_DACL/0001-Revert-advapi32-Add-DACL-inheritance-support-in-SetS.patch - patch_apply advapi32-Revert_DACL/0002-Revert-advapi32-tests-Add-test-for-mapping-DACL-to-p.patch - patch_apply advapi32-Revert_DACL/0003-Revert-advapi32-Add-SetNamedSecurityInfo-test-with-e.patch - patch_apply advapi32-Revert_DACL/0004-Revert-server-Make-directory-DACL-entries-inheritabl.patch - patch_apply advapi32-Revert_DACL/0005-Revert-advapi-Don-t-use-CreateFile-when-opening-file.patch - ( - echo '+ { "Sebastian Lackner", "Revert \"advapi32: Add DACL inheritance support in SetSecurityInfo.\".", 1 },'; - echo '+ { "Sebastian Lackner", "Revert \"advapi32/tests: Add test for mapping DACL to permission.\".", 1 },'; - echo '+ { "Sebastian Lackner", "Revert \"advapi32: Add SetNamedSecurityInfo test with empty DACL.\".", 1 },'; - echo '+ { "Sebastian Lackner", "Revert \"server: Make directory DACL entries inheritable.\".", 1 },'; - echo '+ { "Sebastian Lackner", "Revert \"advapi: Don'\''t use CreateFile when opening file with possibly empty DACL.\".", 1 },'; +if test "$enable_advapi32_LsaLookupSids" -eq 1; then + patch_apply advapi32-LsaLookupSids/0001-advapi32-Initialize-buffer-length-to-zero-in-LsaLook.patch + patch_apply advapi32-LsaLookupSids/0002-advapi32-Prepend-a-hidden-LSA_TRUST_INFORMATION-in-L.patch + patch_apply advapi32-LsaLookupSids/0003-advapi32-Prepend-a-hidden-LSA_TRUST_INFORMATION-in-L.patch + patch_apply advapi32-LsaLookupSids/0004-advapi32-Fallback-to-Sid-string-when-LookupAccountSi.patch + ( + echo '+ { "Qian Hong", "advapi32: Initialize buffer length to zero in LsaLookupSids to prevent crash.", 2 },'; + echo '+ { "Qian Hong", "advapi32: Prepend a hidden LSA_TRUST_INFORMATION in LsaLookupSids to avoid crash when Domains[-1] incorrectly accessed by application.", 2 },'; + echo '+ { "Qian Hong", "advapi32: Prepend a hidden LSA_TRUST_INFORMATION in LsaLookupNames2 to avoid crash when Domains[-1] incorrectly accessed by application.", 2 },'; + echo '+ { "Qian Hong", "advapi32: Fallback to Sid string when LookupAccountSid fails.", 1 },'; ) >> "$patchlist" fi @@ -1822,11 +1826,13 @@ # | * [#17233] Implement DDENUMSURFACES_CANBECREATED in IDirectDraw7::EnumSurfaces # | # | Modified files: -# | * dlls/ddraw/ddraw.c, dlls/ddraw/tests/d3d.c +# | * dlls/ddraw/ddraw.c, dlls/ddraw/main.c, dlls/ddraw/tests/d3d.c # | if test "$enable_ddraw_EnumSurfaces" -eq 1; then - patch_apply ddraw-EnumSurfaces/0001-ddraw-Implement-DDENUMSURFACES_CANBECREATED-in-IDire.patch + patch_apply ddraw-EnumSurfaces/0001-ddraw-Fix-arguments-to-IDirectDraw7-EnumSurfaces-in-.patch + patch_apply ddraw-EnumSurfaces/0002-ddraw-Implement-DDENUMSURFACES_CANBECREATED-in-IDire.patch ( + echo '+ { "Michael Müller", "ddraw: Fix arguments to IDirectDraw7::EnumSurfaces in DllMain.", 1 },'; echo '+ { "Michael Müller", "ddraw: Implement DDENUMSURFACES_CANBECREATED in IDirectDraw7::EnumSurfaces and fix some bugs.", 1 },'; ) >> "$patchlist" fi @@ -1855,6 +1861,21 @@ ) >> "$patchlist" fi +# Patchset dinput-DeviceState +# | +# | This patchset fixes the following Wine bugs: +# | * [#11607] Reset device state in SysKeyboard*Impl_Acquire +# | +# | Modified files: +# | * dlls/dinput/keyboard.c, dlls/dinput/tests/keyboard.c +# | +if test "$enable_dinput_DeviceState" -eq 1; then + patch_apply dinput-DeviceState/0001-dinput-Reset-device-state-in-SysKeyboard-Impl_Acquir.patch + ( + echo '+ { "Sebastian Lackner", "dinput: Reset device state in SysKeyboard*Impl_Acquire.", 1 },'; + ) >> "$patchlist" +fi + # Patchset dinput-Events # | # | This patchset fixes the following Wine bugs: @@ -1874,21 +1895,6 @@ ) >> "$patchlist" fi -# Patchset dsound-3DSound -# | -# | This patchset fixes the following Wine bugs: -# | * [#38041] Fix calculation of 3D sound source -# | -# | Modified files: -# | * dlls/dsound/sound3d.c -# | -if test "$enable_dsound_3DSound" -eq 1; then - patch_apply dsound-3DSound/0001-dsound-Fix-angle-to-sound-source-calculation.patch - ( - echo '+ { "Stas Cymbalov", "dsound: Fix angle to sound source calculation.", 1 },'; - ) >> "$patchlist" -fi - # Patchset dsound-Fast_Mixer # | # | This patchset fixes the following Wine bugs: @@ -1908,7 +1914,7 @@ # | # | Modified files: # | * dlls/dsound/Makefile.in, dlls/dsound/buffer.c, dlls/dsound/dsound.c, dlls/dsound/dsound_eax.h, -# | dlls/dsound/dsound_private.h, dlls/dsound/eax.c, dlls/dsound/mixer.c +# | dlls/dsound/dsound_main.c, dlls/dsound/dsound_private.h, dlls/dsound/eax.c, dlls/dsound/mixer.c # | if test "$enable_dsound_EAX" -eq 1; then patch_apply dsound-EAX/0001-dsound-Apply-filters-before-sound-is-multiplied-to-s.patch @@ -1929,6 +1935,7 @@ patch_apply dsound-EAX/0016-dsound-Implement-EAX-late-reverb.patch patch_apply dsound-EAX/0017-dsound-Implement-EAX-late-all-pass-filter.patch patch_apply dsound-EAX/0018-dsound-Various-improvements-to-EAX-support.patch + patch_apply dsound-EAX/0019-dsound-Allow-disabling-of-EAX-support-in-the-registr.patch ( echo '+ { "Sebastian Lackner", "dsound: Apply filters before sound is multiplied to speakers.", 1 },'; echo '+ { "Mark Harmstone", "dsound: Add EAX v1 constants and structs.", 1 },'; @@ -1948,6 +1955,7 @@ echo '+ { "Mark Harmstone", "dsound: Implement EAX late reverb.", 1 },'; echo '+ { "Mark Harmstone", "dsound: Implement EAX late all-pass filter.", 1 },'; echo '+ { "Sebastian Lackner", "dsound: Various improvements to EAX support.", 1 },'; + echo '+ { "Sebastian Lackner", "dsound: Allow disabling of EAX support in the registry.", 1 },'; ) >> "$patchlist" fi @@ -1966,18 +1974,6 @@ ) >> "$patchlist" fi -# Patchset makedep-PARENTSPEC -# | -# | Modified files: -# | * tools/makedep.c -# | -if test "$enable_makedep_PARENTSPEC" -eq 1; then - patch_apply makedep-PARENTSPEC/0001-makedep-Add-support-for-PARENTSPEC-Makefile-variable.patch - ( - echo '+ { "Sebastian Lackner", "makedep: Add support for PARENTSPEC Makefile variable.", 1 },'; - ) >> "$patchlist" -fi - # Patchset ntdll-DllRedirects # | # | Modified files: @@ -1998,6 +1994,18 @@ ) >> "$patchlist" fi +# Patchset makedep-PARENTSPEC +# | +# | Modified files: +# | * tools/makedep.c +# | +if test "$enable_makedep_PARENTSPEC" -eq 1; then + patch_apply makedep-PARENTSPEC/0001-makedep-Add-support-for-PARENTSPEC-Makefile-variable.patch + ( + echo '+ { "Sebastian Lackner", "makedep: Add support for PARENTSPEC Makefile variable.", 1 },'; + ) >> "$patchlist" +fi + # Patchset wined3d-CSMT_Helper # | # | Modified files: @@ -2075,6 +2083,30 @@ ) >> "$patchlist" fi +# Patchset wined3d-resource_check_usage +# | +# | Modified files: +# | * dlls/wined3d/resource.c +# | +if test "$enable_wined3d_resource_check_usage" -eq 1; then + patch_apply wined3d-resource_check_usage/0001-wined3d-Silence-repeated-resource_check_usage-FIXME.patch + ( + echo '+ { "Erich E. Hoover", "wined3d: Silence repeated resource_check_usage FIXME.", 2 },'; + ) >> "$patchlist" +fi + +# Patchset wined3d-wined3d_swapchain_present +# | +# | Modified files: +# | * dlls/wined3d/swapchain.c +# | +if test "$enable_wined3d_wined3d_swapchain_present" -eq 1; then + patch_apply wined3d-wined3d_swapchain_present/0001-wined3d-Silence-repeated-wined3d_swapchain_present-F.patch + ( + echo '+ { "Sebastian Lackner", "wined3d: Silence repeated wined3d_swapchain_present FIXME.", 1 },'; + ) >> "$patchlist" +fi + # Patchset wined3d-CSMT_Main # | # | This patchset fixes the following Wine bugs: @@ -2452,9 +2484,11 @@ if test "$enable_winecfg_Staging" -eq 1; then patch_apply winecfg-Staging/0001-winecfg-Add-staging-tab-for-CSMT.patch patch_apply winecfg-Staging/0002-winecfg-Add-checkbox-to-enable-disable-vaapi-GPU-dec.patch + patch_apply winecfg-Staging/0003-winecfg-Add-checkbox-to-enable-disable-EAX-support.patch ( echo '+ { "Michael Müller", "winecfg: Add staging tab for CSMT.", 1 },'; echo '+ { "Sebastian Lackner", "winecfg: Add checkbox to enable/disable vaapi GPU decoder.", 1 },'; + echo '+ { "Mark Harmstone", "winecfg: Add checkbox to enable/disable EAX support.", 1 },'; ) >> "$patchlist" fi @@ -2611,18 +2645,6 @@ ) >> "$patchlist" fi -# Patchset include-Winetest -# | -# | Modified files: -# | * include/wine/test.h -# | -if test "$enable_include_Winetest" -eq 1; then - patch_apply include-Winetest/0001-include-Automatically-detect-if-tests-are-running-un.patch - ( - echo '+ { "Sebastian Lackner", "include: Automatically detect if tests are running under Wine when WINETEST_PLATFORM is not specified.", 1 },'; - ) >> "$patchlist" -fi - # Patchset iphlpapi-TCP_Table # | # | This patchset fixes the following Wine bugs: @@ -2638,6 +2660,18 @@ ) >> "$patchlist" fi +# Patchset kernel32-CompareStringEx +# | +# | Modified files: +# | * dlls/kernel32/locale.c +# | +if test "$enable_kernel32_CompareStringEx" -eq 1; then + patch_apply kernel32-CompareStringEx/0001-kernel32-Silence-repeated-CompareStringEx-FIXME.patch + ( + echo '+ { "Sebastian Lackner", "kernel32: Silence repeated CompareStringEx FIXME.", 1 },'; + ) >> "$patchlist" +fi + # Patchset kernel32-Console_Handles # | # | This patchset fixes the following Wine bugs: @@ -2655,6 +2689,20 @@ ) >> "$patchlist" fi +# Patchset kernel32-SetFileInformationByHandle +# | +# | Modified files: +# | * dlls/kernel32/file.c, include/winbase.h +# | +if test "$enable_kernel32_SetFileInformationByHandle" -eq 1; then + patch_apply kernel32-SetFileInformationByHandle/0001-include-Declare-a-couple-more-file-information-class.patch + patch_apply kernel32-SetFileInformationByHandle/0002-kernel32-Implement-SetFileInformationByHandle.patch + ( + echo '+ { "Michael Müller", "include: Declare a couple more file information class structures.", 1 },'; + echo '+ { "Michael Müller", "kernel32: Implement SetFileInformationByHandle.", 1 },'; + ) >> "$patchlist" +fi + # Patchset server-File_Permissions # | # | Modified files: @@ -2685,24 +2733,14 @@ patch_apply ntdll-FileDispositionInformation/0001-server-Keep-a-pointer-to-parent-s-fd-unix_name-in-th.patch patch_apply ntdll-FileDispositionInformation/0002-server-Add-support-for-setting-file-disposition-info.patch patch_apply ntdll-FileDispositionInformation/0003-server-Do-not-permit-FileDispositionInformation-to-d.patch + patch_apply ntdll-FileDispositionInformation/0004-ntdll-tests-Added-tests-to-set-disposition-on-file-w.patch + patch_apply ntdll-FileDispositionInformation/0005-server-Do-not-allow-to-set-disposition-on-file-which.patch ( echo '+ { "Dmitry Timoshkov", "server: Keep a pointer to parent'\''s fd unix_name in the closed_fd structure.", 1 },'; echo '+ { "Dmitry Timoshkov", "server: Add support for setting file disposition information.", 1 },'; echo '+ { "Erich E. Hoover", "server: Do not permit FileDispositionInformation to delete a file without write access.", 1 },'; - ) >> "$patchlist" -fi - -# Patchset kernel32-SetFileInformationByHandle -# | -# | Modified files: -# | * dlls/kernel32/file.c, include/winbase.h -# | -if test "$enable_kernel32_SetFileInformationByHandle" -eq 1; then - patch_apply kernel32-SetFileInformationByHandle/0001-include-Declare-a-couple-more-file-information-class.patch - patch_apply kernel32-SetFileInformationByHandle/0002-kernel32-Implement-SetFileInformationByHandle.patch - ( - echo '+ { "Michael Müller", "include: Declare a couple more file information class structures.", 1 },'; - echo '+ { "Michael Müller", "kernel32: Implement SetFileInformationByHandle.", 1 },'; + echo '+ { "Qian Hong", "ntdll/tests: Added tests to set disposition on file which is mapped to memory.", 1 },'; + echo '+ { "Qian Hong", "server: Do not allow to set disposition on file which has a file mapping.", 1 },'; ) >> "$patchlist" fi @@ -2894,20 +2932,6 @@ ) >> "$patchlist" fi -# Patchset kernel32-PowerRequest -# | -# | Modified files: -# | * dlls/kernel32/kernel32.spec, dlls/kernel32/powermgnt.c, include/winbase.h -# | -if test "$enable_kernel32_PowerRequest" -eq 1; then - patch_apply kernel32-PowerRequest/0001-kernel32-Add-stub-for-PowerCreateRequest.patch - patch_apply kernel32-PowerRequest/0002-kernel32-Add-stubs-for-Power-Set-Clear-Request.patch - ( - echo '+ { "Sebastian Lackner", "kernel32: Add stub for PowerCreateRequest.", 1 },'; - echo '+ { "Sebastian Lackner", "kernel32: Add stubs for Power{Set,Clear}Request.", 1 },'; - ) >> "$patchlist" -fi - # Patchset kernel32-Profile # | # | This patchset fixes the following Wine bugs: @@ -2941,18 +2965,15 @@ ) >> "$patchlist" fi -# Patchset kernel32-get_registry_locale_info -# | -# | This patchset fixes the following Wine bugs: -# | * [#38344] Fix invalid memory access in get_registry_locale_info +# Patchset libs-Debug_Channel # | # | Modified files: -# | * dlls/kernel32/locale.c +# | * libs/wine/debug.c # | -if test "$enable_kernel32_get_registry_locale_info" -eq 1; then - patch_apply kernel32-get_registry_locale_info/0001-kernel32-Fix-calculation-of-returned-buffer-in-get_r.patch +if test "$enable_libs_Debug_Channel" -eq 1; then + patch_apply libs-Debug_Channel/0001-libwine-Add-process-specific-debug-channels.patch ( - echo '+ { "Sebastian Lackner", "kernel32: Fix calculation of returned buffer in get_registry_locale_info.", 1 },'; + echo '+ { "Michael Müller", "libwine: Add process specific debug channels.", 1 },'; ) >> "$patchlist" fi @@ -2972,6 +2993,21 @@ ) >> "$patchlist" fi +# Patchset mfplat-MFTRegister +# | +# | This patchset fixes the following Wine bugs: +# | * [#37811] Add implementation for mfplat.MFTRegister +# | +# | Modified files: +# | * dlls/mfplat/Makefile.in, dlls/mfplat/main.c, dlls/mfplat/mfplat.spec, include/mfapi.h, loader/wine.inf.in +# | +if test "$enable_mfplat_MFTRegister" -eq 1; then + patch_apply mfplat-MFTRegister/0001-mfplat-Implement-MFTRegister.patch + ( + echo '+ { "Michael Müller", "mfplat: Implement MFTRegister.", 1 },'; + ) >> "$patchlist" +fi + # Patchset mmdevapi-AEV_Stubs # | # | This patchset fixes the following Wine bugs: @@ -3018,6 +3054,21 @@ ) >> "$patchlist" fi +# Patchset mshtml-Event_Scripts +# | +# | This patchset fixes the following Wine bugs: +# | * [#38419] Avoid crash when trying to bind mshtml event scripts to window +# | +# | Modified files: +# | * dlls/mshtml/script.c +# | +if test "$enable_mshtml_Event_Scripts" -eq 1; then + patch_apply mshtml-Event_Scripts/0001-mshtml-Avoid-crash-when-trying-to-bind-event-scripts.patch + ( + echo '+ { "Jacek Caban", "mshtml: Avoid crash when trying to bind event scripts to window.", 1 },'; + ) >> "$patchlist" +fi + # Patchset msvcp90-basic_string_wchar_dtor # | # | This patchset fixes the following Wine bugs: @@ -3035,6 +3086,21 @@ ) >> "$patchlist" fi +# Patchset msvcrt-Math_Precision +# | +# | This patchset fixes the following Wine bugs: +# | * [#37149] Calculate msvcrt exponential math operations with higher precision +# | +# | Modified files: +# | * configure.ac, dlls/msvcrt/math.c +# | +if test "$enable_msvcrt_Math_Precision" -eq 1; then + patch_apply msvcrt-Math_Precision/0001-msvcrt-Calculate-sinh-cosh-exp-pow-with-higher-preci.patch + ( + echo '+ { "Sebastian Lackner", "msvcrt: Calculate sinh/cosh/exp/pow with higher precision.", 1 },'; + ) >> "$patchlist" +fi + # Patchset msvcrt-atof_strtod # | # | This patchset fixes the following Wine bugs: @@ -3065,6 +3131,18 @@ ) >> "$patchlist" fi +# Patchset msxml3-Coverity +# | +# | Modified files: +# | * dlls/msxml3/node.c +# | +if test "$enable_msxml3_Coverity" -eq 1; then + patch_apply msxml3-Coverity/0001-msxml3-Add-a-missing-break-Coverity.patch + ( + echo '+ { "Sebastian Lackner", "msxml3: Add a missing break (Coverity).", 1 },'; + ) >> "$patchlist" +fi + # Patchset ntdll-APC_Performance # | # | Modified files: @@ -3346,10 +3424,12 @@ patch_apply ntdll-RtlIpStringToAddress/0001-ntdll-tests-Tests-for-RtlIpv6StringToAddress-try-6.patch patch_apply ntdll-RtlIpStringToAddress/0002-ntdll-tests-Tests-for-RtlIpv6StringToAddressEx-try-6.patch patch_apply ntdll-RtlIpStringToAddress/0003-ntdll-tests-Tests-for-RtlIpv4StringToAddressEx-try-5.patch + patch_apply ntdll-RtlIpStringToAddress/0004-ntdll-tests-Add-tests-for-RtlIpv6AddressToString-and.patch ( echo '+ { "Mark Jansen", "ntdll/tests: Tests for RtlIpv6StringToAddress.", 6 },'; echo '+ { "Mark Jansen", "ntdll/tests: Tests for RtlIpv6StringToAddressEx.", 6 },'; echo '+ { "Mark Jansen", "ntdll/tests: Tests for RtlIpv4StringToAddressEx (try 5, resend).", 1 },'; + echo '+ { "Mark Jansen", "ntdll/tests: Add tests for RtlIpv6AddressToString and RtlIpv6AddressToStringEx.", 1 },'; ) >> "$patchlist" fi @@ -3454,14 +3534,17 @@ # | # | This patchset fixes the following Wine bugs: # | * [#31971] ntdll is missing WinSqm[Start|End]Session implementation +# | * [#38388] Add stub for WinSqmIsOptedIn # | # | Modified files: # | * dlls/ntdll/ntdll.spec, dlls/ntdll/rtl.c, dlls/ntdll/tests/rtl.c # | if test "$enable_ntdll_WinSqm" -eq 1; then patch_apply ntdll-WinSqm/0001-ntdll-Add-stubs-for-WinSqmStartSession-WinSqmEndSess.patch + patch_apply ntdll-WinSqm/0002-ntdll-Add-stub-for-WinSqmIsOptedIn.patch ( echo '+ { "Erich E. Hoover", "ntdll: Add stubs for WinSqmStartSession / WinSqmEndSession.", 1 },'; + echo '+ { "Sebastian Lackner", "ntdll: Add stub for WinSqmIsOptedIn.", 1 },'; ) >> "$patchlist" fi @@ -3513,21 +3596,6 @@ ) >> "$patchlist" fi -# Patchset ntoskrnl-PsLookupProcessByProcessId -# | -# | This patchset fixes the following Wine bugs: -# | * [#36821] Avoid spam of FIXME messages for PsLookupProcessByProcessId stub -# | -# | Modified files: -# | * dlls/ntoskrnl.exe/ntoskrnl.c -# | -if test "$enable_ntoskrnl_PsLookupProcessByProcessId" -eq 1; then - patch_apply ntoskrnl-PsLookupProcessByProcessId/0001-ntoskrnl-Avoid-repeated-FIXME-messages-in-PsLookupPr.patch - ( - echo '+ { "Sebastian Lackner", "ntoskrnl: Avoid repeated FIXME messages in PsLookupProcessByProcessId.", 1 },'; - ) >> "$patchlist" -fi - # Patchset ntoskrnl-Stubs # | # | This patchset fixes the following Wine bugs: @@ -3692,6 +3760,21 @@ ) >> "$patchlist" fi +# Patchset opengl32-Revert_Disable_Ext +# | +# | This patchset fixes the following Wine bugs: +# | * [#38264] Fix regression caused by blacklisting supported OpenGL extensions +# | +# | Modified files: +# | * dlls/opengl32/wgl.c +# | +if test "$enable_opengl32_Revert_Disable_Ext" -eq 1; then + patch_apply opengl32-Revert_Disable_Ext/0001-Revert-opengl32-Return-a-NULL-pointer-for-functions-.patch + ( + echo '+ { "Sebastian Lackner", "Revert \"opengl32: Return a NULL pointer for functions requiring unsupported or disabled extensions.\".", 1 },'; + ) >> "$patchlist" +fi + # Patchset quartz-MediaSeeking_Positions # | # | This patchset fixes the following Wine bugs: @@ -3783,58 +3866,31 @@ ) >> "$patchlist" fi -# Patchset secur32-Gnutls28_Compat -# | -# | This patchset fixes the following Wine bugs: -# | * [#38134] Fix compatibility of Uplay with gnutls28 -# | -# | Modified files: -# | * dlls/secur32/schannel_gnutls.c -# | -if test "$enable_secur32_Gnutls28_Compat" -eq 1; then - patch_apply secur32-Gnutls28_Compat/0001-schannel_gnutls-when-calling-pgnutls_server_name_set.patch - ( - echo '+ { "Nikos Mavrogiannopoulos", "schannel_gnutls: when calling pgnutls_server_name_set ensure that the values are sane.", 1 },'; - ) >> "$patchlist" -fi - -# Patchset secur32-Schannel_ContextAttr -# | -# | This patchset fixes the following Wine bugs: -# | * [#37527] Return more context attributes in schan_InitializeSecurityContextW -# | -# | Modified files: -# | * dlls/secur32/schannel.c -# | -if test "$enable_secur32_Schannel_ContextAttr" -eq 1; then - patch_apply secur32-Schannel_ContextAttr/0001-secur32-Return-more-context-attributes-in-schan_Init.patch - ( - echo '+ { "Sebastian Lackner", "secur32: Return more context attributes in schan_InitializeSecurityContextW.", 1 },'; - ) >> "$patchlist" -fi - # Patchset server-Stored_ACLs # | # | This patchset fixes the following Wine bugs: # | * [#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 +# | * dlls/advapi32/tests/security.c, include/wine/port.h, server/change.c, server/file.c, server/file.h, server/object.c, +# | server/object.h # | if test "$enable_server_Stored_ACLs" -eq 1; then patch_apply server-Stored_ACLs/0001-server-Unify-the-storage-of-security-attributes-for-.patch patch_apply server-Stored_ACLs/0002-server-Unify-the-retrieval-of-security-attributes-fo.patch - patch_apply server-Stored_ACLs/0003-server-Store-file-security-attributes-with-extended-.patch - patch_apply server-Stored_ACLs/0004-server-Store-user-and-group-inside-stored-extended-f.patch - patch_apply server-Stored_ACLs/0005-server-Retrieve-file-security-attributes-with-extend.patch + patch_apply server-Stored_ACLs/0003-server-Add-a-helper-function-set_sd_from_token_inter.patch + patch_apply server-Stored_ACLs/0004-server-Temporarily-store-the-full-security-descripto.patch + patch_apply server-Stored_ACLs/0005-server-Store-file-security-attributes-with-extended-.patch patch_apply server-Stored_ACLs/0006-server-Convert-return-of-file-security-masks-with-ge.patch + patch_apply server-Stored_ACLs/0007-server-Retrieve-file-security-attributes-with-extend.patch ( echo '+ { "Erich E. Hoover", "server: Unify the storage of security attributes for files and directories.", 7 },'; echo '+ { "Erich E. Hoover", "server: Unify the retrieval of security attributes for files and directories.", 7 },'; - echo '+ { "Erich E. Hoover", "server: Store file security attributes with extended file attributes.", 7 },'; - echo '+ { "Erich E. Hoover", "server: Store user and group inside stored extended file attribute information.", 7 },'; - echo '+ { "Erich E. Hoover", "server: Retrieve file security attributes with extended file attributes.", 7 },'; + echo '+ { "Sebastian Lackner", "server: Add a helper function set_sd_from_token_internal to merge two security descriptors.", 1 },'; + echo '+ { "Sebastian Lackner", "server: Temporarily store the full security descriptor for file objects.", 1 },'; + echo '+ { "Erich E. Hoover", "server: Store file security attributes with extended file attributes.", 8 },'; echo '+ { "Erich E. Hoover", "server: Convert return of file security masks with generic access mappings.", 7 },'; + echo '+ { "Erich E. Hoover", "server: Retrieve file security attributes with extended file attributes.", 7 },'; ) >> "$patchlist" fi @@ -3844,14 +3900,12 @@ # | * [#34406] Support for inherited file ACLs # | # | Modified files: -# | * dlls/advapi32/tests/security.c, include/winnt.h, server/fd.c, server/file.c, server/file.h +# | * dlls/advapi32/tests/security.c, server/file.c # | if test "$enable_server_Inherited_ACLs" -eq 1; then patch_apply server-Inherited_ACLs/0001-server-Inherit-security-attributes-from-parent-direc.patch - patch_apply server-Inherited_ACLs/0002-server-Inherit-security-attributes-from-parent-direc.patch ( echo '+ { "Erich E. Hoover", "server: Inherit security attributes from parent directories on creation.", 7 },'; - echo '+ { "Erich E. Hoover", "server: Inherit security attributes from parent directories on SetSecurityInfo.", 7 },'; ) >> "$patchlist" fi @@ -3919,6 +3973,23 @@ ) >> "$patchlist" fi +# Patchset server-Delete_On_Close +# | +# | This patchset fixes the following Wine bugs: +# | * [#38417] Fix handling of opening read-only files for FILE_DELETE_ON_CLOSE +# | +# | Modified files: +# | * dlls/kernel32/file.c, dlls/kernel32/tests/file.c, server/fd.c +# | +if test "$enable_server_Delete_On_Close" -eq 1; then + patch_apply server-Delete_On_Close/0001-kernel32-tests-Add-tests-for-deleting-readonly-files.patch + patch_apply server-Delete_On_Close/0002-server-Fix-handling-of-opening-read-only-files-with-.patch + ( + echo '+ { "Sebastian Lackner", "kernel32/tests: Add tests for deleting readonly files with NtCreateFile.", 1 },'; + echo '+ { "Sebastian Lackner", "server: Fix handling of opening read-only files with FILE_DELETE_ON_CLOSE.", 1 },'; + ) >> "$patchlist" +fi + # Patchset server-Misc_ACL # | # | This patchset fixes the following Wine bugs: @@ -3953,27 +4024,15 @@ # Patchset server-JobObjects # | -# | This patchset fixes the following Wine bugs: -# | * [#33723] EA Origin needs support for job objects -# | * [#38351] Ignore unsupported job object restrictions -# | # | Modified files: -# | * dlls/kernel32/tests/process.c, dlls/ntdll/sync.c, server/process.c, server/process.h, server/protocol.def +# | * dlls/kernel32/tests/process.c, dlls/ntdll/sync.c, server/process.c # | if test "$enable_server_JobObjects" -eq 1; then - patch_apply server-JobObjects/0001-server-Implement-remaining-wineserver-calls-for-job-.patch - patch_apply server-JobObjects/0002-server-Implement-JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE.patch - patch_apply server-JobObjects/0003-kernel32-tests-Add-tests-for-waiting-on-an-job-objec.patch - patch_apply server-JobObjects/0004-server-Implement-waiting-for-job-objects.patch - patch_apply server-JobObjects/0005-ntdll-Implement-NtQueryInformationJobObject-stub-fun.patch - patch_apply server-JobObjects/0006-ntdll-Return-STATUS_SUCCESS-from-SetInformationJobOb.patch + patch_apply server-JobObjects/0001-server-Implement-JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE.patch + patch_apply server-JobObjects/0002-ntdll-Implement-NtQueryInformationJobObject-stub-fun.patch ( - echo '+ { "Andrew Cook", "server: Implement remaining wineserver calls for job objects.", 1 },'; echo '+ { "Andrew Cook", "server: Implement JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE.", 1 },'; - echo '+ { "Sebastian Lackner", "kernel32/tests: Add tests for waiting on an job object.", 1 },'; - echo '+ { "Sebastian Lackner", "server: Implement waiting for job objects.", 1 },'; echo '+ { "Sebastian Lackner", "ntdll: Implement NtQueryInformationJobObject stub function.", 1 },'; - echo '+ { "Andrew Cook", "ntdll: Return STATUS_SUCCESS from SetInformationJobObject.", 1 },'; ) >> "$patchlist" fi @@ -4007,7 +4066,7 @@ if test "$enable_server_PeekMessage" -eq 1; then patch_apply server-PeekMessage/0001-server-Fix-handling-of-GetMessage-after-previous-Pee.patch ( - echo '+ { "Sebastian Lackner", "server: Fix handling of GetMessage after previous PeekMessage call.", 1 },'; + echo '+ { "Sebastian Lackner", "server: Fix handling of GetMessage after previous PeekMessage call.", 2 },'; ) >> "$patchlist" fi @@ -4023,28 +4082,13 @@ ) >> "$patchlist" fi -# Patchset user32-Key_State -# | -# | This patchset fixes the following Wine bugs: -# | * [#29871] Invalidate key state cache globally after calling LL hooks -# | -# | Modified files: -# | * dlls/user32/hook.c, dlls/user32/input.c, dlls/user32/message.c, dlls/user32/user_private.h -# | -if test "$enable_user32_Key_State" -eq 1; then - patch_apply user32-Key_State/0001-user32-After-calling-LL-hooks-the-key-state-cache-ha.patch - ( - echo '+ { "Sebastian Lackner", "user32: After calling LL hooks the key state cache has to be invalidated globally.", 1 },'; - ) >> "$patchlist" -fi - # Patchset server-Shared_Memory # | # | Modified files: # | * dlls/ntdll/ntdll_misc.h, dlls/ntdll/server.c, dlls/ntdll/thread.c, dlls/ntdll/virtual.c, dlls/user32/focus.c, -# | dlls/user32/input.c, dlls/user32/message.c, dlls/user32/user_private.h, dlls/user32/winstation.c, include/wine/server.h, -# | include/winternl.h, server/fd.c, server/file.h, server/main.c, server/mapping.c, server/protocol.def, server/queue.c, -# | server/thread.c, server/thread.h +# | dlls/user32/input.c, dlls/user32/message.c, dlls/user32/user_private.h, include/wine/server.h, include/winternl.h, +# | server/fd.c, server/file.h, server/main.c, server/mapping.c, server/protocol.def, server/queue.c, server/thread.c, +# | server/thread.h # | if test "$enable_server_Shared_Memory" -eq 1; then patch_apply server-Shared_Memory/0001-ntdll-Implement-virtual_map_shared_memory.patch @@ -4053,10 +4097,9 @@ patch_apply server-Shared_Memory/0004-user32-Avoid-unnecessary-wineserver-calls-in-PeekMes.patch patch_apply server-Shared_Memory/0005-user32-Get-rid-of-wineserver-call-for-GetLastInputIn.patch patch_apply server-Shared_Memory/0006-ntdll-Only-enable-wineserver-shared-memory-communica.patch - patch_apply server-Shared_Memory/0007-user32-Move-key_state-cache-into-separate-structure.patch - patch_apply server-Shared_Memory/0008-server-Store-a-list-of-associated-queues-for-each-th.patch - patch_apply server-Shared_Memory/0009-user32-Get-rid-of-wineserver-call-for-GetActiveWindo.patch - patch_apply server-Shared_Memory/0010-user32-Cache-the-result-of-GetForegroundWindow.patch + patch_apply server-Shared_Memory/0007-server-Store-a-list-of-associated-queues-for-each-th.patch + patch_apply server-Shared_Memory/0008-user32-Get-rid-of-wineserver-call-for-GetActiveWindo.patch + patch_apply server-Shared_Memory/0009-user32-Cache-the-result-of-GetForegroundWindow.patch ( echo '+ { "Sebastian Lackner", "ntdll: Implement virtual_map_shared_memory.", 1 },'; echo '+ { "Michael Müller", "server: Implement support for global and local shared memory blocks based on memfd.", 1 },'; @@ -4064,7 +4107,6 @@ echo '+ { "Sebastian Lackner", "user32: Avoid unnecessary wineserver calls in PeekMessage/GetMessage.", 1 },'; echo '+ { "Michael Müller", "user32: Get rid of wineserver call for GetLastInputInfo.", 1 },'; echo '+ { "Sebastian Lackner", "ntdll: Only enable wineserver shared memory communication when a special environment variable is set.", 1 },'; - echo '+ { "Sebastian Lackner", "user32: Move key_state cache into separate structure.", 1 },'; echo '+ { "Sebastian Lackner", "server: Store a list of associated queues for each thread input.", 1 },'; echo '+ { "Sebastian Lackner", "user32: Get rid of wineserver call for GetActiveWindow, GetFocus, GetCapture.", 1 },'; echo '+ { "Sebastian Lackner", "user32: Cache the result of GetForegroundWindow.", 1 },'; @@ -4100,6 +4142,21 @@ ) >> "$patchlist" fi +# Patchset setupapi-SetupDiSetDeviceInstallParamsW +# | +# | This patchset fixes the following Wine bugs: +# | * [#29903] Add stub for setupapi.SetupDiSetDeviceInstallParamsW +# | +# | Modified files: +# | * dlls/setupapi/devinst.c, dlls/setupapi/setupapi.spec +# | +if test "$enable_setupapi_SetupDiSetDeviceInstallParamsW" -eq 1; then + patch_apply setupapi-SetupDiSetDeviceInstallParamsW/0001-setupapi-add-SetupDiSetDeviceInstallParamsW-stub.patch + ( + echo '+ { "Austin English", "setupapi: add SetupDiSetDeviceInstallParamsW stub.", 1 },'; + ) >> "$patchlist" +fi + # Patchset setupapi-SetupPromptForDisk # | # | This patchset fixes the following Wine bugs: @@ -4455,6 +4512,39 @@ ) >> "$patchlist" fi +# Patchset wbemprox-Localhost +# | +# | Modified files: +# | * dlls/wbemprox/wbemlocator.c +# | +if test "$enable_wbemprox_Localhost" -eq 1; then + patch_apply wbemprox-Localhost/0001-wbemprox-Allow-connecting-to-localhost.patch + ( + echo '+ { "Michael Müller", "wbemprox: Allow connecting to localhost.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset wbemprox-Win32_SystemEnclosure +# | +# | This patchset fixes the following Wine bugs: +# | * [#34517] Add support for wbemprox Win32_SystemEnclosure table +# | +# | Modified files: +# | * dlls/wbemprox/builtin.c, dlls/wbemprox/table.c, dlls/wbemprox/tests/query.c +# | +if test "$enable_wbemprox_Win32_SystemEnclosure" -eq 1; then + patch_apply wbemprox-Win32_SystemEnclosure/0001-wbemprox-tests-Actually-test-the-return-value-of-IEn.patch + patch_apply wbemprox-Win32_SystemEnclosure/0002-wbemprox-tests-Fix-memory-leak-when-tests-are-skippe.patch + patch_apply wbemprox-Win32_SystemEnclosure/0003-wbemprox-Fix-handling-of-arrays-as-query-results.patch + patch_apply wbemprox-Win32_SystemEnclosure/0004-wbemprox-Add-support-for-Win32_SystemEnclosure.patch + ( + echo '+ { "Sebastian Lackner", "wbemprox/tests: Actually test the return value of IEnumWbemClassObject_Next.", 1 },'; + echo '+ { "Sebastian Lackner", "wbemprox/tests: Fix memory leak when tests are skipped.", 1 },'; + echo '+ { "Sebastian Lackner", "wbemprox: Fix handling of arrays as query results.", 1 },'; + echo '+ { "Michael Müller", "wbemprox: Add support for Win32_SystemEnclosure.", 1 },'; + ) >> "$patchlist" +fi + # Patchset wiaservc-IEnumWIA_DEV_INFO # | # | This patchset fixes the following Wine bugs: @@ -4500,6 +4590,21 @@ ) >> "$patchlist" fi +# Patchset wine.inf-ProfileList_UserSID +# | +# | This patchset fixes the following Wine bugs: +# | * [#15670] Add a ProfileList\ registry subkey +# | +# | Modified files: +# | * loader/wine.inf.in +# | +if test "$enable_wine_inf_ProfileList_UserSID" -eq 1; then + patch_apply wine.inf-ProfileList_UserSID/0001-wine.inf-Add-a-ProfileList-UserSID-registry-subkey.patch + ( + echo '+ { "Sebastian Lackner", "wine.inf: Add a ProfileList\\\\ registry subkey.", 1 },'; + ) >> "$patchlist" +fi + # Patchset wineboot-HKEY_DYN_DATA # | # | This patchset fixes the following Wine bugs: @@ -4526,7 +4631,7 @@ if test "$enable_winebuild_LinkerVersion" -eq 1; then patch_apply winebuild-LinkerVersion/0001-winebuild-Set-a-valid-major-and-minor-linker-version.patch ( - echo '+ { "Michael Müller", "winebuild: Set a valid major and minor linker version.", 1 },'; + echo '+ { "Michael Müller", "winebuild: Set a valid major and minor linker version.", 2 },'; ) >> "$patchlist" fi @@ -4554,21 +4659,6 @@ ) >> "$patchlist" fi -# Patchset wineconsole-Buffer_Size -# | -# | This patchset fixes the following Wine bugs: -# | * [#34814] Increase wineconsole commandline buffer size -# | -# | Modified files: -# | * programs/wineconsole/wineconsole.c -# | -if test "$enable_wineconsole_Buffer_Size" -eq 1; then - patch_apply wineconsole-Buffer_Size/0001-wineconsole-Increase-buffer-to-allow-larger-commandl.patch - ( - echo '+ { "Sebastian Lackner", "wineconsole: Increase buffer to allow larger commandline strings.", 1 },'; - ) >> "$patchlist" -fi - # Patchset winedevice-Fix_Relocation # | # | This patchset fixes the following Wine bugs: @@ -4733,21 +4823,6 @@ ) >> "$patchlist" fi -# Patchset winex11-ToUnicodeEx -# | -# | This patchset fixes the following Wine bugs: -# | * [#38353] Allow NULL pointer as keystate argument in ToUnicodeEx -# | -# | Modified files: -# | * dlls/winex11.drv/keyboard.c -# | -if test "$enable_winex11_ToUnicodeEx" -eq 1; then - patch_apply winex11-ToUnicodeEx/0001-winex11-Allow-NULL-pointer-as-keystate-in-X11DRV_ToU.patch - ( - echo '+ { "Sebastian Lackner", "winex11: Allow NULL pointer as keystate in X11DRV_ToUnicodeEx.", 1 },'; - ) >> "$patchlist" -fi - # Patchset winex11-Window_Groups # | # | This patchset fixes the following Wine bugs: @@ -4871,6 +4946,21 @@ ) >> "$patchlist" fi +# Patchset ws2_32-Select +# | +# | This patchset fixes the following Wine bugs: +# | * [#38399] Properly handle closing sockets during a select call +# | +# | Modified files: +# | * dlls/ntdll/ntdll.spec, dlls/ntdll/server.c, dlls/ws2_32/socket.c, dlls/ws2_32/tests/sock.c, include/wine/server.h +# | +if test "$enable_ws2_32_Select" -eq 1; then + patch_apply ws2_32-Select/0001-ws2_32-Properly-handle-closing-sockets-during-a-sele.patch + ( + echo '+ { "Sebastian Lackner", "ws2_32: Properly handle closing sockets during a select call.", 1 },'; + ) >> "$patchlist" +fi + # Patchset ws2_32-TransmitFile # | # | This patchset fixes the following Wine bugs: @@ -4898,18 +4988,6 @@ ) >> "$patchlist" fi -# Patchset ws2_32-WS_select -# | -# | Modified files: -# | * dlls/ws2_32/socket.c -# | -if test "$enable_ws2_32_WS_select" -eq 1; then - patch_apply ws2_32-WS_select/0001-ws2_32-Don-t-return-an-error-in-WS_select-when-EINTR.patch - ( - echo '+ { "Michael Müller", "ws2_32: Don'\''t return an error in WS_select when EINTR happens during timeout.", 1 },'; - ) >> "$patchlist" -fi - # Patchset ws2_32-getaddrinfo # | # | This patchset fixes the following Wine bugs: diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/secur32-Gnutls28_Compat/0001-schannel_gnutls-when-calling-pgnutls_server_name_set.patch wine-staging-1.7.41~ubuntu12.04.1/patches/secur32-Gnutls28_Compat/0001-schannel_gnutls-when-calling-pgnutls_server_name_set.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/secur32-Gnutls28_Compat/0001-schannel_gnutls-when-calling-pgnutls_server_name_set.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/secur32-Gnutls28_Compat/0001-schannel_gnutls-when-calling-pgnutls_server_name_set.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -From c8d49d6ffce2dcc3797e20bbf7649aadafea21cf Mon Sep 17 00:00:00 2001 -From: Nikos Mavrogiannopoulos -Date: Thu, 26 Mar 2015 11:14:17 +0100 -Subject: schannel_gnutls: when calling pgnutls_server_name_set ensure that the - values are sane - ---- - dlls/secur32/schannel_gnutls.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/dlls/secur32/schannel_gnutls.c b/dlls/secur32/schannel_gnutls.c -index 1173574..1ad0c76 100644 ---- a/dlls/secur32/schannel_gnutls.c -+++ b/dlls/secur32/schannel_gnutls.c -@@ -188,7 +188,8 @@ void schan_imp_set_session_target(schan_imp_session session, const char *target) - { - gnutls_session_t s = (gnutls_session_t)session; - -- pgnutls_server_name_set( s, GNUTLS_NAME_DNS, target, strlen(target) ); -+ if (target != NULL && strlen(target) != 0) -+ pgnutls_server_name_set( s, GNUTLS_NAME_DNS, target, strlen(target) ); - } - - SECURITY_STATUS schan_imp_handshake(schan_imp_session session) --- -2.3.3 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/secur32-Gnutls28_Compat/definition wine-staging-1.7.41~ubuntu12.04.1/patches/secur32-Gnutls28_Compat/definition --- wine-staging-1.7.40~ubuntu12.04.1/patches/secur32-Gnutls28_Compat/definition 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/secur32-Gnutls28_Compat/definition 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -Fixes: [38134] Fix compatibility of Uplay with gnutls28 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/secur32-Schannel_ContextAttr/0001-secur32-Return-more-context-attributes-in-schan_Init.patch wine-staging-1.7.41~ubuntu12.04.1/patches/secur32-Schannel_ContextAttr/0001-secur32-Return-more-context-attributes-in-schan_Init.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/secur32-Schannel_ContextAttr/0001-secur32-Return-more-context-attributes-in-schan_Init.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/secur32-Schannel_ContextAttr/0001-secur32-Return-more-context-attributes-in-schan_Init.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,34 +0,0 @@ -From f7577766e160ac55faacd0fadf20fd9ebfb47e3a Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Tue, 11 Nov 2014 08:50:46 +0100 -Subject: secur32: Return more context attributes in - schan_InitializeSecurityContextW. - ---- - dlls/secur32/schannel.c | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/dlls/secur32/schannel.c b/dlls/secur32/schannel.c -index 5b86a75..12d4c8d 100644 ---- a/dlls/secur32/schannel.c -+++ b/dlls/secur32/schannel.c -@@ -908,8 +908,16 @@ static SECURITY_STATUS SEC_ENTRY schan_InitializeSecurityContextW( - } - - *pfContextAttr = 0; -+ if (ctx->req_ctx_attr & ISC_REQ_REPLAY_DETECT) -+ *pfContextAttr |= ISC_RET_REPLAY_DETECT; -+ if (ctx->req_ctx_attr & ISC_REQ_SEQUENCE_DETECT) -+ *pfContextAttr |= ISC_RET_SEQUENCE_DETECT; -+ if (ctx->req_ctx_attr & ISC_REQ_CONFIDENTIALITY) -+ *pfContextAttr |= ISC_RET_CONFIDENTIALITY; - if (ctx->req_ctx_attr & ISC_REQ_ALLOCATE_MEMORY) - *pfContextAttr |= ISC_RET_ALLOCATED_MEMORY; -+ if (ctx->req_ctx_attr & ISC_REQ_STREAM) -+ *pfContextAttr |= ISC_RET_STREAM; - - return ret; - } --- -2.1.3 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/secur32-Schannel_ContextAttr/definition wine-staging-1.7.41~ubuntu12.04.1/patches/secur32-Schannel_ContextAttr/definition --- wine-staging-1.7.40~ubuntu12.04.1/patches/secur32-Schannel_ContextAttr/definition 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/secur32-Schannel_ContextAttr/definition 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -Fixes: [37527] Return more context attributes in schan_InitializeSecurityContextW diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-ACL_Compat/0001-server-Add-compatibility-code-for-handling-the-old-m.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-ACL_Compat/0001-server-Add-compatibility-code-for-handling-the-old-m.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-ACL_Compat/0001-server-Add-compatibility-code-for-handling-the-old-m.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-ACL_Compat/0001-server-Add-compatibility-code-for-handling-the-old-m.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,26 +1,26 @@ -From c7ee69405e7f18058ca0b1c05e8dfa7ee669df13 Mon Sep 17 00:00:00 2001 +From 5779586de8e1059d7f88edf45d5d9ed59eca1b46 Mon Sep 17 00:00:00 2001 From: "Erich E. Hoover" Date: Fri, 18 Apr 2014 15:21:00 -0600 Subject: server: Add compatibility code for handling the old method of storing ACLs. (try 6) --- - server/file.c | 167 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- - 1 file changed, 164 insertions(+), 3 deletions(-) + server/file.c | 170 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 167 insertions(+), 3 deletions(-) diff --git a/server/file.c b/server/file.c -index 146ea68..4c72775 100644 +index 617c373..9adca0d 100644 --- a/server/file.c +++ b/server/file.c @@ -72,6 +72,7 @@ struct file static unsigned int generic_file_map_access( unsigned int access ); - struct security_descriptor *get_xattr_sd( int fd ); -+struct security_descriptor *get_xattr_acls( int fd, const SID *user, const SID *group ); + static struct security_descriptor *get_xattr_sd( int fd ); ++static struct security_descriptor *get_xattr_acls( int fd, const SID *user, const SID *group ); static void file_dump( struct object *obj, int verbose ); static struct fd *file_get_fd( struct object *obj ); -@@ -440,6 +441,7 @@ static struct security_descriptor *file_get_parent_sd( struct fd *root, const ch +@@ -308,6 +309,7 @@ static struct security_descriptor *file_get_parent_sd( struct fd *root, const ch mode_t parent_mode = 0555; char *p, *parent_name; struct fd *parent_fd; @@ -28,7 +28,7 @@ int unix_fd; if (!(parent_name = mem_alloc( child_len + 1 ))) return NULL; -@@ -472,6 +474,9 @@ static struct security_descriptor *file_get_parent_sd( struct fd *root, const ch +@@ -340,6 +342,9 @@ static struct security_descriptor *file_get_parent_sd( struct fd *root, const ch if (unix_fd != -1) { parent_sd = get_xattr_sd( unix_fd ); @@ -38,11 +38,11 @@ if (parent_sd) { sd = inherit_sd( parent_sd, is_dir ); -@@ -759,6 +764,160 @@ struct security_descriptor *get_xattr_sd( int fd ) - return sd; +@@ -623,6 +628,163 @@ static void convert_generic_sd( struct security_descriptor *sd ) + } } -+struct security_descriptor *get_xattr_acls( int fd, const SID *user, const SID *group ) ++static struct security_descriptor *get_xattr_acls( int fd, const SID *user, const SID *group ) +{ + int dacl_size = sizeof(ACL), n; + int offset, type, flags, mask, rev, ia, sa; @@ -189,17 +189,20 @@ + while (*p); + + if (sd_is_valid( sd, n )) ++ { ++ convert_generic_sd( sd ); + return sd; ++ } + +err: + free( sd ); + return NULL; +} + - /* Convert generic rights into standard access rights */ - void convert_generic_sd( struct security_descriptor *sd ) + static struct security_descriptor *get_xattr_sd( int fd ) { -@@ -786,6 +945,7 @@ struct security_descriptor *get_file_sd( struct object *obj, struct fd *fd, mode + struct security_descriptor *sd; +@@ -652,6 +814,7 @@ struct security_descriptor *get_file_sd( struct object *obj, struct fd *fd, mode int unix_fd = get_unix_fd( fd ); struct stat st; struct security_descriptor *sd; @@ -207,22 +210,21 @@ if (unix_fd == -1 || fstat( unix_fd, &st ) == -1) return obj->sd; -@@ -795,11 +955,12 @@ struct security_descriptor *get_file_sd( struct object *obj, struct fd *fd, mode +@@ -661,10 +824,11 @@ struct security_descriptor *get_file_sd( struct object *obj, struct fd *fd, mode (st.st_uid == *uid)) return obj->sd; + user = security_unix_uid_to_sid( st.st_uid ); + group = token_get_primary_group( current->process->token ); sd = get_xattr_sd( unix_fd ); -+ if (!sd) sd = get_xattr_acls( unix_fd, user, group ); - if (sd) convert_generic_sd( sd ); - if (!sd) sd = mode_to_sd( st.st_mode, - security_unix_uid_to_sid( st.st_uid ), - token_get_primary_group( current->process->token )); ++ if (!sd) sd = get_xattr_acls( unix_fd, user, group ); + if (!sd) sd = mode_to_sd( st.st_mode, user, group ); if (!sd) return obj->sd; *mode = st.st_mode; -- -2.3.2 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-Delete_On_Close/0001-kernel32-tests-Add-tests-for-deleting-readonly-files.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-Delete_On_Close/0001-kernel32-tests-Add-tests-for-deleting-readonly-files.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-Delete_On_Close/0001-kernel32-tests-Add-tests-for-deleting-readonly-files.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-Delete_On_Close/0001-kernel32-tests-Add-tests-for-deleting-readonly-files.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,146 @@ +From a3dc138dc397db75243c20acae021106731e2b07 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Fri, 17 Apr 2015 11:22:51 +0200 +Subject: kernel32/tests: Add tests for deleting readonly files with + NtCreateFile. + +--- + dlls/kernel32/tests/file.c | 74 +++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 73 insertions(+), 1 deletion(-) + +diff --git a/dlls/kernel32/tests/file.c b/dlls/kernel32/tests/file.c +index 99fffab..3a82364 100644 +--- a/dlls/kernel32/tests/file.c ++++ b/dlls/kernel32/tests/file.c +@@ -28,10 +28,13 @@ + #include + #include + ++#include "ntstatus.h" ++#define WIN32_NO_STATUS + #include "wine/test.h" + #include "windef.h" + #include "winbase.h" + #include "winerror.h" ++#include "winternl.h" + #include "winnls.h" + #include "fileapi.h" + +@@ -48,6 +51,10 @@ static HRESULT (WINAPI *pCopyFile2)(PCWSTR,PCWSTR,COPYFILE2_EXTENDED_PARAMETERS* + static HANDLE (WINAPI *pCreateFile2)(LPCWSTR, DWORD, DWORD, DWORD, CREATEFILE2_EXTENDED_PARAMETERS*); + static DWORD (WINAPI *pGetFinalPathNameByHandleA)(HANDLE, LPSTR, DWORD, DWORD); + static DWORD (WINAPI *pGetFinalPathNameByHandleW)(HANDLE, LPWSTR, DWORD, DWORD); ++static NTSTATUS (WINAPI *pNtCreateFile)(PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES, PIO_STATUS_BLOCK, ++ PLARGE_INTEGER, ULONG, ULONG, ULONG, ULONG, PVOID, ULONG); ++static BOOL (WINAPI *pRtlDosPathNameToNtPathName_U)(LPCWSTR, PUNICODE_STRING, PWSTR*, CURDIR*); ++static NTSTATUS (WINAPI *pRtlAnsiStringToUnicodeString)(PUNICODE_STRING, PCANSI_STRING, BOOLEAN); + + static const char filename[] = "testfile.xxx"; + static const char sillytext[] = +@@ -72,8 +79,13 @@ struct test_list { + + static void InitFunctionPointers(void) + { ++ HMODULE hntdll = GetModuleHandleA("ntdll"); + HMODULE hkernel32 = GetModuleHandleA("kernel32"); + ++ pNtCreateFile = (void *)GetProcAddress(hntdll, "NtCreateFile"); ++ pRtlDosPathNameToNtPathName_U = (void *)GetProcAddress(hntdll, "RtlDosPathNameToNtPathName_U"); ++ pRtlAnsiStringToUnicodeString = (void *)GetProcAddress(hntdll, "RtlAnsiStringToUnicodeString"); ++ + pFindFirstFileExA=(void*)GetProcAddress(hkernel32, "FindFirstFileExA"); + pReplaceFileA=(void*)GetProcAddress(hkernel32, "ReplaceFileA"); + pReplaceFileW=(void*)GetProcAddress(hkernel32, "ReplaceFileW"); +@@ -243,15 +255,36 @@ static void test__lclose( void ) + ok( ret != 0, "DeleteFile failed (%d)\n", GetLastError( ) ); + } + ++/* helper function for test__lcreat */ ++static void get_nt_pathW(const char *name, UNICODE_STRING *nameW) ++{ ++ UNICODE_STRING strW; ++ ANSI_STRING str; ++ NTSTATUS status; ++ BOOLEAN ret; ++ RtlInitAnsiString(&str, name); ++ ++ status = pRtlAnsiStringToUnicodeString(&strW, &str, TRUE); ++ ok(!status, "RtlAnsiStringToUnicodeString failed with %08x\n", status); ++ ++ ret = pRtlDosPathNameToNtPathName_U(strW.Buffer, nameW, NULL, NULL); ++ ok(ret, "RtlDosPathNameToNtPathName_U failed\n"); ++ ++ RtlFreeUnicodeString(&strW); ++} + + static void test__lcreat( void ) + { ++ UNICODE_STRING filenameW; ++ OBJECT_ATTRIBUTES attr; ++ IO_STATUS_BLOCK io; + HFILE filehandle; + char buffer[10000]; + WIN32_FIND_DATAA search_results; + char slashname[] = "testfi/"; + int err; +- HANDLE find; ++ HANDLE find, file; ++ NTSTATUS status; + BOOL ret; + + filehandle = _lcreat( filename, 0 ); +@@ -287,12 +320,51 @@ static void test__lcreat( void ) + ok( INVALID_HANDLE_VALUE != find, "should be able to find file\n" ); + FindClose( find ); + ++ SetLastError( 0xdeadbeef ); + ok( 0 == DeleteFileA( filename ), "shouldn't be able to delete a readonly file\n" ); ++ ok( GetLastError() == ERROR_ACCESS_DENIED, "expected ERROR_ACCESS_DENIED, got %d\n", GetLastError() ); + + ok( SetFileAttributesA(filename, FILE_ATTRIBUTE_NORMAL ) != 0, "couldn't change attributes on file\n" ); + + ok( DeleteFileA( filename ) != 0, "now it should be possible to delete the file!\n" ); + ++ filehandle = _lcreat( filename, 1 ); /* readonly */ ++ ok( HFILE_ERROR != filehandle, "couldn't create file \"%s\" (err=%d)\n", filename, GetLastError() ); ++ ok( HFILE_ERROR != _hwrite( filehandle, sillytext, strlen(sillytext) ), ++ "_hwrite shouldn't be able to write never the less\n" ); ++ ok( HFILE_ERROR != _lclose(filehandle), "_lclose complains\n" ); ++ ++ find = FindFirstFileA( filename, &search_results ); ++ ok( INVALID_HANDLE_VALUE != find, "should be able to find file\n" ); ++ FindClose( find ); ++ ++ get_nt_pathW(filename, &filenameW); ++ attr.Length = sizeof(attr); ++ attr.RootDirectory = 0; ++ attr.Attributes = OBJ_CASE_INSENSITIVE; ++ attr.ObjectName = &filenameW; ++ attr.SecurityDescriptor = NULL; ++ attr.SecurityQualityOfService = NULL; ++ ++ status = NtCreateFile( &file, GENERIC_READ | GENERIC_WRITE | DELETE, &attr, &io, NULL, 0, ++ FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, ++ FILE_OPEN, FILE_DELETE_ON_CLOSE | FILE_NON_DIRECTORY_FILE, NULL, 0 ); ++ ok( status == STATUS_ACCESS_DENIED, "expected STATUS_ACCESS_DENIED, got %08x\n", status ); ++ ok( GetFileAttributesA( filename ) != INVALID_FILE_ATTRIBUTES, "file was deleted\n" ); ++ ++ status = NtCreateFile( &file, DELETE, &attr, &io, NULL, 0, ++ FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, ++ FILE_OPEN, FILE_DELETE_ON_CLOSE | FILE_NON_DIRECTORY_FILE, NULL, 0 ); ++ todo_wine ++ ok( status == STATUS_CANNOT_DELETE, "expected STATUS_CANNOT_DELETE, got %08x\n", status ); ++ if (!status) CloseHandle( file ); ++ todo_wine ++ ok( GetFileAttributesA( filename ) != INVALID_FILE_ATTRIBUTES, "file was deleted\n" ); ++ todo_wine ++ ok( SetFileAttributesA(filename, FILE_ATTRIBUTE_NORMAL ) != 0, "couldn't change attributes on file\n" ); ++ todo_wine ++ ok( DeleteFileA( filename ) != 0, "now it should be possible to delete the file!\n" ); ++ + filehandle = _lcreat( filename, 2 ); + ok( HFILE_ERROR != filehandle, "couldn't create file \"%s\" (err=%d)\n", filename, GetLastError( ) ); + +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-Delete_On_Close/0002-server-Fix-handling-of-opening-read-only-files-with-.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-Delete_On_Close/0002-server-Fix-handling-of-opening-read-only-files-with-.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-Delete_On_Close/0002-server-Fix-handling-of-opening-read-only-files-with-.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-Delete_On_Close/0002-server-Fix-handling-of-opening-read-only-files-with-.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,84 @@ +From 6f4c5f44d93d38b4b71aa56fe2ad0eb4b31fbe7f Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Fri, 17 Apr 2015 12:40:38 +0200 +Subject: server: Fix handling of opening read-only files with + FILE_DELETE_ON_CLOSE. + +--- + dlls/kernel32/file.c | 3 +-- + dlls/kernel32/tests/file.c | 6 ------ + server/fd.c | 10 ++++++++++ + 3 files changed, 11 insertions(+), 8 deletions(-) + +diff --git a/dlls/kernel32/file.c b/dlls/kernel32/file.c +index 006db1c..d16a0a1 100644 +--- a/dlls/kernel32/file.c ++++ b/dlls/kernel32/file.c +@@ -1602,8 +1602,7 @@ BOOL WINAPI DeleteFileW( LPCWSTR path ) + attr.SecurityDescriptor = NULL; + attr.SecurityQualityOfService = NULL; + +- status = NtCreateFile(&hFile, GENERIC_READ | GENERIC_WRITE | DELETE, +- &attr, &io, NULL, 0, ++ status = NtCreateFile(&hFile, DELETE, &attr, &io, NULL, 0, + FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, + FILE_OPEN, FILE_DELETE_ON_CLOSE | FILE_NON_DIRECTORY_FILE, NULL, 0); + if (status == STATUS_SUCCESS) status = NtClose(hFile); +diff --git a/dlls/kernel32/tests/file.c b/dlls/kernel32/tests/file.c +index 3a82364..0f5ac52 100644 +--- a/dlls/kernel32/tests/file.c ++++ b/dlls/kernel32/tests/file.c +@@ -355,14 +355,10 @@ static void test__lcreat( void ) + status = NtCreateFile( &file, DELETE, &attr, &io, NULL, 0, + FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, + FILE_OPEN, FILE_DELETE_ON_CLOSE | FILE_NON_DIRECTORY_FILE, NULL, 0 ); +- todo_wine + ok( status == STATUS_CANNOT_DELETE, "expected STATUS_CANNOT_DELETE, got %08x\n", status ); + if (!status) CloseHandle( file ); +- todo_wine + ok( GetFileAttributesA( filename ) != INVALID_FILE_ATTRIBUTES, "file was deleted\n" ); +- todo_wine + ok( SetFileAttributesA(filename, FILE_ATTRIBUTE_NORMAL ) != 0, "couldn't change attributes on file\n" ); +- todo_wine + ok( DeleteFileA( filename ) != 0, "now it should be possible to delete the file!\n" ); + + filehandle = _lcreat( filename, 2 ); +@@ -1718,14 +1714,12 @@ static void test_DeleteFileA( void ) + + SetLastError(0xdeadbeef); + ret = DeleteFileA(temp_file); +-todo_wine + ok(ret, "DeleteFile error %d\n", GetLastError()); + + SetLastError(0xdeadbeef); + ret = CloseHandle(hfile); + ok(ret, "CloseHandle error %d\n", GetLastError()); + ret = DeleteFileA(temp_file); +-todo_wine + ok(!ret, "DeleteFile should fail\n"); + + SetLastError(0xdeadbeef); +diff --git a/server/fd.c b/server/fd.c +index 9a4aac4..ca68e49 100644 +--- a/server/fd.c ++++ b/server/fd.c +@@ -1858,6 +1858,16 @@ struct fd *open_fd( struct fd *root, const char *name, int flags, mode_t *mode, + fd->cacheable = !inode->device->removable; + list_add_head( &inode->open, &fd->inode_entry ); + ++ /* can't unlink files we don't have permission to access */ ++ if ((options & FILE_DELETE_ON_CLOSE) && S_ISREG(st.st_mode) && ++ !(flags & O_CREAT) && !(st.st_mode & (S_IWUSR | S_IWGRP | S_IWOTH))) ++ { ++ /* FIXME: instead of checking for O_CREAT it should check if the file was created */ ++ release_object( fd ); ++ set_error( STATUS_CANNOT_DELETE ); ++ return NULL; ++ } ++ + /* check directory options */ + if ((options & FILE_DIRECTORY_FILE) && !S_ISDIR(st.st_mode)) + { +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-Delete_On_Close/definition wine-staging-1.7.41~ubuntu12.04.1/patches/server-Delete_On_Close/definition --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-Delete_On_Close/definition 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-Delete_On_Close/definition 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1 @@ +Fixes: [38417] Fix handling of opening read-only files for FILE_DELETE_ON_CLOSE diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-Inherited_ACLs/0001-server-Inherit-security-attributes-from-parent-direc.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-Inherited_ACLs/0001-server-Inherit-security-attributes-from-parent-direc.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-Inherited_ACLs/0001-server-Inherit-security-attributes-from-parent-direc.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-Inherited_ACLs/0001-server-Inherit-security-attributes-from-parent-direc.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,4 +1,4 @@ -From 42b83b84ee0ff3b0a9d2439e1d0154287630f192 Mon Sep 17 00:00:00 2001 +From a6f078d87958db4e0eb404e7f7cc2d603b92869c Mon Sep 17 00:00:00 2001 From: "Erich E. Hoover" Date: Fri, 18 Apr 2014 14:08:36 -0600 Subject: server: Inherit security attributes from parent directories on @@ -10,10 +10,10 @@ 2 files changed, 141 insertions(+), 4 deletions(-) diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c -index 4db46f5..c509d3c 100644 +index 945542e..403c637 100644 --- a/dlls/advapi32/tests/security.c +++ b/dlls/advapi32/tests/security.c -@@ -3278,7 +3278,7 @@ static void test_CreateDirectoryA(void) +@@ -3280,7 +3280,7 @@ static void test_CreateDirectoryA(void) (PSID *)&owner, NULL, &pDacl, NULL, &pSD); ok(error == ERROR_SUCCESS, "Failed to get permissions on file\n"); test_inherited_dacl(pDacl, admin_sid, user_sid, INHERITED_ACE, @@ -22,7 +22,7 @@ LocalFree(pSD); CloseHandle(hTemp); -@@ -3348,7 +3348,7 @@ static void test_CreateDirectoryA(void) +@@ -3349,7 +3349,7 @@ static void test_CreateDirectoryA(void) (PSID *)&owner, NULL, &pDacl, NULL, &pSD); ok(error == ERROR_SUCCESS, "Failed to get permissions on file\n"); test_inherited_dacl(pDacl, admin_sid, user_sid, INHERITED_ACE, @@ -50,22 +50,22 @@ CloseHandle(hTemp); diff --git a/server/file.c b/server/file.c -index b6435d1..43be63b 100644 +index 8bcf6ee..617c373 100644 --- a/server/file.c +++ b/server/file.c @@ -71,6 +71,7 @@ struct file }; static unsigned int generic_file_map_access( unsigned int access ); -+struct security_descriptor *get_xattr_sd( int fd ); ++static struct security_descriptor *get_xattr_sd( int fd ); static void file_dump( struct object *obj, int verbose ); static struct fd *file_get_fd( struct object *obj ); -@@ -252,11 +253,142 @@ void set_xattr_sd( int fd, const struct security_descriptor *sd, const SID *user +@@ -220,11 +221,142 @@ static void set_xattr_sd( int fd, const struct security_descriptor *sd ) xattr_fset( fd, WINE_XATTR_SD, buffer, len ); } -+struct security_descriptor *inherit_sd( const struct security_descriptor *parent_sd, int is_dir ) ++static struct security_descriptor *inherit_sd( const struct security_descriptor *parent_sd, int is_dir ) +{ + const DWORD inheritance_mask = INHERIT_ONLY_ACE | OBJECT_INHERIT_ACE | CONTAINER_INHERIT_ACE; + struct security_descriptor *sd = NULL; @@ -201,10 +201,10 @@ const struct security_descriptor *sd ) { + struct security_descriptor *temp_sd = NULL; - const SID *owner = NULL, *group = NULL; struct object *obj = NULL; struct fd *fd; -@@ -286,6 +418,10 @@ static struct object *create_file( struct fd *root, const char *nameptr, data_si + int flags; +@@ -253,6 +385,10 @@ static struct object *create_file( struct fd *root, const char *nameptr, data_si default: set_error( STATUS_INVALID_PARAMETER ); goto done; } @@ -214,8 +214,8 @@ + if (sd) { - owner = sd_get_owner( sd ); -@@ -329,6 +465,7 @@ static struct object *create_file( struct fd *root, const char *nameptr, data_si + const SID *owner = sd_get_owner( sd ); +@@ -292,6 +428,7 @@ static struct object *create_file( struct fd *root, const char *nameptr, data_si release_object( fd ); done: @@ -224,5 +224,5 @@ return obj; } -- -2.3.3 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-Inherited_ACLs/0002-server-Inherit-security-attributes-from-parent-direc.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-Inherited_ACLs/0002-server-Inherit-security-attributes-from-parent-direc.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-Inherited_ACLs/0002-server-Inherit-security-attributes-from-parent-direc.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-Inherited_ACLs/0002-server-Inherit-security-attributes-from-parent-direc.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,342 +0,0 @@ -From cf51d788cce57b6c5f99bfc15e81790fb5d449c4 Mon Sep 17 00:00:00 2001 -From: "Erich E. Hoover" -Date: Fri, 18 Apr 2014 14:10:49 -0600 -Subject: server: Inherit security attributes from parent directories on - SetSecurityInfo. (try 7) - ---- - dlls/advapi32/tests/security.c | 68 +++++++++++++++++++++ - include/winnt.h | 7 ++- - server/fd.c | 13 +++- - server/file.c | 133 +++++++++++++++++++++++++++++++++++++++-- - server/file.h | 1 + - 5 files changed, 213 insertions(+), 9 deletions(-) - -diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c -index 3e88c2e..952d001 100644 ---- a/dlls/advapi32/tests/security.c -+++ b/dlls/advapi32/tests/security.c -@@ -3440,6 +3440,74 @@ static void test_GetNamedSecurityInfoA(void) - "Administators Group ACE has unexpected mask (0x%x != 0x1f01ff)\n", ace->Mask); - } - LocalFree(pSD); -+ CloseHandle(hTemp); -+ -+ /* Create security descriptor with no inheritance and test that it comes back the same */ -+ pSD = &sd; -+ pDacl = HeapAlloc(GetProcessHeap(), 0, 100); -+ InitializeSecurityDescriptor(pSD, SECURITY_DESCRIPTOR_REVISION); -+ pCreateWellKnownSid(WinBuiltinAdministratorsSid, NULL, admin_sid, &sid_size); -+ bret = InitializeAcl(pDacl, 100, ACL_REVISION); -+ ok(bret, "Failed to initialize ACL.\n"); -+ bret = pAddAccessAllowedAceEx(pDacl, ACL_REVISION, 0, GENERIC_ALL, user_sid); -+ ok(bret, "Failed to add Current User to ACL.\n"); -+ bret = pAddAccessAllowedAceEx(pDacl, ACL_REVISION, 0, GENERIC_ALL, admin_sid); -+ ok(bret, "Failed to add Administrator Group to ACL.\n"); -+ bret = SetSecurityDescriptorDacl(pSD, TRUE, pDacl, FALSE); -+ ok(bret, "Failed to add ACL to security desciptor.\n"); -+ GetTempFileNameA(".", "foo", 0, tmpfile); -+ hTemp = CreateFileA(tmpfile, GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, -+ FILE_FLAG_DELETE_ON_CLOSE, NULL); -+ SetLastError(0xdeadbeef); -+ error = pSetNamedSecurityInfoA(tmpfile, SE_FILE_OBJECT, -+ DACL_SECURITY_INFORMATION|PROTECTED_DACL_SECURITY_INFORMATION, -+ NULL, NULL, pDacl, NULL); -+ HeapFree(GetProcessHeap(), 0, pDacl); -+ if (error != ERROR_SUCCESS && (GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)) -+ { -+ win_skip("SetNamedSecurityInfoA is not implemented\n"); -+ HeapFree(GetProcessHeap(), 0, user); -+ CloseHandle(hTemp); -+ return; -+ } -+ ok(!error, "SetNamedSecurityInfoA failed with error %d\n", error); -+ SetLastError(0xdeadbeef); -+ error = pGetNamedSecurityInfoA(tmpfile, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, -+ NULL, NULL, &pDacl, NULL, &pSD); -+ if (error != ERROR_SUCCESS && (GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)) -+ { -+ win_skip("GetNamedSecurityInfoA is not implemented\n"); -+ HeapFree(GetProcessHeap(), 0, user); -+ CloseHandle(hTemp); -+ return; -+ } -+ ok(!error, "GetNamedSecurityInfo failed with error %d\n", error); -+ -+ bret = pGetAclInformation(pDacl, &acl_size, sizeof(acl_size), AclSizeInformation); -+ ok(bret, "GetAclInformation failed\n"); -+ if (acl_size.AceCount > 0) -+ { -+ bret = pGetAce(pDacl, 0, (VOID **)&ace); -+ ok(bret, "Failed to get Current User ACE.\n"); -+ bret = EqualSid(&ace->SidStart, user_sid); -+ ok(bret, "Current User ACE != Current User SID.\n"); -+ ok(((ACE_HEADER *)ace)->AceFlags == 0, -+ "Current User ACE has unexpected flags (0x%x != 0x0)\n", ((ACE_HEADER *)ace)->AceFlags); -+ ok(ace->Mask == 0x1f01ff, "Current User ACE has unexpected mask (0x%x != 0x1f01ff)\n", -+ ace->Mask); -+ } -+ if (acl_size.AceCount > 1) -+ { -+ bret = pGetAce(pDacl, 1, (VOID **)&ace); -+ ok(bret, "Failed to get Administators Group ACE.\n"); -+ bret = EqualSid(&ace->SidStart, admin_sid); -+ ok(bret || broken(!bret) /* win2k */, "Administators Group ACE != Administators Group SID.\n"); -+ ok(((ACE_HEADER *)ace)->AceFlags == 0, -+ "Administators Group ACE has unexpected flags (0x%x != 0x0)\n", ((ACE_HEADER *)ace)->AceFlags); -+ ok(ace->Mask == 0x1f01ff || broken(ace->Mask == GENERIC_ALL) /* win2k */, -+ "Administators Group ACE has unexpected mask (0x%x != 0x1f01ff)\n", ace->Mask); -+ } -+ LocalFree(pSD); - HeapFree(GetProcessHeap(), 0, user); - CloseHandle(hTemp); - -diff --git a/include/winnt.h b/include/winnt.h -index 709a93f..63882bb 100644 ---- a/include/winnt.h -+++ b/include/winnt.h -@@ -5078,14 +5078,15 @@ typedef struct _TAPE_GET_MEDIA_PARAMETERS { - BOOLEAN WriteProtected; - } TAPE_GET_MEDIA_PARAMETERS, *PTAPE_GET_MEDIA_PARAMETERS; - --/* ----------------------------- begin registry ----------------------------- */ -- --/* Registry security values */ - #define OWNER_SECURITY_INFORMATION 0x00000001 - #define GROUP_SECURITY_INFORMATION 0x00000002 - #define DACL_SECURITY_INFORMATION 0x00000004 - #define SACL_SECURITY_INFORMATION 0x00000008 -+#define PROTECTED_DACL_SECURITY_INFORMATION 0x80000000 - -+/* ----------------------------- begin registry ----------------------------- */ -+ -+/* Registry security values */ - #define REG_OPTION_RESERVED 0x00000000 - #define REG_OPTION_NON_VOLATILE 0x00000000 - #define REG_OPTION_VOLATILE 0x00000001 -diff --git a/server/fd.c b/server/fd.c -index e3b722c..e6ec90a 100644 ---- a/server/fd.c -+++ b/server/fd.c -@@ -1634,6 +1634,16 @@ struct fd *alloc_pseudo_fd( const struct fd_ops *fd_user_ops, struct object *use - return fd; - } - -+char *fd_get_unix_name( struct fd *obj ) -+{ -+ char *unix_name; -+ if (!obj->unix_name) return NULL; -+ unix_name = mem_alloc( strlen(obj->unix_name) + 1 ); -+ if (!unix_name) return NULL; -+ strcpy( unix_name, obj->unix_name ); -+ return unix_name; -+} -+ - /* duplicate an fd object for a different user */ - struct fd *dup_fd_object( struct fd *orig, unsigned int access, unsigned int sharing, unsigned int options ) - { -@@ -1647,8 +1657,7 @@ struct fd *dup_fd_object( struct fd *orig, unsigned int access, unsigned int sha - - if (orig->unix_name) - { -- if (!(fd->unix_name = mem_alloc( strlen(orig->unix_name) + 1 ))) goto failed; -- strcpy( fd->unix_name, orig->unix_name ); -+ if (!(fd->unix_name = fd_get_unix_name( orig ))) goto failed; - } - - if (orig->inode) -diff --git a/server/file.c b/server/file.c -index 431b8a1..a5d2de3 100644 ---- a/server/file.c -+++ b/server/file.c -@@ -329,6 +329,106 @@ struct security_descriptor *inherit_sd( const struct security_descriptor *parent - return sd; - } - -+struct security_descriptor *file_combine_sds( const struct security_descriptor *parent_sd, -+ const struct security_descriptor *child_sd ) -+{ -+ size_t dacl_size = sizeof(ACL), ace_count = 0; -+ const struct security_descriptor *old_sd; -+ struct security_descriptor *sd = NULL; -+ const ACL *child_dacl, *parent_dacl; -+ int child_present, parent_present; -+ const SID *user, *group; -+ const ACE_HEADER *old_ace; -+ ACE_HEADER *ace; -+ ACL *dacl; -+ char *ptr; -+ ULONG i; -+ -+ child_dacl = sd_get_dacl( child_sd, &child_present ); -+ if (child_present && child_dacl) -+ { -+ old_ace = (const ACE_HEADER *)(child_dacl + 1); -+ for (i = 0; i < child_dacl->AceCount; i++, old_ace = ace_next( old_ace )) -+ { -+ ace_count++; -+ dacl_size += sizeof(ACE_HEADER) + old_ace->AceSize; -+ } -+ } -+ -+ parent_dacl = sd_get_dacl( parent_sd, &parent_present ); -+ if (parent_present && parent_dacl) -+ { -+ old_ace = (const ACE_HEADER *)(parent_dacl + 1); -+ for (i = 0; i < parent_dacl->AceCount; i++, old_ace = ace_next( old_ace )) -+ { -+ ace_count++; -+ dacl_size += sizeof(ACE_HEADER) + old_ace->AceSize; -+ } -+ } -+ -+ if(!ace_count) return sd; /* No inheritance */ -+ -+ /* FIXME: should use set_info flags? */ -+ if (child_present && child_dacl) -+ old_sd = child_sd; -+ else -+ old_sd = parent_sd; -+ -+ /* Fill in the security descriptor so that it is compatible with our DACL */ -+ user = (const SID *)(old_sd + 1); -+ group = (const SID *)((char *)(old_sd + 1) + old_sd->owner_len); -+ sd = mem_alloc( sizeof(struct security_descriptor) + old_sd->owner_len -+ + old_sd->group_len + dacl_size ); -+ if (!sd) return sd; -+ sd->control = SE_DACL_PRESENT; -+ sd->owner_len = old_sd->owner_len; -+ sd->group_len = old_sd->group_len; -+ sd->sacl_len = 0; -+ sd->dacl_len = dacl_size; -+ ptr = (char *)(sd + 1); -+ memcpy( ptr, user, sd->owner_len ); -+ ptr += sd->owner_len; -+ memcpy( ptr, group, sd->group_len ); -+ ptr += sd->group_len; -+ dacl = (ACL *)ptr; -+ dacl->AclRevision = ACL_REVISION; -+ dacl->Sbz1 = 0; -+ dacl->AclSize = dacl_size; -+ dacl->AceCount = ace_count; -+ dacl->Sbz2 = 0; -+ ace = (ACE_HEADER *)(dacl + 1); -+ -+ if (parent_present && parent_dacl) -+ { -+ /* Build the new DACL, inheriting from the parent's information */ -+ old_ace = (const ACE_HEADER *)(parent_dacl + 1); -+ for (i = 0; i < parent_dacl->AceCount; i++, old_ace = ace_next( old_ace )) -+ { -+ ace->AceType = old_ace->AceType; -+ ace->AceFlags = old_ace->AceFlags; -+ ace->AceSize = old_ace->AceSize; -+ memcpy( ace + 1, old_ace + 1, old_ace->AceSize - sizeof(ACE_HEADER)); -+ ace = (ACE_HEADER *)ace_next( ace ); -+ } -+ } -+ -+ if (child_present && child_dacl) -+ { -+ /* Build the new DACL, inheriting from the child's information */ -+ old_ace = (const ACE_HEADER *)(child_dacl + 1); -+ for (i = 0; i < child_dacl->AceCount; i++, old_ace = ace_next( old_ace )) -+ { -+ ace->AceType = old_ace->AceType; -+ ace->AceFlags = old_ace->AceFlags; -+ ace->AceSize = old_ace->AceSize; -+ memcpy( ace + 1, old_ace + 1, old_ace->AceSize - sizeof(ACE_HEADER)); -+ ace = (ACE_HEADER *)ace_next( ace ); -+ } -+ } -+ -+ return sd; -+} -+ - static struct security_descriptor *file_get_parent_sd( struct fd *root, const char *child_name, - int child_len, int is_dir ) - { -@@ -800,20 +900,41 @@ mode_t sd_to_mode( const struct security_descriptor *sd, const SID *owner ) - int set_file_sd( struct object *obj, struct fd *fd, const struct security_descriptor *sd, - unsigned int set_info ) - { -+ struct security_descriptor *tmp_sd = NULL; - int unix_fd = get_unix_fd( fd ); - const SID *owner, *group; - struct stat st; - mode_t mode; -+ int ret = 1; - - if (unix_fd == -1 || fstat( unix_fd, &st ) == -1) return 1; - -+ if (!(set_info & PROTECTED_DACL_SECURITY_INFORMATION)) -+ { -+ char *child_name = fd_get_unix_name( fd ); -+ if (child_name) -+ { -+ struct security_descriptor *parent_sd; -+ parent_sd = file_get_parent_sd( NULL, child_name, strlen(child_name), -+ S_ISDIR(st.st_mode) ); -+ free( child_name ); -+ if (parent_sd) -+ { -+ tmp_sd = file_combine_sds( parent_sd, sd ); -+ if (tmp_sd) sd = tmp_sd; /* only used combined sd if successful */ -+ free( parent_sd ); -+ } -+ } -+ } -+ - if (set_info & OWNER_SECURITY_INFORMATION) - { - owner = sd_get_owner( sd ); - if (!owner) - { - set_error( STATUS_INVALID_SECURITY_DESCR ); -- return 0; -+ ret = 0; -+ goto err; - } - if (!obj->sd || !security_equal_sid( owner, sd_get_owner( obj->sd ) )) - { -@@ -831,7 +952,8 @@ int set_file_sd( struct object *obj, struct fd *fd, const struct security_descri - if (!group) - { - set_error( STATUS_INVALID_SECURITY_DESCR ); -- return 0; -+ ret = 0; -+ goto err; - } - if (!obj->sd || !security_equal_sid( group, sd_get_group( obj->sd ) )) - { -@@ -856,10 +978,13 @@ int set_file_sd( struct object *obj, struct fd *fd, const struct security_descri - if (((st.st_mode ^ mode) & (S_IRWXU|S_IRWXG|S_IRWXO)) && fchmod( unix_fd, mode ) == -1) - { - file_set_error(); -- return 0; -+ ret = 0; - } - } -- return 1; -+ -+err: -+ free( tmp_sd ); -+ return ret; - } - - static int file_set_sd( struct object *obj, const struct security_descriptor *sd, -diff --git a/server/file.h b/server/file.h -index be25fb6..b43f329 100644 ---- a/server/file.h -+++ b/server/file.h -@@ -79,6 +79,7 @@ extern void allow_fd_caching( struct fd *fd ); - extern void set_fd_signaled( struct fd *fd, int signaled ); - extern int is_fd_signaled( struct fd *fd ); - -+extern char *fd_get_unix_name( struct fd *obj ); - extern int default_fd_signaled( struct object *obj, struct wait_queue_entry *entry ); - extern unsigned int default_fd_map_access( struct object *obj, unsigned int access ); - extern int default_fd_get_poll_events( struct fd *fd ); --- -2.1.0 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-Inherited_ACLs/definition wine-staging-1.7.41~ubuntu12.04.1/patches/server-Inherited_ACLs/definition --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-Inherited_ACLs/definition 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-Inherited_ACLs/definition 2015-04-18 23:54:01.000000000 +0000 @@ -1,3 +1,2 @@ Depends: server-Stored_ACLs -Depends: server-File_Permissions Fixes: [34406] Support for inherited file ACLs diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-JobObjects/0001-server-Implement-JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-JobObjects/0001-server-Implement-JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-JobObjects/0001-server-Implement-JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-JobObjects/0001-server-Implement-JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,67 @@ +From 23d528b7e744e69fa5d857be20f188ce5510c088 Mon Sep 17 00:00:00 2001 +From: Andrew Cook +Date: Thu, 26 Feb 2015 13:10:41 +1100 +Subject: server: Implement JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE. + +--- + dlls/kernel32/tests/process.c | 1 - + server/process.c | 17 ++++++++++++++++- + 2 files changed, 16 insertions(+), 2 deletions(-) + +diff --git a/dlls/kernel32/tests/process.c b/dlls/kernel32/tests/process.c +index c63d6b1..5e04836 100644 +--- a/dlls/kernel32/tests/process.c ++++ b/dlls/kernel32/tests/process.c +@@ -2435,7 +2435,6 @@ static void test_KillOnJobClose(void) + CloseHandle(job); + + dwret = WaitForSingleObject(pi.hProcess, 1000); +- todo_wine + ok(dwret == WAIT_OBJECT_0, "WaitForSingleObject returned %u\n", dwret); + if (dwret == WAIT_TIMEOUT) TerminateProcess(pi.hProcess, 0); + +diff --git a/server/process.c b/server/process.c +index 569a8fe..38bd977 100644 +--- a/server/process.c ++++ b/server/process.c +@@ -140,6 +140,7 @@ static void job_dump( struct object *obj, int verbose ); + static struct object_type *job_get_type( struct object *obj ); + static int job_signaled( struct object *obj, struct wait_queue_entry *entry ); + static unsigned int job_map_access( struct object *obj, unsigned int access ); ++static int job_close_handle( struct object *, struct process *process, obj_handle_t handle ); + static void job_destroy( struct object *obj ); + + struct job +@@ -170,7 +171,7 @@ static const struct object_ops job_ops = + default_set_sd, /* set_sd */ + no_lookup_name, /* lookup_name */ + no_open_file, /* open_file */ +- no_close_handle, /* close_handle */ ++ job_close_handle, /* close_handle */ + job_destroy /* destroy */ + }; + +@@ -287,6 +288,20 @@ static void terminate_job( struct job *job, int exit_code ) + wake_up( &job->obj, 0 ); + } + ++static int job_close_handle( struct object *obj, struct process *process, obj_handle_t handle ) ++{ ++ struct job *job = (struct job *)obj; ++ assert( obj->ops == &job_ops ); ++ ++ /* If this is the last handle and JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE is set, ++ * then terminate all associcated processes. We can't use the refcount because ++ * processes have a reference to the job object. */ ++ if (obj->handle_count == 1 && (job->limit_flags & JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE)) ++ terminate_job( job, 0 ); ++ ++ return 1; ++} ++ + static void job_destroy( struct object *obj ) + { + struct job *job = (struct job *)obj; +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-JobObjects/0001-server-Implement-remaining-wineserver-calls-for-job-.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-JobObjects/0001-server-Implement-remaining-wineserver-calls-for-job-.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-JobObjects/0001-server-Implement-remaining-wineserver-calls-for-job-.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-JobObjects/0001-server-Implement-remaining-wineserver-calls-for-job-.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,202 +0,0 @@ -From f478d1b97efc4fe63f8ccc01a2ab214c0bffc579 Mon Sep 17 00:00:00 2001 -From: Andrew Cook -Date: Thu, 26 Feb 2015 12:25:23 +1100 -Subject: server: Implement remaining wineserver calls for job objects. - ---- - dlls/kernel32/tests/process.c | 2 -- - dlls/ntdll/sync.c | 29 +++++++++++++++++++++++++---- - server/process.c | 40 +++++++++++++++++++++++++++++++++++++++- - server/process.h | 1 + - server/protocol.def | 7 +++++++ - 5 files changed, 72 insertions(+), 7 deletions(-) - -diff --git a/dlls/kernel32/tests/process.c b/dlls/kernel32/tests/process.c -index 44e81ba..a86e331 100644 ---- a/dlls/kernel32/tests/process.c -+++ b/dlls/kernel32/tests/process.c -@@ -2269,13 +2269,11 @@ static void test_TerminateJobObject(void) - ok(ret, "TerminateJobObject error %u\n", GetLastError()); - - dwret = WaitForSingleObject(pi.hProcess, 1000); -- todo_wine - ok(dwret == WAIT_OBJECT_0, "WaitForSingleObject returned %u\n", dwret); - if (dwret == WAIT_TIMEOUT) TerminateProcess(pi.hProcess, 0); - - ret = GetExitCodeProcess(pi.hProcess, &dwret); - ok(ret, "GetExitCodeProcess error %u\n", GetLastError()); -- todo_wine - ok(dwret == 123 || broken(dwret == 0) /* randomly fails on Win 2000 / XP */, - "wrong exitcode %u\n", dwret); - -diff --git a/dlls/ntdll/sync.c b/dlls/ntdll/sync.c -index a4df88a..400aa7d 100644 ---- a/dlls/ntdll/sync.c -+++ b/dlls/ntdll/sync.c -@@ -56,6 +56,7 @@ - #include "wine/server.h" - #include "wine/debug.h" - #include "ntdll_misc.h" -+#include "winnt.h" - - WINE_DEFAULT_DEBUG_CHANNEL(ntdll); - -@@ -613,8 +614,19 @@ NTSTATUS WINAPI NtOpenJobObject( PHANDLE handle, ACCESS_MASK access, const OBJEC - */ - NTSTATUS WINAPI NtTerminateJobObject( HANDLE handle, NTSTATUS status ) - { -- FIXME( "stub: %p %x\n", handle, status ); -- return STATUS_SUCCESS; -+ NTSTATUS ret; -+ -+ TRACE( "(%p, %d)\n", handle, status ); -+ -+ SERVER_START_REQ( terminate_job ) -+ { -+ req->handle = wine_server_obj_handle( handle ); -+ req->status = status; -+ ret = wine_server_call( req ); -+ } -+ SERVER_END_REQ; -+ -+ return ret; - } - - /****************************************************************************** -@@ -624,8 +636,17 @@ NTSTATUS WINAPI NtTerminateJobObject( HANDLE handle, NTSTATUS status ) - NTSTATUS WINAPI NtQueryInformationJobObject( HANDLE handle, JOBOBJECTINFOCLASS class, PVOID info, - ULONG len, PULONG ret_len ) - { -- FIXME( "stub: %p %u %p %u %p\n", handle, class, info, len, ret_len ); -- return STATUS_NOT_IMPLEMENTED; -+ TRACE( "%p %u %p %u %p\n", handle, class, info, len, ret_len ); -+ -+ if (class >= MaxJobObjectInfoClass) -+ return STATUS_INVALID_PARAMETER; -+ -+ switch (class) -+ { -+ default: -+ FIXME( "stub: %p %u %p %u %p\n", handle, class, info, len, ret_len ); -+ return STATUS_NOT_IMPLEMENTED; -+ } - } - - /****************************************************************************** -diff --git a/server/process.c b/server/process.c -index 5821435..727a682 100644 ---- a/server/process.c -+++ b/server/process.c -@@ -65,6 +65,7 @@ static unsigned int process_map_access( struct object *obj, unsigned int access - static struct security_descriptor *process_get_sd( struct object *obj ); - static void process_poll_event( struct fd *fd, int event ); - static void process_destroy( struct object *obj ); -+static void terminate_process( struct process *process, struct thread *skip, int exit_code ); - - static const struct object_ops process_ops = - { -@@ -148,6 +149,7 @@ struct job - struct list process_list; /* list of all processes */ - int num_processes; /* count of running processes */ - unsigned int limit_flags; /* limit flags */ -+ int terminating; /* job is terminating */ - struct completion *completion_port; /* associated completion port */ - apc_param_t completion_key; /* key to send with completion messages */ - }; -@@ -189,6 +191,7 @@ static struct job *create_job_object( struct directory *root, const struct unico - list_init( &job->process_list ); - job->num_processes = 0; - job->limit_flags = 0; -+ job->terminating = 0; - job->completion_port = NULL; - job->completion_key = 0; - } -@@ -252,12 +255,36 @@ static void release_job_process( struct process *process ) - assert( job->num_processes ); - job->num_processes--; - -- add_job_completion( job, JOB_OBJECT_MSG_EXIT_PROCESS, get_process_id(process) ); -+ if (!job->terminating) -+ add_job_completion( job, JOB_OBJECT_MSG_EXIT_PROCESS, get_process_id(process) ); - - if (!job->num_processes) - add_job_completion( job, JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO, 0 ); - } - -+static void terminate_job( struct job *job, int exit_code ) -+{ -+ /* Windows doesn't report completion events for processes -+ * terminated by TerminateProcess, we do the same */ -+ job->terminating = 1; -+ -+ for (;;) /* restart from the beginning of the list every time */ -+ { -+ struct process *process; -+ -+ /* find the first process associcated with this job and still running */ -+ LIST_FOR_EACH_ENTRY( process, &job->process_list, struct process, job_entry ) -+ { -+ if (process->running_threads) break; -+ } -+ if (&process->job_entry == &job->process_list) break; /* no process found */ -+ assert( process->job == job ); -+ terminate_process( process, NULL, exit_code ); -+ } -+ -+ job->terminating = 0; -+} -+ - static void job_destroy( struct object *obj ) - { - struct job *job = (struct job *)obj; -@@ -1596,6 +1623,17 @@ DECL_HANDLER(process_in_job) - release_object( process ); - } - -+/* terminate all processes associated with the job */ -+DECL_HANDLER(terminate_job) -+{ -+ struct job *job = get_job_obj( current->process, req->handle, JOB_OBJECT_TERMINATE ); -+ -+ if (!job) return; -+ -+ terminate_job( job, req->status ); -+ release_object( job ); -+} -+ - /* update limits of the job object */ - DECL_HANDLER(set_job_limits) - { -diff --git a/server/process.h b/server/process.h -index 0cf9514..ae83b0e 100644 ---- a/server/process.h -+++ b/server/process.h -@@ -26,6 +26,7 @@ - struct atom_table; - struct handle_table; - struct startup_info; -+struct job; - - /* process startup state */ - enum startup_state { STARTUP_IN_PROGRESS, STARTUP_DONE, STARTUP_ABORTED }; -diff --git a/server/protocol.def b/server/protocol.def -index 9199c7f..5ecc8d5 100644 ---- a/server/protocol.def -+++ b/server/protocol.def -@@ -3530,6 +3530,13 @@ enum coords_relative - @END - - -+/* Terminate all processes associated with the job */ -+@REQ(terminate_job) -+ obj_handle_t handle; /* handle to the job */ -+ int status; /* exitcode of the process */ -+@END -+ -+ - /* Set limit flags on a job */ - @REQ(set_job_limits) - obj_handle_t handle; /* handle to the job */ --- -2.3.3 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-JobObjects/0002-ntdll-Implement-NtQueryInformationJobObject-stub-fun.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-JobObjects/0002-ntdll-Implement-NtQueryInformationJobObject-stub-fun.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-JobObjects/0002-ntdll-Implement-NtQueryInformationJobObject-stub-fun.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-JobObjects/0002-ntdll-Implement-NtQueryInformationJobObject-stub-fun.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,55 @@ +From 32940d62072444eb41a918b27aae6e4b48fe555f Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Thu, 12 Mar 2015 22:19:50 +0100 +Subject: ntdll: Implement NtQueryInformationJobObject stub function. + +--- + dlls/ntdll/sync.c | 31 ++++++++++++++++++++++++++++++- + 1 file changed, 30 insertions(+), 1 deletion(-) + +diff --git a/dlls/ntdll/sync.c b/dlls/ntdll/sync.c +index 04c6de30..fb95460 100644 +--- a/dlls/ntdll/sync.c ++++ b/dlls/ntdll/sync.c +@@ -635,8 +635,37 @@ NTSTATUS WINAPI NtTerminateJobObject( HANDLE handle, NTSTATUS status ) + NTSTATUS WINAPI NtQueryInformationJobObject( HANDLE handle, JOBOBJECTINFOCLASS class, PVOID info, + ULONG len, PULONG ret_len ) + { ++ JOBOBJECT_EXTENDED_LIMIT_INFORMATION *extended_limit; ++ JOBOBJECT_BASIC_LIMIT_INFORMATION *basic_limit; ++ + FIXME( "stub: %p %u %p %u %p\n", handle, class, info, len, ret_len ); +- return STATUS_NOT_IMPLEMENTED; ++ ++ if (class >= MaxJobObjectInfoClass) ++ return STATUS_INVALID_PARAMETER; ++ ++ switch (class) ++ { ++ case JobObjectExtendedLimitInformation: ++ if (len < sizeof(JOBOBJECT_EXTENDED_LIMIT_INFORMATION)) ++ return STATUS_INVALID_PARAMETER; ++ ++ extended_limit = (JOBOBJECT_EXTENDED_LIMIT_INFORMATION *)info; ++ memset(extended_limit, 0, sizeof(*extended_limit)); ++ if (ret_len) *ret_len = sizeof(*extended_limit); ++ return STATUS_SUCCESS; ++ ++ case JobObjectBasicLimitInformation: ++ if (len < sizeof(JOBOBJECT_BASIC_LIMIT_INFORMATION)) ++ return STATUS_INVALID_PARAMETER; ++ ++ basic_limit = (JOBOBJECT_BASIC_LIMIT_INFORMATION *)info; ++ memset(basic_limit, 0, sizeof(*basic_limit)); ++ if (ret_len) *ret_len = sizeof(*basic_limit); ++ return STATUS_SUCCESS; ++ ++ default: ++ return STATUS_NOT_IMPLEMENTED; ++ } + } + + /****************************************************************************** +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-JobObjects/0002-server-Implement-JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-JobObjects/0002-server-Implement-JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-JobObjects/0002-server-Implement-JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-JobObjects/0002-server-Implement-JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,67 +0,0 @@ -From e70c80c4f78ac6306629d79f86d8c1c5439aaa17 Mon Sep 17 00:00:00 2001 -From: Andrew Cook -Date: Thu, 26 Feb 2015 13:10:41 +1100 -Subject: server: Implement JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE. - ---- - dlls/kernel32/tests/process.c | 1 - - server/process.c | 17 ++++++++++++++++- - 2 files changed, 16 insertions(+), 2 deletions(-) - -diff --git a/dlls/kernel32/tests/process.c b/dlls/kernel32/tests/process.c -index a86e331..4f51cea 100644 ---- a/dlls/kernel32/tests/process.c -+++ b/dlls/kernel32/tests/process.c -@@ -2449,7 +2449,6 @@ static void test_KillOnJobClose(void) - CloseHandle(job); - - dwret = WaitForSingleObject(pi.hProcess, 1000); -- todo_wine - ok(dwret == WAIT_OBJECT_0, "WaitForSingleObject returned %u\n", dwret); - if (dwret == WAIT_TIMEOUT) TerminateProcess(pi.hProcess, 0); - -diff --git a/server/process.c b/server/process.c -index 10193ef..89c029e 100644 ---- a/server/process.c -+++ b/server/process.c -@@ -141,6 +141,7 @@ static void job_dump( struct object *obj, int verbose ); - static struct object_type *job_get_type( struct object *obj ); - static int job_signaled( struct object *obj, struct wait_queue_entry *entry ); - static unsigned int job_map_access( struct object *obj, unsigned int access ); -+static int job_close_handle( struct object *, struct process *process, obj_handle_t handle ); - static void job_destroy( struct object *obj ); - - struct job -@@ -170,7 +171,7 @@ static const struct object_ops job_ops = - default_set_sd, /* set_sd */ - no_lookup_name, /* lookup_name */ - no_open_file, /* open_file */ -- no_close_handle, /* close_handle */ -+ job_close_handle, /* close_handle */ - job_destroy /* destroy */ - }; - -@@ -286,6 +287,20 @@ static void terminate_job( struct job *job, int exit_code ) - job->terminating = 0; - } - -+static int job_close_handle( struct object *obj, struct process *process, obj_handle_t handle ) -+{ -+ struct job *job = (struct job *)obj; -+ assert( obj->ops == &job_ops ); -+ -+ /* If this is the last handle and JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE is set, -+ * then terminate all associcated processes. We can't use the refcount because -+ * processes have a reference to the job object. */ -+ if (obj->handle_count == 1 && (job->limit_flags & JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE)) -+ terminate_job( job, 0 ); -+ -+ return 1; -+} -+ - static void job_destroy( struct object *obj ) - { - struct job *job = (struct job *)obj; --- -2.3.3 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-JobObjects/0003-kernel32-tests-Add-tests-for-waiting-on-an-job-objec.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-JobObjects/0003-kernel32-tests-Add-tests-for-waiting-on-an-job-objec.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-JobObjects/0003-kernel32-tests-Add-tests-for-waiting-on-an-job-objec.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-JobObjects/0003-kernel32-tests-Add-tests-for-waiting-on-an-job-objec.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,115 +0,0 @@ -From c86188e18efaf5ece7b4d85ccee4089208e392fa Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Sat, 28 Feb 2015 06:09:16 +0100 -Subject: kernel32/tests: Add tests for waiting on an job object. - ---- - dlls/kernel32/tests/process.c | 85 +++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 85 insertions(+) - -diff --git a/dlls/kernel32/tests/process.c b/dlls/kernel32/tests/process.c -index 4f51cea..aaa1a6e 100644 ---- a/dlls/kernel32/tests/process.c -+++ b/dlls/kernel32/tests/process.c -@@ -2456,6 +2456,90 @@ static void test_KillOnJobClose(void) - CloseHandle(pi.hThread); - } - -+static void test_WaitForJobObject(void) -+{ -+ HANDLE job; -+ PROCESS_INFORMATION pi; -+ BOOL ret; -+ DWORD dwret; -+ -+ /* test waiting for a job object when the process is killed */ -+ job = pCreateJobObjectW(NULL, NULL); -+ ok(job != NULL, "CreateJobObject error %u\n", GetLastError()); -+ -+ dwret = WaitForSingleObject(job, 100); -+ ok(dwret == WAIT_TIMEOUT, "WaitForSingleObject returned %u\n", dwret); -+ -+ create_process("wait", &pi); -+ -+ ret = pAssignProcessToJobObject(job, pi.hProcess); -+ ok(ret, "AssignProcessToJobObject error %u\n", GetLastError()); -+ -+ dwret = WaitForSingleObject(job, 100); -+ ok(dwret == WAIT_TIMEOUT, "WaitForSingleObject returned %u\n", dwret); -+ -+ ret = pTerminateJobObject(job, 123); -+ ok(ret, "TerminateJobObject error %u\n", GetLastError()); -+ -+ dwret = WaitForSingleObject(job, 500); -+ todo_wine -+ ok(dwret == WAIT_OBJECT_0 || broken(dwret == WAIT_TIMEOUT), -+ "WaitForSingleObject returned %u\n", dwret); -+ -+ if (dwret == WAIT_TIMEOUT) /* Win 2000/XP */ -+ { -+ CloseHandle(pi.hProcess); -+ CloseHandle(pi.hThread); -+ CloseHandle(job); -+ todo_wine -+ win_skip("TerminateJobObject doesn't signal job, skipping tests\n"); -+ return; -+ } -+ -+ /* the object is not reset immediately */ -+ dwret = WaitForSingleObject(job, 100); -+ ok(dwret == WAIT_OBJECT_0, "WaitForSingleObject returned %u\n", dwret); -+ -+ CloseHandle(pi.hProcess); -+ CloseHandle(pi.hThread); -+ -+ /* creating a new process doesn't reset the signalled state */ -+ create_process("wait", &pi); -+ -+ ret = pAssignProcessToJobObject(job, pi.hProcess); -+ ok(ret, "AssignProcessToJobObject error %u\n", GetLastError()); -+ -+ dwret = WaitForSingleObject(job, 100); -+ ok(dwret == WAIT_OBJECT_0, "WaitForSingleObject returned %u\n", dwret); -+ -+ ret = pTerminateJobObject(job, 123); -+ ok(ret, "TerminateJobObject error %u\n", GetLastError()); -+ -+ CloseHandle(pi.hProcess); -+ CloseHandle(pi.hThread); -+ -+ CloseHandle(job); -+ -+ /* repeat the test, but this time the process terminates properly */ -+ job = pCreateJobObjectW(NULL, NULL); -+ ok(job != NULL, "CreateJobObject error %u\n", GetLastError()); -+ -+ dwret = WaitForSingleObject(job, 100); -+ ok(dwret == WAIT_TIMEOUT, "WaitForSingleObject returned %u\n", dwret); -+ -+ create_process("exit", &pi); -+ -+ ret = pAssignProcessToJobObject(job, pi.hProcess); -+ ok(ret, "AssignProcessToJobObject error %u\n", GetLastError()); -+ -+ dwret = WaitForSingleObject(job, 100); -+ ok(dwret == WAIT_TIMEOUT, "WaitForSingleObject returned %u\n", dwret); -+ -+ CloseHandle(pi.hProcess); -+ CloseHandle(pi.hThread); -+ CloseHandle(job); -+} -+ - static HANDLE test_AddSelfToJob(void) - { - HANDLE job; -@@ -2676,6 +2760,7 @@ START_TEST(process) - test_QueryInformationJobObject(); - test_CompletionPort(); - test_KillOnJobClose(); -+ test_WaitForJobObject(); - job = test_AddSelfToJob(); - test_jobInheritance(job); - test_BreakawayOk(job); --- -2.3.3 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-JobObjects/0004-server-Implement-waiting-for-job-objects.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-JobObjects/0004-server-Implement-waiting-for-job-objects.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-JobObjects/0004-server-Implement-waiting-for-job-objects.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-JobObjects/0004-server-Implement-waiting-for-job-objects.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,72 +0,0 @@ -From 6e6cd9108a8f3c0b9d158ac2605e9b0a08b19c71 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Sat, 28 Feb 2015 06:58:48 +0100 -Subject: server: Implement waiting for job objects. - ---- - dlls/kernel32/tests/process.c | 2 -- - server/process.c | 7 ++++++- - 2 files changed, 6 insertions(+), 3 deletions(-) - -diff --git a/dlls/kernel32/tests/process.c b/dlls/kernel32/tests/process.c -index aaa1a6e..c325d32 100644 ---- a/dlls/kernel32/tests/process.c -+++ b/dlls/kernel32/tests/process.c -@@ -2482,7 +2482,6 @@ static void test_WaitForJobObject(void) - ok(ret, "TerminateJobObject error %u\n", GetLastError()); - - dwret = WaitForSingleObject(job, 500); -- todo_wine - ok(dwret == WAIT_OBJECT_0 || broken(dwret == WAIT_TIMEOUT), - "WaitForSingleObject returned %u\n", dwret); - -@@ -2491,7 +2490,6 @@ static void test_WaitForJobObject(void) - CloseHandle(pi.hProcess); - CloseHandle(pi.hThread); - CloseHandle(job); -- todo_wine - win_skip("TerminateJobObject doesn't signal job, skipping tests\n"); - return; - } -diff --git a/server/process.c b/server/process.c -index 3ff0be5..f59fe2b 100644 ---- a/server/process.c -+++ b/server/process.c -@@ -151,6 +151,7 @@ struct job - int num_processes; /* count of running processes */ - unsigned int limit_flags; /* limit flags */ - int terminating; /* job is terminating */ -+ int signaled; /* job is signaled */ - struct completion *completion_port; /* associated completion port */ - apc_param_t completion_key; /* key to send with completion messages */ - }; -@@ -193,6 +194,7 @@ static struct job *create_job_object( struct directory *root, const struct unico - job->num_processes = 0; - job->limit_flags = 0; - job->terminating = 0; -+ job->signaled = 0; - job->completion_port = NULL; - job->completion_key = 0; - } -@@ -284,6 +286,8 @@ static void terminate_job( struct job *job, int exit_code ) - } - - job->terminating = 0; -+ job->signaled = 1; -+ wake_up( &job->obj, 0 ); - } - - static int job_close_handle( struct object *obj, struct process *process, obj_handle_t handle ) -@@ -320,7 +324,8 @@ static void job_dump( struct object *obj, int verbose ) - - static int job_signaled( struct object *obj, struct wait_queue_entry *entry ) - { -- return 0; -+ struct job *job = (struct job *)obj; -+ return job->signaled; - } - - struct ptid_entry --- -2.3.3 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-JobObjects/0005-ntdll-Implement-NtQueryInformationJobObject-stub-fun.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-JobObjects/0005-ntdll-Implement-NtQueryInformationJobObject-stub-fun.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-JobObjects/0005-ntdll-Implement-NtQueryInformationJobObject-stub-fun.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-JobObjects/0005-ntdll-Implement-NtQueryInformationJobObject-stub-fun.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,55 +0,0 @@ -From 55894316559d36c433e8aa8ae6e6957fa651d09a Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Thu, 12 Mar 2015 22:19:50 +0100 -Subject: ntdll: Implement NtQueryInformationJobObject stub function. - ---- - dlls/ntdll/sync.c | 24 +++++++++++++++++++++++- - 1 file changed, 23 insertions(+), 1 deletion(-) - -diff --git a/dlls/ntdll/sync.c b/dlls/ntdll/sync.c -index 87ff3e0..9a7a6d0 100644 ---- a/dlls/ntdll/sync.c -+++ b/dlls/ntdll/sync.c -@@ -636,15 +636,37 @@ NTSTATUS WINAPI NtTerminateJobObject( HANDLE handle, NTSTATUS status ) - NTSTATUS WINAPI NtQueryInformationJobObject( HANDLE handle, JOBOBJECTINFOCLASS class, PVOID info, - ULONG len, PULONG ret_len ) - { -+ JOBOBJECT_EXTENDED_LIMIT_INFORMATION *extended_limit; -+ JOBOBJECT_BASIC_LIMIT_INFORMATION *basic_limit; -+ - TRACE( "%p %u %p %u %p\n", handle, class, info, len, ret_len ); - - if (class >= MaxJobObjectInfoClass) - return STATUS_INVALID_PARAMETER; - -+ FIXME( "stub: %p %u %p %u %p\n", handle, class, info, len, ret_len ); -+ - switch (class) - { -+ case JobObjectExtendedLimitInformation: -+ if (len < sizeof(JOBOBJECT_EXTENDED_LIMIT_INFORMATION)) -+ return STATUS_INVALID_PARAMETER; -+ -+ extended_limit = (JOBOBJECT_EXTENDED_LIMIT_INFORMATION *)info; -+ memset(extended_limit, 0, sizeof(*extended_limit)); -+ if (ret_len) *ret_len = sizeof(*extended_limit); -+ return STATUS_SUCCESS; -+ -+ case JobObjectBasicLimitInformation: -+ if (len < sizeof(JOBOBJECT_BASIC_LIMIT_INFORMATION)) -+ return STATUS_INVALID_PARAMETER; -+ -+ basic_limit = (JOBOBJECT_BASIC_LIMIT_INFORMATION *)info; -+ memset(basic_limit, 0, sizeof(*basic_limit)); -+ if (ret_len) *ret_len = sizeof(*basic_limit); -+ return STATUS_SUCCESS; -+ - default: -- FIXME( "stub: %p %u %p %u %p\n", handle, class, info, len, ret_len ); - return STATUS_NOT_IMPLEMENTED; - } - } --- -2.3.3 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-JobObjects/0006-ntdll-Return-STATUS_SUCCESS-from-SetInformationJobOb.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-JobObjects/0006-ntdll-Return-STATUS_SUCCESS-from-SetInformationJobOb.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-JobObjects/0006-ntdll-Return-STATUS_SUCCESS-from-SetInformationJobOb.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-JobObjects/0006-ntdll-Return-STATUS_SUCCESS-from-SetInformationJobOb.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -From 2e080477fe74a95265befb02dee6bd1c07d712cc Mon Sep 17 00:00:00 2001 -From: Andrew Cook -Date: Sat, 4 Apr 2015 18:02:53 +1100 -Subject: ntdll: Return STATUS_SUCCESS from SetInformationJobObject - -Fixes #38351 ---- - dlls/ntdll/sync.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/dlls/ntdll/sync.c b/dlls/ntdll/sync.c -index 5d1c5f2..8566799 100644 ---- a/dlls/ntdll/sync.c -+++ b/dlls/ntdll/sync.c -@@ -728,7 +728,7 @@ NTSTATUS WINAPI NtSetInformationJobObject( HANDLE handle, JOBOBJECTINFOCLASS cla - - default: - FIXME( "stub: %p %u %p %u\n", handle, class, info, len ); -- return STATUS_NOT_IMPLEMENTED; -+ return STATUS_SUCCESS; - } - - return status; --- -2.3.3 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-JobObjects/definition wine-staging-1.7.41~ubuntu12.04.1/patches/server-JobObjects/definition --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-JobObjects/definition 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-JobObjects/definition 2015-04-18 23:54:01.000000000 +0000 @@ -1,7 +1,4 @@ -Fixes: [33723] EA Origin needs support for job objects -Fixes: Properly track handle count of wineserver objects Fixes: Python PIP needs better NtQueryInformationJobObject stub -Fixes: [38351] Ignore unsupported job object restrictions Depends: kernel32-Console_Handles Depends: server-OpenProcess Depends: server-Misc_ACL diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-Misc_ACL/0001-server-Add-default-security-descriptor-ownership-for.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-Misc_ACL/0001-server-Add-default-security-descriptor-ownership-for.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-Misc_ACL/0001-server-Add-default-security-descriptor-ownership-for.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-Misc_ACL/0001-server-Add-default-security-descriptor-ownership-for.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,20 +1,20 @@ -From 977d05dff239899b548e170055e2a38ee16d5fd6 Mon Sep 17 00:00:00 2001 +From f06a13e553d543e7b49c805b9292611ab1c68371 Mon Sep 17 00:00:00 2001 From: "Erich E. Hoover" Date: Wed, 25 Jun 2014 11:49:12 -0600 Subject: server: Add default security descriptor ownership for processes. --- - dlls/advapi32/tests/security.c | 35 +++++++++++++++++++++++++++++++++++ - server/process.c | 26 +++++++++++++++++++++++++- - server/security.h | 1 + - server/token.c | 8 ++++++++ + dlls/advapi32/tests/security.c | 35 +++++++++++++++++++++++++++++++++++ + server/process.c | 26 +++++++++++++++++++++++++- + server/security.h | 1 + + server/token.c | 8 ++++++++ 4 files changed, 69 insertions(+), 1 deletion(-) diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c -index 05da0ae..2fb57c4 100644 +index 466100d..ca4a8ad 100644 --- a/dlls/advapi32/tests/security.c +++ b/dlls/advapi32/tests/security.c -@@ -3853,11 +3853,15 @@ static void test_acls(void) +@@ -4253,11 +4253,15 @@ static void test_acls(void) static void test_GetSecurityInfo(void) { @@ -30,7 +30,7 @@ ACL_SIZE_INFORMATION acl_size; PSECURITY_DESCRIPTOR pSD; ACCESS_ALLOWED_ACE *ace; -@@ -3982,6 +3986,37 @@ static void test_GetSecurityInfo(void) +@@ -4382,6 +4386,37 @@ static void test_GetSecurityInfo(void) } LocalFree(pSD); CloseHandle(obj); @@ -69,7 +69,7 @@ static void test_GetSidSubAuthority(void) diff --git a/server/process.c b/server/process.c -index 7b9a3b2..01016d2 100644 +index 26f8924..1047c25 100644 --- a/server/process.c +++ b/server/process.c @@ -62,6 +62,7 @@ static int shutdown_stage; /* current stage in the shutdown process */ @@ -79,8 +79,8 @@ +static struct security_descriptor *process_get_sd( struct object *obj ); static void process_poll_event( struct fd *fd, int event ); static void process_destroy( struct object *obj ); - -@@ -77,7 +78,7 @@ static const struct object_ops process_ops = + static void terminate_process( struct process *process, struct thread *skip, int exit_code ); +@@ -78,7 +79,7 @@ static const struct object_ops process_ops = no_signal, /* signal */ no_get_fd, /* get_fd */ process_map_access, /* map_access */ @@ -89,7 +89,7 @@ default_set_sd, /* set_sd */ no_lookup_name, /* lookup_name */ no_open_file, /* open_file */ -@@ -456,6 +457,29 @@ static unsigned int process_map_access( struct object *obj, unsigned int access +@@ -642,6 +643,29 @@ static unsigned int process_map_access( struct object *obj, unsigned int access return access & ~(GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE | GENERIC_ALL); } @@ -120,10 +120,10 @@ { struct process *process = get_fd_user( fd ); diff --git a/server/security.h b/server/security.h -index ab5f027..b9fbe6a 100644 +index 855f2e7..01bf637 100644 --- a/server/security.h +++ b/server/security.h -@@ -44,6 +44,7 @@ extern const PSID security_local_user_sid; +@@ -47,6 +47,7 @@ extern const PSID security_local_user_sid; extern const PSID security_local_system_sid; extern const PSID security_builtin_users_sid; extern const PSID security_builtin_admins_sid; @@ -158,5 +158,5 @@ static luid_t prev_luid_value = { 1000, 0 }; -- -1.7.9.5 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-PeekMessage/0001-server-Fix-handling-of-GetMessage-after-previous-Pee.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-PeekMessage/0001-server-Fix-handling-of-GetMessage-after-previous-Pee.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-PeekMessage/0001-server-Fix-handling-of-GetMessage-after-previous-Pee.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-PeekMessage/0001-server-Fix-handling-of-GetMessage-after-previous-Pee.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,15 +1,18 @@ -From 514cdcbb66a3123b7f3922a54b16e8aa8ecd387f Mon Sep 17 00:00:00 2001 +From 97a7b572e7556d8867f025d94b9d361c3dd19a5a Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Sun, 15 Mar 2015 01:05:48 +0100 Subject: server: Fix handling of GetMessage after previous PeekMessage call. + (v2) +Changes in v2: +* accept_hardware_message should also reset ignore_post_msg --- dlls/user32/tests/msg.c | 9 --------- - server/queue.c | 31 ++++++++++++++++++++++++++----- - 2 files changed, 26 insertions(+), 14 deletions(-) + server/queue.c | 34 +++++++++++++++++++++++++++++----- + 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c -index c297e40..19ddfde 100644 +index 5f10a89..dfb002e 100644 --- a/dlls/user32/tests/msg.c +++ b/dlls/user32/tests/msg.c @@ -10459,13 +10459,10 @@ static void test_PeekMessage3(void) @@ -60,7 +63,7 @@ ret = PeekMessageA(&msg, NULL, 0, 0, 0); ok(!ret, "expected PeekMessage to return FALSE, got %u\n", ret); diff --git a/server/queue.c b/server/queue.c -index 3a321cd..ce78e4d 100644 +index 3a321cd..68b6a19 100644 --- a/server/queue.c +++ b/server/queue.c @@ -138,6 +138,7 @@ struct msg_queue @@ -183,6 +186,17 @@ } +@@ -2445,7 +2466,10 @@ DECL_HANDLER(reply_message) + DECL_HANDLER(accept_hardware_message) + { + if (current->queue) ++ { + release_hardware_message( current->queue, req->hw_id, req->remove ); ++ if (req->remove) current->queue->ignore_post_msg = 0; ++ } + else + set_error( STATUS_ACCESS_DENIED ); + } -- -2.3.2 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-Realtime_Priority/0001-wineserver-Draft-to-implement-priority-levels-throug.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-Realtime_Priority/0001-wineserver-Draft-to-implement-priority-levels-throug.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-Realtime_Priority/0001-wineserver-Draft-to-implement-priority-levels-throug.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-Realtime_Priority/0001-wineserver-Draft-to-implement-priority-levels-throug.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,4 +1,4 @@ -From 3dca4fe127be7ea76adc5452aa0a417a847aea7a Mon Sep 17 00:00:00 2001 +From bd97eaf2c4d88877bca22515ad4aaec04ce5d7c4 Mon Sep 17 00:00:00 2001 From: Joakim Hernberg Date: Tue, 31 Mar 2015 20:58:20 +0200 Subject: wineserver: Draft to implement priority levels through POSIX @@ -52,7 +52,7 @@ init_registry(); diff --git a/server/scheduler.c b/server/scheduler.c new file mode 100644 -index 0000000..04ae4b5 +index 0000000..bc2857e --- /dev/null +++ b/server/scheduler.c @@ -0,0 +1,162 @@ @@ -213,7 +213,7 @@ +{ +} + -+void scheduler_update_priority( struct thread *thread, int priority ) ++void set_scheduler_priority( struct thread *thread ) +{ +} + @@ -248,5 +248,5 @@ + #endif /* __WINE_SERVER_THREAD_H */ -- -2.3.3 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-Shared_Memory/0004-user32-Avoid-unnecessary-wineserver-calls-in-PeekMes.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-Shared_Memory/0004-user32-Avoid-unnecessary-wineserver-calls-in-PeekMes.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-Shared_Memory/0004-user32-Avoid-unnecessary-wineserver-calls-in-PeekMes.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-Shared_Memory/0004-user32-Avoid-unnecessary-wineserver-calls-in-PeekMes.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,4 +1,4 @@ -From 31c45fb6cbf00ef56b370569e2079f681bb91cd1 Mon Sep 17 00:00:00 2001 +From 00f5e4db4532c964e1f6ada2d40ac9f21ba30c3e Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Thu, 19 Mar 2015 02:07:24 +0100 Subject: user32: Avoid unnecessary wineserver calls in PeekMessage/GetMessage. @@ -9,7 +9,7 @@ 2 files changed, 14 insertions(+) diff --git a/dlls/user32/message.c b/dlls/user32/message.c -index c28a2fe..1afef9f 100644 +index e54ed92..dbfd427 100644 --- a/dlls/user32/message.c +++ b/dlls/user32/message.c @@ -2740,6 +2740,18 @@ static BOOL peek_message( MSG *msg, HWND hwnd, UINT first, UINT last, UINT flags @@ -40,7 +40,7 @@ { req->flags = flags; diff --git a/dlls/user32/user_private.h b/dlls/user32/user_private.h -index 4380a00..47d0194 100644 +index 445fd40..1c87de4 100644 --- a/dlls/user32/user_private.h +++ b/dlls/user32/user_private.h @@ -184,6 +184,7 @@ struct user_thread_info @@ -48,9 +48,9 @@ ULONG_PTR GetMessageExtraInfoVal; /* Value for GetMessageExtraInfo */ UINT active_hooks; /* Bitmap of active hooks */ + DWORD last_get_msg; /* Last time of Get/PeekMessage call */ - UINT key_state_time; /* Time of last key state refresh */ - INT key_state_epoch; /* Counter to invalidate the key state */ - BYTE *key_state; /* Cache of global key state */ + struct user_key_state_info *key_state; /* Cache of global key state */ + HWND top_window; /* Desktop window */ + HWND msg_window; /* HWND_MESSAGE parent window */ -- -2.3.3 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-Shared_Memory/0007-server-Store-a-list-of-associated-queues-for-each-th.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-Shared_Memory/0007-server-Store-a-list-of-associated-queues-for-each-th.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-Shared_Memory/0007-server-Store-a-list-of-associated-queues-for-each-th.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-Shared_Memory/0007-server-Store-a-list-of-associated-queues-for-each-th.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,79 @@ +From cb18df88215aa555e89a877ee5ede75706c170f9 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Sat, 21 Mar 2015 09:00:17 +0100 +Subject: server: Store a list of associated queues for each thread input. + +Required by the following patches, splitted as a separate patch for easier +reviewing. +--- + server/queue.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/server/queue.c b/server/queue.c +index 418a2b1..1b80348 100644 +--- a/server/queue.c ++++ b/server/queue.c +@@ -99,6 +99,7 @@ struct thread_input + { + struct object obj; /* object header */ + struct desktop *desktop; /* desktop that this thread input belongs to */ ++ struct list queues; /* list of all queues this input belongs to */ + user_handle_t focus; /* focus window */ + user_handle_t capture; /* capture window */ + user_handle_t active; /* active window */ +@@ -139,6 +140,7 @@ struct msg_queue + lparam_t next_timer_id; /* id for the next timer with a 0 window */ + struct timeout_user *timeout; /* timeout for next timer to expire */ + struct thread_input *input; /* thread input descriptor */ ++ struct list input_entry; /* entry in input->queues */ + struct hook_table *hooks; /* hook table */ + timeout_t last_get_msg; /* time of last get message call */ + unsigned int ignore_post_msg; /* ignore post messages newer than this unique id */ +@@ -254,6 +256,7 @@ static struct thread_input *create_thread_input( struct thread *thread ) + input->cursor = 0; + input->cursor_count = 0; + input->lock_count = 0; ++ list_init( &input->queues ); + list_init( &input->msg_list ); + set_caret_window( input, 0 ); + memset( input->keystate, 0, sizeof(input->keystate) ); +@@ -297,6 +300,7 @@ static struct msg_queue *create_msg_queue( struct thread *thread, struct thread_ + queue->next_timer_id = 0x7fff; + queue->timeout = NULL; + queue->input = (struct thread_input *)grab_object( input ); ++ list_add_tail( &input->queues, &queue->input_entry ); + queue->hooks = NULL; + queue->last_get_msg = current_time; + queue->ignore_post_msg = 0; +@@ -336,10 +340,12 @@ static int assign_thread_input( struct thread *thread, struct thread_input *new_ + { + if (queue->keystate_locked) queue->input->lock_count--; + queue->input->cursor_count -= queue->cursor_count; ++ list_remove( &queue->input_entry ); + release_object( queue->input ); + queue->keystate_locked = 0; + } + queue->input = (struct thread_input *)grab_object( new_input ); ++ list_add_tail( &new_input->queues, &queue->input_entry ); + new_input->cursor_count += queue->cursor_count; + return 1; + } +@@ -1003,6 +1009,7 @@ static void msg_queue_destroy( struct object *obj ) + if (queue->timeout) remove_timeout_user( queue->timeout ); + if (queue->keystate_locked) queue->input->lock_count--; + queue->input->cursor_count -= queue->cursor_count; ++ list_remove( &queue->input_entry ); + release_object( queue->input ); + if (queue->hooks) release_object( queue->hooks ); + if (queue->fd) release_object( queue->fd ); +@@ -1029,6 +1036,7 @@ static void thread_input_destroy( struct object *obj ) + { + struct thread_input *input = (struct thread_input *)obj; + ++ assert( list_empty(&input->queues) ); + empty_msg_list( &input->msg_list ); + if (input->desktop) + { +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-Shared_Memory/0007-user32-Move-key_state-cache-into-separate-structure.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-Shared_Memory/0007-user32-Move-key_state-cache-into-separate-structure.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-Shared_Memory/0007-user32-Move-key_state-cache-into-separate-structure.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-Shared_Memory/0007-user32-Move-key_state-cache-into-separate-structure.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,152 +0,0 @@ -From 90da927ddf6f978c437aaa66b9e276dd41746415 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Sat, 21 Mar 2015 08:09:03 +0100 -Subject: user32: Move key_state cache into separate structure. - -We're running soon out of TEB space, so just move other key_state related fields -into the allocated memory block. ---- - dlls/user32/input.c | 26 +++++++++++++++++--------- - dlls/user32/message.c | 9 +++++---- - dlls/user32/user_private.h | 11 ++++++++--- - dlls/user32/winstation.c | 3 ++- - 4 files changed, 32 insertions(+), 17 deletions(-) - -diff --git a/dlls/user32/input.c b/dlls/user32/input.c -index 2512887..8608f75 100644 ---- a/dlls/user32/input.c -+++ b/dlls/user32/input.c -@@ -376,6 +376,7 @@ void CDECL __wine_check_for_events( UINT flags ) - SHORT WINAPI DECLSPEC_HOTPATCH GetAsyncKeyState( INT key ) - { - struct user_thread_info *thread_info = get_user_thread_info(); -+ struct user_key_state_info *key_state_info = thread_info->key_state; - INT epoch = global_key_state_epoch; - SHORT ret; - -@@ -385,26 +386,33 @@ SHORT WINAPI DECLSPEC_HOTPATCH GetAsyncKeyState( INT key ) - - if ((ret = USER_Driver->pGetAsyncKeyState( key )) == -1) - { -- if (thread_info->key_state && -- !(thread_info->key_state[key] & 0xc0) && -- GetTickCount() - thread_info->key_state_time < 50 && -- thread_info->key_state_epoch == epoch) -+ if (key_state_info && !(key_state_info->key_state[key] & 0xc0) && -+ GetTickCount() - key_state_info->key_state_time < 50 && -+ key_state_info->key_state_epoch == epoch) -+ { - return 0; -- -- if (!thread_info->key_state) thread_info->key_state = HeapAlloc( GetProcessHeap(), 0, 256 ); -+ } -+ else if (!key_state_info) -+ { -+ key_state_info = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*key_state_info) ); -+ if (key_state_info) thread_info->key_state = key_state_info; -+ } - - ret = 0; - SERVER_START_REQ( get_key_state ) - { - req->tid = 0; - req->key = key; -- if (thread_info->key_state) wine_server_set_reply( req, thread_info->key_state, 256 ); -+ if (key_state_info) wine_server_set_reply( req, key_state_info->key_state, sizeof(key_state_info->key_state) ); - if (!wine_server_call( req )) - { - if (reply->state & 0x40) ret |= 0x0001; - if (reply->state & 0x80) ret |= 0x8000; -- thread_info->key_state_time = GetTickCount(); -- thread_info->key_state_epoch = epoch; -+ if (key_state_info) -+ { -+ key_state_info->key_state_time = GetTickCount(); -+ key_state_info->key_state_epoch = epoch; -+ } - } - } - SERVER_END_REQ; -diff --git a/dlls/user32/message.c b/dlls/user32/message.c -index 1afef9f..da83d16 100644 ---- a/dlls/user32/message.c -+++ b/dlls/user32/message.c -@@ -3310,6 +3310,7 @@ static BOOL send_message( struct send_message_info *info, DWORD_PTR *res_ptr, BO - NTSTATUS send_hardware_message( HWND hwnd, const INPUT *input, UINT flags ) - { - struct user_thread_info *thread_info = get_user_thread_info(); -+ struct user_key_state_info *key_state_info = thread_info->key_state; - struct send_message_info info; - int prev_x, prev_y, new_x, new_y; - NTSTATUS ret; -@@ -3349,7 +3350,7 @@ NTSTATUS send_hardware_message( HWND hwnd, const INPUT *input, UINT flags ) - req->input.hw.lparam = MAKELONG( input->u.hi.wParamL, input->u.hi.wParamH ); - break; - } -- if (thread_info->key_state) wine_server_set_reply( req, thread_info->key_state, 256 ); -+ if (key_state_info) wine_server_set_reply( req, key_state_info->key_state, sizeof(key_state_info->key_state) ); - ret = wine_server_call( req ); - wait = reply->wait; - prev_x = reply->prev_x; -@@ -3361,10 +3362,10 @@ NTSTATUS send_hardware_message( HWND hwnd, const INPUT *input, UINT flags ) - - if (!ret) - { -- if (thread_info->key_state) -+ if (key_state_info) - { -- thread_info->key_state_time = GetTickCount(); -- thread_info->key_state_epoch = epoch; -+ key_state_info->key_state_time = GetTickCount(); -+ key_state_info->key_state_epoch = epoch; - } - if ((flags & SEND_HWMSG_INJECTED) && (prev_x != new_x || prev_y != new_y)) - USER_Driver->pSetCursorPos( new_x, new_y ); -diff --git a/dlls/user32/user_private.h b/dlls/user32/user_private.h -index 47d0194..53ebca8 100644 ---- a/dlls/user32/user_private.h -+++ b/dlls/user32/user_private.h -@@ -185,9 +185,7 @@ struct user_thread_info - ULONG_PTR GetMessageExtraInfoVal; /* Value for GetMessageExtraInfo */ - UINT active_hooks; /* Bitmap of active hooks */ - DWORD last_get_msg; /* Last time of Get/PeekMessage call */ -- UINT key_state_time; /* Time of last key state refresh */ -- INT key_state_epoch; /* Counter to invalidate the key state */ -- BYTE *key_state; /* Cache of global key state */ -+ struct user_key_state_info *key_state; /* Cache of global key state */ - HWND top_window; /* Desktop window */ - HWND msg_window; /* HWND_MESSAGE parent window */ - RAWINPUT *rawinput; -@@ -195,6 +193,13 @@ struct user_thread_info - - C_ASSERT( sizeof(struct user_thread_info) <= sizeof(((TEB *)0)->Win32ClientInfo) ); - -+struct user_key_state_info -+{ -+ UINT key_state_time; /* Time of last key state refresh */ -+ INT key_state_epoch; /* Counter to invalidate the key state */ -+ BYTE key_state[256]; /* State for each key */ -+}; -+ - extern INT global_key_state_epoch DECLSPEC_HIDDEN; - - struct hook_extra_info -diff --git a/dlls/user32/winstation.c b/dlls/user32/winstation.c -index 12b9edc..0e8260a 100644 ---- a/dlls/user32/winstation.c -+++ b/dlls/user32/winstation.c -@@ -399,9 +399,10 @@ BOOL WINAPI SetThreadDesktop( HDESK handle ) - if (ret) /* reset the desktop windows */ - { - struct user_thread_info *thread_info = get_user_thread_info(); -+ struct user_key_state_info *key_state_info = thread_info->key_state; - thread_info->top_window = 0; - thread_info->msg_window = 0; -- thread_info->key_state_time = 0; -+ if (key_state_info) key_state_info->key_state_time = 0; - } - return ret; - } --- -2.3.3 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-Shared_Memory/0008-server-Store-a-list-of-associated-queues-for-each-th.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-Shared_Memory/0008-server-Store-a-list-of-associated-queues-for-each-th.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-Shared_Memory/0008-server-Store-a-list-of-associated-queues-for-each-th.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-Shared_Memory/0008-server-Store-a-list-of-associated-queues-for-each-th.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,79 +0,0 @@ -From 94d2d107e2a3b1b09fdeaa1fdd179d955383f89d Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Sat, 21 Mar 2015 09:00:17 +0100 -Subject: server: Store a list of associated queues for each thread input. - -Required by the following patches, splitted as a separate patch for easier -reviewing. ---- - server/queue.c | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/server/queue.c b/server/queue.c -index 4697d15..8f60a7e 100644 ---- a/server/queue.c -+++ b/server/queue.c -@@ -99,6 +99,7 @@ struct thread_input - { - struct object obj; /* object header */ - struct desktop *desktop; /* desktop that this thread input belongs to */ -+ struct list queues; /* list of all queues this input belongs to */ - user_handle_t focus; /* focus window */ - user_handle_t capture; /* capture window */ - user_handle_t active; /* active window */ -@@ -139,6 +140,7 @@ struct msg_queue - lparam_t next_timer_id; /* id for the next timer with a 0 window */ - struct timeout_user *timeout; /* timeout for next timer to expire */ - struct thread_input *input; /* thread input descriptor */ -+ struct list input_entry; /* entry in input->queues */ - struct hook_table *hooks; /* hook table */ - timeout_t last_get_msg; /* time of last get message call */ - unsigned int ignore_post_msg; /* ignore post messages newer than this unique id */ -@@ -254,6 +256,7 @@ static struct thread_input *create_thread_input( struct thread *thread ) - input->cursor = 0; - input->cursor_count = 0; - input->lock_count = 0; -+ list_init( &input->queues ); - list_init( &input->msg_list ); - set_caret_window( input, 0 ); - memset( input->keystate, 0, sizeof(input->keystate) ); -@@ -297,6 +300,7 @@ static struct msg_queue *create_msg_queue( struct thread *thread, struct thread_ - queue->next_timer_id = 0x7fff; - queue->timeout = NULL; - queue->input = (struct thread_input *)grab_object( input ); -+ list_add_tail( &input->queues, &queue->input_entry ); - queue->hooks = NULL; - queue->last_get_msg = current_time; - queue->ignore_post_msg = 0; -@@ -336,10 +340,12 @@ static int assign_thread_input( struct thread *thread, struct thread_input *new_ - { - if (queue->keystate_locked) queue->input->lock_count--; - queue->input->cursor_count -= queue->cursor_count; -+ list_remove( &queue->input_entry ); - release_object( queue->input ); - queue->keystate_locked = 0; - } - queue->input = (struct thread_input *)grab_object( new_input ); -+ list_add_tail( &new_input->queues, &queue->input_entry ); - new_input->cursor_count += queue->cursor_count; - return 1; - } -@@ -1003,6 +1009,7 @@ static void msg_queue_destroy( struct object *obj ) - if (queue->timeout) remove_timeout_user( queue->timeout ); - if (queue->keystate_locked) queue->input->lock_count--; - queue->input->cursor_count -= queue->cursor_count; -+ list_remove( &queue->input_entry ); - release_object( queue->input ); - if (queue->hooks) release_object( queue->hooks ); - if (queue->fd) release_object( queue->fd ); -@@ -1029,6 +1036,7 @@ static void thread_input_destroy( struct object *obj ) - { - struct thread_input *input = (struct thread_input *)obj; - -+ assert( list_empty(&input->queues) ); - empty_msg_list( &input->msg_list ); - if (input->desktop) - { --- -2.3.2 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-Shared_Memory/0008-user32-Get-rid-of-wineserver-call-for-GetActiveWindo.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-Shared_Memory/0008-user32-Get-rid-of-wineserver-call-for-GetActiveWindo.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-Shared_Memory/0008-user32-Get-rid-of-wineserver-call-for-GetActiveWindo.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-Shared_Memory/0008-user32-Get-rid-of-wineserver-call-for-GetActiveWindo.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,156 @@ +From 7b779d2ada994d6e7169ce1e589a417a3f17695f Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Sat, 21 Mar 2015 09:45:54 +0100 +Subject: user32: Get rid of wineserver call for GetActiveWindow, GetFocus, + GetCapture. + +--- + dlls/user32/focus.c | 4 ++++ + dlls/user32/input.c | 2 ++ + server/protocol.def | 5 ++++- + server/queue.c | 30 +++++++++++++++++++++++++++++- + 4 files changed, 39 insertions(+), 2 deletions(-) + +diff --git a/dlls/user32/focus.c b/dlls/user32/focus.c +index c47a82d..35fe89b 100644 +--- a/dlls/user32/focus.c ++++ b/dlls/user32/focus.c +@@ -329,8 +329,10 @@ BOOL WINAPI SetForegroundWindow( HWND hwnd ) + */ + HWND WINAPI GetActiveWindow(void) + { ++ shmlocal_t *shm = wine_get_shmlocal(); + HWND ret = 0; + ++ if (shm) return wine_server_ptr_handle( shm->input_active ); + SERVER_START_REQ( get_thread_input ) + { + req->tid = GetCurrentThreadId(); +@@ -346,8 +348,10 @@ HWND WINAPI GetActiveWindow(void) + */ + HWND WINAPI GetFocus(void) + { ++ shmlocal_t *shm = wine_get_shmlocal(); + HWND ret = 0; + ++ if (shm) return wine_server_ptr_handle( shm->input_focus ); + SERVER_START_REQ( get_thread_input ) + { + req->tid = GetCurrentThreadId(); +diff --git a/dlls/user32/input.c b/dlls/user32/input.c +index c18ebe0..2308a1e 100644 +--- a/dlls/user32/input.c ++++ b/dlls/user32/input.c +@@ -342,8 +342,10 @@ BOOL WINAPI DECLSPEC_HOTPATCH ReleaseCapture(void) + */ + HWND WINAPI GetCapture(void) + { ++ shmlocal_t *shm = wine_get_shmlocal(); + HWND ret = 0; + ++ if (shm) return wine_server_ptr_handle( shm->input_capture ); + SERVER_START_REQ( get_thread_input ) + { + req->tid = GetCurrentThreadId(); +diff --git a/server/protocol.def b/server/protocol.def +index 4636d42..15df669 100644 +--- a/server/protocol.def ++++ b/server/protocol.def +@@ -76,7 +76,10 @@ typedef struct + + typedef struct + { +- int queue_bits; /* queue wake bits */ ++ int queue_bits; /* queue wake bits */ ++ user_handle_t input_focus; /* focus window */ ++ user_handle_t input_capture; /* capture window */ ++ user_handle_t input_active; /* active window */ + } shmlocal_t; + + /* debug event data */ +diff --git a/server/queue.c b/server/queue.c +index 1b80348..6fa076d 100644 +--- a/server/queue.c ++++ b/server/queue.c +@@ -270,6 +270,25 @@ static struct thread_input *create_thread_input( struct thread *thread ) + return input; + } + ++/* synchronize the input state with the shared memory */ ++static void update_shm_thread_input( struct thread_input *input ) ++{ ++ struct msg_queue *queue; ++ ++ /* the loop doesn't matter, usually it should only have one or a few entries */ ++ LIST_FOR_EACH_ENTRY( queue, &input->queues, struct msg_queue, input_entry ) ++ { ++ shmlocal_t *shm; ++ if (!queue->thread) return; ++ if ((shm = queue->thread->shm)) ++ { ++ shm->input_active = input->active; ++ shm->input_focus = input->focus; ++ shm->input_capture = input->capture; ++ } ++ } ++} ++ + /* create a message queue object */ + static struct msg_queue *create_msg_queue( struct thread *thread, struct thread_input *input ) + { +@@ -312,7 +331,11 @@ static struct msg_queue *create_msg_queue( struct thread *thread, struct thread_ + + thread->queue = queue; + } +- if (new_input) release_object( new_input ); ++ if (new_input) ++ { ++ update_shm_thread_input( new_input ); ++ release_object( new_input ); ++ } + return queue; + } + +@@ -347,6 +370,7 @@ static int assign_thread_input( struct thread *thread, struct thread_input *new_ + queue->input = (struct thread_input *)grab_object( new_input ); + list_add_tail( &new_input->queues, &queue->input_entry ); + new_input->cursor_count += queue->cursor_count; ++ update_shm_thread_input( new_input ); + return 1; + } + +@@ -1056,6 +1080,7 @@ static inline void thread_input_cleanup_window( struct msg_queue *queue, user_ha + if (window == input->menu_owner) input->menu_owner = 0; + if (window == input->move_size) input->move_size = 0; + if (window == input->caret) set_caret_window( input, 0 ); ++ update_shm_thread_input( input ); + } + + /* check if the specified window can be set in the input data of a given queue */ +@@ -2975,6 +3000,7 @@ DECL_HANDLER(set_focus_window) + { + reply->previous = queue->input->focus; + queue->input->focus = get_user_full_handle( req->handle ); ++ update_shm_thread_input( queue->input ); + } + } + +@@ -2991,6 +3017,7 @@ DECL_HANDLER(set_active_window) + { + reply->previous = queue->input->active; + queue->input->active = get_user_full_handle( req->handle ); ++ update_shm_thread_input( queue->input ); + } + else set_error( STATUS_INVALID_HANDLE ); + } +@@ -3017,6 +3044,7 @@ DECL_HANDLER(set_capture_window) + input->capture = get_user_full_handle( req->handle ); + input->menu_owner = (req->flags & CAPTURE_MENU) ? input->capture : 0; + input->move_size = (req->flags & CAPTURE_MOVESIZE) ? input->capture : 0; ++ update_shm_thread_input( input ); + reply->full_handle = input->capture; + } + } +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-Shared_Memory/0009-user32-Cache-the-result-of-GetForegroundWindow.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-Shared_Memory/0009-user32-Cache-the-result-of-GetForegroundWindow.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-Shared_Memory/0009-user32-Cache-the-result-of-GetForegroundWindow.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-Shared_Memory/0009-user32-Cache-the-result-of-GetForegroundWindow.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,120 @@ +From 508b1263e74afaaaf7586d17a11054f9bd6d9bb9 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Sat, 21 Mar 2015 22:35:24 +0100 +Subject: user32: Cache the result of GetForegroundWindow. + +--- + dlls/user32/focus.c | 21 ++++++++++++++++++++- + dlls/user32/user_private.h | 2 ++ + server/protocol.def | 5 ++++- + server/queue.c | 10 +++++++++- + 4 files changed, 35 insertions(+), 3 deletions(-) + +diff --git a/dlls/user32/focus.c b/dlls/user32/focus.c +index 35fe89b..8b17d1f 100644 +--- a/dlls/user32/focus.c ++++ b/dlls/user32/focus.c +@@ -367,12 +367,31 @@ HWND WINAPI GetFocus(void) + */ + HWND WINAPI GetForegroundWindow(void) + { ++ struct user_thread_info *thread_info = get_user_thread_info(); ++ shmglobal_t *shm = wine_get_shmglobal(); + HWND ret = 0; ++ DWORD epoch; ++ ++ if (shm) ++ { ++ epoch = shm->foreground_wnd_epoch; ++ ++ if (epoch == thread_info->foreground_wnd_epoch) ++ return thread_info->foreground_wnd; ++ } + + SERVER_START_REQ( get_thread_input ) + { + req->tid = 0; +- if (!wine_server_call_err( req )) ret = wine_server_ptr_handle( reply->foreground ); ++ if (!wine_server_call_err( req )) ++ { ++ ret = wine_server_ptr_handle( reply->foreground ); ++ if (shm) ++ { ++ thread_info->foreground_wnd = ret; ++ thread_info->foreground_wnd_epoch = epoch; ++ } ++ } + } + SERVER_END_REQ; + return ret; +diff --git a/dlls/user32/user_private.h b/dlls/user32/user_private.h +index 1c87de4..26c771e 100644 +--- a/dlls/user32/user_private.h ++++ b/dlls/user32/user_private.h +@@ -189,6 +189,8 @@ struct user_thread_info + HWND top_window; /* Desktop window */ + HWND msg_window; /* HWND_MESSAGE parent window */ + RAWINPUT *rawinput; ++ HWND foreground_wnd; /* Cache of the foreground window */ ++ DWORD foreground_wnd_epoch; /* Counter to invalidate foreground window */ + }; + + C_ASSERT( sizeof(struct user_thread_info) <= sizeof(((TEB *)0)->Win32ClientInfo) ); +diff --git a/server/protocol.def b/server/protocol.def +index 15df669..fb579e1 100644 +--- a/server/protocol.def ++++ b/server/protocol.def +@@ -69,11 +69,14 @@ struct request_max_size + #define FIRST_USER_HANDLE 0x0020 /* first possible value for low word of user handle */ + #define LAST_USER_HANDLE 0xffef /* last possible value for low word of user handle */ + ++/* wineserver global shared memory block */ + typedef struct + { +- unsigned int last_input_time; /* last input time */ ++ unsigned int last_input_time; /* last input time */ ++ unsigned int foreground_wnd_epoch; /* counter to invalidate foreground window */ + } shmglobal_t; + ++/* wineserver local shared memory block */ + typedef struct + { + int queue_bits; /* queue wake bits */ +diff --git a/server/queue.c b/server/queue.c +index 6fa076d..764ba11 100644 +--- a/server/queue.c ++++ b/server/queue.c +@@ -436,6 +436,7 @@ static void set_foreground_input( struct desktop *desktop, struct thread_input * + if (desktop->foreground_input == input) return; + set_clip_rectangle( desktop, NULL, 1 ); + desktop->foreground_input = input; ++ if (shmglobal) interlocked_xchg_add( (int *)&shmglobal->foreground_wnd_epoch, 1 ); + } + + /* get the hook table for a given thread */ +@@ -1076,7 +1077,12 @@ static inline void thread_input_cleanup_window( struct msg_queue *queue, user_ha + + if (window == input->focus) input->focus = 0; + if (window == input->capture) input->capture = 0; +- if (window == input->active) input->active = 0; ++ if (window == input->active) ++ { ++ input->active = 0; ++ if (shmglobal && input->desktop->foreground_input == input) ++ interlocked_xchg_add( (int *)&shmglobal->foreground_wnd_epoch, 1 ); ++ } + if (window == input->menu_owner) input->menu_owner = 0; + if (window == input->move_size) input->move_size = 0; + if (window == input->caret) set_caret_window( input, 0 ); +@@ -3018,6 +3024,8 @@ DECL_HANDLER(set_active_window) + reply->previous = queue->input->active; + queue->input->active = get_user_full_handle( req->handle ); + update_shm_thread_input( queue->input ); ++ if (shmglobal && queue->input->desktop->foreground_input == queue->input) ++ interlocked_xchg_add( (int *)&shmglobal->foreground_wnd_epoch, 1 ); + } + else set_error( STATUS_INVALID_HANDLE ); + } +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-Shared_Memory/0009-user32-Get-rid-of-wineserver-call-for-GetActiveWindo.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-Shared_Memory/0009-user32-Get-rid-of-wineserver-call-for-GetActiveWindo.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-Shared_Memory/0009-user32-Get-rid-of-wineserver-call-for-GetActiveWindo.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-Shared_Memory/0009-user32-Get-rid-of-wineserver-call-for-GetActiveWindo.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,156 +0,0 @@ -From f984ad3f5502b815480cc135703e0ea843eb84a3 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Sat, 21 Mar 2015 09:45:54 +0100 -Subject: user32: Get rid of wineserver call for GetActiveWindow, GetFocus, - GetCapture. - ---- - dlls/user32/focus.c | 4 ++++ - dlls/user32/input.c | 2 ++ - server/protocol.def | 5 ++++- - server/queue.c | 30 +++++++++++++++++++++++++++++- - 4 files changed, 39 insertions(+), 2 deletions(-) - -diff --git a/dlls/user32/focus.c b/dlls/user32/focus.c -index c47a82d..35fe89b 100644 ---- a/dlls/user32/focus.c -+++ b/dlls/user32/focus.c -@@ -329,8 +329,10 @@ BOOL WINAPI SetForegroundWindow( HWND hwnd ) - */ - HWND WINAPI GetActiveWindow(void) - { -+ shmlocal_t *shm = wine_get_shmlocal(); - HWND ret = 0; - -+ if (shm) return wine_server_ptr_handle( shm->input_active ); - SERVER_START_REQ( get_thread_input ) - { - req->tid = GetCurrentThreadId(); -@@ -346,8 +348,10 @@ HWND WINAPI GetActiveWindow(void) - */ - HWND WINAPI GetFocus(void) - { -+ shmlocal_t *shm = wine_get_shmlocal(); - HWND ret = 0; - -+ if (shm) return wine_server_ptr_handle( shm->input_focus ); - SERVER_START_REQ( get_thread_input ) - { - req->tid = GetCurrentThreadId(); -diff --git a/dlls/user32/input.c b/dlls/user32/input.c -index 8608f75..e534ac1 100644 ---- a/dlls/user32/input.c -+++ b/dlls/user32/input.c -@@ -342,8 +342,10 @@ BOOL WINAPI DECLSPEC_HOTPATCH ReleaseCapture(void) - */ - HWND WINAPI GetCapture(void) - { -+ shmlocal_t *shm = wine_get_shmlocal(); - HWND ret = 0; - -+ if (shm) return wine_server_ptr_handle( shm->input_capture ); - SERVER_START_REQ( get_thread_input ) - { - req->tid = GetCurrentThreadId(); -diff --git a/server/protocol.def b/server/protocol.def -index cf6d783..7eaa6cd 100644 ---- a/server/protocol.def -+++ b/server/protocol.def -@@ -76,7 +76,10 @@ typedef struct - - typedef struct - { -- int queue_bits; /* queue wake bits */ -+ int queue_bits; /* queue wake bits */ -+ user_handle_t input_focus; /* focus window */ -+ user_handle_t input_capture; /* capture window */ -+ user_handle_t input_active; /* active window */ - } shmlocal_t; - - /* debug event data */ -diff --git a/server/queue.c b/server/queue.c -index 0ca35d7..54611c2 100644 ---- a/server/queue.c -+++ b/server/queue.c -@@ -269,6 +269,25 @@ static struct thread_input *create_thread_input( struct thread *thread ) - return input; - } - -+/* synchronize the input state with the shared memory */ -+static void update_shm_thread_input( struct thread_input *input ) -+{ -+ struct msg_queue *queue; -+ -+ /* the loop doesn't matter, usually it should only have one or a few entries */ -+ LIST_FOR_EACH_ENTRY( queue, &input->queues, struct msg_queue, input_entry ) -+ { -+ shmlocal_t *shm; -+ if (!queue->thread) return; -+ if ((shm = queue->thread->shm)) -+ { -+ shm->input_active = input->active; -+ shm->input_focus = input->focus; -+ shm->input_capture = input->capture; -+ } -+ } -+} -+ - /* create a message queue object */ - static struct msg_queue *create_msg_queue( struct thread *thread, struct thread_input *input ) - { -@@ -310,7 +329,11 @@ static struct msg_queue *create_msg_queue( struct thread *thread, struct thread_ - - thread->queue = queue; - } -- if (new_input) release_object( new_input ); -+ if (new_input) -+ { -+ update_shm_thread_input( new_input ); -+ release_object( new_input ); -+ } - return queue; - } - -@@ -345,6 +368,7 @@ static int assign_thread_input( struct thread *thread, struct thread_input *new_ - queue->input = (struct thread_input *)grab_object( new_input ); - list_add_tail( &new_input->queues, &queue->input_entry ); - new_input->cursor_count += queue->cursor_count; -+ update_shm_thread_input( new_input ); - return 1; - } - -@@ -1045,6 +1069,7 @@ static inline void thread_input_cleanup_window( struct msg_queue *queue, user_ha - if (window == input->menu_owner) input->menu_owner = 0; - if (window == input->move_size) input->move_size = 0; - if (window == input->caret) set_caret_window( input, 0 ); -+ update_shm_thread_input( input ); - } - - /* check if the specified window can be set in the input data of a given queue */ -@@ -2954,6 +2979,7 @@ DECL_HANDLER(set_focus_window) - { - reply->previous = queue->input->focus; - queue->input->focus = get_user_full_handle( req->handle ); -+ update_shm_thread_input( queue->input ); - } - } - -@@ -2970,6 +2996,7 @@ DECL_HANDLER(set_active_window) - { - reply->previous = queue->input->active; - queue->input->active = get_user_full_handle( req->handle ); -+ update_shm_thread_input( queue->input ); - } - else set_error( STATUS_INVALID_HANDLE ); - } -@@ -2996,6 +3023,7 @@ DECL_HANDLER(set_capture_window) - input->capture = get_user_full_handle( req->handle ); - input->menu_owner = (req->flags & CAPTURE_MENU) ? input->capture : 0; - input->move_size = (req->flags & CAPTURE_MOVESIZE) ? input->capture : 0; -+ update_shm_thread_input( input ); - reply->full_handle = input->capture; - } - } --- -2.3.2 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-Shared_Memory/0010-user32-Cache-the-result-of-GetForegroundWindow.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-Shared_Memory/0010-user32-Cache-the-result-of-GetForegroundWindow.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-Shared_Memory/0010-user32-Cache-the-result-of-GetForegroundWindow.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-Shared_Memory/0010-user32-Cache-the-result-of-GetForegroundWindow.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,120 +0,0 @@ -From c7950e405445d69a0dd27dd515fda834e31d82c5 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Sat, 21 Mar 2015 22:35:24 +0100 -Subject: user32: Cache the result of GetForegroundWindow. - ---- - dlls/user32/focus.c | 21 ++++++++++++++++++++- - dlls/user32/user_private.h | 2 ++ - server/protocol.def | 5 ++++- - server/queue.c | 10 +++++++++- - 4 files changed, 35 insertions(+), 3 deletions(-) - -diff --git a/dlls/user32/focus.c b/dlls/user32/focus.c -index 35fe89b..8b17d1f 100644 ---- a/dlls/user32/focus.c -+++ b/dlls/user32/focus.c -@@ -367,12 +367,31 @@ HWND WINAPI GetFocus(void) - */ - HWND WINAPI GetForegroundWindow(void) - { -+ struct user_thread_info *thread_info = get_user_thread_info(); -+ shmglobal_t *shm = wine_get_shmglobal(); - HWND ret = 0; -+ DWORD epoch; -+ -+ if (shm) -+ { -+ epoch = shm->foreground_wnd_epoch; -+ -+ if (epoch == thread_info->foreground_wnd_epoch) -+ return thread_info->foreground_wnd; -+ } - - SERVER_START_REQ( get_thread_input ) - { - req->tid = 0; -- if (!wine_server_call_err( req )) ret = wine_server_ptr_handle( reply->foreground ); -+ if (!wine_server_call_err( req )) -+ { -+ ret = wine_server_ptr_handle( reply->foreground ); -+ if (shm) -+ { -+ thread_info->foreground_wnd = ret; -+ thread_info->foreground_wnd_epoch = epoch; -+ } -+ } - } - SERVER_END_REQ; - return ret; -diff --git a/dlls/user32/user_private.h b/dlls/user32/user_private.h -index 53ebca8..0398b10 100644 ---- a/dlls/user32/user_private.h -+++ b/dlls/user32/user_private.h -@@ -189,6 +189,8 @@ struct user_thread_info - HWND top_window; /* Desktop window */ - HWND msg_window; /* HWND_MESSAGE parent window */ - RAWINPUT *rawinput; -+ HWND foreground_wnd; /* Cache of the foreground window */ -+ DWORD foreground_wnd_epoch; /* Counter to invalidate foreground window */ - }; - - C_ASSERT( sizeof(struct user_thread_info) <= sizeof(((TEB *)0)->Win32ClientInfo) ); -diff --git a/server/protocol.def b/server/protocol.def -index 7eaa6cd..c770644 100644 ---- a/server/protocol.def -+++ b/server/protocol.def -@@ -69,11 +69,14 @@ struct request_max_size - #define FIRST_USER_HANDLE 0x0020 /* first possible value for low word of user handle */ - #define LAST_USER_HANDLE 0xffef /* last possible value for low word of user handle */ - -+/* wineserver global shared memory block */ - typedef struct - { -- unsigned int last_input_time; /* last input time */ -+ unsigned int last_input_time; /* last input time */ -+ unsigned int foreground_wnd_epoch; /* counter to invalidate foreground window */ - } shmglobal_t; - -+/* wineserver local shared memory block */ - typedef struct - { - int queue_bits; /* queue wake bits */ -diff --git a/server/queue.c b/server/queue.c -index 6fa076d..764ba11 100644 ---- a/server/queue.c -+++ b/server/queue.c -@@ -436,6 +436,7 @@ static void set_foreground_input( struct desktop *desktop, struct thread_input * - if (desktop->foreground_input == input) return; - set_clip_rectangle( desktop, NULL, 1 ); - desktop->foreground_input = input; -+ if (shmglobal) interlocked_xchg_add( (int *)&shmglobal->foreground_wnd_epoch, 1 ); - } - - /* get the hook table for a given thread */ -@@ -1076,7 +1077,12 @@ static inline void thread_input_cleanup_window( struct msg_queue *queue, user_ha - - if (window == input->focus) input->focus = 0; - if (window == input->capture) input->capture = 0; -- if (window == input->active) input->active = 0; -+ if (window == input->active) -+ { -+ input->active = 0; -+ if (shmglobal && input->desktop->foreground_input == input) -+ interlocked_xchg_add( (int *)&shmglobal->foreground_wnd_epoch, 1 ); -+ } - if (window == input->menu_owner) input->menu_owner = 0; - if (window == input->move_size) input->move_size = 0; - if (window == input->caret) set_caret_window( input, 0 ); -@@ -3018,6 +3024,8 @@ DECL_HANDLER(set_active_window) - reply->previous = queue->input->active; - queue->input->active = get_user_full_handle( req->handle ); - update_shm_thread_input( queue->input ); -+ if (shmglobal && queue->input->desktop->foreground_input == queue->input) -+ interlocked_xchg_add( (int *)&shmglobal->foreground_wnd_epoch, 1 ); - } - else set_error( STATUS_INVALID_HANDLE ); - } --- -2.3.3 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-Shared_Memory/definition wine-staging-1.7.41~ubuntu12.04.1/patches/server-Shared_Memory/definition --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-Shared_Memory/definition 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-Shared_Memory/definition 2015-04-18 23:54:01.000000000 +0000 @@ -1,5 +1,4 @@ Depends: ntdll-Threading -Depends: user32-Key_State Depends: dinput-Events Depends: server-Key_State Depends: server-PeekMessage diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-Stored_ACLs/0001-server-Unify-the-storage-of-security-attributes-for-.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-Stored_ACLs/0001-server-Unify-the-storage-of-security-attributes-for-.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-Stored_ACLs/0001-server-Unify-the-storage-of-security-attributes-for-.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-Stored_ACLs/0001-server-Unify-the-storage-of-security-attributes-for-.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,24 +1,23 @@ -From 0e4cf36464b0ec84af3baf7feea3813dae9475ba Mon Sep 17 00:00:00 2001 +From 1ea227122c6155c07d254826b03f76d4f95e876d Mon Sep 17 00:00:00 2001 From: "Erich E. Hoover" Date: Thu, 17 Apr 2014 16:07:46 -0600 Subject: server: Unify the storage of security attributes for files and directories. (try 7) --- - server/change.c | 46 ++++++---------------------------------------- - server/file.c | 25 +++++++++++++++++-------- + server/change.c | 45 ++++++--------------------------------------- + server/file.c | 34 ++++++++++++++++++++++------------ server/file.h | 2 ++ - 3 files changed, 25 insertions(+), 48 deletions(-) + 3 files changed, 30 insertions(+), 51 deletions(-) diff --git a/server/change.c b/server/change.c -index 3ac70a4..4f6ce81 100644 +index 3ac70a4..c2fe428 100644 --- a/server/change.c +++ b/server/change.c -@@ -320,49 +320,15 @@ static struct security_descriptor *dir_get_sd( struct object *obj ) - static int dir_set_sd( struct object *obj, const struct security_descriptor *sd, +@@ -321,48 +321,15 @@ static int dir_set_sd( struct object *obj, const struct security_descriptor *sd, unsigned int set_info ) { -- struct dir *dir = (struct dir *)obj; + struct dir *dir = (struct dir *)obj; - const SID *owner; - struct stat st; - mode_t mode; @@ -64,14 +63,14 @@ - } - return 1; + fd = dir_get_fd( obj ); -+ ret = set_file_sd( obj, fd, sd, set_info ); ++ ret = set_file_sd( obj, fd, &dir->mode, &dir->uid, sd, set_info ); + release_object( fd ); + return ret; } static struct change_record *get_first_change_record( struct dir *dir ) diff --git a/server/file.c b/server/file.c -index c8c880b..9777af4 100644 +index aa5ff01..fed2e45 100644 --- a/server/file.c +++ b/server/file.c @@ -544,18 +544,13 @@ mode_t sd_to_mode( const struct security_descriptor *sd, const SID *owner ) @@ -80,36 +79,52 @@ -static int file_set_sd( struct object *obj, const struct security_descriptor *sd, - unsigned int set_info ) -+int set_file_sd( struct object *obj, struct fd *fd, const struct security_descriptor *sd, -+ unsigned int set_info ) ++int set_file_sd( struct object *obj, struct fd *fd, mode_t *mode, uid_t *uid, ++ const struct security_descriptor *sd, unsigned int set_info ) { - struct file *file = (struct file *)obj; + int unix_fd = get_unix_fd( fd ); const SID *owner; struct stat st; - mode_t mode; +- mode_t mode; - int unix_fd; - - assert( obj->ops == &file_ops ); - - unix_fd = get_file_unix_fd( file ); ++ mode_t new_mode; if (unix_fd == -1 || fstat( unix_fd, &st ) == -1) return 1; -@@ -594,6 +589,20 @@ static int file_set_sd( struct object *obj, const struct security_descriptor *sd +@@ -582,10 +577,10 @@ static int file_set_sd( struct object *obj, const struct security_descriptor *sd + if (set_info & DACL_SECURITY_INFORMATION) + { + /* keep the bits that we don't map to access rights in the ACL */ +- mode = st.st_mode & (S_ISUID|S_ISGID|S_ISVTX); +- mode |= sd_to_mode( sd, owner ); ++ new_mode = st.st_mode & (S_ISUID|S_ISGID|S_ISVTX); ++ new_mode |= sd_to_mode( sd, owner ); + +- if (((st.st_mode ^ mode) & (S_IRWXU|S_IRWXG|S_IRWXO)) && fchmod( unix_fd, mode ) == -1) ++ if (((st.st_mode ^ new_mode) & (S_IRWXU|S_IRWXG|S_IRWXO)) && fchmod( unix_fd, new_mode ) == -1) + { + file_set_error(); + return 0; +@@ -594,6 +589,21 @@ static int file_set_sd( struct object *obj, const struct security_descriptor *sd return 1; } +static int file_set_sd( struct object *obj, const struct security_descriptor *sd, + unsigned int set_info ) +{ ++ struct file *file = (struct file *)obj; + struct fd *fd; + int ret; + + assert( obj->ops == &file_ops ); + + fd = file_get_fd( obj ); -+ ret = set_file_sd( obj, fd, sd, set_info ); ++ ret = set_file_sd( obj, fd, &file->mode, &file->uid, sd, set_info ); + release_object( fd ); + return ret; +} @@ -118,18 +133,18 @@ { struct file *file = (struct file *)obj; diff --git a/server/file.h b/server/file.h -index 85e4257..524a688 100644 +index 85e4257..d1365b0 100644 --- a/server/file.h +++ b/server/file.h @@ -124,6 +124,8 @@ extern struct file *create_file_for_fd_obj( struct fd *fd, unsigned int access, extern void file_set_error(void); extern struct security_descriptor *mode_to_sd( mode_t mode, const SID *user, const SID *group ); extern mode_t sd_to_mode( const struct security_descriptor *sd, const SID *owner ); -+extern int set_file_sd( struct object *obj, struct fd *fd, const struct security_descriptor *sd, -+ unsigned int set_info ); ++extern int set_file_sd( struct object *obj, struct fd *fd, mode_t *mode, uid_t *uid, ++ const struct security_descriptor *sd, unsigned int set_info ); /* file mapping functions */ -- -2.3.3 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-Stored_ACLs/0002-server-Unify-the-retrieval-of-security-attributes-fo.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-Stored_ACLs/0002-server-Unify-the-retrieval-of-security-attributes-fo.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-Stored_ACLs/0002-server-Unify-the-retrieval-of-security-attributes-fo.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-Stored_ACLs/0002-server-Unify-the-retrieval-of-security-attributes-fo.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,17 +1,17 @@ -From ba94c25ed29ed6d3fc1c49a13ddb5257f5b3f385 Mon Sep 17 00:00:00 2001 +From b09247d54146c50abd7cd9e7c44e88f341bd5a13 Mon Sep 17 00:00:00 2001 From: "Erich E. Hoover" Date: Thu, 17 Apr 2014 16:07:50 -0600 Subject: server: Unify the retrieval of security attributes for files and directories. (try 7) --- - server/change.c | 32 +++++--------------------------- - server/file.c | 32 +++++++++++++++++++++----------- - server/file.h | 2 ++ + server/change.c | 32 +++++--------------------------- + server/file.c | 32 +++++++++++++++++++++----------- + server/file.h | 2 ++ 3 files changed, 28 insertions(+), 38 deletions(-) diff --git a/server/change.c b/server/change.c -index 4f6ce81..27dbe25 100644 +index c2fe428..29a48b3 100644 --- a/server/change.c +++ b/server/change.c @@ -281,39 +281,17 @@ static struct fd *dir_get_fd( struct object *obj ) @@ -60,10 +60,10 @@ } diff --git a/server/file.c b/server/file.c -index fb89272..1f008ea 100644 +index fed2e45..58906c0 100644 --- a/server/file.c +++ b/server/file.c -@@ -424,23 +424,19 @@ struct security_descriptor *mode_to_sd( mode_t mode, const SID *user, const SID +@@ -428,23 +428,19 @@ struct security_descriptor *mode_to_sd( mode_t mode, const SID *user, const SID return sd; } @@ -92,7 +92,7 @@ return obj->sd; sd = mode_to_sd( st.st_mode, -@@ -448,13 +444,27 @@ static struct security_descriptor *file_get_sd( struct object *obj ) +@@ -452,13 +448,27 @@ static struct security_descriptor *file_get_sd( struct object *obj ) token_get_primary_group( current->process->token )); if (!sd) return obj->sd; @@ -123,18 +123,18 @@ { mode_t mode = 0; diff --git a/server/file.h b/server/file.h -index 76cb383..43a234f 100644 +index d1365b0..c866312 100644 --- a/server/file.h +++ b/server/file.h -@@ -124,6 +124,8 @@ extern struct security_descriptor *mode_to_sd( mode_t mode, const SID *user, con +@@ -126,6 +126,8 @@ extern struct security_descriptor *mode_to_sd( mode_t mode, const SID *user, con extern mode_t sd_to_mode( const struct security_descriptor *sd, const SID *owner ); - extern int set_file_sd( struct object *obj, struct fd *fd, const struct security_descriptor *sd, - unsigned int set_info ); + extern int set_file_sd( struct object *obj, struct fd *fd, mode_t *mode, uid_t *uid, + const struct security_descriptor *sd, unsigned int set_info ); +extern struct security_descriptor *get_file_sd( struct object *obj, struct fd *fd, mode_t *mode, + uid_t *uid ); /* file mapping functions */ -- -1.7.9.5 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-Stored_ACLs/0003-server-Add-a-helper-function-set_sd_from_token_inter.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-Stored_ACLs/0003-server-Add-a-helper-function-set_sd_from_token_inter.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-Stored_ACLs/0003-server-Add-a-helper-function-set_sd_from_token_inter.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-Stored_ACLs/0003-server-Add-a-helper-function-set_sd_from_token_inter.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,147 @@ +From 2703d701d65a588700494de3e36978ef12a3abe4 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Mon, 30 Mar 2015 12:32:34 +0200 +Subject: server: Add a helper function set_sd_from_token_internal to merge two + security descriptors. + +--- + server/object.c | 55 +++++++++++++++++++++++++++++++++++-------------------- + server/object.h | 3 +++ + 2 files changed, 38 insertions(+), 20 deletions(-) + +diff --git a/server/object.c b/server/object.c +index 965c11c..d04fdb9 100644 +--- a/server/object.c ++++ b/server/object.c +@@ -425,8 +425,9 @@ struct security_descriptor *default_get_sd( struct object *obj ) + return obj->sd; + } + +-int set_sd_defaults_from_token( struct object *obj, const struct security_descriptor *sd, +- unsigned int set_info, struct token *token ) ++struct security_descriptor *set_sd_from_token_internal( const struct security_descriptor *sd, ++ const struct security_descriptor *old_sd, ++ unsigned int set_info, struct token *token ) + { + struct security_descriptor new_sd, *new_sd_ptr; + int present; +@@ -434,8 +435,6 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri + const ACL *sacl, *dacl; + char *ptr; + +- if (!set_info) return 1; +- + new_sd.control = sd->control & ~SE_SELF_RELATIVE; + + if (set_info & OWNER_SECURITY_INFORMATION && sd->owner_len) +@@ -443,10 +442,10 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri + owner = sd_get_owner( sd ); + new_sd.owner_len = sd->owner_len; + } +- else if (obj->sd && obj->sd->owner_len) ++ else if (old_sd && old_sd->owner_len) + { +- owner = sd_get_owner( obj->sd ); +- new_sd.owner_len = obj->sd->owner_len; ++ owner = sd_get_owner( old_sd ); ++ new_sd.owner_len = old_sd->owner_len; + } + else if (token) + { +@@ -460,10 +459,10 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri + group = sd_get_group( sd ); + new_sd.group_len = sd->group_len; + } +- else if (obj->sd && obj->sd->group_len) ++ else if (old_sd && old_sd->group_len) + { +- group = sd_get_group( obj->sd ); +- new_sd.group_len = obj->sd->group_len; ++ group = sd_get_group( old_sd ); ++ new_sd.group_len = old_sd->group_len; + } + else if (token) + { +@@ -478,10 +477,10 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri + new_sd.sacl_len = sd->sacl_len; + else + { +- if (obj->sd) sacl = sd_get_sacl( obj->sd, &present ); ++ if (old_sd) sacl = sd_get_sacl( old_sd, &present ); + +- if (obj->sd && present) +- new_sd.sacl_len = obj->sd->sacl_len; ++ if (old_sd && present) ++ new_sd.sacl_len = old_sd->sacl_len; + else + new_sd.sacl_len = 0; + } +@@ -492,10 +491,10 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri + new_sd.dacl_len = sd->dacl_len; + else + { +- if (obj->sd) dacl = sd_get_dacl( obj->sd, &present ); ++ if (old_sd) dacl = sd_get_dacl( old_sd, &present ); + +- if (obj->sd && present) +- new_sd.dacl_len = obj->sd->dacl_len; ++ if (old_sd && present) ++ new_sd.dacl_len = old_sd->dacl_len; + else if (token) + { + dacl = token_get_default_dacl( token ); +@@ -506,7 +505,7 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri + + ptr = mem_alloc( sizeof(new_sd) + new_sd.owner_len + new_sd.group_len + + new_sd.sacl_len + new_sd.dacl_len ); +- if (!ptr) return 0; ++ if (!ptr) return NULL; + new_sd_ptr = (struct security_descriptor*)ptr; + + memcpy( ptr, &new_sd, sizeof(new_sd) ); +@@ -519,9 +518,25 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri + ptr += new_sd.sacl_len; + memcpy( ptr, dacl, new_sd.dacl_len ); + +- free( obj->sd ); +- obj->sd = new_sd_ptr; +- return 1; ++ return new_sd_ptr; ++} ++ ++int set_sd_defaults_from_token( struct object *obj, const struct security_descriptor *sd, ++ unsigned int set_info, struct token *token ) ++{ ++ struct security_descriptor *new_sd; ++ ++ if (!set_info) return 1; ++ ++ new_sd = set_sd_from_token_internal( sd, obj->sd, set_info, token ); ++ if (new_sd) ++ { ++ free( obj->sd ); ++ obj->sd = new_sd; ++ return 1; ++ } ++ ++ return 0; + } + + /** Set the security descriptor using the current primary token for defaults. */ +diff --git a/server/object.h b/server/object.h +index 72b52ee..1444d74 100644 +--- a/server/object.h ++++ b/server/object.h +@@ -140,6 +140,9 @@ extern struct fd *no_get_fd( struct object *obj ); + extern unsigned int no_map_access( struct object *obj, unsigned int access ); + extern struct security_descriptor *default_get_sd( struct object *obj ); + extern int default_set_sd( struct object *obj, const struct security_descriptor *sd, unsigned int set_info ); ++extern struct security_descriptor *set_sd_from_token_internal( const struct security_descriptor *sd, ++ const struct security_descriptor *old_sd, ++ unsigned int set_info, struct token *token ); + extern int set_sd_defaults_from_token( struct object *obj, const struct security_descriptor *sd, + unsigned int set_info, struct token *token ); + extern struct object *no_lookup_name( struct object *obj, struct unicode_str *name, unsigned int attributes ); +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-Stored_ACLs/0003-server-Store-file-security-attributes-with-extended-.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-Stored_ACLs/0003-server-Store-file-security-attributes-with-extended-.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-Stored_ACLs/0003-server-Store-file-security-attributes-with-extended-.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-Stored_ACLs/0003-server-Store-file-security-attributes-with-extended-.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,101 +0,0 @@ -From 687e5f2a153a1fbbac2631bea088b0237f2d4a20 Mon Sep 17 00:00:00 2001 -From: "Erich E. Hoover" -Date: Fri, 18 Apr 2014 15:34:47 -0600 -Subject: server: Store file security attributes with extended file - attributes. (try 7) - ---- - include/wine/port.h | 3 +++ - server/file.c | 34 ++++++++++++++++++++++++++++++++++ - 2 files changed, 37 insertions(+) - -diff --git a/include/wine/port.h b/include/wine/port.h -index 9e2b8165..71be265 100644 ---- a/include/wine/port.h -+++ b/include/wine/port.h -@@ -368,6 +368,9 @@ extern int _spawnvp(int mode, const char *cmdname, const char * const argv[]); - #ifndef XATTR_USER_PREFIX - # define XATTR_USER_PREFIX "user." - #endif -+#ifndef XATTR_SIZE_MAX -+# define XATTR_SIZE_MAX 65536 -+#endif - - extern int xattr_fget( int filedes, const char *name, void *value, size_t size ); - extern int xattr_fremove( int filedes, const char *name ); -diff --git a/server/file.c b/server/file.c -index 1f008ea..502951c 100644 ---- a/server/file.c -+++ b/server/file.c -@@ -32,6 +32,7 @@ - #include - #include - #include -+#include - #include - #ifdef HAVE_UTIME_H - #include -@@ -52,6 +53,14 @@ - #include "process.h" - #include "security.h" - -+/* We intentionally do not match the Samba 4 extended attribute for NT security descriptors (SDs): -+ * 1) Samba stores this information using an internal data structure (we use a flat NT SD). -+ * 2) Samba uses the attribute "security.NTACL". This attribute is within a namespace that only -+ * the administrator has write access to, which prohibits the user from copying the attributes -+ * when copying a file and would require Wine to run with adminstrative privileges. -+ */ -+#define WINE_XATTR_SD XATTR_USER_PREFIX "wine.sd" -+ - struct file - { - struct object obj; /* object header */ -@@ -178,6 +187,28 @@ static struct object *create_file_obj( struct fd *fd, unsigned int access, mode_ - return &file->obj; - } - -+void set_xattr_sd( int fd, const struct security_descriptor *sd ) -+{ -+ char buffer[XATTR_SIZE_MAX]; -+ int present, len; -+ const ACL *dacl; -+ -+ /* there's no point in storing the security descriptor if there's no DACL */ -+ if (!sd) return; -+ dacl = sd_get_dacl( sd, &present ); -+ if (!present || !dacl) return; -+ -+ len = 2 + sizeof(struct security_descriptor) + sd->owner_len + sd->group_len + sd->sacl_len -+ + sd->dacl_len; -+ if (len > XATTR_SIZE_MAX) return; -+ -+ /* include the descriptor revision and resource manager control bits */ -+ buffer[0] = SECURITY_DESCRIPTOR_REVISION; -+ buffer[1] = 0; -+ memcpy( &buffer[2], sd, len - 2 ); -+ xattr_fset( fd, WINE_XATTR_SD, buffer, len ); -+} -+ - static struct object *create_file( struct fd *root, const char *nameptr, data_size_t len, - unsigned int access, unsigned int sharing, int create, - unsigned int options, unsigned int attrs, -@@ -239,6 +270,7 @@ static struct object *create_file( struct fd *root, const char *nameptr, data_si - /* FIXME: should set error to STATUS_OBJECT_NAME_COLLISION if file existed before */ - fd = open_fd( root, name, flags | O_NONBLOCK | O_LARGEFILE, &mode, access, sharing, options ); - if (!fd) goto done; -+ set_xattr_sd( get_unix_fd( fd ), sd ); - - if (S_ISDIR(mode)) - obj = create_dir_obj( fd, access, mode ); -@@ -580,6 +612,8 @@ int set_file_sd( struct object *obj, struct fd *fd, const struct security_descri - mode = st.st_mode & (S_ISUID|S_ISGID|S_ISVTX); - mode |= sd_to_mode( sd, owner ); - -+ set_xattr_sd( unix_fd, sd ); -+ - if (((st.st_mode ^ mode) & (S_IRWXU|S_IRWXG|S_IRWXO)) && fchmod( unix_fd, mode ) == -1) - { - file_set_error(); --- -1.7.9.5 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-Stored_ACLs/0004-server-Store-user-and-group-inside-stored-extended-f.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-Stored_ACLs/0004-server-Store-user-and-group-inside-stored-extended-f.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-Stored_ACLs/0004-server-Store-user-and-group-inside-stored-extended-f.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-Stored_ACLs/0004-server-Store-user-and-group-inside-stored-extended-f.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,161 +0,0 @@ -From cd48ef93da9c34e4757d878403374edd0e616b64 Mon Sep 17 00:00:00 2001 -From: "Erich E. Hoover" -Date: Fri, 18 Apr 2014 15:35:24 -0600 -Subject: server: Store user and group inside stored extended file attribute - information. (try 7) - ---- - server/file.c | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++------- - 1 file changed, 70 insertions(+), 9 deletions(-) - -diff --git a/server/file.c b/server/file.c -index 502951c..72d6d95 100644 ---- a/server/file.c -+++ b/server/file.c -@@ -187,10 +187,11 @@ static struct object *create_file_obj( struct fd *fd, unsigned int access, mode_ - return &file->obj; - } - --void set_xattr_sd( int fd, const struct security_descriptor *sd ) -+void set_xattr_sd( int fd, const struct security_descriptor *sd, const SID *user, const SID *group ) - { -- char buffer[XATTR_SIZE_MAX]; -- int present, len; -+ char buffer[XATTR_SIZE_MAX], *dst_ptr = &buffer[2], *src_ptr = (char *)sd; -+ int present, len, owner_len, group_len; -+ struct security_descriptor *dst_sd; - const ACL *dacl; - - /* there's no point in storing the security descriptor if there's no DACL */ -@@ -198,14 +199,52 @@ void set_xattr_sd( int fd, const struct security_descriptor *sd ) - dacl = sd_get_dacl( sd, &present ); - if (!present || !dacl) return; - -- len = 2 + sizeof(struct security_descriptor) + sd->owner_len + sd->group_len + sd->sacl_len -+ /* make sure that we always store the ownership information */ -+ if (!sd->owner_len) -+ owner_len = FIELD_OFFSET(SID, SubAuthority[user->SubAuthorityCount]); -+ else -+ owner_len = sd->owner_len; -+ if (!sd->group_len) -+ group_len = FIELD_OFFSET(SID, SubAuthority[group->SubAuthorityCount]); -+ else -+ group_len = sd->group_len; -+ len = 2 + sizeof(struct security_descriptor) + owner_len + group_len + sd->sacl_len - + sd->dacl_len; - if (len > XATTR_SIZE_MAX) return; - - /* include the descriptor revision and resource manager control bits */ - buffer[0] = SECURITY_DESCRIPTOR_REVISION; - buffer[1] = 0; -- memcpy( &buffer[2], sd, len - 2 ); -+ memcpy( dst_ptr, sd, sizeof(struct security_descriptor) ); -+ dst_sd = (struct security_descriptor *)dst_ptr; -+ dst_sd->owner_len = owner_len; -+ dst_sd->group_len = group_len; -+ src_ptr += sizeof(struct security_descriptor); -+ dst_ptr += sizeof(struct security_descriptor); -+ /* copy the appropriate ownership information (explicit or inferred) */ -+ if (sd->owner_len) -+ { -+ memcpy( dst_ptr, src_ptr, sd->owner_len ); -+ src_ptr += sd->owner_len; -+ } -+ else -+ memcpy( dst_ptr, user, owner_len ); -+ dst_ptr += owner_len; -+ if (sd->group_len) -+ { -+ memcpy( dst_ptr, src_ptr, sd->group_len ); -+ src_ptr += sd->group_len; -+ } -+ else -+ memcpy( dst_ptr, group, group_len ); -+ dst_ptr += group_len; -+ /* copy the ACL information (explicit only) */ -+ memcpy( dst_ptr, src_ptr, sd->sacl_len ); -+ src_ptr += sd->sacl_len; -+ dst_ptr += sd->sacl_len; -+ memcpy( dst_ptr, src_ptr, sd->dacl_len ); -+ src_ptr += sd->dacl_len; -+ dst_ptr += sd->dacl_len; - xattr_fset( fd, WINE_XATTR_SD, buffer, len ); - } - -@@ -214,6 +253,7 @@ static struct object *create_file( struct fd *root, const char *nameptr, data_si - unsigned int options, unsigned int attrs, - const struct security_descriptor *sd ) - { -+ const SID *owner = NULL, *group = NULL; - struct object *obj = NULL; - struct fd *fd; - int flags; -@@ -244,9 +284,12 @@ static struct object *create_file( struct fd *root, const char *nameptr, data_si - - if (sd) - { -- const SID *owner = sd_get_owner( sd ); -+ owner = sd_get_owner( sd ); - if (!owner) - owner = token_get_user( current->process->token ); -+ group = sd_get_group( sd ); -+ if (!group) -+ group = token_get_primary_group( current->process->token ); - mode = sd_to_mode( sd, owner ); - } - else if (options & FILE_DIRECTORY_FILE) -@@ -270,7 +313,7 @@ static struct object *create_file( struct fd *root, const char *nameptr, data_si - /* FIXME: should set error to STATUS_OBJECT_NAME_COLLISION if file existed before */ - fd = open_fd( root, name, flags | O_NONBLOCK | O_LARGEFILE, &mode, access, sharing, options ); - if (!fd) goto done; -- set_xattr_sd( get_unix_fd( fd ), sd ); -+ set_xattr_sd( get_unix_fd( fd ), sd, owner, group ); - - if (S_ISDIR(mode)) - obj = create_dir_obj( fd, access, mode ); -@@ -580,7 +623,7 @@ int set_file_sd( struct object *obj, struct fd *fd, const struct security_descri - unsigned int set_info ) - { - int unix_fd = get_unix_fd( fd ); -- const SID *owner; -+ const SID *owner, *group; - struct stat st; - mode_t mode; - -@@ -604,6 +647,24 @@ int set_file_sd( struct object *obj, struct fd *fd, const struct security_descri - else - owner = token_get_user( current->process->token ); - -+ if (set_info & GROUP_SECURITY_INFORMATION) -+ { -+ group = sd_get_group( sd ); -+ if (!group) -+ { -+ set_error( STATUS_INVALID_SECURITY_DESCR ); -+ return 0; -+ } -+ if (!obj->sd || !security_equal_sid( group, sd_get_group( obj->sd ) )) -+ { -+ /* FIXME: get Unix uid and call fchown */ -+ } -+ } -+ else if (obj->sd) -+ group = sd_get_group( obj->sd ); -+ else -+ group = token_get_primary_group( current->process->token ); -+ - /* group and sacl not supported */ - - if (set_info & DACL_SECURITY_INFORMATION) -@@ -612,7 +673,7 @@ int set_file_sd( struct object *obj, struct fd *fd, const struct security_descri - mode = st.st_mode & (S_ISUID|S_ISGID|S_ISVTX); - mode |= sd_to_mode( sd, owner ); - -- set_xattr_sd( unix_fd, sd ); -+ set_xattr_sd( unix_fd, sd, owner, group ); - - if (((st.st_mode ^ mode) & (S_IRWXU|S_IRWXG|S_IRWXO)) && fchmod( unix_fd, mode ) == -1) - { --- -1.7.9.5 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-Stored_ACLs/0004-server-Temporarily-store-the-full-security-descripto.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-Stored_ACLs/0004-server-Temporarily-store-the-full-security-descripto.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-Stored_ACLs/0004-server-Temporarily-store-the-full-security-descripto.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-Stored_ACLs/0004-server-Temporarily-store-the-full-security-descripto.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,258 @@ +From 7a54a4e7c856d5df1075b55eaa823c9c1826fd0b Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Mon, 30 Mar 2015 12:50:21 +0200 +Subject: server: Temporarily store the full security descriptor for file + objects. + +--- + dlls/advapi32/tests/security.c | 15 +++---- + server/change.c | 8 +++- + server/file.c | 88 ++++++++++++++++++++++++++++-------------- + server/file.h | 3 +- + 4 files changed, 74 insertions(+), 40 deletions(-) + +diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c +index a0532f6..f7ae089 100644 +--- a/dlls/advapi32/tests/security.c ++++ b/dlls/advapi32/tests/security.c +@@ -3311,7 +3311,6 @@ static void test_CreateDirectoryA(void) + ok(error == ERROR_SUCCESS, "GetNamedSecurityInfo failed with error %d\n", error); + bret = pGetAclInformation(pDacl, &acl_size, sizeof(acl_size), AclSizeInformation); + ok(bret, "GetAclInformation failed\n"); +- todo_wine + ok(acl_size.AceCount == 0, "GetAclInformation returned unexpected entry count (%d != 0).\n", + acl_size.AceCount); + LocalFree(pSD); +@@ -3387,7 +3386,6 @@ static void test_CreateDirectoryA(void) + ok(error == ERROR_SUCCESS, "GetNamedSecurityInfo failed with error %d\n", error); + bret = pGetAclInformation(pDacl, &acl_size, sizeof(acl_size), AclSizeInformation); + ok(bret, "GetAclInformation failed\n"); +- todo_wine + ok(acl_size.AceCount == 0, "GetAclInformation returned unexpected entry count (%d != 0).\n", + acl_size.AceCount); + LocalFree(pSD); +@@ -3533,7 +3531,6 @@ static void test_CreateDirectoryA(void) + ok(error == ERROR_SUCCESS, "GetNamedSecurityInfo failed with error %d\n", error); + bret = pGetAclInformation(pDacl, &acl_size, sizeof(acl_size), AclSizeInformation); + ok(bret, "GetAclInformation failed\n"); +- todo_wine + ok(acl_size.AceCount == 0, "GetAclInformation returned unexpected entry count (%d != 0).\n", + acl_size.AceCount); + LocalFree(pSD); +@@ -4501,22 +4498,22 @@ static void test_GetSecurityInfo(void) + bret = pGetAce(pDacl, 0, (VOID **)&ace); + ok(bret, "Failed to get Current User ACE.\n"); + bret = EqualSid(&ace->SidStart, user_sid); +- todo_wine ok(bret, "Current User ACE != Current User SID.\n"); ++ ok(bret, "Current User ACE != Current User SID.\n"); + ok(((ACE_HEADER *)ace)->AceFlags == 0, + "Current User ACE has unexpected flags (0x%x != 0x0)\n", ((ACE_HEADER *)ace)->AceFlags); +- ok(ace->Mask == 0x1f01ff, "Current User ACE has unexpected mask (0x%x != 0x1f01ff)\n", +- ace->Mask); ++ todo_wine ok(ace->Mask == 0x1f01ff, ++ "Current User ACE has unexpected mask (0x%x != 0x1f01ff)\n", ace->Mask); + } + if (acl_size.AceCount > 1) + { + bret = pGetAce(pDacl, 1, (VOID **)&ace); + ok(bret, "Failed to get Administators Group ACE.\n"); + bret = EqualSid(&ace->SidStart, admin_sid); +- todo_wine ok(bret, "Administators Group ACE != Administators Group SID.\n"); ++ ok(bret, "Administators Group ACE != Administators Group SID.\n"); + ok(((ACE_HEADER *)ace)->AceFlags == 0, + "Administators Group ACE has unexpected flags (0x%x != 0x0)\n", ((ACE_HEADER *)ace)->AceFlags); +- ok(ace->Mask == 0x1f01ff, "Administators Group ACE has unexpected mask (0x%x != 0x1f01ff)\n", +- ace->Mask); ++ todo_wine ok(ace->Mask == 0x1f01ff, ++ "Administators Group ACE has unexpected mask (0x%x != 0x1f01ff)\n", ace->Mask); + } + LocalFree(pSD); + CloseHandle(obj); +diff --git a/server/change.c b/server/change.c +index 29a48b3..87b45f8 100644 +--- a/server/change.c ++++ b/server/change.c +@@ -1020,7 +1020,8 @@ static int dir_add_to_existing_notify( struct dir *dir ) + + #endif /* USE_INOTIFY */ + +-struct object *create_dir_obj( struct fd *fd, unsigned int access, mode_t mode ) ++struct object *create_dir_obj( struct fd *fd, unsigned int access, mode_t mode, ++ const struct security_descriptor *sd ) + { + struct dir *dir; + +@@ -1039,6 +1040,11 @@ struct object *create_dir_obj( struct fd *fd, unsigned int access, mode_t mode ) + dir->uid = ~(uid_t)0; + set_fd_user( fd, &dir_fd_ops, &dir->obj ); + ++ if (sd) dir_set_sd( &dir->obj, sd, OWNER_SECURITY_INFORMATION | ++ GROUP_SECURITY_INFORMATION | ++ DACL_SECURITY_INFORMATION | ++ SACL_SECURITY_INFORMATION ); ++ + dir_add_to_existing_notify( dir ); + + return &dir->obj; +diff --git a/server/file.c b/server/file.c +index 58906c0..1b16526 100644 +--- a/server/file.c ++++ b/server/file.c +@@ -168,7 +168,8 @@ struct file *create_file_for_fd_obj( struct fd *fd, unsigned int access, unsigne + return file; + } + +-static struct object *create_file_obj( struct fd *fd, unsigned int access, mode_t mode ) ++static struct object *create_file_obj( struct fd *fd, unsigned int access, mode_t mode, ++ const struct security_descriptor *sd ) + { + struct file *file = alloc_object( &file_ops ); + +@@ -179,6 +180,12 @@ static struct object *create_file_obj( struct fd *fd, unsigned int access, mode_ + file->fd = fd; + grab_object( fd ); + set_fd_user( fd, &file_fd_ops, &file->obj ); ++ ++ if (sd) file_set_sd( &file->obj, sd, OWNER_SECURITY_INFORMATION | ++ GROUP_SECURITY_INFORMATION | ++ DACL_SECURITY_INFORMATION | ++ SACL_SECURITY_INFORMATION ); ++ + return &file->obj; + } + +@@ -245,11 +252,11 @@ static struct object *create_file( struct fd *root, const char *nameptr, data_si + if (!fd) goto done; + + if (S_ISDIR(mode)) +- obj = create_dir_obj( fd, access, mode ); ++ obj = create_dir_obj( fd, access, mode, sd ); + else if (S_ISCHR(mode) && is_serial_fd( fd )) + obj = create_serial( fd ); + else +- obj = create_file_obj( fd, access, mode ); ++ obj = create_file_obj( fd, access, mode, sd ); + + release_object( fd ); + +@@ -557,46 +564,66 @@ mode_t sd_to_mode( const struct security_descriptor *sd, const SID *owner ) + int set_file_sd( struct object *obj, struct fd *fd, mode_t *mode, uid_t *uid, + const struct security_descriptor *sd, unsigned int set_info ) + { ++ struct security_descriptor *new_sd; + int unix_fd = get_unix_fd( fd ); +- const SID *owner; ++ const SID *owner, *group; + struct stat st; + mode_t new_mode; + +- if (unix_fd == -1 || fstat( unix_fd, &st ) == -1) return 1; ++ if (!set_info || unix_fd == -1 || fstat( unix_fd, &st ) == -1) return 1; ++ if (!obj->sd) get_file_sd( obj, fd, mode, uid ); + +- if (set_info & OWNER_SECURITY_INFORMATION) ++ /* calculate the new sd, save to a temporary variable before assigning */ ++ new_sd = set_sd_from_token_internal( sd, obj->sd, set_info, current->process->token ); ++ if (new_sd) + { +- owner = sd_get_owner( sd ); +- if (!owner) ++ if (set_info & OWNER_SECURITY_INFORMATION) + { +- set_error( STATUS_INVALID_SECURITY_DESCR ); +- return 0; ++ owner = sd_get_owner( new_sd ); ++ assert( owner ); ++ ++ if (!obj->sd || !security_equal_sid( owner, sd_get_owner( obj->sd ) )) ++ { ++ /* FIXME: get Unix uid and call fchown */ ++ } + } +- if (!obj->sd || !security_equal_sid( owner, sd_get_owner( obj->sd ) )) ++ ++ if (set_info & GROUP_SECURITY_INFORMATION) + { +- /* FIXME: get Unix uid and call fchown */ ++ group = sd_get_group( new_sd ); ++ assert( group ); ++ ++ if (!obj->sd || !security_equal_sid( group, sd_get_group( obj->sd ) )) ++ { ++ /* FIXME: get Unix uid and call fchown */ ++ } + } +- } +- else if (obj->sd) +- owner = sd_get_owner( obj->sd ); +- else +- owner = token_get_user( current->process->token ); + +- /* group and sacl not supported */ ++ if (set_info & DACL_SECURITY_INFORMATION) ++ { ++ owner = sd_get_owner( new_sd ); ++ assert( owner ); + +- if (set_info & DACL_SECURITY_INFORMATION) +- { +- /* keep the bits that we don't map to access rights in the ACL */ +- new_mode = st.st_mode & (S_ISUID|S_ISGID|S_ISVTX); +- new_mode |= sd_to_mode( sd, owner ); ++ /* keep the bits that we don't map to access rights in the ACL */ ++ new_mode = st.st_mode & (S_ISUID|S_ISGID|S_ISVTX); ++ new_mode |= sd_to_mode( new_sd, owner ); + +- if (((st.st_mode ^ new_mode) & (S_IRWXU|S_IRWXG|S_IRWXO)) && fchmod( unix_fd, new_mode ) == -1) +- { +- file_set_error(); +- return 0; ++ if (((st.st_mode ^ new_mode) & (S_IRWXU|S_IRWXG|S_IRWXO)) && fchmod( unix_fd, new_mode ) == -1) ++ { ++ free( new_sd ); ++ file_set_error(); ++ return 0; ++ } ++ ++ *mode = new_mode; + } ++ ++ free( obj->sd ); ++ obj->sd = new_sd; ++ return 1; + } +- return 1; ++ ++ return 0; + } + + static int file_set_sd( struct object *obj, const struct security_descriptor *sd, +@@ -709,7 +736,10 @@ DECL_HANDLER(create_file) + if ((file = create_file( root_fd, name, name_len, req->access, req->sharing, + req->create, req->options, req->attrs, sd ))) + { +- reply->handle = alloc_handle( current->process, file, req->access, req->attributes ); ++ if (get_error() == STATUS_OBJECT_NAME_EXISTS) ++ reply->handle = alloc_handle( current->process, file, req->access, req->attributes ); ++ else ++ reply->handle = alloc_handle_no_access_check( current->process, file, req->access, req->attributes ); + release_object( file ); + } + if (root_fd) release_object( root_fd ); +diff --git a/server/file.h b/server/file.h +index c866312..16883b2 100644 +--- a/server/file.h ++++ b/server/file.h +@@ -142,7 +142,8 @@ extern int get_page_size(void); + + extern void do_change_notify( int unix_fd ); + extern void sigio_callback(void); +-extern struct object *create_dir_obj( struct fd *fd, unsigned int access, mode_t mode ); ++extern struct object *create_dir_obj( struct fd *fd, unsigned int access, mode_t mode, ++ const struct security_descriptor *sd ); + extern struct dir *get_dir_obj( struct process *process, obj_handle_t handle, unsigned int access ); + + /* completion */ +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-Stored_ACLs/0005-server-Retrieve-file-security-attributes-with-extend.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-Stored_ACLs/0005-server-Retrieve-file-security-attributes-with-extend.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-Stored_ACLs/0005-server-Retrieve-file-security-attributes-with-extend.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-Stored_ACLs/0005-server-Retrieve-file-security-attributes-with-extend.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,195 +0,0 @@ -From 148550ffa4aeae7903d6654373011ad282ce59dc Mon Sep 17 00:00:00 2001 -From: "Erich E. Hoover" -Date: Fri, 18 Apr 2014 14:01:35 -0600 -Subject: server: Retrieve file security attributes with extended file - attributes. (try 7) - ---- - dlls/advapi32/tests/security.c | 57 +++++++++++++++++++++++++----------------- - server/file.c | 26 ++++++++++++++++--- - 2 files changed, 57 insertions(+), 26 deletions(-) - -diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c -index a757c22..3f97a82 100644 ---- a/dlls/advapi32/tests/security.c -+++ b/dlls/advapi32/tests/security.c -@@ -3109,7 +3109,7 @@ static void get_nt_pathW(const char *name, UNICODE_STRING *nameW) - } - - static void test_inherited_dacl(PACL dacl, PSID admin_sid, PSID user_sid, DWORD flags, DWORD mask, -- BOOL todo_count, BOOL todo_sid, BOOL todo_flags, int line) -+ BOOL todo_count, BOOL todo_sid, BOOL todo_flags, BOOL todo_mask, int line) - { - ACL_SIZE_INFORMATION acl_size; - ACCESS_ALLOWED_ACE *ace; -@@ -3150,9 +3150,15 @@ static void test_inherited_dacl(PACL dacl, PSID admin_sid, PSID user_sid, DWORD - "Current User ACE has unexpected flags (0x%x != 0x%x)\n", - ((ACE_HEADER *)ace)->AceFlags, flags); - -- ok_(__FILE__, line)(ace->Mask == mask, -- "Current User ACE has unexpected mask (0x%x != 0x%x)\n", -- ace->Mask, mask); -+ if (todo_mask) -+ todo_wine -+ ok_(__FILE__, line)(ace->Mask == mask, -+ "Current User ACE has unexpected mask (0x%x != 0x%x)\n", -+ ace->Mask, mask); -+ else -+ ok_(__FILE__, line)(ace->Mask == mask, -+ "Current User ACE has unexpected mask (0x%x != 0x%x)\n", -+ ace->Mask, mask); - } - if (acl_size.AceCount > 1) - { -@@ -3176,9 +3182,15 @@ static void test_inherited_dacl(PACL dacl, PSID admin_sid, PSID user_sid, DWORD - "Administators Group ACE has unexpected flags (0x%x != 0x%x)\n", - ((ACE_HEADER *)ace)->AceFlags, flags); - -- ok_(__FILE__, line)(ace->Mask == mask, -- "Administators Group ACE has unexpected mask (0x%x != 0x%x)\n", -- ace->Mask, mask); -+ if (todo_mask) -+ todo_wine -+ ok_(__FILE__, line)(ace->Mask == mask, -+ "Administators Group ACE has unexpected mask (0x%x != 0x%x)\n", -+ ace->Mask, mask); -+ else -+ ok_(__FILE__, line)(ace->Mask == mask, -+ "Administators Group ACE has unexpected mask (0x%x != 0x%x)\n", -+ ace->Mask, mask); - } - } - -@@ -3262,7 +3274,7 @@ static void test_CreateDirectoryA(void) - } - ok(!error, "GetNamedSecurityInfo failed with error %d\n", error); - test_inherited_dacl(pDacl, admin_sid, user_sid, OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE, -- 0x1f01ff, FALSE, TRUE, TRUE, __LINE__); -+ 0x1f01ff, FALSE, FALSE, FALSE, TRUE, __LINE__); - LocalFree(pSD); - - /* Test inheritance of ACLs in CreateFile without security descriptor */ -@@ -3278,7 +3290,7 @@ static void test_CreateDirectoryA(void) - (PSID *)&owner, NULL, &pDacl, NULL, &pSD); - ok(error == ERROR_SUCCESS, "Failed to get permissions on file\n"); - test_inherited_dacl(pDacl, admin_sid, user_sid, INHERITED_ACE, -- 0x1f01ff, TRUE, TRUE, TRUE, __LINE__); -+ 0x1f01ff, TRUE, TRUE, TRUE, FALSE, __LINE__); - LocalFree(pSD); - CloseHandle(hTemp); - -@@ -3352,7 +3364,7 @@ static void test_CreateDirectoryA(void) - (PSID *)&owner, NULL, &pDacl, NULL, &pSD); - ok(error == ERROR_SUCCESS, "Failed to get permissions on file\n"); - test_inherited_dacl(pDacl, admin_sid, user_sid, INHERITED_ACE, -- 0x1f01ff, TRUE, TRUE, TRUE, __LINE__); -+ 0x1f01ff, TRUE, TRUE, TRUE, FALSE, __LINE__); - LocalFree(pSD); - CloseHandle(hTemp); - -@@ -3581,23 +3593,22 @@ static void test_GetNamedSecurityInfoA(void) - bret = pGetAce(pDacl, 0, (VOID **)&ace); - ok(bret, "Failed to get Current User ACE.\n"); - bret = EqualSid(&ace->SidStart, user_sid); -- todo_wine ok(bret, "Current User ACE != Current User SID.\n"); -+ ok(bret, "Current User ACE != Current User SID.\n"); - ok(((ACE_HEADER *)ace)->AceFlags == 0, - "Current User ACE has unexpected flags (0x%x != 0x0)\n", ((ACE_HEADER *)ace)->AceFlags); -- ok(ace->Mask == 0x1f01ff, "Current User ACE has unexpected mask (0x%x != 0x1f01ff)\n", -- ace->Mask); -+ todo_wine ok(ace->Mask == 0x1f01ff, -+ "Current User ACE has unexpected mask (0x%x != 0x1f01ff)\n", ace->Mask); - } - if (acl_size.AceCount > 1) - { - bret = pGetAce(pDacl, 1, (VOID **)&ace); - ok(bret, "Failed to get Administators Group ACE.\n"); - bret = EqualSid(&ace->SidStart, admin_sid); -- todo_wine ok(bret || broken(!bret) /* win2k */, -- "Administators Group ACE != Administators Group SID.\n"); -+ ok(bret || broken(!bret) /* win2k */, "Administators Group ACE != Administators Group SID.\n"); - ok(((ACE_HEADER *)ace)->AceFlags == 0, - "Administators Group ACE has unexpected flags (0x%x != 0x0)\n", ((ACE_HEADER *)ace)->AceFlags); -- ok(ace->Mask == 0x1f01ff || broken(ace->Mask == GENERIC_ALL) /* win2k */, -- "Administators Group ACE has unexpected mask (0x%x != 0x1f01ff)\n", ace->Mask); -+ todo_wine ok(ace->Mask == 0x1f01ff || broken(ace->Mask == GENERIC_ALL) /* win2k */, -+ "Administators Group ACE has unexpected mask (0x%x != 0x1f01ff)\n", ace->Mask); - } - LocalFree(pSD); - HeapFree(GetProcessHeap(), 0, user); -@@ -4247,22 +4258,22 @@ static void test_GetSecurityInfo(void) - bret = pGetAce(pDacl, 0, (VOID **)&ace); - ok(bret, "Failed to get Current User ACE.\n"); - bret = EqualSid(&ace->SidStart, user_sid); -- todo_wine ok(bret, "Current User ACE != Current User SID.\n"); -+ ok(bret, "Current User ACE != Current User SID.\n"); - ok(((ACE_HEADER *)ace)->AceFlags == 0, - "Current User ACE has unexpected flags (0x%x != 0x0)\n", ((ACE_HEADER *)ace)->AceFlags); -- ok(ace->Mask == 0x1f01ff, "Current User ACE has unexpected mask (0x%x != 0x1f01ff)\n", -- ace->Mask); -+ todo_wine ok(ace->Mask == 0x1f01ff, -+ "Current User ACE has unexpected mask (0x%x != 0x1f01ff)\n", ace->Mask); - } - if (acl_size.AceCount > 1) - { - bret = pGetAce(pDacl, 1, (VOID **)&ace); - ok(bret, "Failed to get Administators Group ACE.\n"); - bret = EqualSid(&ace->SidStart, admin_sid); -- todo_wine ok(bret, "Administators Group ACE != Administators Group SID.\n"); -+ ok(bret, "Administators Group ACE != Administators Group SID.\n"); - ok(((ACE_HEADER *)ace)->AceFlags == 0, - "Administators Group ACE has unexpected flags (0x%x != 0x0)\n", ((ACE_HEADER *)ace)->AceFlags); -- ok(ace->Mask == 0x1f01ff, "Administators Group ACE has unexpected mask (0x%x != 0x1f01ff)\n", -- ace->Mask); -+ todo_wine ok(ace->Mask == 0x1f01ff, -+ "Administators Group ACE has unexpected mask (0x%x != 0x1f01ff)\n", ace->Mask); - } - LocalFree(pSD); - CloseHandle(obj); -diff --git a/server/file.c b/server/file.c -index a1455ff..e84331d 100644 ---- a/server/file.c -+++ b/server/file.c -@@ -503,6 +503,25 @@ struct security_descriptor *mode_to_sd( mode_t mode, const SID *user, const SID - return sd; - } - -+struct security_descriptor *get_xattr_sd( int fd ) -+{ -+ struct security_descriptor *sd; -+ char buffer[XATTR_SIZE_MAX]; -+ int n; -+ -+ n = xattr_fget( fd, WINE_XATTR_SD, buffer, sizeof(buffer) ); -+ if (n == -1 || n < 2 + sizeof(struct security_descriptor)) return NULL; -+ -+ /* validate that we can handle the descriptor */ -+ if (buffer[0] != SECURITY_DESCRIPTOR_REVISION || buffer[1] != 0 || -+ !sd_is_valid( (struct security_descriptor *)&buffer[2], n - 2 )) -+ return NULL; -+ -+ sd = mem_alloc( n - 2 ); -+ if (sd) memcpy( sd, &buffer[2], n - 2 ); -+ return sd; -+} -+ - struct security_descriptor *get_file_sd( struct object *obj, struct fd *fd, mode_t *mode, - uid_t *uid ) - { -@@ -518,9 +537,10 @@ struct security_descriptor *get_file_sd( struct object *obj, struct fd *fd, mode - (st.st_uid == *uid)) - return obj->sd; - -- sd = mode_to_sd( st.st_mode, -- security_unix_uid_to_sid( st.st_uid ), -- token_get_primary_group( current->process->token )); -+ sd = get_xattr_sd( unix_fd ); -+ if (!sd) sd = mode_to_sd( st.st_mode, -+ security_unix_uid_to_sid( st.st_uid ), -+ token_get_primary_group( current->process->token )); - if (!sd) return obj->sd; - - *mode = st.st_mode; --- -2.3.3 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-Stored_ACLs/0005-server-Store-file-security-attributes-with-extended-.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-Stored_ACLs/0005-server-Store-file-security-attributes-with-extended-.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-Stored_ACLs/0005-server-Store-file-security-attributes-with-extended-.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-Stored_ACLs/0005-server-Store-file-security-attributes-with-extended-.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,94 @@ +From 03d4a144839cf0432612f3f031fce1725dacab4b Mon Sep 17 00:00:00 2001 +From: "Erich E. Hoover" +Date: Mon, 30 Mar 2015 13:04:23 +0200 +Subject: server: Store file security attributes with extended file attributes. + (v8) + +--- + include/wine/port.h | 3 +++ + server/file.c | 34 ++++++++++++++++++++++++++++++++++ + 2 files changed, 37 insertions(+) + +diff --git a/include/wine/port.h b/include/wine/port.h +index 9e2b8165..71be265 100644 +--- a/include/wine/port.h ++++ b/include/wine/port.h +@@ -368,6 +368,9 @@ extern int _spawnvp(int mode, const char *cmdname, const char * const argv[]); + #ifndef XATTR_USER_PREFIX + # define XATTR_USER_PREFIX "user." + #endif ++#ifndef XATTR_SIZE_MAX ++# define XATTR_SIZE_MAX 65536 ++#endif + + extern int xattr_fget( int filedes, const char *name, void *value, size_t size ); + extern int xattr_fremove( int filedes, const char *name ); +diff --git a/server/file.c b/server/file.c +index 1b16526..ed7ddfc 100644 +--- a/server/file.c ++++ b/server/file.c +@@ -32,6 +32,7 @@ + #include + #include + #include ++#include + #include + #ifdef HAVE_UTIME_H + #include +@@ -52,6 +53,14 @@ + #include "process.h" + #include "security.h" + ++/* We intentionally do not match the Samba 4 extended attribute for NT security descriptors (SDs): ++ * 1) Samba stores this information using an internal data structure (we use a flat NT SD). ++ * 2) Samba uses the attribute "security.NTACL". This attribute is within a namespace that only ++ * the administrator has write access to, which prohibits the user from copying the attributes ++ * when copying a file and would require Wine to run with adminstrative privileges. ++ */ ++#define WINE_XATTR_SD XATTR_USER_PREFIX "wine.sd" ++ + struct file + { + struct object obj; /* object header */ +@@ -189,6 +198,28 @@ static struct object *create_file_obj( struct fd *fd, unsigned int access, mode_ + return &file->obj; + } + ++static void set_xattr_sd( int fd, const struct security_descriptor *sd ) ++{ ++ char buffer[XATTR_SIZE_MAX]; ++ int present, len; ++ const ACL *dacl; ++ ++ /* there's no point in storing the security descriptor if there's no DACL */ ++ if (!sd) return; ++ dacl = sd_get_dacl( sd, &present ); ++ if (!present || !dacl) return; ++ ++ len = 2 + sizeof(struct security_descriptor) + sd->owner_len + ++ sd->group_len + sd->sacl_len + sd->dacl_len; ++ if (len > XATTR_SIZE_MAX) return; ++ ++ /* include the descriptor revision and resource manager control bits */ ++ buffer[0] = SECURITY_DESCRIPTOR_REVISION; ++ buffer[1] = 0; ++ memcpy( &buffer[2], sd, len - 2 ); ++ xattr_fset( fd, WINE_XATTR_SD, buffer, len ); ++} ++ + static struct object *create_file( struct fd *root, const char *nameptr, data_size_t len, + unsigned int access, unsigned int sharing, int create, + unsigned int options, unsigned int attrs, +@@ -618,6 +649,9 @@ int set_file_sd( struct object *obj, struct fd *fd, mode_t *mode, uid_t *uid, + *mode = new_mode; + } + ++ /* extended attributes are set after the file mode, to ensure it stays in sync */ ++ set_xattr_sd( unix_fd, new_sd ); ++ + free( obj->sd ); + obj->sd = new_sd; + return 1; +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-Stored_ACLs/0006-server-Convert-return-of-file-security-masks-with-ge.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-Stored_ACLs/0006-server-Convert-return-of-file-security-masks-with-ge.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-Stored_ACLs/0006-server-Convert-return-of-file-security-masks-with-ge.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-Stored_ACLs/0006-server-Convert-return-of-file-security-masks-with-ge.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,93 +1,19 @@ -From 3779a55c15d92da1974ff1520e20bc5accc8e4b6 Mon Sep 17 00:00:00 2001 +From 5c19cb0685dd47e7eb36dce9729200b79da61b11 Mon Sep 17 00:00:00 2001 From: "Erich E. Hoover" Date: Fri, 18 Apr 2014 14:05:32 -0600 Subject: server: Convert return of file security masks with generic access mappings. (try 7) --- - dlls/advapi32/tests/security.c | 48 ++++++++++++++++-------------------------- - server/file.c | 22 +++++++++++++++++++ - 2 files changed, 40 insertions(+), 30 deletions(-) + dlls/advapi32/tests/security.c | 6 +++--- + server/file.c | 23 +++++++++++++++++++++++ + 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c -index 3f97a82..a530a3f 100644 +index f7ae089..0013c3c 100644 --- a/dlls/advapi32/tests/security.c +++ b/dlls/advapi32/tests/security.c -@@ -3109,7 +3109,7 @@ static void get_nt_pathW(const char *name, UNICODE_STRING *nameW) - } - - static void test_inherited_dacl(PACL dacl, PSID admin_sid, PSID user_sid, DWORD flags, DWORD mask, -- BOOL todo_count, BOOL todo_sid, BOOL todo_flags, BOOL todo_mask, int line) -+ BOOL todo_count, BOOL todo_sid, BOOL todo_flags, int line) - { - ACL_SIZE_INFORMATION acl_size; - ACCESS_ALLOWED_ACE *ace; -@@ -3150,15 +3150,9 @@ static void test_inherited_dacl(PACL dacl, PSID admin_sid, PSID user_sid, DWORD - "Current User ACE has unexpected flags (0x%x != 0x%x)\n", - ((ACE_HEADER *)ace)->AceFlags, flags); - -- if (todo_mask) -- todo_wine -- ok_(__FILE__, line)(ace->Mask == mask, -- "Current User ACE has unexpected mask (0x%x != 0x%x)\n", -- ace->Mask, mask); -- else -- ok_(__FILE__, line)(ace->Mask == mask, -- "Current User ACE has unexpected mask (0x%x != 0x%x)\n", -- ace->Mask, mask); -+ ok_(__FILE__, line)(ace->Mask == mask, -+ "Current User ACE has unexpected mask (0x%x != 0x%x)\n", -+ ace->Mask, mask); - } - if (acl_size.AceCount > 1) - { -@@ -3182,15 +3176,9 @@ static void test_inherited_dacl(PACL dacl, PSID admin_sid, PSID user_sid, DWORD - "Administators Group ACE has unexpected flags (0x%x != 0x%x)\n", - ((ACE_HEADER *)ace)->AceFlags, flags); - -- if (todo_mask) -- todo_wine -- ok_(__FILE__, line)(ace->Mask == mask, -- "Administators Group ACE has unexpected mask (0x%x != 0x%x)\n", -- ace->Mask, mask); -- else -- ok_(__FILE__, line)(ace->Mask == mask, -- "Administators Group ACE has unexpected mask (0x%x != 0x%x)\n", -- ace->Mask, mask); -+ ok_(__FILE__, line)(ace->Mask == mask, -+ "Administators Group ACE has unexpected mask (0x%x != 0x%x)\n", -+ ace->Mask, mask); - } - } - -@@ -3274,7 +3262,7 @@ static void test_CreateDirectoryA(void) - } - ok(!error, "GetNamedSecurityInfo failed with error %d\n", error); - test_inherited_dacl(pDacl, admin_sid, user_sid, OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE, -- 0x1f01ff, FALSE, FALSE, FALSE, TRUE, __LINE__); -+ 0x1f01ff, FALSE, FALSE, FALSE, __LINE__); - LocalFree(pSD); - - /* Test inheritance of ACLs in CreateFile without security descriptor */ -@@ -3290,7 +3278,7 @@ static void test_CreateDirectoryA(void) - (PSID *)&owner, NULL, &pDacl, NULL, &pSD); - ok(error == ERROR_SUCCESS, "Failed to get permissions on file\n"); - test_inherited_dacl(pDacl, admin_sid, user_sid, INHERITED_ACE, -- 0x1f01ff, TRUE, TRUE, TRUE, FALSE, __LINE__); -+ 0x1f01ff, TRUE, TRUE, TRUE, __LINE__); - LocalFree(pSD); - CloseHandle(hTemp); - -@@ -3364,7 +3352,7 @@ static void test_CreateDirectoryA(void) - (PSID *)&owner, NULL, &pDacl, NULL, &pSD); - ok(error == ERROR_SUCCESS, "Failed to get permissions on file\n"); - test_inherited_dacl(pDacl, admin_sid, user_sid, INHERITED_ACE, -- 0x1f01ff, TRUE, TRUE, TRUE, FALSE, __LINE__); -+ 0x1f01ff, TRUE, TRUE, TRUE, __LINE__); - LocalFree(pSD); - CloseHandle(hTemp); - -@@ -3596,8 +3584,8 @@ static void test_GetNamedSecurityInfoA(void) +@@ -4501,8 +4501,8 @@ static void test_GetSecurityInfo(void) ok(bret, "Current User ACE != Current User SID.\n"); ok(((ACE_HEADER *)ace)->AceFlags == 0, "Current User ACE has unexpected flags (0x%x != 0x0)\n", ((ACE_HEADER *)ace)->AceFlags); @@ -98,49 +24,25 @@ } if (acl_size.AceCount > 1) { -@@ -3607,8 +3595,8 @@ static void test_GetNamedSecurityInfoA(void) - ok(bret || broken(!bret) /* win2k */, "Administators Group ACE != Administators Group SID.\n"); - ok(((ACE_HEADER *)ace)->AceFlags == 0, - "Administators Group ACE has unexpected flags (0x%x != 0x0)\n", ((ACE_HEADER *)ace)->AceFlags); -- todo_wine ok(ace->Mask == 0x1f01ff || broken(ace->Mask == GENERIC_ALL) /* win2k */, -- "Administators Group ACE has unexpected mask (0x%x != 0x1f01ff)\n", ace->Mask); -+ ok(ace->Mask == 0x1f01ff || broken(ace->Mask == GENERIC_ALL) /* win2k */, -+ "Administators Group ACE has unexpected mask (0x%x != 0x1f01ff)\n", ace->Mask); - } - LocalFree(pSD); - HeapFree(GetProcessHeap(), 0, user); -@@ -4261,8 +4249,8 @@ static void test_GetSecurityInfo(void) - ok(bret, "Current User ACE != Current User SID.\n"); - ok(((ACE_HEADER *)ace)->AceFlags == 0, - "Current User ACE has unexpected flags (0x%x != 0x0)\n", ((ACE_HEADER *)ace)->AceFlags); -- todo_wine ok(ace->Mask == 0x1f01ff, -- "Current User ACE has unexpected mask (0x%x != 0x1f01ff)\n", ace->Mask); -+ ok(ace->Mask == 0x1f01ff, "Current User ACE has unexpected mask (0x%x != 0x1f01ff)\n", -+ ace->Mask); - } - if (acl_size.AceCount > 1) - { -@@ -4272,8 +4260,8 @@ static void test_GetSecurityInfo(void) +@@ -4512,7 +4512,7 @@ static void test_GetSecurityInfo(void) ok(bret, "Administators Group ACE != Administators Group SID.\n"); ok(((ACE_HEADER *)ace)->AceFlags == 0, "Administators Group ACE has unexpected flags (0x%x != 0x0)\n", ((ACE_HEADER *)ace)->AceFlags); - todo_wine ok(ace->Mask == 0x1f01ff, -- "Administators Group ACE has unexpected mask (0x%x != 0x1f01ff)\n", ace->Mask); -+ ok(ace->Mask == 0x1f01ff, "Administators Group ACE has unexpected mask (0x%x != 0x1f01ff)\n", -+ ace->Mask); ++ ok(ace->Mask == 0x1f01ff, + "Administators Group ACE has unexpected mask (0x%x != 0x1f01ff)\n", ace->Mask); } LocalFree(pSD); - CloseHandle(obj); diff --git a/server/file.c b/server/file.c -index e84331d..b6435d1 100644 +index ed7ddfc..6663927 100644 --- a/server/file.c +++ b/server/file.c -@@ -522,6 +522,27 @@ struct security_descriptor *get_xattr_sd( int fd ) +@@ -466,6 +466,26 @@ struct security_descriptor *mode_to_sd( mode_t mode, const SID *user, const SID return sd; } +/* Convert generic rights into standard access rights */ -+void convert_generic_sd( struct security_descriptor *sd ) ++static void convert_generic_sd( struct security_descriptor *sd ) +{ + const ACL *dacl; + int present; @@ -154,7 +56,6 @@ + for (i = 0; i < dacl->AceCount; i++, ace = ace_next( ace )) + { + DWORD *mask = (DWORD *)(ace + 1); -+ + *mask = generic_file_map_access( *mask ); + } + } @@ -163,14 +64,16 @@ struct security_descriptor *get_file_sd( struct object *obj, struct fd *fd, mode_t *mode, uid_t *uid ) { -@@ -538,6 +559,7 @@ struct security_descriptor *get_file_sd( struct object *obj, struct fd *fd, mode - return obj->sd; - - sd = get_xattr_sd( unix_fd ); -+ if (sd) convert_generic_sd( sd ); - if (!sd) sd = mode_to_sd( st.st_mode, - security_unix_uid_to_sid( st.st_uid ), - token_get_primary_group( current->process->token )); +@@ -608,6 +628,9 @@ int set_file_sd( struct object *obj, struct fd *fd, mode_t *mode, uid_t *uid, + new_sd = set_sd_from_token_internal( sd, obj->sd, set_info, current->process->token ); + if (new_sd) + { ++ /* convert generic rights into standard access rights */ ++ convert_generic_sd( new_sd ); ++ + if (set_info & OWNER_SECURITY_INFORMATION) + { + owner = sd_get_owner( new_sd ); -- -2.3.3 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-Stored_ACLs/0007-server-Retrieve-file-security-attributes-with-extend.patch wine-staging-1.7.41~ubuntu12.04.1/patches/server-Stored_ACLs/0007-server-Retrieve-file-security-attributes-with-extend.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-Stored_ACLs/0007-server-Retrieve-file-security-attributes-with-extend.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-Stored_ACLs/0007-server-Retrieve-file-security-attributes-with-extend.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,110 @@ +From ea6969acf3f5e79a39bb461f78b4f0785a2b8843 Mon Sep 17 00:00:00 2001 +From: "Erich E. Hoover" +Date: Fri, 18 Apr 2014 14:01:35 -0600 +Subject: server: Retrieve file security attributes with extended file + attributes. (try 7) + +--- + dlls/advapi32/tests/security.c | 15 +++++++-------- + server/file.c | 30 +++++++++++++++++++++++++++--- + 2 files changed, 34 insertions(+), 11 deletions(-) + +diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c +index 0013c3c..945542e 100644 +--- a/dlls/advapi32/tests/security.c ++++ b/dlls/advapi32/tests/security.c +@@ -3264,7 +3264,7 @@ static void test_CreateDirectoryA(void) + } + ok(!error, "GetNamedSecurityInfo failed with error %d\n", error); + test_inherited_dacl(pDacl, admin_sid, user_sid, OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE, +- 0x1f01ff, FALSE, TRUE, FALSE, __LINE__); ++ 0x1f01ff, FALSE, FALSE, FALSE, __LINE__); + LocalFree(pSD); + + /* Test inheritance of ACLs in CreateFile without security descriptor */ +@@ -3719,19 +3719,18 @@ static void test_GetNamedSecurityInfoA(void) + bret = pGetAce(pDacl, 0, (VOID **)&ace); + ok(bret, "Failed to get Current User ACE.\n"); + bret = EqualSid(&ace->SidStart, user_sid); +- todo_wine ok(bret, "Current User ACE != Current User SID.\n"); ++ ok(bret, "Current User ACE != Current User SID.\n"); + ok(((ACE_HEADER *)ace)->AceFlags == 0, + "Current User ACE has unexpected flags (0x%x != 0x0)\n", ((ACE_HEADER *)ace)->AceFlags); +- ok(ace->Mask == 0x1f01ff, "Current User ACE has unexpected mask (0x%x != 0x1f01ff)\n", +- ace->Mask); ++ ok(ace->Mask == 0x1f01ff, ++ "Current User ACE has unexpected mask (0x%x != 0x1f01ff)\n", ace->Mask); + } + if (acl_size.AceCount > 1) + { + bret = pGetAce(pDacl, 1, (VOID **)&ace); + ok(bret, "Failed to get Administators Group ACE.\n"); + bret = EqualSid(&ace->SidStart, admin_sid); +- todo_wine ok(bret || broken(!bret) /* win2k */, +- "Administators Group ACE != Administators Group SID.\n"); ++ ok(bret || broken(!bret) /* win2k */, "Administators Group ACE != Administators Group SID.\n"); + ok(((ACE_HEADER *)ace)->AceFlags == 0, + "Administators Group ACE has unexpected flags (0x%x != 0x0)\n", ((ACE_HEADER *)ace)->AceFlags); + ok(ace->Mask == 0x1f01ff || broken(ace->Mask == GENERIC_ALL) /* win2k */, +@@ -3758,8 +3757,8 @@ static void test_GetNamedSecurityInfoA(void) + { + bret = pGetAce(pDacl, 0, (VOID **)&ace); + ok(bret, "Failed to get ACE.\n"); +- todo_wine ok(((ACE_HEADER *)ace)->AceFlags & INHERITED_ACE, +- "ACE has unexpected flags: 0x%x\n", ((ACE_HEADER *)ace)->AceFlags); ++ ok(((ACE_HEADER *)ace)->AceFlags & INHERITED_ACE, ++ "ACE has unexpected flags: 0x%x\n", ((ACE_HEADER *)ace)->AceFlags); + } + LocalFree(pSD); + +diff --git a/server/file.c b/server/file.c +index 6663927..8bcf6ee 100644 +--- a/server/file.c ++++ b/server/file.c +@@ -486,6 +486,29 @@ static void convert_generic_sd( struct security_descriptor *sd ) + } + } + ++static struct security_descriptor *get_xattr_sd( int fd ) ++{ ++ struct security_descriptor *sd; ++ char buffer[XATTR_SIZE_MAX]; ++ int n; ++ ++ n = xattr_fget( fd, WINE_XATTR_SD, buffer, sizeof(buffer) ); ++ if (n == -1 || n < 2 + sizeof(struct security_descriptor)) return NULL; ++ ++ /* validate that we can handle the descriptor */ ++ if (buffer[0] != SECURITY_DESCRIPTOR_REVISION || buffer[1] != 0 || ++ !sd_is_valid( (struct security_descriptor *)&buffer[2], n - 2 )) ++ return NULL; ++ ++ sd = mem_alloc( n - 2 ); ++ if (sd) ++ { ++ memcpy( sd, &buffer[2], n - 2 ); ++ convert_generic_sd( sd ); /* for backwards compatibility */ ++ } ++ return sd; ++} ++ + struct security_descriptor *get_file_sd( struct object *obj, struct fd *fd, mode_t *mode, + uid_t *uid ) + { +@@ -501,9 +524,10 @@ struct security_descriptor *get_file_sd( struct object *obj, struct fd *fd, mode + (st.st_uid == *uid)) + return obj->sd; + +- sd = mode_to_sd( st.st_mode, +- security_unix_uid_to_sid( st.st_uid ), +- token_get_primary_group( current->process->token )); ++ sd = get_xattr_sd( unix_fd ); ++ if (!sd) sd = mode_to_sd( st.st_mode, ++ security_unix_uid_to_sid( st.st_uid ), ++ token_get_primary_group( current->process->token )); + if (!sd) return obj->sd; + + *mode = st.st_mode; +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/server-Stored_ACLs/definition wine-staging-1.7.41~ubuntu12.04.1/patches/server-Stored_ACLs/definition --- wine-staging-1.7.40~ubuntu12.04.1/patches/server-Stored_ACLs/definition 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/server-Stored_ACLs/definition 2015-04-18 23:54:01.000000000 +0000 @@ -1,3 +1,3 @@ -Depends: advapi32-Revert_DACL Depends: ntdll-DOS_Attributes +Depends: server-File_Permissions Fixes: [33576] Support for stored file ACLs diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/setupapi-SetupDiSetDeviceInstallParamsW/0001-setupapi-add-SetupDiSetDeviceInstallParamsW-stub.patch wine-staging-1.7.41~ubuntu12.04.1/patches/setupapi-SetupDiSetDeviceInstallParamsW/0001-setupapi-add-SetupDiSetDeviceInstallParamsW-stub.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/setupapi-SetupDiSetDeviceInstallParamsW/0001-setupapi-add-SetupDiSetDeviceInstallParamsW-stub.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/setupapi-SetupDiSetDeviceInstallParamsW/0001-setupapi-add-SetupDiSetDeviceInstallParamsW-stub.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,51 @@ +From b56da992c9fe09059e922603182063bbb21ccbd1 Mon Sep 17 00:00:00 2001 +From: Austin English +Date: Fri, 3 Apr 2015 17:06:51 -0500 +Subject: setupapi: add SetupDiSetDeviceInstallParamsW stub. + +Fixes https://bugs.winehq.org/show_bug.cgi?id=38347 +--- + dlls/setupapi/devinst.c | 13 +++++++++++++ + dlls/setupapi/setupapi.spec | 2 +- + 2 files changed, 14 insertions(+), 1 deletion(-) + +diff --git a/dlls/setupapi/devinst.c b/dlls/setupapi/devinst.c +index 966af75..eaaa40e 100644 +--- a/dlls/setupapi/devinst.c ++++ b/dlls/setupapi/devinst.c +@@ -3710,6 +3710,19 @@ BOOL WINAPI SetupDiSetDeviceInstallParamsA( + return TRUE; + } + ++/*********************************************************************** ++ * SetupDiSetDeviceInstallParamsW (SETUPAPI.@) ++ */ ++BOOL WINAPI SetupDiSetDeviceInstallParamsW( ++ HDEVINFO DeviceInfoSet, ++ PSP_DEVINFO_DATA DeviceInfoData, ++ PSP_DEVINSTALL_PARAMS_W DeviceInstallParams) ++{ ++ FIXME("(%p, %p, %p) stub\n", DeviceInfoSet, DeviceInfoData, DeviceInstallParams); ++ ++ return TRUE; ++} ++ + static HKEY SETUPDI_OpenDevKey(struct DeviceInfo *devInfo, REGSAM samDesired) + { + HKEY enumKey, key = INVALID_HANDLE_VALUE; +diff --git a/dlls/setupapi/setupapi.spec b/dlls/setupapi/setupapi.spec +index c1dbed5..c8e7677 100644 +--- a/dlls/setupapi/setupapi.spec ++++ b/dlls/setupapi/setupapi.spec +@@ -386,7 +386,7 @@ + @ stdcall SetupDiSetClassInstallParamsA(ptr ptr ptr long) + @ stdcall SetupDiSetClassInstallParamsW(ptr ptr ptr long) + @ stdcall SetupDiSetDeviceInstallParamsA(ptr ptr ptr) +-@ stub SetupDiSetDeviceInstallParamsW ++@ stdcall SetupDiSetDeviceInstallParamsW(ptr ptr ptr) + @ stdcall SetupDiSetDeviceRegistryPropertyA(ptr ptr long ptr ptr) + @ stdcall SetupDiSetDeviceRegistryPropertyW(ptr ptr long ptr ptr) + @ stub SetupDiSetDriverInstallParamsA +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/setupapi-SetupDiSetDeviceInstallParamsW/definition wine-staging-1.7.41~ubuntu12.04.1/patches/setupapi-SetupDiSetDeviceInstallParamsW/definition --- wine-staging-1.7.40~ubuntu12.04.1/patches/setupapi-SetupDiSetDeviceInstallParamsW/definition 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/setupapi-SetupDiSetDeviceInstallParamsW/definition 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1 @@ +Fixes: [29903] Add stub for setupapi.SetupDiSetDeviceInstallParamsW diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/user32-Key_State/0001-user32-After-calling-LL-hooks-the-key-state-cache-ha.patch wine-staging-1.7.41~ubuntu12.04.1/patches/user32-Key_State/0001-user32-After-calling-LL-hooks-the-key-state-cache-ha.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/user32-Key_State/0001-user32-After-calling-LL-hooks-the-key-state-cache-ha.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/user32-Key_State/0001-user32-After-calling-LL-hooks-the-key-state-cache-ha.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,115 +0,0 @@ -From 3f119545bac640a7a65b609ddaa0b82f4725a3f0 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Mon, 14 Jul 2014 05:06:40 +0200 -Subject: user32: After calling LL hooks the key state cache has to be - invalidated globally. - ---- - dlls/user32/hook.c | 2 +- - dlls/user32/input.c | 8 ++++++-- - dlls/user32/message.c | 7 ++++++- - dlls/user32/user_private.h | 3 +++ - 4 files changed, 16 insertions(+), 4 deletions(-) - -diff --git a/dlls/user32/hook.c b/dlls/user32/hook.c -index 2f6b42c..0c6a059 100644 ---- a/dlls/user32/hook.c -+++ b/dlls/user32/hook.c -@@ -437,7 +437,7 @@ static LRESULT call_hook( struct hook_info *info, INT code, WPARAM wparam, LPARA - } - - if (info->id == WH_KEYBOARD_LL || info->id == WH_MOUSE_LL) -- get_user_thread_info()->key_state_time = 0; /* force refreshing the key state cache */ -+ interlocked_xchg_add(&global_key_state_epoch, 1); /* force refreshing the key state cache */ - - return ret; - } -diff --git a/dlls/user32/input.c b/dlls/user32/input.c -index 1f05f34..5671285 100644 ---- a/dlls/user32/input.c -+++ b/dlls/user32/input.c -@@ -52,6 +52,7 @@ - WINE_DEFAULT_DEBUG_CHANNEL(win); - WINE_DECLARE_DEBUG_CHANNEL(keyboard); - -+INT global_key_state_epoch = 0; - - /*********************************************************************** - * get_key_state -@@ -369,6 +370,7 @@ static void check_for_events( UINT flags ) - SHORT WINAPI DECLSPEC_HOTPATCH GetAsyncKeyState( INT key ) - { - struct user_thread_info *thread_info = get_user_thread_info(); -+ INT epoch = global_key_state_epoch; - SHORT ret; - - if (key < 0 || key >= 256) return 0; -@@ -379,7 +381,8 @@ SHORT WINAPI DECLSPEC_HOTPATCH GetAsyncKeyState( INT key ) - { - if (thread_info->key_state && - !(thread_info->key_state[key] & 0xc0) && -- GetTickCount() - thread_info->key_state_time < 50) -+ GetTickCount() - thread_info->key_state_time < 50 && -+ thread_info->key_state_epoch == epoch) - return 0; - - if (!thread_info->key_state) thread_info->key_state = HeapAlloc( GetProcessHeap(), 0, 256 ); -@@ -394,7 +397,8 @@ SHORT WINAPI DECLSPEC_HOTPATCH GetAsyncKeyState( INT key ) - { - if (reply->state & 0x40) ret |= 0x0001; - if (reply->state & 0x80) ret |= 0x8000; -- thread_info->key_state_time = GetTickCount(); -+ thread_info->key_state_time = GetTickCount(); -+ thread_info->key_state_epoch = epoch; - } - } - SERVER_END_REQ; -diff --git a/dlls/user32/message.c b/dlls/user32/message.c -index eac4e4d..d59e342 100644 ---- a/dlls/user32/message.c -+++ b/dlls/user32/message.c -@@ -3294,6 +3294,7 @@ NTSTATUS send_hardware_message( HWND hwnd, const INPUT *input, UINT flags ) - struct send_message_info info; - int prev_x, prev_y, new_x, new_y; - NTSTATUS ret; -+ INT epoch = global_key_state_epoch; - BOOL wait; - - info.type = MSG_HARDWARE; -@@ -3341,7 +3342,11 @@ NTSTATUS send_hardware_message( HWND hwnd, const INPUT *input, UINT flags ) - - if (!ret) - { -- if (thread_info->key_state) thread_info->key_state_time = GetTickCount(); -+ if (thread_info->key_state) -+ { -+ thread_info->key_state_time = GetTickCount(); -+ thread_info->key_state_epoch = epoch; -+ } - if ((flags & SEND_HWMSG_INJECTED) && (prev_x != new_x || prev_y != new_y)) - USER_Driver->pSetCursorPos( new_x, new_y ); - } -diff --git a/dlls/user32/user_private.h b/dlls/user32/user_private.h -index 919540d..4380a00 100644 ---- a/dlls/user32/user_private.h -+++ b/dlls/user32/user_private.h -@@ -185,6 +185,7 @@ struct user_thread_info - ULONG_PTR GetMessageExtraInfoVal; /* Value for GetMessageExtraInfo */ - UINT active_hooks; /* Bitmap of active hooks */ - UINT key_state_time; /* Time of last key state refresh */ -+ INT key_state_epoch; /* Counter to invalidate the key state */ - BYTE *key_state; /* Cache of global key state */ - HWND top_window; /* Desktop window */ - HWND msg_window; /* HWND_MESSAGE parent window */ -@@ -193,6 +194,8 @@ struct user_thread_info - - C_ASSERT( sizeof(struct user_thread_info) <= sizeof(((TEB *)0)->Win32ClientInfo) ); - -+extern INT global_key_state_epoch DECLSPEC_HIDDEN; -+ - struct hook_extra_info - { - HHOOK handle; --- -2.3.3 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/user32-Key_State/definition wine-staging-1.7.41~ubuntu12.04.1/patches/user32-Key_State/definition --- wine-staging-1.7.40~ubuntu12.04.1/patches/user32-Key_State/definition 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/user32-Key_State/definition 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -Fixes: [29871] Invalidate key state cache globally after calling LL hooks diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wbemprox-Localhost/0001-wbemprox-Allow-connecting-to-localhost.patch wine-staging-1.7.41~ubuntu12.04.1/patches/wbemprox-Localhost/0001-wbemprox-Allow-connecting-to-localhost.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/wbemprox-Localhost/0001-wbemprox-Allow-connecting-to-localhost.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wbemprox-Localhost/0001-wbemprox-Allow-connecting-to-localhost.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,29 @@ +From 87053e0d99e5e8691b571729e66f9c3ff8272569 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20M=C3=BCller?= +Date: Thu, 16 Apr 2015 21:27:22 +0200 +Subject: wbemprox: Allow connecting to localhost. + +--- + dlls/wbemprox/wbemlocator.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/dlls/wbemprox/wbemlocator.c b/dlls/wbemprox/wbemlocator.c +index 463e6d4..b50d7cb 100644 +--- a/dlls/wbemprox/wbemlocator.c ++++ b/dlls/wbemprox/wbemlocator.c +@@ -89,10 +89,11 @@ static HRESULT WINAPI wbem_locator_QueryInterface( + static BOOL is_local_machine( const WCHAR *server ) + { + static const WCHAR dotW[] = {'.',0}; ++ static const WCHAR localhostW[] = {'l','o','c','a','l','h','o','s','t',0}; + WCHAR buffer[MAX_COMPUTERNAME_LENGTH + 1]; + DWORD len = sizeof(buffer) / sizeof(buffer[0]); + +- if (!server || !strcmpW( server, dotW )) return TRUE; ++ if (!server || !strcmpW( server, dotW ) || !strcmpW( server, localhostW )) return TRUE; + if (GetComputerNameW( buffer, &len ) && !strcmpiW( server, buffer )) return TRUE; + return FALSE; + } +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wbemprox-Localhost/definition wine-staging-1.7.41~ubuntu12.04.1/patches/wbemprox-Localhost/definition --- wine-staging-1.7.40~ubuntu12.04.1/patches/wbemprox-Localhost/definition 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wbemprox-Localhost/definition 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1 @@ +Fixes: Recognize localhost as local machine in wbemprox diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wbemprox-Win32_SystemEnclosure/0001-wbemprox-tests-Actually-test-the-return-value-of-IEn.patch wine-staging-1.7.41~ubuntu12.04.1/patches/wbemprox-Win32_SystemEnclosure/0001-wbemprox-tests-Actually-test-the-return-value-of-IEn.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/wbemprox-Win32_SystemEnclosure/0001-wbemprox-tests-Actually-test-the-return-value-of-IEn.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wbemprox-Win32_SystemEnclosure/0001-wbemprox-tests-Actually-test-the-return-value-of-IEn.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,26 @@ +From edbc92c9930ae5778ddee9426218f1b4c7ee10bb Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Fri, 17 Apr 2015 06:49:55 +0200 +Subject: wbemprox/tests: Actually test the return value of + IEnumWbemClassObject_Next. + +--- + dlls/wbemprox/tests/query.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/dlls/wbemprox/tests/query.c b/dlls/wbemprox/tests/query.c +index 7e031d2..88e8fb4 100644 +--- a/dlls/wbemprox/tests/query.c ++++ b/dlls/wbemprox/tests/query.c +@@ -382,7 +382,7 @@ static void test_Win32_ComputerSystem( IWbemServices *services ) + return; + } + +- IEnumWbemClassObject_Next( result, 10000, 1, &service, &count ); ++ hr = IEnumWbemClassObject_Next( result, 10000, 1, &service, &count ); + ok( hr == S_OK, "got %08x\n", hr ); + + type = 0xdeadbeef; +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wbemprox-Win32_SystemEnclosure/0002-wbemprox-tests-Fix-memory-leak-when-tests-are-skippe.patch wine-staging-1.7.41~ubuntu12.04.1/patches/wbemprox-Win32_SystemEnclosure/0002-wbemprox-tests-Fix-memory-leak-when-tests-are-skippe.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/wbemprox-Win32_SystemEnclosure/0002-wbemprox-tests-Fix-memory-leak-when-tests-are-skippe.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wbemprox-Win32_SystemEnclosure/0002-wbemprox-tests-Fix-memory-leak-when-tests-are-skippe.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,58 @@ +From 2534d6561452c812cf539c2ca81c464bee83521d Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Fri, 17 Apr 2015 07:58:06 +0200 +Subject: wbemprox/tests: Fix memory leak when tests are skipped. + +--- + dlls/wbemprox/tests/query.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +diff --git a/dlls/wbemprox/tests/query.c b/dlls/wbemprox/tests/query.c +index 88e8fb4..02774db 100644 +--- a/dlls/wbemprox/tests/query.c ++++ b/dlls/wbemprox/tests/query.c +@@ -158,7 +158,7 @@ static void test_Win32_Service( IWbemServices *services ) + if (hr != S_OK) + { + win_skip( "Win32_Service not available\n" ); +- return; ++ goto out; + } + type = 0xdeadbeef; + VariantInit( &state ); +@@ -232,6 +232,7 @@ static void test_Win32_Service( IWbemServices *services ) + ok( hr == S_OK, "got %08x\n", hr ); + if (service) IWbemClassObject_Release( service ); + ++out: + SysFreeString( empty ); + SysFreeString( class ); + } +@@ -372,14 +373,14 @@ static void test_Win32_ComputerSystem( IWbemServices *services ) + if (!compname[0] || !username[0]) + { + skip( "Failed to get user or computer name\n" ); +- return; ++ goto out; + } + + hr = IWbemServices_ExecQuery( services, wql, query, 0, NULL, &result ); + if (hr != S_OK) + { + win_skip( "Win32_ComputerSystem not available\n" ); +- return; ++ goto out; + } + + hr = IEnumWbemClassObject_Next( result, 10000, 1, &service, &count ); +@@ -405,6 +406,7 @@ static void test_Win32_ComputerSystem( IWbemServices *services ) + + IWbemClassObject_Release( service ); + IEnumWbemClassObject_Release( result ); ++out: + SysFreeString( query ); + SysFreeString( wql ); + } +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wbemprox-Win32_SystemEnclosure/0003-wbemprox-Fix-handling-of-arrays-as-query-results.patch wine-staging-1.7.41~ubuntu12.04.1/patches/wbemprox-Win32_SystemEnclosure/0003-wbemprox-Fix-handling-of-arrays-as-query-results.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/wbemprox-Win32_SystemEnclosure/0003-wbemprox-Fix-handling-of-arrays-as-query-results.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wbemprox-Win32_SystemEnclosure/0003-wbemprox-Fix-handling-of-arrays-as-query-results.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,75 @@ +From 97f87fdced630139111ed66af70a0ce01b7a28d8 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Fri, 17 Apr 2015 09:38:15 +0200 +Subject: wbemprox: Fix handling of arrays as query results. + +--- + dlls/wbemprox/builtin.c | 22 ++++++++++++++++------ + dlls/wbemprox/table.c | 7 ++++++- + 2 files changed, 22 insertions(+), 7 deletions(-) + +diff --git a/dlls/wbemprox/builtin.c b/dlls/wbemprox/builtin.c +index 8ba2642..f1f51c5 100644 +--- a/dlls/wbemprox/builtin.c ++++ b/dlls/wbemprox/builtin.c +@@ -938,7 +938,7 @@ struct record_service + struct record_sid + { + const WCHAR *accountname; +- const UINT8 *binaryrepresentation; ++ const struct array *binaryrepresentation; + const WCHAR *referenceddomainname; + const WCHAR *sid; + UINT32 sidlength; +@@ -2614,12 +2614,22 @@ static WCHAR *get_accountname( LSA_TRANSLATED_NAME *name ) + if (!name || !name->Name.Buffer) return NULL; + return heap_strdupW( name->Name.Buffer ); + } +-static UINT8 *get_binaryrepresentation( PSID sid, UINT len ) ++static struct array *get_binaryrepresentation( PSID sid, UINT len ) + { +- UINT8 *ret = heap_alloc( len ); +- if (!ret) return NULL; +- memcpy( ret, sid, len ); +- return ret; ++ struct array *array = heap_alloc( sizeof(struct array) ); ++ if (array) ++ { ++ UINT8 *ret = heap_alloc( len ); ++ if (ret) ++ { ++ memcpy( ret, sid, len ); ++ array->count = len; ++ array->ptr = ret; ++ return array; ++ } ++ heap_free( array ); ++ } ++ return NULL; + } + static WCHAR *get_referenceddomainname( LSA_REFERENCED_DOMAIN_LIST *domain ) + { +diff --git a/dlls/wbemprox/table.c b/dlls/wbemprox/table.c +index 0c57f26..273b8cb 100644 +--- a/dlls/wbemprox/table.c ++++ b/dlls/wbemprox/table.c +@@ -288,10 +288,15 @@ void free_row_values( const struct table *table, UINT row ) + if (!(table->columns[i].type & COL_FLAG_DYNAMIC)) continue; + + type = table->columns[i].type & COL_TYPE_MASK; +- if (type == CIM_STRING || type == CIM_DATETIME || (type & CIM_FLAG_ARRAY)) ++ if (type == CIM_STRING || type == CIM_DATETIME) + { + if (get_value( table, row, i, &val ) == S_OK) heap_free( (void *)(INT_PTR)val ); + } ++ else if (type & CIM_FLAG_ARRAY) ++ { ++ if (get_value( table, row, i, &val ) == S_OK) ++ destroy_array( (void *)(INT_PTR)val, type & CIM_TYPE_MASK ); ++ } + } + } + +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wbemprox-Win32_SystemEnclosure/0004-wbemprox-Add-support-for-Win32_SystemEnclosure.patch wine-staging-1.7.41~ubuntu12.04.1/patches/wbemprox-Win32_SystemEnclosure/0004-wbemprox-Add-support-for-Win32_SystemEnclosure.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/wbemprox-Win32_SystemEnclosure/0004-wbemprox-Add-support-for-Win32_SystemEnclosure.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wbemprox-Win32_SystemEnclosure/0004-wbemprox-Add-support-for-Win32_SystemEnclosure.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,129 @@ +From 7a6e4a5a97cf2dc1c2ffbbee5a4acbea9c762977 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20M=C3=BCller?= +Date: Thu, 16 Apr 2015 21:46:13 +0200 +Subject: wbemprox: Add support for Win32_SystemEnclosure. + +--- + dlls/wbemprox/builtin.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 57 insertions(+) + +diff --git a/dlls/wbemprox/builtin.c b/dlls/wbemprox/builtin.c +index f1f51c5..21d0030 100644 +--- a/dlls/wbemprox/builtin.c ++++ b/dlls/wbemprox/builtin.c +@@ -98,6 +98,8 @@ static const WCHAR class_sidW[] = + {'W','i','n','3','2','_','S','I','D',0}; + static const WCHAR class_sounddeviceW[] = + {'W','i','n','3','2','_','S','o','u','n','d','D','e','v','i','c','e',0}; ++static const WCHAR class_systemenclosureW[] = ++ {'W','i','n','3','2','_','S','y','s','t','e','m','E','n','c','l','o','s','u','r','e',0}; + static const WCHAR class_videocontrollerW[] = + {'W','i','n','3','2','_','V','i','d','e','o','C','o','n','t','r','o','l','l','e','r',0}; + +@@ -133,6 +135,8 @@ static const WCHAR prop_capacityW[] = + {'C','a','p','a','c','i','t','y',0}; + static const WCHAR prop_captionW[] = + {'C','a','p','t','i','o','n',0}; ++static const WCHAR prop_chassistypesW[] = ++ {'C','h','a','s','s','i','s','T','y','p','e','s',0}; + static const WCHAR prop_classW[] = + {'C','l','a','s','s',0}; + static const WCHAR prop_codesetW[] = +@@ -225,6 +229,8 @@ static const WCHAR prop_localdatetimeW[] = + {'L','o','c','a','l','D','a','t','e','T','i','m','e',0}; + static const WCHAR prop_localeW[] = + {'L','o','c','a','l','e',0}; ++static const WCHAR prop_lockpresentW[] = ++ {'L','o','c','k','P','r','e','s','e','n','t',0}; + static const WCHAR prop_macaddressW[] = + {'M','A','C','A','d','d','r','e','s','s',0}; + static const WCHAR prop_manufacturerW[] = +@@ -590,6 +596,16 @@ static const struct column col_stdregprov[] = + { method_enumvaluesW, CIM_FLAG_ARRAY|COL_FLAG_METHOD }, + { method_getstringvalueW, CIM_FLAG_ARRAY|COL_FLAG_METHOD } + }; ++static const struct column col_systemenclosure[] = ++{ ++ { prop_captionW, CIM_STRING }, ++ { prop_chassistypesW, CIM_UINT16|CIM_FLAG_ARRAY }, ++ { prop_descriptionW, CIM_STRING }, ++ { prop_lockpresentW, CIM_BOOLEAN }, ++ { prop_manufacturerW, CIM_STRING }, ++ { prop_nameW, CIM_STRING }, ++ { prop_tagW, CIM_STRING }, ++}; + static const struct column col_systemsecurity[] = + { + { method_getsdW, CIM_FLAG_ARRAY|COL_FLAG_METHOD }, +@@ -702,6 +718,12 @@ static const WCHAR physicalmedia_tagW[] = + {'\\','\\','.','\\','P','H','Y','S','I','C','A','L','D','R','I','V','E','0',0}; + static const WCHAR sounddevice_productnameW[] = + {'W','i','n','e',' ','A','u','d','i','o',' ','D','e','v','i','c','e',0}; ++static const WCHAR systemenclosure_systemenclosureW[] = ++ {'S','y','s','t','e','m',' ','E','n','c','l','o','s','u','r','e',0}; ++static const WCHAR systemenclosure_tagW[] = ++ {'S','y','s','t','e','m',' ','E','n','c','l','o','s','u','r','e',' ','0',0}; ++static const WCHAR systemenclosure_ManufacturerW[] = ++ {'W','i','n','e',0}; + static const WCHAR videocontroller_dactypeW[] = + {'I','n','t','e','g','r','a','t','e','d',' ','R','A','M','D','A','C',0}; + static const WCHAR videocontroller_deviceidW[] = +@@ -960,6 +982,16 @@ struct record_systemsecurity + class_method *getsd; + class_method *setsd; + }; ++struct record_systemenclosure ++{ ++ const WCHAR *caption; ++ const struct array *chassistypes; ++ const WCHAR *description; ++ int lockpresent; ++ const WCHAR *manufacturer; ++ const WCHAR *name; ++ const WCHAR *tag; ++}; + struct record_videocontroller + { + const WCHAR *adapter_dactype; +@@ -1044,6 +1076,30 @@ static const struct record_stdregprov data_stdregprov[] = + { + { reg_enum_key, reg_enum_values, reg_get_stringvalue } + }; ++ ++static UINT16 chassistypes[] = ++{ ++ 1, ++}; ++ ++static const struct array chassistypes_array = ++{ ++ sizeof(chassistypes)/sizeof(chassistypes[0]), ++ &chassistypes ++}; ++ ++static const struct record_systemenclosure data_systemenclosure[] = ++{ ++ { ++ systemenclosure_systemenclosureW, ++ &chassistypes_array, ++ systemenclosure_systemenclosureW, ++ FALSE, ++ systemenclosure_ManufacturerW, ++ systemenclosure_systemenclosureW, ++ systemenclosure_tagW, ++ } ++}; + static const struct record_systemsecurity data_systemsecurity[] = + { + { security_get_sd, security_set_sd } +@@ -2817,6 +2873,7 @@ static struct table builtin_classes[] = + { class_sounddeviceW, SIZEOF(col_sounddevice), col_sounddevice, SIZEOF(data_sounddevice), 0, (BYTE *)data_sounddevice }, + { class_stdregprovW, SIZEOF(col_stdregprov), col_stdregprov, SIZEOF(data_stdregprov), 0, (BYTE *)data_stdregprov }, + { class_systemsecurityW, SIZEOF(col_systemsecurity), col_systemsecurity, SIZEOF(data_systemsecurity), 0, (BYTE *)data_systemsecurity }, ++ { class_systemenclosureW, SIZEOF(col_systemenclosure), col_systemenclosure, SIZEOF(data_systemenclosure), 0, (BYTE *)data_systemenclosure }, + { class_videocontrollerW, SIZEOF(col_videocontroller), col_videocontroller, 0, 0, NULL, fill_videocontroller } + }; + +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wbemprox-Win32_SystemEnclosure/definition wine-staging-1.7.41~ubuntu12.04.1/patches/wbemprox-Win32_SystemEnclosure/definition --- wine-staging-1.7.40~ubuntu12.04.1/patches/wbemprox-Win32_SystemEnclosure/definition 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wbemprox-Win32_SystemEnclosure/definition 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1 @@ +Fixes: [34517] Add support for wbemprox Win32_SystemEnclosure table diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/winebuild-LinkerVersion/0001-winebuild-Set-a-valid-major-and-minor-linker-version.patch wine-staging-1.7.41~ubuntu12.04.1/patches/winebuild-LinkerVersion/0001-winebuild-Set-a-valid-major-and-minor-linker-version.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/winebuild-LinkerVersion/0001-winebuild-Set-a-valid-major-and-minor-linker-version.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/winebuild-LinkerVersion/0001-winebuild-Set-a-valid-major-and-minor-linker-version.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,14 +1,14 @@ -From 879f9aff357d593c169f2b59728de63792ec7f00 Mon Sep 17 00:00:00 2001 +From be7a50ab68ad481de086a845d3b70f9fa11824cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Thu, 21 Aug 2014 05:57:24 +0200 -Subject: winebuild: Set a valid major and minor linker version +Subject: winebuild: Set a valid major and minor linker version. (v2) --- - tools/winebuild/spec32.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + tools/winebuild/spec32.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/winebuild/spec32.c b/tools/winebuild/spec32.c -index 35fe144..c2a3675 100644 +index 98060b5..0f4fdbc 100644 --- a/tools/winebuild/spec32.c +++ b/tools/winebuild/spec32.c @@ -529,8 +529,8 @@ void output_module( DLLSPEC *spec ) @@ -22,6 +22,17 @@ output( "\t.long 0\n" ); /* SizeOfCode */ output( "\t.long 0\n" ); /* SizeOfInitializedData */ output( "\t.long 0\n" ); /* SizeOfUninitializedData */ +@@ -710,8 +710,8 @@ void output_fake_module( DLLSPEC *spec ) + put_word( get_ptr_size() == 8 ? + IMAGE_NT_OPTIONAL_HDR64_MAGIC : + IMAGE_NT_OPTIONAL_HDR32_MAGIC ); /* Magic */ +- put_byte( 0 ); /* MajorLinkerVersion */ +- put_byte( 0 ); /* MinorLinkerVersion */ ++ put_byte( 7 ); /* MajorLinkerVersion */ ++ put_byte( 10 ); /* MinorLinkerVersion */ + put_dword( text_size ); /* SizeOfCode */ + put_dword( 0 ); /* SizeOfInitializedData */ + put_dword( 0 ); /* SizeOfUninitializedData */ -- -1.9.1 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/winecfg-Staging/0002-winecfg-Add-checkbox-to-enable-disable-vaapi-GPU-dec.patch wine-staging-1.7.41~ubuntu12.04.1/patches/winecfg-Staging/0002-winecfg-Add-checkbox-to-enable-disable-vaapi-GPU-dec.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/winecfg-Staging/0002-winecfg-Add-checkbox-to-enable-disable-vaapi-GPU-dec.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/winecfg-Staging/0002-winecfg-Add-checkbox-to-enable-disable-vaapi-GPU-dec.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,13 +1,13 @@ -From 9741c7941627cf4a0aba5e6dcd02bc1d991cea7f Mon Sep 17 00:00:00 2001 +From f54357a1e2246b37b1f69938d2c4f0ed7ee8822d Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Sat, 21 Feb 2015 23:37:26 +0100 Subject: winecfg: Add checkbox to enable/disable vaapi GPU decoder. --- programs/winecfg/resource.h | 1 + - programs/winecfg/staging.c | 20 ++++++++++++++++++++ + programs/winecfg/staging.c | 30 ++++++++++++++++++++++++++++++ programs/winecfg/winecfg.rc | 1 + - 3 files changed, 22 insertions(+) + 3 files changed, 32 insertions(+) diff --git a/programs/winecfg/resource.h b/programs/winecfg/resource.h index 02d90fd..4b21d16 100644 @@ -22,10 +22,10 @@ /* About tab */ #define IDC_ABT_OWNER 8432 diff --git a/programs/winecfg/staging.c b/programs/winecfg/staging.c -index 09c0d3f..bda2e6e 100644 +index 09c0d3f..40b6642 100644 --- a/programs/winecfg/staging.c +++ b/programs/winecfg/staging.c -@@ -49,10 +49,26 @@ static void csmt_set(BOOL status) +@@ -49,10 +49,36 @@ static void csmt_set(BOOL status) set_reg_key(config_key, keypath("DllRedirects"), "wined3d", status ? "wined3d-csmt.dll" : NULL); } @@ -34,25 +34,35 @@ + */ +static BOOL vaapi_get(void) +{ ++#ifdef HAVE_VAAPI + BOOL ret; + char *value = get_reg_key(config_key, keypath("DXVA2"), "backend", NULL); + ret = (value && !strcmp(value, "va")); + HeapFree(GetProcessHeap(), 0, value); + return ret; ++#else ++ return FALSE; ++#endif +} +static void vaapi_set(BOOL status) +{ ++#ifdef HAVE_VAAPI + set_reg_key(config_key, keypath("DXVA2"), "backend", status ? "va" : NULL); ++#endif +} static void load_staging_settings(HWND dialog) { CheckDlgButton(dialog, IDC_ENABLE_CSMT, csmt_get() ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(dialog, IDC_ENABLE_VAAPI, vaapi_get() ? BST_CHECKED : BST_UNCHECKED); ++ ++#ifndef HAVE_VAAPI ++ disable(IDC_ENABLE_VAAPI); ++#endif } INT_PTR CALLBACK StagingDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) -@@ -82,6 +98,10 @@ INT_PTR CALLBACK StagingDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPar +@@ -82,6 +108,10 @@ INT_PTR CALLBACK StagingDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPar csmt_set(IsDlgButtonChecked(hDlg, IDC_ENABLE_CSMT) == BST_CHECKED); SendMessageW(GetParent(hDlg), PSM_CHANGED, 0, 0); return TRUE; @@ -64,7 +74,7 @@ break; } diff --git a/programs/winecfg/winecfg.rc b/programs/winecfg/winecfg.rc -index a723880..694bd73 100644 +index 5ceed16..171672d 100644 --- a/programs/winecfg/winecfg.rc +++ b/programs/winecfg/winecfg.rc @@ -314,6 +314,7 @@ BEGIN @@ -76,5 +86,5 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL -- -2.1.0 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/winecfg-Staging/0003-winecfg-Add-checkbox-to-enable-disable-EAX-support.patch wine-staging-1.7.41~ubuntu12.04.1/patches/winecfg-Staging/0003-winecfg-Add-checkbox-to-enable-disable-EAX-support.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/winecfg-Staging/0003-winecfg-Add-checkbox-to-enable-disable-EAX-support.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/winecfg-Staging/0003-winecfg-Add-checkbox-to-enable-disable-EAX-support.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,81 @@ +From 9732684163cf035ea9fca8ac8700562159150190 Mon Sep 17 00:00:00 2001 +From: Mark Harmstone +Date: Sun, 5 Apr 2015 14:16:11 +0100 +Subject: winecfg: Add checkbox to enable/disable EAX support. + +--- + programs/winecfg/resource.h | 1 + + programs/winecfg/staging.c | 21 +++++++++++++++++++++ + programs/winecfg/winecfg.rc | 1 + + 3 files changed, 23 insertions(+) + +diff --git a/programs/winecfg/resource.h b/programs/winecfg/resource.h +index 4b21d16..a78d9af 100644 +--- a/programs/winecfg/resource.h ++++ b/programs/winecfg/resource.h +@@ -213,6 +213,7 @@ + /* Staging tab */ + #define IDC_ENABLE_CSMT 9001 + #define IDC_ENABLE_VAAPI 9002 ++#define IDC_ENABLE_EAX 9003 + + /* About tab */ + #define IDC_ABT_OWNER 8432 +diff --git a/programs/winecfg/staging.c b/programs/winecfg/staging.c +index 40b6642..5a4dd16 100644 +--- a/programs/winecfg/staging.c ++++ b/programs/winecfg/staging.c +@@ -71,10 +71,27 @@ static void vaapi_set(BOOL status) + #endif + } + ++/* ++ * EAX ++ */ ++static BOOL eax_get(void) ++{ ++ BOOL ret; ++ char *value = get_reg_key(config_key, keypath("DirectSound"), "EAXEnabled", "N"); ++ ret = IS_OPTION_TRUE(*value); ++ HeapFree(GetProcessHeap(), 0, value); ++ return ret; ++} ++static void eax_set(BOOL status) ++{ ++ set_reg_key(config_key, keypath("DirectSound"), "EAXEnabled", status ? "Y" : "N"); ++} ++ + static void load_staging_settings(HWND dialog) + { + CheckDlgButton(dialog, IDC_ENABLE_CSMT, csmt_get() ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(dialog, IDC_ENABLE_VAAPI, vaapi_get() ? BST_CHECKED : BST_UNCHECKED); ++ CheckDlgButton(dialog, IDC_ENABLE_EAX, eax_get() ? BST_CHECKED : BST_UNCHECKED); + + #ifndef HAVE_VAAPI + disable(IDC_ENABLE_VAAPI); +@@ -112,6 +129,10 @@ INT_PTR CALLBACK StagingDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPar + vaapi_set(IsDlgButtonChecked(hDlg, IDC_ENABLE_VAAPI) == BST_CHECKED); + SendMessageW(GetParent(hDlg), PSM_CHANGED, 0, 0); + return TRUE; ++ case IDC_ENABLE_EAX: ++ eax_set(IsDlgButtonChecked(hDlg, IDC_ENABLE_EAX) == BST_CHECKED); ++ SendMessageW(GetParent(hDlg), PSM_CHANGED, 0, 0); ++ return TRUE; + } + break; + } +diff --git a/programs/winecfg/winecfg.rc b/programs/winecfg/winecfg.rc +index 171672d..0f1af19 100644 +--- a/programs/winecfg/winecfg.rc ++++ b/programs/winecfg/winecfg.rc +@@ -315,6 +315,7 @@ BEGIN + LTEXT "The following settings are experimental and may break stuff!\nMake sure to reset them again in case of a problem.",IDC_STATIC,16,16,230,16 + CONTROL "Enable &CSMT for better graphic performance",IDC_ENABLE_CSMT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,40,230,8 + CONTROL "Enable &VAAPI as backend for DXVA2 GPU decoding",IDC_ENABLE_VAAPI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,55,230,8 ++ CONTROL "Enable Environmental Audio E&xtensions (EAX)",IDC_ENABLE_EAX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,70,230,8 + END + + LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wineconsole-Buffer_Size/0001-wineconsole-Increase-buffer-to-allow-larger-commandl.patch wine-staging-1.7.41~ubuntu12.04.1/patches/wineconsole-Buffer_Size/0001-wineconsole-Increase-buffer-to-allow-larger-commandl.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/wineconsole-Buffer_Size/0001-wineconsole-Increase-buffer-to-allow-larger-commandl.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wineconsole-Buffer_Size/0001-wineconsole-Increase-buffer-to-allow-larger-commandl.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -From a98938b7cea50114a55f24e608581dc27eac9cab Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Wed, 4 Mar 2015 21:16:58 +0100 -Subject: wineconsole: Increase buffer to allow larger commandline strings. - ---- - programs/wineconsole/wineconsole.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/programs/wineconsole/wineconsole.c b/programs/wineconsole/wineconsole.c -index 3c2faf5..038b360 100644 ---- a/programs/wineconsole/wineconsole.c -+++ b/programs/wineconsole/wineconsole.c -@@ -830,7 +830,7 @@ int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmdLine, INT nCmdSh - break; - case from_process_name: - { -- WCHAR buffer[256]; -+ static WCHAR buffer[4096]; - - MultiByteToWideChar(CP_ACP, 0, wci.ptr, -1, buffer, sizeof(buffer) / sizeof(buffer[0])); - --- -2.3.0 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wineconsole-Buffer_Size/definition wine-staging-1.7.41~ubuntu12.04.1/patches/wineconsole-Buffer_Size/definition --- wine-staging-1.7.40~ubuntu12.04.1/patches/wineconsole-Buffer_Size/definition 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wineconsole-Buffer_Size/definition 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -Fixes: [34814] Increase wineconsole commandline buffer size diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Helper/0001-wined3d-Merge-get_pitch-functions.patch wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Helper/0001-wined3d-Merge-get_pitch-functions.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Helper/0001-wined3d-Merge-get_pitch-functions.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Helper/0001-wined3d-Merge-get_pitch-functions.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,4 +1,4 @@ -From 795be1ce7b544a08dcdf72a128a3e3d98998ba02 Mon Sep 17 00:00:00 2001 +From be8e04d375183cbd4dbca29f4ffe6473ef32a7ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Thu, 19 Sep 2013 14:22:24 +0200 Subject: wined3d: Merge get_pitch functions. @@ -15,10 +15,10 @@ 8 files changed, 81 insertions(+), 81 deletions(-) diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c -index a387d12..9a8d94f 100644 +index 0d2d731..27acbed 100644 --- a/dlls/ddraw/surface.c +++ b/dlls/ddraw/surface.c -@@ -6158,6 +6158,10 @@ void ddraw_surface_init(struct ddraw_surface *surface, struct ddraw *ddraw, stru +@@ -6209,6 +6209,10 @@ void ddraw_surface_init(struct ddraw_surface *surface, struct ddraw *ddraw, stru DDSURFACEDESC2 *desc = &surface->surface_desc; struct wined3d_resource_desc wined3d_desc; unsigned int version = texture->version; @@ -29,7 +29,7 @@ surface->IDirectDrawSurface7_iface.lpVtbl = &ddraw_surface7_vtbl; surface->IDirectDrawSurface4_iface.lpVtbl = &ddraw_surface4_vtbl; -@@ -6188,7 +6192,7 @@ void ddraw_surface_init(struct ddraw_surface *surface, struct ddraw *ddraw, stru +@@ -6239,7 +6243,7 @@ void ddraw_surface_init(struct ddraw_surface *surface, struct ddraw *ddraw, stru } *desc = texture->surface_desc; @@ -38,7 +38,7 @@ desc->dwWidth = wined3d_desc.width; desc->dwHeight = wined3d_desc.height; surface->first_attached = surface; -@@ -6198,14 +6202,16 @@ void ddraw_surface_init(struct ddraw_surface *surface, struct ddraw *ddraw, stru +@@ -6249,14 +6253,16 @@ void ddraw_surface_init(struct ddraw_surface *surface, struct ddraw *ddraw, stru if (desc->dwFlags & DDSD_LPSURFACE) desc->u1.dwLinearSize = ~0u; else @@ -97,7 +97,7 @@ + TRACE("Returning row pitch %u, slice pitch %u.\n", *row_pitch, *slice_pitch); +} diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c -index 3e3cf67..c185a93 100644 +index a49f521..5a8b250 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c @@ -363,6 +363,7 @@ static HRESULT surface_create_dib_section(struct wined3d_surface *surface) @@ -122,7 +122,7 @@ b_info->bmiHeader.biPlanes = 1; b_info->bmiHeader.biBitCount = format->byte_count * 8; -@@ -1358,14 +1360,14 @@ static void surface_download_data(struct wined3d_surface *surface, const struct +@@ -1302,14 +1304,14 @@ static void surface_download_data(struct wined3d_surface *surface, const struct void *mem; GLenum gl_format = format->glFormat; GLenum gl_type = format->glType; @@ -140,7 +140,7 @@ src_pitch = (src_pitch + alignment - 1) & ~(alignment - 1); mem = HeapAlloc(GetProcessHeap(), 0, src_pitch * surface->pow2Height); } -@@ -1452,12 +1454,12 @@ static void surface_download_data(struct wined3d_surface *surface, const struct +@@ -1396,12 +1398,12 @@ static void surface_download_data(struct wined3d_surface *surface, const struct * won't be released, and doesn't have to be re-read. */ src_data = mem; dst_data = data.addr; @@ -156,7 +156,7 @@ } HeapFree(GetProcessHeap(), 0, mem); -@@ -1611,7 +1613,7 @@ HRESULT surface_upload_from_surface(struct wined3d_surface *dst_surface, const P +@@ -1555,7 +1557,7 @@ HRESULT surface_upload_from_surface(struct wined3d_surface *dst_surface, const P UINT update_w, update_h; UINT dst_w, dst_h; RECT r, dst_rect; @@ -165,8 +165,8 @@ POINT p; TRACE("dst_surface %p, dst_point %s, src_surface %p, src_rect %s.\n", -@@ -1697,10 +1699,10 @@ HRESULT surface_upload_from_surface(struct wined3d_surface *dst_surface, const P - wined3d_texture_bind(dst_surface->container, context, FALSE); +@@ -1641,10 +1643,10 @@ HRESULT surface_upload_from_surface(struct wined3d_surface *dst_surface, const P + wined3d_texture_bind_and_dirtify(dst_surface->container, context, FALSE); surface_get_memory(src_surface, &data, src_surface->locations); - src_pitch = wined3d_surface_get_pitch(src_surface); @@ -176,9 +176,9 @@ - src_pitch, dst_point, FALSE, wined3d_const_bo_address(&data)); + src_row_pitch, dst_point, FALSE, wined3d_const_bo_address(&data)); - context_invalidate_active_texture(context); + context_release(context); -@@ -1983,25 +1985,6 @@ HRESULT CDECL wined3d_surface_restore(struct wined3d_surface *surface) +@@ -1925,25 +1927,6 @@ HRESULT CDECL wined3d_surface_restore(struct wined3d_surface *surface) return WINED3D_OK; } @@ -204,7 +204,7 @@ HRESULT CDECL wined3d_surface_set_overlay_position(struct wined3d_surface *surface, LONG x, LONG y) { LONG w, h; -@@ -2182,20 +2165,21 @@ HRESULT wined3d_surface_update_desc(struct wined3d_surface *surface, +@@ -2124,20 +2107,21 @@ HRESULT wined3d_surface_update_desc(struct wined3d_surface *surface, surface->resource.map_binding = WINED3D_LOCATION_USER_MEMORY; valid_location = WINED3D_LOCATION_USER_MEMORY; } @@ -232,7 +232,7 @@ } /* The format might be changed to a format that needs conversion. -@@ -2814,7 +2798,7 @@ HRESULT CDECL wined3d_surface_map(struct wined3d_surface *surface, +@@ -2756,7 +2740,7 @@ HRESULT CDECL wined3d_surface_map(struct wined3d_surface *surface, if (format->flags & WINED3DFMT_FLAG_BROKEN_PITCH) map_desc->row_pitch = surface->resource.width * format->byte_count; else @@ -241,7 +241,7 @@ map_desc->slice_pitch = 0; if (!rect) -@@ -2941,6 +2925,7 @@ static void read_from_framebuffer(struct wined3d_surface *surface, DWORD dst_loc +@@ -2883,6 +2867,7 @@ static void read_from_framebuffer(struct wined3d_surface *surface, DWORD dst_loc int i; BOOL srcIsUpsideDown; struct wined3d_bo_address data; @@ -249,7 +249,7 @@ surface_get_memory(surface, &data, dst_location); -@@ -2977,8 +2962,8 @@ static void read_from_framebuffer(struct wined3d_surface *surface, DWORD dst_loc +@@ -2919,8 +2904,8 @@ static void read_from_framebuffer(struct wined3d_surface *surface, DWORD dst_loc } /* Setup pixel store pack state -- to glReadPixels into the correct place */ @@ -260,7 +260,7 @@ checkGLcall("glPixelStorei"); gl_info->gl_ops.gl.p_glReadPixels(0, 0, -@@ -2995,7 +2980,9 @@ static void read_from_framebuffer(struct wined3d_surface *surface, DWORD dst_loc +@@ -2937,7 +2922,9 @@ static void read_from_framebuffer(struct wined3d_surface *surface, DWORD dst_loc { /* glReadPixels returns the image upside down, and there is no way to prevent this. * Flip the lines in software. */ @@ -271,7 +271,7 @@ if (!(row = HeapAlloc(GetProcessHeap(), 0, pitch))) goto error; -@@ -4226,7 +4213,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, +@@ -4118,7 +4105,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, const struct wined3d_color_key_conversion *conversion; struct wined3d_texture *texture = surface->container; struct wined3d_context *context; @@ -280,7 +280,7 @@ struct wined3d_bo_address data; struct wined3d_format format; POINT dst_point = {0, 0}; -@@ -4314,7 +4301,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, +@@ -4206,7 +4193,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, wined3d_texture_bind_and_dirtify(texture, context, srgb); width = surface->resource.width; @@ -289,7 +289,7 @@ format = *texture->resource.format; if ((conversion = wined3d_format_get_color_key_conversion(texture, TRUE))) -@@ -4352,9 +4339,9 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, +@@ -4244,9 +4231,9 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, context_release(context); return E_OUTOFMEMORY; } @@ -301,13 +301,13 @@ data.addr = mem; } else if (conversion) -@@ -4374,14 +4361,14 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, +@@ -4266,14 +4253,14 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, } if (texture->swapchain && texture->swapchain->palette) palette = texture->swapchain->palette; - conversion->convert(data.addr, src_pitch, mem, dst_pitch, + conversion->convert(data.addr, src_row_pitch, mem, dst_pitch, - width, height, palette, &texture->gl_color_key); + width, height, palette, &texture->async.gl_color_key); - src_pitch = dst_pitch; + src_row_pitch = dst_pitch; data.addr = mem; @@ -320,10 +320,10 @@ context_release(context); diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c -index 6b2e266..de433f6 100644 +index 78d1266..5e68257 100644 --- a/dlls/wined3d/texture.c +++ b/dlls/wined3d/texture.c -@@ -1279,7 +1279,7 @@ static void texture3d_sub_resource_upload_data(struct wined3d_resource *sub_reso +@@ -1258,7 +1258,7 @@ static void texture3d_sub_resource_upload_data(struct wined3d_resource *sub_reso struct wined3d_const_bo_address addr; unsigned int row_pitch, slice_pitch; @@ -333,7 +333,7 @@ FIXME("Ignoring row/slice pitch (%u/%u).\n", data->row_pitch, data->slice_pitch); diff --git a/dlls/wined3d/volume.c b/dlls/wined3d/volume.c -index 91325dc..4fbb6b0 100644 +index 357608f..1a5e629 100644 --- a/dlls/wined3d/volume.c +++ b/dlls/wined3d/volume.c @@ -40,30 +40,6 @@ BOOL volume_prepare_system_memory(struct wined3d_volume *volume) @@ -364,10 +364,10 @@ - TRACE("Returning row pitch %u, slice pitch %u.\n", *row_pitch, *slice_pitch); -} - + /* This call just uploads data, the caller is responsible for binding the + * correct texture. */ /* Context activation is done by the caller. */ - void wined3d_volume_upload_data(struct wined3d_volume *volume, const struct wined3d_context *context, - const struct wined3d_const_bo_address *data) -@@ -93,7 +69,7 @@ void wined3d_volume_upload_data(struct wined3d_volume *volume, const struct wine +@@ -95,7 +71,7 @@ void wined3d_volume_upload_data(struct wined3d_volume *volume, const struct wine dst_row_pitch = width * format->conv_byte_count; dst_slice_pitch = dst_row_pitch * height; @@ -376,7 +376,7 @@ converted_mem = HeapAlloc(GetProcessHeap(), 0, dst_slice_pitch * depth); format->convert(data->addr, converted_mem, src_row_pitch, src_slice_pitch, -@@ -636,7 +612,7 @@ HRESULT CDECL wined3d_volume_map(struct wined3d_volume *volume, +@@ -642,7 +618,7 @@ HRESULT CDECL wined3d_volume_map(struct wined3d_volume *volume, } else { @@ -386,10 +386,10 @@ if (!box) diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec -index fb55abc..2d120f4 100644 +index bc1129f..fcabd53 100644 --- a/dlls/wined3d/wined3d.spec +++ b/dlls/wined3d/wined3d.spec -@@ -181,6 +181,7 @@ +@@ -182,6 +182,7 @@ @ cdecl wined3d_resource_get_desc(ptr ptr) @ cdecl wined3d_resource_get_parent(ptr) @@ -397,7 +397,7 @@ @ cdecl wined3d_resource_get_priority(ptr) @ cdecl wined3d_resource_set_parent(ptr ptr) @ cdecl wined3d_resource_set_priority(ptr long) -@@ -226,7 +227,6 @@ +@@ -227,7 +228,6 @@ @ cdecl wined3d_surface_get_flip_status(ptr long) @ cdecl wined3d_surface_get_overlay_position(ptr ptr ptr) @ cdecl wined3d_surface_get_parent(ptr) @@ -406,10 +406,10 @@ @ cdecl wined3d_surface_get_resource(ptr) @ cdecl wined3d_surface_getdc(ptr ptr) diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h -index 01c0fc2..9c5134c 100644 +index 8e58e4b..2656399 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h -@@ -2112,6 +2112,7 @@ struct wined3d_resource +@@ -2121,6 +2121,7 @@ struct wined3d_resource UINT size; DWORD priority; void *heap_memory; @@ -417,7 +417,7 @@ struct list resource_list_entry; void *parent; -@@ -2269,7 +2270,6 @@ BOOL volume_prepare_system_memory(struct wined3d_volume *volume) DECLSPEC_HIDDEN +@@ -2285,7 +2286,6 @@ BOOL volume_prepare_system_memory(struct wined3d_volume *volume) DECLSPEC_HIDDEN HRESULT wined3d_volume_create(struct wined3d_texture *container, const struct wined3d_resource_desc *desc, unsigned int level, struct wined3d_volume **volume) DECLSPEC_HIDDEN; void wined3d_volume_destroy(struct wined3d_volume *volume) DECLSPEC_HIDDEN; @@ -425,7 +425,7 @@ void wined3d_volume_load(struct wined3d_volume *volume, struct wined3d_context *context, BOOL srgb_mode) DECLSPEC_HIDDEN; void wined3d_volume_invalidate_location(struct wined3d_volume *volume, DWORD location) DECLSPEC_HIDDEN; -@@ -2319,7 +2319,6 @@ struct wined3d_surface +@@ -2335,7 +2335,6 @@ struct wined3d_surface DWORD flags; @@ -434,10 +434,10 @@ UINT pow2Height; diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h -index bf4efe8..9707748 100644 +index 3276799..a999afe 100644 --- a/include/wine/wined3d.h +++ b/include/wine/wined3d.h -@@ -2416,6 +2416,8 @@ static inline HRESULT wined3d_private_store_set_private_data(struct wined3d_priv +@@ -2426,6 +2426,8 @@ static inline HRESULT wined3d_private_store_set_private_data(struct wined3d_priv void __cdecl wined3d_resource_get_desc(const struct wined3d_resource *resource, struct wined3d_resource_desc *desc); void * __cdecl wined3d_resource_get_parent(const struct wined3d_resource *resource); @@ -446,7 +446,7 @@ DWORD __cdecl wined3d_resource_get_priority(const struct wined3d_resource *resource); void __cdecl wined3d_resource_set_parent(struct wined3d_resource *resource, void *parent); DWORD __cdecl wined3d_resource_set_priority(struct wined3d_resource *resource, DWORD priority); -@@ -2474,7 +2476,6 @@ HRESULT __cdecl wined3d_surface_get_blt_status(const struct wined3d_surface *sur +@@ -2484,7 +2486,6 @@ HRESULT __cdecl wined3d_surface_get_blt_status(const struct wined3d_surface *sur HRESULT __cdecl wined3d_surface_get_flip_status(const struct wined3d_surface *surface, DWORD flags); HRESULT __cdecl wined3d_surface_get_overlay_position(const struct wined3d_surface *surface, LONG *x, LONG *y); void * __cdecl wined3d_surface_get_parent(const struct wined3d_surface *surface); @@ -455,5 +455,5 @@ struct wined3d_surface *render_target); struct wined3d_resource * __cdecl wined3d_surface_get_resource(struct wined3d_surface *surface); -- -2.3.0 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0003-wined3d-Pass-a-context-to-surface_load_drawable-and-.patch wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0003-wined3d-Pass-a-context-to-surface_load_drawable-and-.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0003-wined3d-Pass-a-context-to-surface_load_drawable-and-.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0003-wined3d-Pass-a-context-to-surface_load_drawable-and-.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,4 +1,4 @@ -From cc8b1bb0366f3fe8fb103eb2a50e5238ec1d30b9 Mon Sep 17 00:00:00 2001 +From f322a8e12cfa32650bcbb970f41a84c2430ac00e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Sun, 17 Nov 2013 19:34:26 +0100 Subject: wined3d: Pass a context to surface_load_drawable and @@ -9,10 +9,10 @@ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c -index 17ce8ef..8a569a5 100644 +index 4e2063f..1f97857 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c -@@ -3604,19 +3604,35 @@ void surface_translate_drawable_coords(const struct wined3d_surface *surface, HW +@@ -3533,19 +3533,35 @@ void surface_translate_drawable_coords(const struct wined3d_surface *surface, HW rect->bottom = drawable_height - rect->bottom; } @@ -49,7 +49,7 @@ gl_info = context->gl_info; /* Make sure the surface is up-to-date. This should probably use -@@ -3669,7 +3685,12 @@ static void surface_blt_to_drawable(const struct wined3d_device *device, +@@ -3598,7 +3614,12 @@ static void surface_blt_to_drawable(const struct wined3d_device *device, && dst_surface->container->swapchain->front_buffer == dst_surface->container)) gl_info->gl_ops.gl.p_glFlush(); /* Flush to ensure ordering across contexts. */ @@ -63,28 +63,7 @@ } HRESULT surface_color_fill(struct wined3d_surface *s, const RECT *rect, const struct wined3d_color *color) -@@ -3820,6 +3841,7 @@ static HRESULT surface_blt_special(struct wined3d_surface *dst_surface, const RE - /* Blit from offscreen surface to render target */ - struct wined3d_color_key old_blt_key = src_surface->container->src_blt_color_key; - DWORD old_color_key_flags = src_surface->container->color_key_flags; -+ struct wined3d_context *context; - - TRACE("Blt from surface %p to rendertarget %p\n", src_surface, dst_surface); - -@@ -3853,9 +3875,11 @@ static HRESULT surface_blt_special(struct wined3d_surface *dst_surface, const RE - wined3d_texture_set_color_key(src_surface->container, WINED3D_CKEY_SRC_BLT, NULL); - } - -- surface_blt_to_drawable(device, filter, -+ context = context_acquire(device, dst_surface); -+ surface_blt_to_drawable(device, context, filter, - flags & (WINEDDBLT_KEYSRC | WINEDDBLT_KEYSRCOVERRIDE | WINEDDBLT_ALPHATEST), - src_surface, src_rect, dst_surface, dst_rect); -+ context_release(context); - - /* Restore the color key parameters */ - wined3d_texture_set_color_key(src_surface->container, WINED3D_CKEY_SRC_BLT, -@@ -4218,8 +4242,9 @@ static void surface_load_sysmem(struct wined3d_surface *surface, +@@ -4095,8 +4116,9 @@ static void surface_load_sysmem(struct wined3d_surface *surface, surface, wined3d_debug_location(surface->locations)); } @@ -95,7 +74,7 @@ { RECT r; -@@ -4232,7 +4257,7 @@ static HRESULT surface_load_drawable(struct wined3d_surface *surface, +@@ -4109,7 +4131,7 @@ static HRESULT surface_load_drawable(struct wined3d_surface *surface, surface_get_rect(surface, NULL, &r); surface_load_location(surface, WINED3D_LOCATION_TEXTURE_RGB); @@ -104,7 +83,7 @@ WINED3D_TEXF_POINT, FALSE, surface, &r, surface, &r); return WINED3D_OK; -@@ -4498,7 +4523,10 @@ HRESULT surface_load_location(struct wined3d_surface *surface, DWORD location) +@@ -4367,7 +4389,10 @@ HRESULT surface_load_location(struct wined3d_surface *surface, DWORD location) break; case WINED3D_LOCATION_DRAWABLE: @@ -116,6 +95,24 @@ return hr; break; +@@ -4546,13 +4571,16 @@ static void ffp_blit_blit_surface(struct wined3d_device *device, DWORD filter, + /* Blit from offscreen surface to render target */ + struct wined3d_color_key old_blt_key = src_surface->container->async.src_blt_color_key; + DWORD old_color_key_flags = src_surface->container->async.color_key_flags; ++ struct wined3d_context *context; + + TRACE("Blt from surface %p to rendertarget %p\n", src_surface, dst_surface); + + wined3d_texture_set_color_key(src_surface->container, WINED3D_CKEY_SRC_BLT, color_key); + +- surface_blt_to_drawable(device, filter, ++ context = context_acquire(device, dst_surface); ++ surface_blt_to_drawable(device, context, filter, + !!color_key, src_surface, src_rect, dst_surface, dst_rect); ++ context_release(context); + + /* Restore the color key parameters */ + wined3d_texture_set_color_key(src_surface->container, WINED3D_CKEY_SRC_BLT, -- -2.2.1 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0007-wined3d-Pass-a-context-to-surface_load_location.patch wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0007-wined3d-Pass-a-context-to-surface_load_location.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0007-wined3d-Pass-a-context-to-surface_load_location.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0007-wined3d-Pass-a-context-to-surface_load_location.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,4 +1,4 @@ -From 803a1823ebff0c62c4ba50f561d4968d8ffbd8c1 Mon Sep 17 00:00:00 2001 +From ef006d30c46de0526e6710ff23b11449cb2efe0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Sun, 17 Nov 2013 20:19:24 +0100 Subject: wined3d: Pass a context to surface_load_location. @@ -14,10 +14,10 @@ 7 files changed, 107 insertions(+), 77 deletions(-) diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c -index 843905a..8c5844a 100644 +index 1d7cf9c..ac4c7cb 100644 --- a/dlls/wined3d/context.c +++ b/dlls/wined3d/context.c -@@ -2201,7 +2201,7 @@ static BOOL match_depth_stencil_format(const struct wined3d_format *existing, +@@ -2208,7 +2208,7 @@ static BOOL match_depth_stencil_format(const struct wined3d_format *existing, return TRUE; } @@ -26,7 +26,7 @@ static void context_validate_onscreen_formats(struct wined3d_context *context, const struct wined3d_rendertarget_view *depth_stencil) { -@@ -2217,7 +2217,7 @@ static void context_validate_onscreen_formats(struct wined3d_context *context, +@@ -2224,7 +2224,7 @@ static void context_validate_onscreen_formats(struct wined3d_context *context, WARN("Depth stencil format is not supported by WGL, rendering the backbuffer in an FBO\n"); /* The currently active context is the necessary context to access the swapchain's onscreen buffers */ @@ -36,7 +36,7 @@ swapchain_update_draw_bindings(swapchain); context_set_render_offscreen(context, TRUE); diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c -index 649f324..c6c43bc 100644 +index 5f44a1a..725897f 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -300,6 +300,15 @@ void device_clear_render_targets(struct wined3d_device *device, UINT rt_count, c @@ -77,10 +77,10 @@ { render_offscreen = context->render_offscreen; diff --git a/dlls/wined3d/drawprim.c b/dlls/wined3d/drawprim.c -index 98e7cf4..f7fd9a4 100644 +index c0654a6..913ada5 100644 --- a/dlls/wined3d/drawprim.c +++ b/dlls/wined3d/drawprim.c -@@ -608,6 +608,15 @@ void draw_primitive(struct wined3d_device *device, UINT start_idx, UINT index_co +@@ -611,6 +611,15 @@ void draw_primitive(struct wined3d_device *device, UINT start_idx, UINT index_co if (!index_count) return; @@ -96,7 +96,7 @@ if (state->render_states[WINED3D_RS_COLORWRITEENABLE]) { /* Invalidate the back buffer memory so LockRect will read it the next time */ -@@ -616,21 +625,12 @@ void draw_primitive(struct wined3d_device *device, UINT start_idx, UINT index_co +@@ -619,21 +628,12 @@ void draw_primitive(struct wined3d_device *device, UINT start_idx, UINT index_co struct wined3d_surface *target = wined3d_rendertarget_view_get_surface(device->fb.render_targets[i]); if (target) { @@ -120,7 +120,7 @@ { /* Note that this depends on the context_acquire() call above to set diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c -index 9efc5a8..30e2a0f 100644 +index ff66881..e7b139b 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c @@ -752,7 +752,16 @@ static void surface_unmap(struct wined3d_surface *surface) @@ -179,7 +179,7 @@ if (src_location == WINED3D_LOCATION_DRAWABLE) required_rt = src_surface; else if (dst_location == WINED3D_LOCATION_DRAWABLE) required_rt = dst_surface; -@@ -1198,6 +1207,9 @@ static void surface_unload(struct wined3d_resource *resource) +@@ -1142,6 +1151,9 @@ static void surface_unload(struct wined3d_resource *resource) TRACE("surface %p.\n", surface); @@ -189,7 +189,7 @@ if (resource->pool == WINED3D_POOL_DEFAULT) { /* Default pool resources are supposed to be destroyed before Reset is called. -@@ -1223,13 +1235,10 @@ static void surface_unload(struct wined3d_resource *resource) +@@ -1167,13 +1179,10 @@ static void surface_unload(struct wined3d_resource *resource) else { surface_prepare_map_memory(surface); @@ -204,16 +204,16 @@ /* Destroy PBOs, but load them into real sysmem before */ if (surface->pbo) surface_remove_pbo(surface, gl_info); -@@ -1713,7 +1722,7 @@ HRESULT surface_upload_from_surface(struct wined3d_surface *dst_surface, const P +@@ -1657,7 +1666,7 @@ HRESULT surface_upload_from_surface(struct wined3d_surface *dst_surface, const P if (update_w == dst_w && update_h == dst_h) wined3d_texture_prepare_texture(dst_surface->container, context, FALSE); else - surface_load_location(dst_surface, WINED3D_LOCATION_TEXTURE_RGB); + surface_load_location(dst_surface, context, WINED3D_LOCATION_TEXTURE_RGB); - wined3d_texture_bind(dst_surface->container, context, FALSE); + wined3d_texture_bind_and_dirtify(dst_surface->container, context, FALSE); surface_get_memory(src_surface, &data, src_surface->locations); -@@ -1831,7 +1840,8 @@ GLenum surface_get_gl_buffer(const struct wined3d_surface *surface) +@@ -1773,7 +1782,8 @@ GLenum surface_get_gl_buffer(const struct wined3d_surface *surface) return GL_BACK; } @@ -223,7 +223,7 @@ { DWORD location = srgb ? WINED3D_LOCATION_TEXTURE_SRGB : WINED3D_LOCATION_TEXTURE_RGB; -@@ -1847,7 +1857,7 @@ void surface_load(struct wined3d_surface *surface, BOOL srgb) +@@ -1789,7 +1799,7 @@ void surface_load(struct wined3d_surface *surface, BOOL srgb) } TRACE("Reloading because surface is dirty.\n"); @@ -232,7 +232,7 @@ surface_evict_sysmem(surface); } -@@ -2767,10 +2777,16 @@ HRESULT CDECL wined3d_surface_map(struct wined3d_surface *surface, +@@ -2715,10 +2725,16 @@ HRESULT CDECL wined3d_surface_map(struct wined3d_surface *surface, } else { @@ -250,7 +250,7 @@ } if (!(flags & (WINED3D_MAP_NO_DIRTY_UPDATE | WINED3D_MAP_READONLY))) -@@ -2852,6 +2868,8 @@ HRESULT CDECL wined3d_surface_map(struct wined3d_surface *surface, +@@ -2800,6 +2816,8 @@ HRESULT CDECL wined3d_surface_map(struct wined3d_surface *surface, HRESULT CDECL wined3d_surface_getdc(struct wined3d_surface *surface, HDC *dc) { HRESULT hr; @@ -259,7 +259,7 @@ TRACE("surface %p, dc %p.\n", surface, dc); -@@ -2863,26 +2881,36 @@ HRESULT CDECL wined3d_surface_getdc(struct wined3d_surface *surface, HDC *dc) +@@ -2811,26 +2829,36 @@ HRESULT CDECL wined3d_surface_getdc(struct wined3d_surface *surface, HDC *dc) if (surface->resource.map_count) return WINED3DERR_INVALIDCALL; @@ -299,7 +299,7 @@ surface->flags |= SFLAG_DCINUSE; surface->resource.map_count++; -@@ -2920,8 +2948,16 @@ HRESULT CDECL wined3d_surface_releasedc(struct wined3d_surface *surface, HDC dc) +@@ -2868,8 +2896,16 @@ HRESULT CDECL wined3d_surface_releasedc(struct wined3d_surface *surface, HDC dc) * copied back to the DIB in the next getdc call. * * The same consideration applies to user memory surfaces. */ @@ -317,7 +317,7 @@ } return WINED3D_OK; -@@ -4215,7 +4251,7 @@ static void surface_load_sysmem(struct wined3d_surface *surface, +@@ -4110,7 +4146,7 @@ static void surface_load_sysmem(struct wined3d_surface *surface, } if (surface->locations & (WINED3D_LOCATION_RB_MULTISAMPLE | WINED3D_LOCATION_RB_RESOLVED)) @@ -326,7 +326,7 @@ /* Download the surface to system memory. */ if (surface->locations & (WINED3D_LOCATION_TEXTURE_RGB | WINED3D_LOCATION_TEXTURE_SRGB)) -@@ -4251,7 +4287,7 @@ static HRESULT surface_load_drawable(struct wined3d_surface *surface, +@@ -4146,7 +4182,7 @@ static HRESULT surface_load_drawable(struct wined3d_surface *surface, } surface_get_rect(surface, NULL, &r); @@ -335,7 +335,7 @@ surface_blt_to_drawable(surface->resource.device, context, WINED3D_TEXF_POINT, FALSE, surface, &r, surface, &r); -@@ -4324,7 +4360,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, +@@ -4219,7 +4255,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, /* Performance warning... */ FIXME("Downloading RGB surface %p to reload it as sRGB.\n", surface); surface_prepare_map_memory(surface); @@ -344,7 +344,7 @@ } } else -@@ -4335,7 +4371,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, +@@ -4230,7 +4266,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, /* Performance warning... */ FIXME("Downloading sRGB surface %p to reload it as RGB.\n", surface); surface_prepare_map_memory(surface); @@ -353,7 +353,7 @@ } } -@@ -4344,7 +4380,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, +@@ -4239,7 +4275,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, WARN("Trying to load a texture from sysmem, but no simple location is valid.\n"); /* Lets hope we get it from somewhere... */ surface_prepare_system_memory(surface); @@ -362,7 +362,7 @@ } wined3d_texture_prepare_texture(texture, context, srgb); -@@ -4370,7 +4406,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, +@@ -4265,7 +4301,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, surface->resource.map_binding = WINED3D_LOCATION_SYSMEM; surface_prepare_map_memory(surface); @@ -371,7 +371,7 @@ surface_remove_pbo(surface, gl_info); } -@@ -4439,11 +4475,10 @@ static void surface_multisample_resolve(struct wined3d_surface *surface, struct +@@ -4333,11 +4369,10 @@ static void surface_multisample_resolve(struct wined3d_surface *surface, struct surface, WINED3D_LOCATION_RB_MULTISAMPLE, &rect, surface, WINED3D_LOCATION_RB_RESOLVED, &rect); } @@ -385,7 +385,7 @@ TRACE("surface %p, location %s.\n", surface, wined3d_debug_location(location)); -@@ -4452,9 +4487,7 @@ HRESULT surface_load_location(struct wined3d_surface *surface, DWORD location) +@@ -4346,9 +4381,7 @@ HRESULT surface_load_location(struct wined3d_surface *surface, DWORD location) if (location == WINED3D_LOCATION_TEXTURE_RGB && surface->locations & (WINED3D_LOCATION_DRAWABLE | WINED3D_LOCATION_DISCARDED)) { @@ -395,7 +395,7 @@ return WINED3D_OK; } else if (location & surface->locations -@@ -4498,33 +4531,22 @@ HRESULT surface_load_location(struct wined3d_surface *surface, DWORD location) +@@ -4392,33 +4425,22 @@ HRESULT surface_load_location(struct wined3d_surface *surface, DWORD location) case WINED3D_LOCATION_USER_MEMORY: case WINED3D_LOCATION_SYSMEM: case WINED3D_LOCATION_BUFFER: @@ -432,7 +432,7 @@ return hr; break; -@@ -5582,7 +5604,11 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC +@@ -5529,7 +5551,11 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC if (SUCCEEDED(surface_upload_from_surface(dst_surface, &dst_point, src_surface, &src_rect))) { if (!wined3d_resource_is_offscreen(&dst_surface->container->resource)) @@ -446,7 +446,7 @@ } } diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c -index 887143f..d742b11 100644 +index 146f5d6..4f4d4df 100644 --- a/dlls/wined3d/swapchain.c +++ b/dlls/wined3d/swapchain.c @@ -309,7 +309,7 @@ static void swapchain_blit(const struct wined3d_swapchain *swapchain, @@ -485,10 +485,10 @@ src_dc = front->hDC; window = swapchain->win_handle; diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c -index b5f64ba..a7e6cca 100644 +index 5e68257..1afff66 100644 --- a/dlls/wined3d/texture.c +++ b/dlls/wined3d/texture.c -@@ -774,16 +774,19 @@ static void wined3d_texture_upload_data(struct wined3d_texture *texture, const s +@@ -766,16 +766,19 @@ static void wined3d_texture_upload_data(struct wined3d_texture *texture, const s static void texture2d_sub_resource_load(struct wined3d_resource *sub_resource, struct wined3d_context *context, BOOL srgb) { @@ -511,10 +511,10 @@ } diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h -index 9c5134c..59e3eb2 100644 +index 2656399..51487aa 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h -@@ -2368,11 +2368,12 @@ GLenum surface_get_gl_buffer(const struct wined3d_surface *surface) DECLSPEC_HID +@@ -2384,11 +2384,12 @@ GLenum surface_get_gl_buffer(const struct wined3d_surface *surface) DECLSPEC_HID void surface_get_drawable_size(const struct wined3d_surface *surface, const struct wined3d_context *context, unsigned int *width, unsigned int *height) DECLSPEC_HIDDEN; void surface_invalidate_location(struct wined3d_surface *surface, DWORD location) DECLSPEC_HIDDEN; @@ -530,5 +530,5 @@ void surface_prepare_rb(struct wined3d_surface *surface, const struct wined3d_gl_info *gl_info, BOOL multisample) DECLSPEC_HIDDEN; -- -2.3.0 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0009-wined3d-Store-volume-locations-in-the-resource.patch wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0009-wined3d-Store-volume-locations-in-the-resource.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0009-wined3d-Store-volume-locations-in-the-resource.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0009-wined3d-Store-volume-locations-in-the-resource.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,4 +1,4 @@ -From b947c724e3227d812a7e60f1a845b2e5c2d7ec09 Mon Sep 17 00:00:00 2001 +From 81726de3e2c63759ff771038ec1a829758314bc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Thu, 3 Oct 2013 12:31:24 +0200 Subject: wined3d: Store volume locations in the resource. @@ -9,7 +9,7 @@ 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/dlls/wined3d/volume.c b/dlls/wined3d/volume.c -index 87b6ab6..62eb5ed 100644 +index 1a5e629..5f5fe8b 100644 --- a/dlls/wined3d/volume.c +++ b/dlls/wined3d/volume.c @@ -102,15 +102,15 @@ void wined3d_volume_upload_data(struct wined3d_volume *volume, const struct wine @@ -44,7 +44,7 @@ { TRACE("Location(s) already up to date.\n"); return; -@@ -243,32 +243,32 @@ static void wined3d_volume_load_location(struct wined3d_volume *volume, +@@ -243,36 +243,36 @@ static void wined3d_volume_load_location(struct wined3d_volume *volume, && !(volume->container->flags & WINED3D_TEXTURE_SRGB_ALLOCATED))) ERR("Trying to load (s)RGB texture without prior allocation.\n"); @@ -58,12 +58,16 @@ + else if (volume->resource.locations & WINED3D_LOCATION_SYSMEM) { struct wined3d_const_bo_address data = {0, volume->resource.heap_memory}; + wined3d_texture_bind_and_dirtify(volume->container, context, + location == WINED3D_LOCATION_TEXTURE_SRGB); wined3d_volume_upload_data(volume, context, &data); } - else if (volume->locations & WINED3D_LOCATION_BUFFER) + else if (volume->resource.locations & WINED3D_LOCATION_BUFFER) { struct wined3d_const_bo_address data = {volume->pbo, NULL}; + wined3d_texture_bind_and_dirtify(volume->container, context, + location == WINED3D_LOCATION_TEXTURE_SRGB); wined3d_volume_upload_data(volume, context, &data); } - else if (volume->locations & WINED3D_LOCATION_TEXTURE_RGB) @@ -83,7 +87,7 @@ return; } wined3d_volume_validate_location(volume, location); -@@ -282,16 +282,16 @@ static void wined3d_volume_load_location(struct wined3d_volume *volume, +@@ -286,16 +286,16 @@ static void wined3d_volume_load_location(struct wined3d_volume *volume, if (!volume->resource.heap_memory) ERR("Trying to load WINED3D_LOCATION_SYSMEM without setting it up first.\n"); @@ -103,7 +107,7 @@ wined3d_texture_bind_and_dirtify(volume->container, context, FALSE); else wined3d_texture_bind_and_dirtify(volume->container, context, TRUE); -@@ -302,7 +302,7 @@ static void wined3d_volume_load_location(struct wined3d_volume *volume, +@@ -306,7 +306,7 @@ static void wined3d_volume_load_location(struct wined3d_volume *volume, else { FIXME("Implement WINED3D_LOCATION_SYSMEM loading from %s.\n", @@ -112,7 +116,7 @@ return; } wined3d_volume_validate_location(volume, WINED3D_LOCATION_SYSMEM); -@@ -312,16 +312,16 @@ static void wined3d_volume_load_location(struct wined3d_volume *volume, +@@ -316,16 +316,16 @@ static void wined3d_volume_load_location(struct wined3d_volume *volume, if (!volume->pbo) ERR("Trying to load WINED3D_LOCATION_BUFFER without setting it up first.\n"); @@ -132,7 +136,7 @@ wined3d_texture_bind_and_dirtify(volume->container, context, FALSE); else wined3d_texture_bind_and_dirtify(volume->container, context, TRUE); -@@ -331,7 +331,7 @@ static void wined3d_volume_load_location(struct wined3d_volume *volume, +@@ -335,7 +335,7 @@ static void wined3d_volume_load_location(struct wined3d_volume *volume, else { FIXME("Implement WINED3D_LOCATION_BUFFER loading from %s.\n", @@ -141,7 +145,7 @@ return; } wined3d_volume_validate_location(volume, WINED3D_LOCATION_BUFFER); -@@ -339,7 +339,7 @@ static void wined3d_volume_load_location(struct wined3d_volume *volume, +@@ -343,7 +343,7 @@ static void wined3d_volume_load_location(struct wined3d_volume *volume, default: FIXME("Implement %s loading from %s.\n", wined3d_debug_location(location), @@ -150,7 +154,7 @@ } } -@@ -596,7 +596,7 @@ HRESULT CDECL wined3d_volume_map(struct wined3d_volume *volume, +@@ -600,7 +600,7 @@ HRESULT CDECL wined3d_volume_map(struct wined3d_volume *volume, { wined3d_volume_validate_location(volume, WINED3D_LOCATION_SYSMEM); } @@ -159,7 +163,7 @@ { context = context_acquire(device, NULL); wined3d_volume_load_location(volume, context, WINED3D_LOCATION_SYSMEM); -@@ -744,7 +744,7 @@ static HRESULT volume_init(struct wined3d_volume *volume, struct wined3d_texture +@@ -748,7 +748,7 @@ static HRESULT volume_init(struct wined3d_volume *volume, struct wined3d_texture } volume->texture_level = level; @@ -169,7 +173,7 @@ if (desc->pool == WINED3D_POOL_DEFAULT && desc->usage & WINED3DUSAGE_DYNAMIC && gl_info->supported[ARB_PIXEL_BUFFER_OBJECT] diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h -index 78406a4..004969d 100644 +index 254dfd7..f2d3943 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -5,7 +5,7 @@ @@ -181,7 +185,7 @@ * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public -@@ -2093,6 +2093,7 @@ struct wined3d_resource +@@ -2123,6 +2123,7 @@ struct wined3d_resource void *heap_memory; UINT custom_row_pitch, custom_slice_pitch; struct list resource_list_entry; @@ -189,7 +193,7 @@ void *parent; const struct wined3d_parent_ops *parent_ops; -@@ -2250,7 +2251,7 @@ struct wined3d_volume +@@ -2271,7 +2272,7 @@ struct wined3d_volume struct wined3d_resource resource; struct wined3d_texture *container; @@ -199,5 +203,5 @@ DWORD download_count; GLuint pbo; -- -1.9.1 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0011-wined3d-Move-surface-locations-into-the-resource.patch wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0011-wined3d-Move-surface-locations-into-the-resource.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0011-wined3d-Move-surface-locations-into-the-resource.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0011-wined3d-Move-surface-locations-into-the-resource.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,4 +1,4 @@ -From 6e6c9bc0fb30c4d0856b6c877a7f1c909e3301a9 Mon Sep 17 00:00:00 2001 +From 64dddc414faf640169e109bf57c62489bfb3a65d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Tue, 21 Jan 2014 12:22:30 +0100 Subject: wined3d: Move surface locations into the resource. @@ -13,10 +13,10 @@ 6 files changed, 56 insertions(+), 56 deletions(-) diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c -index 688bdb7..2188d2d 100644 +index 797c204..2ad6917 100644 --- a/dlls/wined3d/arb_program_shader.c +++ b/dlls/wined3d/arb_program_shader.c -@@ -7651,7 +7651,7 @@ HRESULT arbfp_blit_surface(struct wined3d_device *device, DWORD filter, +@@ -7884,7 +7884,7 @@ static void arbfp_blit_surface(struct wined3d_device *device, DWORD filter, /* Now load the surface */ if (wined3d_settings.offscreen_rendering_mode != ORM_FBO @@ -26,7 +26,7 @@ && !wined3d_resource_is_offscreen(&src_surface->container->resource)) { diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c -index c6c43bc..7b66fcf 100644 +index 725897f..9e03017 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -236,7 +236,7 @@ static void prepare_ds_clear(struct wined3d_surface *ds, struct wined3d_context @@ -48,10 +48,10 @@ ds->ds_current_size.cx, ds->ds_current_size.cy); diff --git a/dlls/wined3d/drawprim.c b/dlls/wined3d/drawprim.c -index f7fd9a4..9ccc1b4 100644 +index 913ada5..567550e 100644 --- a/dlls/wined3d/drawprim.c +++ b/dlls/wined3d/drawprim.c -@@ -648,7 +648,7 @@ void draw_primitive(struct wined3d_device *device, UINT start_idx, UINT index_co +@@ -651,7 +651,7 @@ void draw_primitive(struct wined3d_device *device, UINT start_idx, UINT index_co if (!context->render_offscreen && ds != device->onscreen_depth_stencil) device_switch_onscreen_ds(device, context, ds); @@ -61,7 +61,7 @@ else SetRectEmpty(¤t_rect); diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c -index c611261..09c446c 100644 +index 0335497..fcca398 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c @@ -555,7 +555,7 @@ static void surface_prepare_system_memory(struct wined3d_surface *surface) @@ -91,16 +91,16 @@ { TRACE("Not dirtified, nothing to do.\n"); return; -@@ -1725,7 +1725,7 @@ HRESULT surface_upload_from_surface(struct wined3d_surface *dst_surface, const P +@@ -1669,7 +1669,7 @@ HRESULT surface_upload_from_surface(struct wined3d_surface *dst_surface, const P surface_load_location(dst_surface, context, WINED3D_LOCATION_TEXTURE_RGB); - wined3d_texture_bind(dst_surface->container, context, FALSE); + wined3d_texture_bind_and_dirtify(dst_surface->container, context, FALSE); - surface_get_memory(src_surface, &data, src_surface->locations); + surface_get_memory(src_surface, &data, src_surface->resource.locations); wined3d_resource_get_pitch(&src_surface->resource, &src_row_pitch, &src_slice_pitch); wined3d_surface_upload_data(dst_surface, gl_info, src_format, src_rect, -@@ -1850,7 +1850,7 @@ void surface_load(struct wined3d_surface *surface, struct wined3d_context *conte +@@ -1792,7 +1792,7 @@ void surface_load(struct wined3d_surface *surface, struct wined3d_context *conte if (surface->resource.pool == WINED3D_POOL_SCRATCH) ERR("Not supported on scratch surfaces.\n"); @@ -109,7 +109,7 @@ { TRACE("surface is already in texture\n"); return; -@@ -2161,7 +2161,7 @@ HRESULT wined3d_surface_update_desc(struct wined3d_surface *surface, +@@ -2103,7 +2103,7 @@ HRESULT wined3d_surface_update_desc(struct wined3d_surface *surface, create_dib = TRUE; } @@ -118,7 +118,7 @@ wined3d_resource_free_sysmem(&surface->resource); width = texture_resource->width; -@@ -3218,9 +3218,9 @@ void flip_surface(struct wined3d_surface *front, struct wined3d_surface *back) +@@ -3168,9 +3168,9 @@ void flip_surface(struct wined3d_surface *front, struct wined3d_surface *back) back->flags = front->flags; front->flags = tmp_flags; @@ -131,7 +131,7 @@ } } -@@ -3399,7 +3399,7 @@ static void fb_copy_to_texture_hwstretch(struct wined3d_surface *dst_surface, st +@@ -3349,7 +3349,7 @@ static void fb_copy_to_texture_hwstretch(struct wined3d_surface *dst_surface, st checkGLcall("glEnable(texture_target)"); /* For now invalidate the texture copy of the back buffer. Drawable and sysmem copy are untouched */ @@ -140,7 +140,7 @@ } /* Make sure that the top pixel is always above the bottom pixel, and keep a separate upside down flag -@@ -3992,13 +3992,14 @@ void surface_modify_ds_location(struct wined3d_surface *surface, +@@ -3887,13 +3887,14 @@ void surface_modify_ds_location(struct wined3d_surface *surface, { TRACE("surface %p, new location %#x, w %u, h %u.\n", surface, location, w, h); @@ -158,7 +158,7 @@ } /* Context activation is done by the caller. */ -@@ -4013,7 +4014,7 @@ void surface_load_ds_location(struct wined3d_surface *surface, struct wined3d_co +@@ -3908,7 +3909,7 @@ void surface_load_ds_location(struct wined3d_surface *surface, struct wined3d_co /* TODO: Make this work for modes other than FBO */ if (wined3d_settings.offscreen_rendering_mode != ORM_FBO) return; @@ -167,7 +167,7 @@ { w = surface->ds_current_size.cx; h = surface->ds_current_size.cy; -@@ -4039,7 +4040,7 @@ void surface_load_ds_location(struct wined3d_surface *surface, struct wined3d_co +@@ -3934,7 +3935,7 @@ void surface_load_ds_location(struct wined3d_surface *surface, struct wined3d_co return; } @@ -176,7 +176,7 @@ { TRACE("Surface was discarded, no need copy data.\n"); switch (location) -@@ -4056,17 +4057,17 @@ void surface_load_ds_location(struct wined3d_surface *surface, struct wined3d_co +@@ -3951,17 +3952,17 @@ void surface_load_ds_location(struct wined3d_surface *surface, struct wined3d_co default: FIXME("Unhandled location %#x\n", location); } @@ -198,7 +198,7 @@ surface->ds_current_size.cx = surface->resource.width; surface->ds_current_size.cy = surface->resource.height; return; -@@ -4155,7 +4156,7 @@ void surface_load_ds_location(struct wined3d_surface *surface, struct wined3d_co +@@ -4050,7 +4051,7 @@ void surface_load_ds_location(struct wined3d_surface *surface, struct wined3d_co ERR("Invalid location (%#x) specified.\n", location); } @@ -207,7 +207,7 @@ surface->ds_current_size.cx = surface->resource.width; surface->ds_current_size.cy = surface->resource.height; } -@@ -4164,7 +4165,7 @@ void surface_validate_location(struct wined3d_surface *surface, DWORD location) +@@ -4059,7 +4060,7 @@ void surface_validate_location(struct wined3d_surface *surface, DWORD location) { TRACE("surface %p, location %s.\n", surface, wined3d_debug_location(location)); @@ -216,7 +216,7 @@ } void surface_invalidate_location(struct wined3d_surface *surface, DWORD location) -@@ -4173,9 +4174,9 @@ void surface_invalidate_location(struct wined3d_surface *surface, DWORD location +@@ -4068,9 +4069,9 @@ void surface_invalidate_location(struct wined3d_surface *surface, DWORD location if (location & (WINED3D_LOCATION_TEXTURE_RGB | WINED3D_LOCATION_TEXTURE_SRGB)) wined3d_texture_set_dirty(surface->container); @@ -228,7 +228,7 @@ ERR("Surface %p does not have any up to date location.\n", surface); } -@@ -4211,7 +4212,7 @@ static void surface_copy_simple_location(struct wined3d_surface *surface, DWORD +@@ -4106,7 +4107,7 @@ static void surface_copy_simple_location(struct wined3d_surface *surface, DWORD UINT size = surface->resource.size; surface_get_memory(surface, &dst, location); @@ -237,7 +237,7 @@ if (dst.buffer_object) { -@@ -4244,33 +4245,33 @@ static void surface_load_sysmem(struct wined3d_surface *surface, +@@ -4139,33 +4140,33 @@ static void surface_load_sysmem(struct wined3d_surface *surface, { const struct wined3d_gl_info *gl_info = context->gl_info; @@ -277,7 +277,7 @@ } /* Context activation is done by the caller. */ -@@ -4310,14 +4311,14 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, +@@ -4205,14 +4206,14 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, if (wined3d_settings.offscreen_rendering_mode != ORM_FBO && wined3d_resource_is_offscreen(&texture->resource) @@ -294,7 +294,7 @@ && (surface->resource.format->flags & WINED3DFMT_FLAG_FBO_ATTACHABLE_SRGB) && fbo_blit_supported(gl_info, WINED3D_BLIT_OP_COLOR_BLIT, NULL, surface->resource.usage, surface->resource.pool, surface->resource.format, -@@ -4333,13 +4334,13 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, +@@ -4228,13 +4229,13 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, return WINED3D_OK; } @@ -310,7 +310,7 @@ WINED3D_LOCATION_RB_RESOLVED : WINED3D_LOCATION_RB_MULTISAMPLE; DWORD dst_location = srgb ? WINED3D_LOCATION_TEXTURE_SRGB : WINED3D_LOCATION_TEXTURE_RGB; RECT rect = {0, 0, surface->resource.width, surface->resource.height}; -@@ -4354,7 +4355,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, +@@ -4249,7 +4250,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, if (srgb) { @@ -319,7 +319,7 @@ == WINED3D_LOCATION_TEXTURE_RGB) { /* Performance warning... */ -@@ -4365,7 +4366,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, +@@ -4260,7 +4261,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, } else { @@ -328,7 +328,7 @@ == WINED3D_LOCATION_TEXTURE_SRGB) { /* Performance warning... */ -@@ -4375,7 +4376,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, +@@ -4270,7 +4271,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, } } @@ -337,7 +337,7 @@ { WARN("Trying to load a texture from sysmem, but no simple location is valid.\n"); /* Lets hope we get it from somewhere... */ -@@ -4410,7 +4411,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, +@@ -4305,7 +4306,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, surface_remove_pbo(surface, gl_info); } @@ -346,7 +346,7 @@ if (format.convert) { /* This code is entered for texture formats which need a fixup. */ -@@ -4467,7 +4468,7 @@ static void surface_multisample_resolve(struct wined3d_surface *surface, struct +@@ -4361,7 +4362,7 @@ static void surface_multisample_resolve(struct wined3d_surface *surface, struct { RECT rect = {0, 0, surface->resource.width, surface->resource.height}; @@ -355,7 +355,7 @@ ERR("Trying to resolve multisampled surface %p, but location WINED3D_LOCATION_RB_MULTISAMPLE not current.\n", surface); -@@ -4485,12 +4486,12 @@ void surface_load_location(struct wined3d_surface *surface, struct wined3d_conte +@@ -4379,12 +4380,12 @@ void surface_load_location(struct wined3d_surface *surface, struct wined3d_conte if (surface->resource.usage & WINED3DUSAGE_DEPTHSTENCIL) { if (location == WINED3D_LOCATION_TEXTURE_RGB @@ -370,7 +370,7 @@ && surface->container->resource.draw_binding != WINED3D_LOCATION_DRAWABLE) { /* Already up to date, nothing to do. */ -@@ -4499,12 +4500,12 @@ void surface_load_location(struct wined3d_surface *surface, struct wined3d_conte +@@ -4393,12 +4394,12 @@ void surface_load_location(struct wined3d_surface *surface, struct wined3d_conte else { FIXME("Unimplemented copy from %s to %s for depth/stencil buffers.\n", @@ -385,7 +385,7 @@ { TRACE("Location already up to date.\n"); return; -@@ -4518,7 +4519,7 @@ void surface_load_location(struct wined3d_surface *surface, struct wined3d_conte +@@ -4412,7 +4413,7 @@ void surface_load_location(struct wined3d_surface *surface, struct wined3d_conte required_access, surface->resource.access_flags); } @@ -394,7 +394,7 @@ { ERR("Surface %p does not have any up to date location.\n", surface); surface->flags |= SFLAG_LOST; -@@ -4557,7 +4558,7 @@ void surface_load_location(struct wined3d_surface *surface, struct wined3d_conte +@@ -4451,7 +4452,7 @@ void surface_load_location(struct wined3d_surface *surface, struct wined3d_conte surface_validate_location(surface, location); @@ -403,8 +403,8 @@ surface_evict_sysmem(surface); return; -@@ -5562,8 +5563,8 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC - { +@@ -5495,8 +5496,8 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC + /* In principle this would apply to depth blits as well, but we don't * implement those in the CPU blitter at the moment. */ - if ((dst_surface->locations & dst_surface->resource.map_binding) @@ -414,19 +414,19 @@ { if (scale) TRACE("Not doing sysmem blit because of scaling.\n"); -@@ -5590,8 +5591,8 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC - TRACE("Color blit.\n"); - - /* Upload */ -- if ((src_surface->locations & WINED3D_LOCATION_SYSMEM) +@@ -5536,8 +5537,8 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC + color_key = &src_surface->container->async.src_blt_color_key; + blit_op = WINED3D_BLIT_OP_COLOR_BLIT_CKEY; + } +- else if ((src_surface->locations & WINED3D_LOCATION_SYSMEM) - && !(dst_surface->locations & WINED3D_LOCATION_SYSMEM)) -+ if ((src_surface->resource.locations & WINED3D_LOCATION_SYSMEM) ++ else if ((src_surface->resource.locations & WINED3D_LOCATION_SYSMEM) + && !(dst_surface->resource.locations & WINED3D_LOCATION_SYSMEM)) { + /* Upload */ if (scale) - TRACE("Not doing upload because of scaling.\n"); diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c -index d742b11..601d3ad 100644 +index 4f4d4df..e702d61 100644 --- a/dlls/wined3d/swapchain.c +++ b/dlls/wined3d/swapchain.c @@ -555,8 +555,8 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, const RECT @@ -441,10 +441,10 @@ /* Both memory copies of the surfaces are ok, flip them around too instead of dirtifying * Doesn't work with render_to_fbo because we're not flipping diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h -index d9a4cdb..86f3c58 100644 +index c6ac183..e1bc35d 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h -@@ -2317,7 +2317,6 @@ struct wined3d_surface +@@ -2333,7 +2333,6 @@ struct wined3d_surface const struct wined3d_surface_ops *surface_ops; struct wined3d_texture *container; void *user_memory; @@ -453,5 +453,5 @@ DWORD flags; -- -2.3.0 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0012-wined3d-Remove-surface_validate_location.patch wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0012-wined3d-Remove-surface_validate_location.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0012-wined3d-Remove-surface_validate_location.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0012-wined3d-Remove-surface_validate_location.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,4 +1,4 @@ -From 574b59a0f496d7aab025e1b3a1e241b20692d5e0 Mon Sep 17 00:00:00 2001 +From bebac68a70a4be81237cd5ba392870eed6f5eccc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Sat, 4 Jan 2014 00:53:47 +0100 Subject: wined3d: Remove surface_validate_location. @@ -13,20 +13,20 @@ 6 files changed, 20 insertions(+), 30 deletions(-) diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c -index b85f41e..93ecb99 100644 +index 2ad6917..35637f2 100644 --- a/dlls/wined3d/arb_program_shader.c +++ b/dlls/wined3d/arb_program_shader.c -@@ -7686,7 +7686,7 @@ HRESULT arbfp_blit_surface(struct wined3d_device *device, DWORD filter, +@@ -7921,7 +7921,7 @@ static void arbfp_blit_surface(struct wined3d_device *device, DWORD filter, context_release(context); - surface_validate_location(dst_surface, dst_surface->container->resource.draw_binding); + wined3d_resource_validate_location(&dst_surface->resource, dst_surface->container->resource.draw_binding); surface_invalidate_location(dst_surface, ~dst_surface->container->resource.draw_binding); + } - return WINED3D_OK; diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c -index 236e041..10f29d2 100644 +index e84405e..95df08f 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -392,7 +392,7 @@ void device_clear_render_targets(struct wined3d_device *device, UINT rt_count, c @@ -39,10 +39,10 @@ } } diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c -index 6ad6ac7..3e10009 100644 +index 8b2fb74..0599757 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c -@@ -1223,7 +1223,7 @@ static void surface_unload(struct wined3d_resource *resource) +@@ -1167,7 +1167,7 @@ static void surface_unload(struct wined3d_resource *resource) * and all flags get lost */ surface_prepare_system_memory(surface); memset(surface->resource.heap_memory, 0, surface->resource.size); @@ -51,7 +51,7 @@ surface_invalidate_location(surface, ~WINED3D_LOCATION_SYSMEM); /* We also get here when the ddraw swapchain is destroyed, for example -@@ -1735,7 +1735,7 @@ HRESULT surface_upload_from_surface(struct wined3d_surface *dst_surface, const P +@@ -1679,7 +1679,7 @@ HRESULT surface_upload_from_surface(struct wined3d_surface *dst_surface, const P context_release(context); @@ -60,7 +60,7 @@ surface_invalidate_location(dst_surface, ~WINED3D_LOCATION_TEXTURE_RGB); return WINED3D_OK; -@@ -2253,7 +2253,7 @@ HRESULT wined3d_surface_update_desc(struct wined3d_surface *surface, +@@ -2178,7 +2178,7 @@ HRESULT wined3d_surface_update_desc(struct wined3d_surface *surface, valid_location = WINED3D_LOCATION_SYSMEM; } @@ -69,7 +69,7 @@ return WINED3D_OK; } -@@ -2798,7 +2798,7 @@ HRESULT CDECL wined3d_surface_map(struct wined3d_surface *surface, +@@ -2723,7 +2723,7 @@ HRESULT CDECL wined3d_surface_map(struct wined3d_surface *surface, { TRACE("WINED3D_MAP_DISCARD flag passed, marking %s as up to date.\n", wined3d_debug_location(surface->resource.map_binding)); @@ -78,7 +78,7 @@ } else { -@@ -3353,7 +3353,7 @@ static void fb_copy_to_texture_direct(struct wined3d_surface *dst_surface, struc +@@ -3282,7 +3282,7 @@ static void fb_copy_to_texture_direct(struct wined3d_surface *dst_surface, struc /* The texture is now most up to date - If the surface is a render target * and has a drawable, this path is never entered. */ @@ -87,7 +87,7 @@ surface_invalidate_location(dst_surface, ~WINED3D_LOCATION_TEXTURE_RGB); } -@@ -3626,7 +3626,7 @@ static void fb_copy_to_texture_hwstretch(struct wined3d_surface *dst_surface, st +@@ -3555,7 +3555,7 @@ static void fb_copy_to_texture_hwstretch(struct wined3d_surface *dst_surface, st /* The texture is now most up to date - If the surface is a render target * and has a drawable, this path is never entered. */ @@ -96,16 +96,7 @@ surface_invalidate_location(dst_surface, ~WINED3D_LOCATION_TEXTURE_RGB); } -@@ -3939,7 +3939,7 @@ static HRESULT surface_blt_special(struct wined3d_surface *dst_surface, const RE - wined3d_texture_set_color_key(src_surface->container, WINED3D_CKEY_SRC_BLT, - (old_color_key_flags & WINED3D_CKEY_SRC_BLT) ? &old_blt_key : NULL); - -- surface_validate_location(dst_surface, dst_surface->container->resource.draw_binding); -+ wined3d_resource_validate_location(&dst_surface->resource, dst_surface->container->resource.draw_binding); - surface_invalidate_location(dst_surface, ~dst_surface->container->resource.draw_binding); - - return WINED3D_OK; -@@ -4184,13 +4184,6 @@ void surface_load_ds_location(struct wined3d_surface *surface, struct wined3d_co +@@ -4058,13 +4058,6 @@ void surface_load_ds_location(struct wined3d_surface *surface, struct wined3d_co surface->ds_current_size.cy = surface->resource.height; } @@ -119,7 +110,7 @@ void surface_invalidate_location(struct wined3d_surface *surface, DWORD location) { TRACE("surface %p, location %s.\n", surface, wined3d_debug_location(location)); -@@ -4586,7 +4579,7 @@ void surface_load_location(struct wined3d_surface *surface, struct wined3d_conte +@@ -4452,7 +4445,7 @@ void surface_load_location(struct wined3d_surface *surface, struct wined3d_conte break; } @@ -128,7 +119,16 @@ if (location != WINED3D_LOCATION_SYSMEM && (surface->resource.locations & WINED3D_LOCATION_SYSMEM)) surface_evict_sysmem(surface); -@@ -5681,7 +5674,7 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC +@@ -4627,7 +4620,7 @@ static void ffp_blit_blit_surface(struct wined3d_device *device, DWORD filter, + wined3d_texture_set_color_key(src_surface->container, WINED3D_CKEY_SRC_BLT, + (old_color_key_flags & WINED3D_CKEY_SRC_BLT) ? &old_blt_key : NULL); + +- surface_validate_location(dst_surface, dst_surface->container->resource.draw_binding); ++ wined3d_resource_validate_location(&dst_surface->resource, dst_surface->container->resource.draw_binding); + surface_invalidate_location(dst_surface, ~dst_surface->container->resource.draw_binding); + } + +@@ -5599,7 +5592,7 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC dst_surface, dst_surface->container->resource.draw_binding, &dst_rect); context_release(context); @@ -137,7 +137,7 @@ surface_invalidate_location(dst_surface, ~dst_surface->container->resource.draw_binding); return WINED3D_OK; -@@ -5778,7 +5771,7 @@ static HRESULT surface_init(struct wined3d_surface *surface, struct wined3d_text +@@ -5695,7 +5688,7 @@ static HRESULT surface_init(struct wined3d_surface *surface, struct wined3d_text } surface->container = container; @@ -146,7 +146,7 @@ list_init(&surface->renderbuffers); list_init(&surface->overlays); -@@ -5810,7 +5803,7 @@ static HRESULT surface_init(struct wined3d_surface *surface, struct wined3d_text +@@ -5727,7 +5720,7 @@ static HRESULT surface_init(struct wined3d_surface *surface, struct wined3d_text if (surface->resource.map_binding == WINED3D_LOCATION_DIB) { wined3d_resource_free_sysmem(&surface->resource); @@ -156,7 +156,7 @@ } diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c -index 601d3ad..bdb4b67 100644 +index e702d61..075bffc 100644 --- a/dlls/wined3d/swapchain.c +++ b/dlls/wined3d/swapchain.c @@ -569,19 +569,19 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, const RECT @@ -202,10 +202,10 @@ } diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c -index 1f54c71..5b6f1ab 100644 +index d834cd8..bc9584a 100644 --- a/dlls/wined3d/texture.c +++ b/dlls/wined3d/texture.c -@@ -783,9 +783,7 @@ static void texture2d_sub_resource_invalidate_location(struct wined3d_resource * +@@ -798,9 +798,7 @@ static void texture2d_sub_resource_invalidate_location(struct wined3d_resource * static void texture2d_sub_resource_validate_location(struct wined3d_resource *sub_resource, DWORD location) { @@ -217,10 +217,10 @@ static void texture2d_sub_resource_upload_data(struct wined3d_resource *sub_resource, diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h -index d5d960e..6d233b8 100644 +index 7b5a04f..06774c8 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h -@@ -2384,7 +2384,6 @@ HRESULT wined3d_surface_update_desc(struct wined3d_surface *surface, +@@ -2409,7 +2409,6 @@ HRESULT wined3d_surface_update_desc(struct wined3d_surface *surface, const struct wined3d_gl_info *gl_info, void *mem, unsigned int pitch) DECLSPEC_HIDDEN; HRESULT surface_upload_from_surface(struct wined3d_surface *dst_surface, const POINT *dst_point, struct wined3d_surface *src_surface, const RECT *src_rect) DECLSPEC_HIDDEN; @@ -229,5 +229,5 @@ GLenum target, unsigned int level, unsigned int layer, DWORD flags, struct wined3d_surface **surface) DECLSPEC_HIDDEN; -- -2.2.1 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0015-wined3d-Remove-surface_invalidate_location.patch wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0015-wined3d-Remove-surface_invalidate_location.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0015-wined3d-Remove-surface_invalidate_location.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0015-wined3d-Remove-surface_invalidate_location.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,4 +1,4 @@ -From a91d461c5fad6e7a651f8b485b8541f4d2cc2d55 Mon Sep 17 00:00:00 2001 +From 4f63b8a3415a44d16a20acfc6d4571fa10e19a55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Sat, 4 Jan 2014 01:02:15 +0100 Subject: wined3d: Remove surface_invalidate_location. @@ -15,23 +15,23 @@ 8 files changed, 30 insertions(+), 42 deletions(-) diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c -index 308e678..4bc4d3b 100644 +index 35637f2..0d61251 100644 --- a/dlls/wined3d/arb_program_shader.c +++ b/dlls/wined3d/arb_program_shader.c -@@ -7689,7 +7689,7 @@ HRESULT arbfp_blit_surface(struct wined3d_device *device, DWORD filter, +@@ -7922,7 +7922,7 @@ static void arbfp_blit_surface(struct wined3d_device *device, DWORD filter, context_release(context); wined3d_resource_validate_location(&dst_surface->resource, dst_surface->container->resource.draw_binding); - surface_invalidate_location(dst_surface, ~dst_surface->container->resource.draw_binding); + wined3d_resource_invalidate_location(&dst_surface->resource, ~dst_surface->container->resource.draw_binding); - - return WINED3D_OK; } + + static HRESULT arbfp_blit_color_fill(struct wined3d_device *device, struct wined3d_surface *dst_surface, diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c -index 8c5844a..7e4b935 100644 +index ac4c7cb..167ea7d 100644 --- a/dlls/wined3d/context.c +++ b/dlls/wined3d/context.c -@@ -3161,7 +3161,7 @@ static void context_setup_target(struct wined3d_context *context, struct wined3d +@@ -3192,7 +3192,7 @@ static void context_setup_target(struct wined3d_context *context, struct wined3d if (texture->texture_srgb.name) wined3d_texture_load(texture, context, TRUE); wined3d_texture_load(texture, context, FALSE); @@ -41,7 +41,7 @@ } diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c -index 2a62e8a..85771ba 100644 +index f5fdad2..4e21f49 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -393,7 +393,7 @@ void device_clear_render_targets(struct wined3d_device *device, UINT rt_count, c @@ -54,10 +54,10 @@ } diff --git a/dlls/wined3d/drawprim.c b/dlls/wined3d/drawprim.c -index 9ccc1b4..c05369e 100644 +index 567550e..6f226ce 100644 --- a/dlls/wined3d/drawprim.c +++ b/dlls/wined3d/drawprim.c -@@ -626,7 +626,7 @@ void draw_primitive(struct wined3d_device *device, UINT start_idx, UINT index_co +@@ -629,7 +629,7 @@ void draw_primitive(struct wined3d_device *device, UINT start_idx, UINT index_co if (target) { surface_load_location(target, context, target->container->resource.draw_binding); @@ -67,7 +67,7 @@ } } diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c -index aa6ae19..23e74b0 100644 +index 350a2b2..929ea5d 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c @@ -598,7 +598,7 @@ static void surface_evict_sysmem(struct wined3d_surface *surface) @@ -79,7 +79,7 @@ } static void surface_release_client_storage(struct wined3d_surface *surface) -@@ -1184,7 +1184,7 @@ static void surface_remove_pbo(struct wined3d_surface *surface, const struct win +@@ -1128,7 +1128,7 @@ static void surface_remove_pbo(struct wined3d_surface *surface, const struct win checkGLcall("glDeleteBuffers(1, &surface->pbo)"); surface->pbo = 0; @@ -88,7 +88,7 @@ } static ULONG surface_resource_incref(struct wined3d_resource *resource) -@@ -1224,7 +1224,7 @@ static void surface_unload(struct wined3d_resource *resource) +@@ -1168,7 +1168,7 @@ static void surface_unload(struct wined3d_resource *resource) surface_prepare_system_memory(surface); memset(surface->resource.heap_memory, 0, surface->resource.size); wined3d_resource_validate_location(&surface->resource, WINED3D_LOCATION_SYSMEM); @@ -97,7 +97,7 @@ /* We also get here when the ddraw swapchain is destroyed, for example * for a mode switch. In this case this surface won't necessarily be -@@ -1236,7 +1236,7 @@ static void surface_unload(struct wined3d_resource *resource) +@@ -1180,7 +1180,7 @@ static void surface_unload(struct wined3d_resource *resource) { surface_prepare_map_memory(surface); surface_load_location(surface, context, surface->resource.map_binding); @@ -106,7 +106,7 @@ } /* Destroy PBOs, but load them into real sysmem before */ -@@ -1274,7 +1274,10 @@ static void surface_unload(struct wined3d_resource *resource) +@@ -1218,7 +1218,10 @@ static void surface_unload(struct wined3d_resource *resource) static void wined3d_surface_location_invalidated(struct wined3d_resource *resource, DWORD location) { @@ -118,7 +118,7 @@ } static const struct wined3d_resource_ops surface_resource_ops = -@@ -1742,7 +1745,7 @@ HRESULT surface_upload_from_surface(struct wined3d_surface *dst_surface, const P +@@ -1686,7 +1689,7 @@ HRESULT surface_upload_from_surface(struct wined3d_surface *dst_surface, const P context_release(context); wined3d_resource_validate_location(&dst_surface->resource, WINED3D_LOCATION_TEXTURE_RGB); @@ -127,7 +127,7 @@ return WINED3D_OK; } -@@ -2796,7 +2799,7 @@ HRESULT CDECL wined3d_surface_map(struct wined3d_surface *surface, +@@ -2746,7 +2749,7 @@ HRESULT CDECL wined3d_surface_map(struct wined3d_surface *surface, } if (!(flags & (WINED3D_MAP_NO_DIRTY_UPDATE | WINED3D_MAP_READONLY))) @@ -136,7 +136,7 @@ switch (surface->resource.map_binding) { -@@ -2912,7 +2915,7 @@ HRESULT CDECL wined3d_surface_getdc(struct wined3d_surface *surface, HDC *dc) +@@ -2862,7 +2865,7 @@ HRESULT CDECL wined3d_surface_getdc(struct wined3d_surface *surface, HDC *dc) } surface_load_location(surface, context, WINED3D_LOCATION_DIB); @@ -145,7 +145,7 @@ if (context) context_release(context); -@@ -2961,7 +2964,7 @@ HRESULT CDECL wined3d_surface_releasedc(struct wined3d_surface *surface, HDC dc) +@@ -2911,7 +2914,7 @@ HRESULT CDECL wined3d_surface_releasedc(struct wined3d_surface *surface, HDC dc) context = context_acquire(device, NULL); surface_load_location(surface, context, surface->resource.map_binding); @@ -154,7 +154,7 @@ if (context) context_release(context); } -@@ -3337,7 +3340,7 @@ static void fb_copy_to_texture_direct(struct wined3d_surface *dst_surface, struc +@@ -3289,7 +3292,7 @@ static void fb_copy_to_texture_direct(struct wined3d_surface *dst_surface, struc /* The texture is now most up to date - If the surface is a render target * and has a drawable, this path is never entered. */ wined3d_resource_validate_location(&dst_surface->resource, WINED3D_LOCATION_TEXTURE_RGB); @@ -163,7 +163,7 @@ } /* Uses the hardware to stretch and flip the image */ -@@ -3405,7 +3408,7 @@ static void fb_copy_to_texture_hwstretch(struct wined3d_surface *dst_surface, st +@@ -3357,7 +3360,7 @@ static void fb_copy_to_texture_hwstretch(struct wined3d_surface *dst_surface, st checkGLcall("glEnable(texture_target)"); /* For now invalidate the texture copy of the back buffer. Drawable and sysmem copy are untouched */ @@ -172,7 +172,7 @@ } /* Make sure that the top pixel is always above the bottom pixel, and keep a separate upside down flag -@@ -3610,7 +3613,7 @@ static void fb_copy_to_texture_hwstretch(struct wined3d_surface *dst_surface, st +@@ -3562,7 +3565,7 @@ static void fb_copy_to_texture_hwstretch(struct wined3d_surface *dst_surface, st /* The texture is now most up to date - If the surface is a render target * and has a drawable, this path is never entered. */ wined3d_resource_validate_location(&dst_surface->resource, WINED3D_LOCATION_TEXTURE_RGB); @@ -181,16 +181,7 @@ } /* Front buffer coordinates are always full screen coordinates, but our GL -@@ -3923,7 +3926,7 @@ static HRESULT surface_blt_special(struct wined3d_surface *dst_surface, const RE - (old_color_key_flags & WINED3D_CKEY_SRC_BLT) ? &old_blt_key : NULL); - - wined3d_resource_validate_location(&dst_surface->resource, dst_surface->container->resource.draw_binding); -- surface_invalidate_location(dst_surface, ~dst_surface->container->resource.draw_binding); -+ wined3d_resource_invalidate_location(&dst_surface->resource, ~dst_surface->container->resource.draw_binding); - - return WINED3D_OK; - } -@@ -4167,18 +4170,6 @@ void surface_load_ds_location(struct wined3d_surface *surface, struct wined3d_co +@@ -4064,18 +4067,6 @@ void surface_load_ds_location(struct wined3d_surface *surface, struct wined3d_co surface->ds_current_size.cy = surface->resource.height; } @@ -209,7 +200,16 @@ static DWORD resource_access_from_location(DWORD location) { switch (location) -@@ -5651,7 +5642,7 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC +@@ -4627,7 +4618,7 @@ static void ffp_blit_blit_surface(struct wined3d_device *device, DWORD filter, + (old_color_key_flags & WINED3D_CKEY_SRC_BLT) ? &old_blt_key : NULL); + + wined3d_resource_validate_location(&dst_surface->resource, dst_surface->container->resource.draw_binding); +- surface_invalidate_location(dst_surface, ~dst_surface->container->resource.draw_binding); ++ wined3d_resource_invalidate_location(&dst_surface->resource, ~dst_surface->container->resource.draw_binding); + } + + const struct blit_shader ffp_blit = { +@@ -5599,7 +5590,7 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC context_release(context); wined3d_resource_validate_location(&dst_surface->resource, dst_surface->container->resource.draw_binding); @@ -218,7 +218,7 @@ return WINED3D_OK; } -@@ -5780,7 +5771,7 @@ static HRESULT surface_init(struct wined3d_surface *surface, struct wined3d_text +@@ -5727,7 +5718,7 @@ static HRESULT surface_init(struct wined3d_surface *surface, struct wined3d_text { wined3d_resource_free_sysmem(&surface->resource); wined3d_resource_validate_location(&surface->resource, WINED3D_LOCATION_DIB); @@ -228,7 +228,7 @@ return hr; diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c -index bdb4b67..e64715e 100644 +index 075bffc..bd5348c 100644 --- a/dlls/wined3d/swapchain.c +++ b/dlls/wined3d/swapchain.c @@ -512,7 +512,7 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, const RECT @@ -278,10 +278,10 @@ /* MSDN says we're only allowed a single fullscreen swapchain per device, diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c -index 05fb248..8edae6d 100644 +index 172e5c4..140124f 100644 --- a/dlls/wined3d/texture.c +++ b/dlls/wined3d/texture.c -@@ -787,7 +787,7 @@ static void texture2d_sub_resource_add_dirty_region(struct wined3d_resource *sub +@@ -779,7 +779,7 @@ static void texture2d_sub_resource_add_dirty_region(struct wined3d_resource *sub context = context_acquire(surface->resource.device, NULL); surface_load_location(surface, context, surface->resource.map_binding); context_release(context); @@ -290,7 +290,7 @@ } static void texture2d_sub_resource_cleanup(struct wined3d_resource *sub_resource) -@@ -799,9 +799,7 @@ static void texture2d_sub_resource_cleanup(struct wined3d_resource *sub_resource +@@ -791,9 +791,7 @@ static void texture2d_sub_resource_cleanup(struct wined3d_resource *sub_resource static void texture2d_sub_resource_invalidate_location(struct wined3d_resource *sub_resource, DWORD location) { @@ -302,10 +302,10 @@ static void texture2d_sub_resource_validate_location(struct wined3d_resource *sub_resource, DWORD location) diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h -index 3628834..f8ea878 100644 +index 27bba5b..19b8d31 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h -@@ -2368,7 +2368,6 @@ HRESULT surface_color_fill(struct wined3d_surface *s, +@@ -2391,7 +2391,6 @@ HRESULT surface_color_fill(struct wined3d_surface *s, GLenum surface_get_gl_buffer(const struct wined3d_surface *surface) DECLSPEC_HIDDEN; void surface_get_drawable_size(const struct wined3d_surface *surface, const struct wined3d_context *context, unsigned int *width, unsigned int *height) DECLSPEC_HIDDEN; @@ -314,5 +314,5 @@ void surface_load_ds_location(struct wined3d_surface *surface, struct wined3d_context *context, DWORD location) DECLSPEC_HIDDEN; -- -2.3.0 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0018-wined3d-Replace-surface_load_location-with-resource_.patch wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0018-wined3d-Replace-surface_load_location-with-resource_.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0018-wined3d-Replace-surface_load_location-with-resource_.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0018-wined3d-Replace-surface_load_location-with-resource_.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,4 +1,4 @@ -From ac7d5335fde4c1a4cf0822814eaa168c1b701217 Mon Sep 17 00:00:00 2001 +From d934f1879e55a8787562d4cc75ce2bd981f8b585 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Sun, 17 Nov 2013 20:33:17 +0100 Subject: wined3d: Replace surface_load_location with resource_load_location. @@ -15,10 +15,10 @@ 7 files changed, 43 insertions(+), 86 deletions(-) diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c -index 7e4b935..c08e0ce 100644 +index 167ea7d..5644ea0 100644 --- a/dlls/wined3d/context.c +++ b/dlls/wined3d/context.c -@@ -2217,7 +2217,7 @@ static void context_validate_onscreen_formats(struct wined3d_context *context, +@@ -2224,7 +2224,7 @@ static void context_validate_onscreen_formats(struct wined3d_context *context, WARN("Depth stencil format is not supported by WGL, rendering the backbuffer in an FBO\n"); /* The currently active context is the necessary context to access the swapchain's onscreen buffers */ @@ -28,7 +28,7 @@ swapchain_update_draw_bindings(swapchain); context_set_render_offscreen(context, TRUE); diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c -index 85771ba..22cf4b5 100644 +index 1874a2b..ab874de 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -323,7 +323,7 @@ void device_clear_render_targets(struct wined3d_device *device, UINT rt_count, c @@ -41,10 +41,10 @@ } diff --git a/dlls/wined3d/drawprim.c b/dlls/wined3d/drawprim.c -index c05369e..31f346d 100644 +index 6f226ce..f2c2f42 100644 --- a/dlls/wined3d/drawprim.c +++ b/dlls/wined3d/drawprim.c -@@ -625,7 +625,7 @@ void draw_primitive(struct wined3d_device *device, UINT start_idx, UINT index_co +@@ -628,7 +628,7 @@ void draw_primitive(struct wined3d_device *device, UINT start_idx, UINT index_co struct wined3d_surface *target = wined3d_rendertarget_view_get_surface(device->fb.render_targets[i]); if (target) { @@ -54,7 +54,7 @@ } } diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c -index edf8b79..2fae26e 100644 +index 1fcbc98..f7171df 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c @@ -758,7 +758,7 @@ static void surface_unmap(struct wined3d_surface *surface) @@ -90,7 +90,7 @@ if (src_location == WINED3D_LOCATION_DRAWABLE) required_rt = src_surface; else if (dst_location == WINED3D_LOCATION_DRAWABLE) required_rt = dst_surface; -@@ -1235,7 +1235,7 @@ static void surface_unload(struct wined3d_resource *resource) +@@ -1179,7 +1179,7 @@ static void surface_unload(struct wined3d_resource *resource) else { surface_prepare_map_memory(surface); @@ -99,7 +99,7 @@ wined3d_resource_invalidate_location(&surface->resource, ~surface->resource.map_binding); } -@@ -1280,22 +1280,6 @@ static void wined3d_surface_location_invalidated(struct wined3d_resource *resour +@@ -1224,22 +1224,6 @@ static void wined3d_surface_location_invalidated(struct wined3d_resource *resour wined3d_texture_set_dirty(surface->container); } @@ -122,16 +122,16 @@ static const struct wined3d_surface_ops surface_ops = { surface_private_setup, -@@ -1739,7 +1723,7 @@ HRESULT surface_upload_from_surface(struct wined3d_surface *dst_surface, const P +@@ -1683,7 +1667,7 @@ HRESULT surface_upload_from_surface(struct wined3d_surface *dst_surface, const P if (update_w == dst_w && update_h == dst_h) wined3d_texture_prepare_texture(dst_surface->container, context, FALSE); else - surface_load_location(dst_surface, context, WINED3D_LOCATION_TEXTURE_RGB); + wined3d_resource_load_location(&dst_surface->resource, context, WINED3D_LOCATION_TEXTURE_RGB); - wined3d_texture_bind(dst_surface->container, context, FALSE); + wined3d_texture_bind_and_dirtify(dst_surface->container, context, FALSE); surface_get_memory(src_surface, &data, src_surface->resource.locations); -@@ -1874,7 +1858,7 @@ void surface_load(struct wined3d_surface *surface, struct wined3d_context *conte +@@ -1816,7 +1800,7 @@ void surface_load(struct wined3d_surface *surface, struct wined3d_context *conte } TRACE("Reloading because surface is dirty.\n"); @@ -140,7 +140,7 @@ surface_evict_sysmem(surface); } -@@ -2801,7 +2785,7 @@ HRESULT CDECL wined3d_surface_map(struct wined3d_surface *surface, +@@ -2749,7 +2733,7 @@ HRESULT CDECL wined3d_surface_map(struct wined3d_surface *surface, if (surface->resource.device->d3d_initialized) context = context_acquire(surface->resource.device, NULL); @@ -149,7 +149,7 @@ if (context) context_release(context); } -@@ -2906,7 +2890,7 @@ HRESULT CDECL wined3d_surface_getdc(struct wined3d_surface *surface, HDC *dc) +@@ -2854,7 +2838,7 @@ HRESULT CDECL wined3d_surface_getdc(struct wined3d_surface *surface, HDC *dc) { if (surface->flags & SFLAG_CLIENT) { @@ -158,7 +158,7 @@ surface_release_client_storage(surface); } hr = surface_create_dib_section(surface); -@@ -2922,7 +2906,7 @@ HRESULT CDECL wined3d_surface_getdc(struct wined3d_surface *surface, HDC *dc) +@@ -2870,7 +2854,7 @@ HRESULT CDECL wined3d_surface_getdc(struct wined3d_surface *surface, HDC *dc) surface->resource.map_binding = WINED3D_LOCATION_DIB; } @@ -167,7 +167,7 @@ wined3d_resource_invalidate_location(&surface->resource, ~WINED3D_LOCATION_DIB); if (context) -@@ -2971,7 +2955,7 @@ HRESULT CDECL wined3d_surface_releasedc(struct wined3d_surface *surface, HDC dc) +@@ -2919,7 +2903,7 @@ HRESULT CDECL wined3d_surface_releasedc(struct wined3d_surface *surface, HDC dc) if (device->d3d_initialized) context = context_acquire(device, NULL); @@ -176,7 +176,7 @@ wined3d_resource_invalidate_location(&surface->resource, WINED3D_LOCATION_DIB); if (context) context_release(context); -@@ -3684,8 +3668,8 @@ static void surface_blt_to_drawable(const struct wined3d_device *device, +@@ -3634,8 +3618,8 @@ static void surface_blt_to_drawable(const struct wined3d_device *device, gl_info = context->gl_info; /* Make sure the surface is up-to-date. This should probably use @@ -187,7 +187,7 @@ wined3d_texture_load(src_surface->container, context, FALSE); /* Activate the destination context, set it up for blitting */ -@@ -4178,29 +4162,6 @@ void surface_load_ds_location(struct wined3d_surface *surface, struct wined3d_co +@@ -4073,29 +4057,6 @@ void surface_load_ds_location(struct wined3d_surface *surface, struct wined3d_co surface->ds_current_size.cy = surface->resource.height; } @@ -217,7 +217,7 @@ static void surface_copy_simple_location(struct wined3d_surface *surface, DWORD location) { struct wined3d_device *device = surface->resource.device; -@@ -4250,7 +4211,7 @@ static void surface_load_sysmem(struct wined3d_surface *surface, +@@ -4145,7 +4106,7 @@ static void surface_load_sysmem(struct wined3d_surface *surface, } if (surface->resource.locations & (WINED3D_LOCATION_RB_MULTISAMPLE | WINED3D_LOCATION_RB_RESOLVED)) @@ -226,7 +226,7 @@ /* Download the surface to system memory. */ if (surface->resource.locations & (WINED3D_LOCATION_TEXTURE_RGB | WINED3D_LOCATION_TEXTURE_SRGB)) -@@ -4286,7 +4247,7 @@ static HRESULT surface_load_drawable(struct wined3d_surface *surface, +@@ -4181,7 +4142,7 @@ static HRESULT surface_load_drawable(struct wined3d_surface *surface, } surface_get_rect(surface, NULL, &r); @@ -235,7 +235,7 @@ surface_blt_to_drawable(surface->resource.device, context, WINED3D_TEXF_POINT, FALSE, surface, &r, surface, &r); -@@ -4359,7 +4320,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, +@@ -4254,7 +4215,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, /* Performance warning... */ FIXME("Downloading RGB surface %p to reload it as sRGB.\n", surface); surface_prepare_map_memory(surface); @@ -244,7 +244,7 @@ } } else -@@ -4370,7 +4331,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, +@@ -4265,7 +4226,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, /* Performance warning... */ FIXME("Downloading sRGB surface %p to reload it as RGB.\n", surface); surface_prepare_map_memory(surface); @@ -253,7 +253,7 @@ } } -@@ -4379,7 +4340,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, +@@ -4274,7 +4235,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, WARN("Trying to load a texture from sysmem, but no simple location is valid.\n"); /* Lets hope we get it from somewhere... */ surface_prepare_system_memory(surface); @@ -262,7 +262,7 @@ } wined3d_texture_prepare_texture(texture, context, srgb); -@@ -4405,7 +4366,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, +@@ -4300,7 +4261,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, surface->resource.map_binding = WINED3D_LOCATION_SYSMEM; surface_prepare_map_memory(surface); @@ -271,7 +271,7 @@ surface_remove_pbo(surface, gl_info); } -@@ -4474,9 +4435,11 @@ static void surface_multisample_resolve(struct wined3d_surface *surface, struct +@@ -4368,9 +4329,11 @@ static void surface_multisample_resolve(struct wined3d_surface *surface, struct surface, WINED3D_LOCATION_RB_MULTISAMPLE, &rect, surface, WINED3D_LOCATION_RB_RESOLVED, &rect); } @@ -285,7 +285,7 @@ HRESULT hr; TRACE("surface %p, location %s.\n", surface, wined3d_debug_location(location)); -@@ -4503,20 +4466,6 @@ void surface_load_location(struct wined3d_surface *surface, struct wined3d_conte +@@ -4397,20 +4360,6 @@ void surface_load_location(struct wined3d_surface *surface, struct wined3d_conte } } @@ -306,7 +306,7 @@ if (!surface->resource.locations) { ERR("Surface %p does not have any up to date location.\n", surface); -@@ -5605,7 +5554,8 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC +@@ -5552,7 +5501,8 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC if (!wined3d_resource_is_offscreen(&dst_surface->container->resource)) { struct wined3d_context *context = context_acquire(device, dst_surface); @@ -316,7 +316,7 @@ context_release(context); } return WINED3D_OK; -@@ -5680,6 +5630,15 @@ cpu: +@@ -5625,6 +5575,15 @@ cpu: return surface_cpu_blt(dst_surface, &dst_rect, src_surface, &src_rect, flags, fx, filter); } @@ -333,7 +333,7 @@ const struct wined3d_resource_desc *desc, GLenum target, unsigned int level, unsigned int layer, DWORD flags) { diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c -index 17f1afe..e1a5b8a 100644 +index 6864a4a..15f7708 100644 --- a/dlls/wined3d/swapchain.c +++ b/dlls/wined3d/swapchain.c @@ -309,7 +309,7 @@ static void swapchain_blit(const struct wined3d_swapchain *swapchain, @@ -372,10 +372,10 @@ src_dc = front->hDC; window = swapchain->win_handle; diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c -index 4111ceb..87944b1 100644 +index 0c64f39..9eb8da1 100644 --- a/dlls/wined3d/texture.c +++ b/dlls/wined3d/texture.c -@@ -785,7 +785,7 @@ static void texture2d_sub_resource_add_dirty_region(struct wined3d_resource *sub +@@ -777,7 +777,7 @@ static void texture2d_sub_resource_add_dirty_region(struct wined3d_resource *sub surface_prepare_map_memory(surface); context = context_acquire(surface->resource.device, NULL); @@ -385,10 +385,10 @@ wined3d_resource_invalidate_location(&surface->resource, ~surface->resource.map_binding); } diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h -index 159ba51..f484e18 100644 +index 8e51f16..b8dbde3 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h -@@ -2375,8 +2375,6 @@ void surface_load(struct wined3d_surface *surface, struct wined3d_context *conte +@@ -2391,8 +2391,6 @@ void surface_load(struct wined3d_surface *surface, struct wined3d_context *conte void surface_load_ds_location(struct wined3d_surface *surface, struct wined3d_context *context, DWORD location) DECLSPEC_HIDDEN; void surface_load_fb_texture(struct wined3d_surface *surface, BOOL srgb) DECLSPEC_HIDDEN; @@ -398,5 +398,5 @@ void surface_prepare_rb(struct wined3d_surface *surface, const struct wined3d_gl_info *gl_info, BOOL multisample) DECLSPEC_HIDDEN; -- -2.3.0 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0020-wined3d-Move-volume-PBO-infrastructure-into-the-reso.patch wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0020-wined3d-Move-volume-PBO-infrastructure-into-the-reso.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0020-wined3d-Move-volume-PBO-infrastructure-into-the-reso.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0020-wined3d-Move-volume-PBO-infrastructure-into-the-reso.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,4 +1,4 @@ -From ba5c51ffdfff3be025ace2dd52218bd845c9d851 Mon Sep 17 00:00:00 2001 +From 4dedb87fa2626251d0c7c0d5f861f8665bfa289b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Thu, 16 Jan 2014 22:07:17 +0100 Subject: wined3d: Move volume PBO infrastructure into the resource. @@ -10,10 +10,10 @@ 3 files changed, 82 insertions(+), 79 deletions(-) diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c -index 7f283f5..c907424 100644 +index 61a829d..1fb2370 100644 --- a/dlls/wined3d/resource.c +++ b/dlls/wined3d/resource.c -@@ -292,7 +292,7 @@ GLbitfield wined3d_resource_gl_map_flags(DWORD d3d_flags) +@@ -301,7 +301,7 @@ GLbitfield wined3d_resource_gl_map_flags(DWORD d3d_flags) return ret; } @@ -22,7 +22,7 @@ { if (d3d_flags & WINED3D_MAP_READONLY) return GL_READ_ONLY_ARB; -@@ -428,3 +428,65 @@ void wined3d_resource_load_location(struct wined3d_resource *resource, +@@ -437,3 +437,65 @@ void wined3d_resource_load_location(struct wined3d_resource *resource, resource->resource_ops->resource_load_location(resource, context, location); } @@ -89,19 +89,19 @@ + } +} diff --git a/dlls/wined3d/volume.c b/dlls/wined3d/volume.c -index ad37cce..db3a68c 100644 +index 99caab8..5fe223b 100644 --- a/dlls/wined3d/volume.c +++ b/dlls/wined3d/volume.c -@@ -216,7 +216,7 @@ static void wined3d_volume_load_location(struct wined3d_resource *resource, +@@ -218,7 +218,7 @@ static void wined3d_volume_load_location(struct wined3d_resource *resource, } else if (volume->resource.locations & WINED3D_LOCATION_BUFFER) { - struct wined3d_const_bo_address data = {volume->pbo, NULL}; + struct wined3d_const_bo_address data = {volume->resource.buffer_object, NULL}; + wined3d_texture_bind_and_dirtify(volume->container, context, + location == WINED3D_LOCATION_TEXTURE_SRGB); wined3d_volume_upload_data(volume, context, &data); - } - else if (volume->resource.locations & WINED3D_LOCATION_TEXTURE_RGB) -@@ -270,7 +270,7 @@ static void wined3d_volume_load_location(struct wined3d_resource *resource, +@@ -274,7 +274,7 @@ static void wined3d_volume_load_location(struct wined3d_resource *resource, break; case WINED3D_LOCATION_BUFFER: @@ -110,7 +110,7 @@ ERR("Trying to load WINED3D_LOCATION_BUFFER without setting it up first.\n"); if (volume->resource.locations & WINED3D_LOCATION_DISCARDED) -@@ -280,7 +280,7 @@ static void wined3d_volume_load_location(struct wined3d_resource *resource, +@@ -284,7 +284,7 @@ static void wined3d_volume_load_location(struct wined3d_resource *resource, } else if (volume->resource.locations & (WINED3D_LOCATION_TEXTURE_RGB | WINED3D_LOCATION_TEXTURE_SRGB)) { @@ -119,7 +119,7 @@ if (volume->resource.locations & WINED3D_LOCATION_TEXTURE_RGB) wined3d_texture_bind_and_dirtify(volume->container, context, FALSE); -@@ -317,16 +317,16 @@ static void wined3d_volume_prepare_pbo(struct wined3d_volume *volume, struct win +@@ -321,16 +321,16 @@ static void wined3d_volume_prepare_pbo(struct wined3d_volume *volume, struct win { const struct wined3d_gl_info *gl_info = context->gl_info; @@ -140,7 +140,7 @@ } static void wined3d_volume_free_pbo(struct wined3d_volume *volume) -@@ -334,10 +334,10 @@ static void wined3d_volume_free_pbo(struct wined3d_volume *volume) +@@ -338,10 +338,10 @@ static void wined3d_volume_free_pbo(struct wined3d_volume *volume) struct wined3d_context *context = context_acquire(volume->resource.device, NULL); const struct wined3d_gl_info *gl_info = context->gl_info; @@ -154,7 +154,7 @@ context_release(context); } -@@ -345,7 +345,7 @@ void wined3d_volume_destroy(struct wined3d_volume *volume) +@@ -349,7 +349,7 @@ void wined3d_volume_destroy(struct wined3d_volume *volume) { TRACE("volume %p.\n", volume); @@ -163,7 +163,7 @@ wined3d_volume_free_pbo(volume); resource_cleanup(&volume->resource); -@@ -378,7 +378,7 @@ static void volume_unload(struct wined3d_resource *resource) +@@ -382,7 +382,7 @@ static void volume_unload(struct wined3d_resource *resource) wined3d_resource_invalidate_location(&volume->resource, ~WINED3D_LOCATION_DISCARDED); } @@ -172,7 +172,7 @@ { /* Should not happen because only dynamic default pool volumes * have a buffer, and those are not evicted by device_evit_managed_resources -@@ -494,44 +494,6 @@ static BOOL wined3d_volume_prepare_map_memory(struct wined3d_volume *volume, str +@@ -498,44 +498,6 @@ static BOOL wined3d_volume_prepare_map_memory(struct wined3d_volume *volume, str } } @@ -217,7 +217,7 @@ HRESULT CDECL wined3d_volume_map(struct wined3d_volume *volume, struct wined3d_map_desc *map_desc, const struct wined3d_box *box, DWORD flags) { -@@ -582,7 +544,7 @@ HRESULT CDECL wined3d_volume_map(struct wined3d_volume *volume, +@@ -586,7 +548,7 @@ HRESULT CDECL wined3d_volume_map(struct wined3d_volume *volume, else wined3d_resource_load_location(&volume->resource, context, volume->resource.map_binding); @@ -226,7 +226,7 @@ context_release(context); TRACE("Base memory pointer %p.\n", base_memory); -@@ -641,30 +603,6 @@ struct wined3d_volume * CDECL wined3d_volume_from_resource(struct wined3d_resour +@@ -645,30 +607,6 @@ struct wined3d_volume * CDECL wined3d_volume_from_resource(struct wined3d_resour return volume_from_resource(resource); } @@ -257,7 +257,7 @@ HRESULT CDECL wined3d_volume_unmap(struct wined3d_volume *volume) { struct wined3d_device *device = volume->resource.device; -@@ -678,7 +616,7 @@ HRESULT CDECL wined3d_volume_unmap(struct wined3d_volume *volume) +@@ -682,7 +620,7 @@ HRESULT CDECL wined3d_volume_unmap(struct wined3d_volume *volume) } context = context_acquire(device, NULL); @@ -267,10 +267,10 @@ volume->resource.map_count--; diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h -index 4934dc8..8cce2d9 100644 +index b8dbde3..460e861 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h -@@ -2095,6 +2095,7 @@ struct wined3d_resource +@@ -2125,6 +2125,7 @@ struct wined3d_resource DWORD priority; void *heap_memory, *user_memory, *bitmap_data; UINT custom_row_pitch, custom_slice_pitch; @@ -278,7 +278,7 @@ struct list resource_list_entry; DWORD locations; -@@ -2124,12 +2125,15 @@ void resource_unload(struct wined3d_resource *resource) DECLSPEC_HIDDEN; +@@ -2154,12 +2155,15 @@ void resource_unload(struct wined3d_resource *resource) DECLSPEC_HIDDEN; DWORD wined3d_resource_access_from_location(DWORD location) DECLSPEC_HIDDEN; BOOL wined3d_resource_allocate_sysmem(struct wined3d_resource *resource) DECLSPEC_HIDDEN; void wined3d_resource_free_sysmem(struct wined3d_resource *resource) DECLSPEC_HIDDEN; @@ -295,7 +295,7 @@ DWORD wined3d_resource_sanitize_map_flags(const struct wined3d_resource *resource, DWORD flags) DECLSPEC_HIDDEN; void wined3d_resource_update_draw_binding(struct wined3d_resource *resource) DECLSPEC_HIDDEN; void wined3d_resource_validate_location(struct wined3d_resource *resource, DWORD location) DECLSPEC_HIDDEN; -@@ -2262,7 +2266,6 @@ struct wined3d_volume +@@ -2283,7 +2287,6 @@ struct wined3d_volume DWORD flags; GLint texture_level; DWORD download_count; @@ -304,5 +304,5 @@ static inline struct wined3d_volume *volume_from_resource(struct wined3d_resource *resource) -- -2.2.1 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0031-wined3d-Introduce-a-function-to-retrieve-resource-me.patch wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0031-wined3d-Introduce-a-function-to-retrieve-resource-me.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0031-wined3d-Introduce-a-function-to-retrieve-resource-me.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0031-wined3d-Introduce-a-function-to-retrieve-resource-me.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,4 +1,4 @@ -From 66f266e57766def2d64f382ba84e226b931c2a4f Mon Sep 17 00:00:00 2001 +From c17af045c56511c51b3c8d8873c10a0df66bee5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Mon, 16 Sep 2013 22:44:33 +0200 Subject: wined3d: Introduce a function to retrieve resource memory. @@ -51,7 +51,7 @@ void wined3d_resource_load_location(struct wined3d_resource *resource, struct wined3d_context *context, DWORD location) diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c -index d4e20767..d0c9518 100644 +index 0815cc9..1a6152a 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c @@ -478,39 +478,6 @@ static HRESULT surface_create_dib_section(struct wined3d_surface *surface) @@ -94,7 +94,7 @@ static void surface_prepare_buffer(struct wined3d_surface *surface) { struct wined3d_context *context; -@@ -1327,7 +1294,7 @@ static void surface_download_data(struct wined3d_surface *surface, const struct +@@ -1271,7 +1238,7 @@ static void surface_download_data(struct wined3d_surface *surface, const struct return; } @@ -103,16 +103,16 @@ if (format->flags & WINED3DFMT_FLAG_COMPRESSED) { -@@ -1693,7 +1660,7 @@ HRESULT surface_upload_from_surface(struct wined3d_surface *dst_surface, const P +@@ -1637,7 +1604,7 @@ HRESULT surface_upload_from_surface(struct wined3d_surface *dst_surface, const P wined3d_resource_load_location(&dst_surface->resource, context, WINED3D_LOCATION_TEXTURE_RGB); - wined3d_texture_bind(dst_surface->container, context, FALSE); + wined3d_texture_bind_and_dirtify(dst_surface->container, context, FALSE); - surface_get_memory(src_surface, &data, src_surface->resource.locations); + wined3d_resource_get_memory(&src_surface->resource, src_surface->resource.locations, &data); wined3d_resource_get_pitch(&src_surface->resource, &src_row_pitch, &src_slice_pitch); wined3d_surface_upload_data(dst_surface, gl_info, src_format, src_rect, -@@ -2948,7 +2915,7 @@ static void read_from_framebuffer(struct wined3d_surface *surface, +@@ -2871,7 +2838,7 @@ static void read_from_framebuffer(struct wined3d_surface *surface, struct wined3d_bo_address data; UINT row_pitch, slice_pitch; @@ -121,7 +121,7 @@ /* Context_release does not restore the original context in case of * nested context_acquire calls. Only read_from_framebuffer and -@@ -4140,8 +4107,8 @@ static void surface_copy_simple_location(struct wined3d_surface *surface, DWORD +@@ -4010,8 +3977,8 @@ static void surface_copy_simple_location(struct wined3d_surface *surface, DWORD struct wined3d_bo_address dst, src; UINT size = surface->resource.size; @@ -132,7 +132,7 @@ if (dst.buffer_object) { -@@ -4360,7 +4327,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, +@@ -4223,7 +4190,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, surface_remove_pbo(surface, gl_info); } @@ -142,10 +142,10 @@ { /* This code is entered for texture formats which need a fixup. */ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h -index 23aa052..9582571 100644 +index 1ab7a01..26b64b7 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h -@@ -2148,6 +2148,8 @@ BOOL wined3d_resource_allocate_sysmem(struct wined3d_resource *resource) DECLSPE +@@ -2157,6 +2157,8 @@ BOOL wined3d_resource_allocate_sysmem(struct wined3d_resource *resource) DECLSPE void wined3d_resource_free_sysmem(struct wined3d_resource *resource) DECLSPEC_HIDDEN; BYTE *wined3d_resource_get_map_ptr(const struct wined3d_resource *resource, const struct wined3d_context *context, DWORD flags) DECLSPEC_HIDDEN; @@ -155,5 +155,5 @@ void wined3d_resource_invalidate_location(struct wined3d_resource *resource, DWORD location) DECLSPEC_HIDDEN; BOOL wined3d_resource_is_offscreen(struct wined3d_resource *resource) DECLSPEC_HIDDEN; -- -2.2.2 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0043-wined3d-Move-the-framebuffer-into-wined3d_state.patch wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0043-wined3d-Move-the-framebuffer-into-wined3d_state.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0043-wined3d-Move-the-framebuffer-into-wined3d_state.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0043-wined3d-Move-the-framebuffer-into-wined3d_state.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,4 +1,4 @@ -From 819f7f67ac69f32981342604f7aa0b011377a891 Mon Sep 17 00:00:00 2001 +From d38b136f82ef53ae256d8989312783f0cba3a437 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Thu, 20 Dec 2012 13:09:17 +0100 Subject: wined3d: Move the framebuffer into wined3d_state @@ -20,7 +20,7 @@ 13 files changed, 171 insertions(+), 126 deletions(-) diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c -index d745591..f5a7786 100644 +index 0d61251..2561afc 100644 --- a/dlls/wined3d/arb_program_shader.c +++ b/dlls/wined3d/arb_program_shader.c @@ -706,7 +706,7 @@ static void shader_arb_load_constants_internal(struct shader_arb_priv *priv, @@ -129,10 +129,10 @@ WORD map; diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c -index 4a04b00..408e9b5 100644 +index d66850a..639dc4f 100644 --- a/dlls/wined3d/cs.c +++ b/dlls/wined3d/cs.c -@@ -280,7 +280,7 @@ static void wined3d_cs_exec_clear(struct wined3d_cs *cs, const void *data) +@@ -290,7 +290,7 @@ static void wined3d_cs_exec_clear(struct wined3d_cs *cs, const void *data) device = cs->device; wined3d_get_draw_rect(&device->state, &draw_rect); device_clear_render_targets(device, device->adapter->gl_info.limits.buffers, @@ -141,7 +141,7 @@ op->color, op->depth, op->stencil); } -@@ -387,7 +387,7 @@ static void wined3d_cs_exec_set_rendertarget_view(struct wined3d_cs *cs, const v +@@ -397,7 +397,7 @@ static void wined3d_cs_exec_set_rendertarget_view(struct wined3d_cs *cs, const v { const struct wined3d_cs_set_rendertarget_view *op = data; @@ -150,7 +150,7 @@ device_invalidate_state(cs->device, STATE_FRAMEBUFFER); } -@@ -410,7 +410,7 @@ static void wined3d_cs_exec_set_depth_stencil_view(struct wined3d_cs *cs, const +@@ -420,7 +420,7 @@ static void wined3d_cs_exec_set_depth_stencil_view(struct wined3d_cs *cs, const struct wined3d_device *device = cs->device; struct wined3d_rendertarget_view *prev; @@ -159,7 +159,7 @@ { struct wined3d_surface *prev_surface = wined3d_rendertarget_view_get_surface(prev); -@@ -426,7 +426,7 @@ static void wined3d_cs_exec_set_depth_stencil_view(struct wined3d_cs *cs, const +@@ -436,7 +436,7 @@ static void wined3d_cs_exec_set_depth_stencil_view(struct wined3d_cs *cs, const } } @@ -168,7 +168,7 @@ if (!prev != !op->view) { -@@ -896,7 +896,7 @@ static void wined3d_cs_exec_reset_state(struct wined3d_cs *cs, const void *data) +@@ -1002,7 +1002,7 @@ static void wined3d_cs_exec_reset_state(struct wined3d_cs *cs, const void *data) state_cleanup(&cs->state); memset(&cs->state, 0, sizeof(cs->state)); @@ -177,7 +177,7 @@ WINED3D_STATE_NO_REF | WINED3D_STATE_INIT_DEFAULT))) ERR("Failed to initialize CS state, hr %#x.\n", hr); } -@@ -978,17 +978,9 @@ struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device) +@@ -1085,17 +1085,9 @@ struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device) if (!(cs = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*cs)))) return NULL; @@ -196,7 +196,7 @@ HeapFree(GetProcessHeap(), 0, cs); return NULL; } -@@ -1009,7 +1001,6 @@ struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device) +@@ -1116,7 +1108,6 @@ struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device) void wined3d_cs_destroy(struct wined3d_cs *cs) { state_cleanup(&cs->state); @@ -205,7 +205,7 @@ HeapFree(GetProcessHeap(), 0, cs); } diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c -index d7b8ac8..a7fad33 100644 +index 5836edf..13a1f0c 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -860,7 +860,7 @@ static void device_init_swapchain_state(struct wined3d_device *device, struct wi @@ -428,7 +428,7 @@ wined3d_rendertarget_view_incref(view); wined3d_cs_emit_set_depth_stencil_view(device->cs, view); if (prev) -@@ -4362,10 +4344,9 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device, +@@ -4363,10 +4345,9 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device, wined3d_texture_decref(device->cursor_texture); device->cursor_texture = NULL; } @@ -440,7 +440,7 @@ { for (i = 0; i < device->adapter->gl_info.limits.buffers; ++i) { -@@ -4374,6 +4355,11 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device, +@@ -4375,6 +4356,11 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device, } wined3d_device_set_depth_stencil_view(device, NULL); @@ -452,7 +452,7 @@ if (device->onscreen_depth_stencil) { wined3d_surface_decref(device->onscreen_depth_stencil); -@@ -4658,7 +4644,7 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device, +@@ -4665,7 +4651,7 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device, if (device->d3d_initialized) delete_opengl_contexts(device, swapchain); @@ -461,7 +461,7 @@ &device->adapter->d3d_info, WINED3D_STATE_INIT_DEFAULT))) ERR("Failed to initialize device state, hr %#x.\n", hr); device->update_state = &device->state; -@@ -4667,22 +4653,21 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device, +@@ -4674,22 +4660,21 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device, } else if (device->back_buffer_view) { @@ -489,7 +489,7 @@ wined3d_cs_emit_set_scissor_rect(device->cs, &state->scissor_rect); } -@@ -4773,17 +4758,17 @@ void device_resource_released(struct wined3d_device *device, struct wined3d_reso +@@ -4780,17 +4765,17 @@ void device_resource_released(struct wined3d_device *device, struct wined3d_reso for (i = 0; i < device->adapter->gl_info.limits.buffers; ++i) { @@ -511,7 +511,7 @@ } } break; -@@ -4946,7 +4931,7 @@ HRESULT device_init(struct wined3d_device *device, struct wined3d *wined3d, +@@ -4953,7 +4938,7 @@ HRESULT device_init(struct wined3d_device *device, struct wined3d *wined3d, device->blitter = adapter->blitter; @@ -577,10 +577,10 @@ surface_modify_ds_location(ds, location, ds->ds_current_size.cx, ds->ds_current_size.cy); diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c -index e4ddbe6..9d27b50 100644 +index b1a0f85..d1613cb 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c -@@ -1064,7 +1064,7 @@ static void shader_generate_glsl_declarations(const struct wined3d_context *cont +@@ -1088,7 +1088,7 @@ static void shader_generate_glsl_declarations(const struct wined3d_context *cont const struct wined3d_state *state = &shader->device->state; const struct ps_compile_args *ps_args = ctx_priv->cur_ps_args; const struct wined3d_gl_info *gl_info = context->gl_info; @@ -590,7 +590,7 @@ const struct wined3d_shader_lconst *lconst; const char *prefix; diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c -index 31b391b..6dc1abd 100644 +index 0bedf24..70c4635 100644 --- a/dlls/wined3d/shader.c +++ b/dlls/wined3d/shader.c @@ -2344,7 +2344,7 @@ void find_ps_compile_args(const struct wined3d_state *state, const struct wined3 @@ -603,7 +603,7 @@ { static unsigned int warned = 0; diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c -index 69623af..90aae0a 100644 +index 7efbf3d..ceb1986 100644 --- a/dlls/wined3d/state.c +++ b/dlls/wined3d/state.c @@ -105,7 +105,7 @@ static void state_zenable(struct wined3d_context *context, const struct wined3d_ @@ -660,7 +660,7 @@ float scale; union -@@ -4677,7 +4677,7 @@ static void vertexdeclaration(struct wined3d_context *context, const struct wine +@@ -4657,7 +4657,7 @@ static void vertexdeclaration(struct wined3d_context *context, const struct wine static void viewport_miscpart(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { @@ -669,7 +669,7 @@ const struct wined3d_gl_info *gl_info = context->gl_info; struct wined3d_viewport vp = state->viewport; -@@ -4855,7 +4855,7 @@ static void scissorrect(struct wined3d_context *context, const struct wined3d_st +@@ -4835,7 +4835,7 @@ static void scissorrect(struct wined3d_context *context, const struct wined3d_st } else { @@ -678,7 +678,7 @@ UINT height; UINT width; -@@ -4919,7 +4919,7 @@ static void psorigin(struct wined3d_context *context, const struct wined3d_state +@@ -4899,7 +4899,7 @@ static void psorigin(struct wined3d_context *context, const struct wined3d_state void state_srgbwrite(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { @@ -788,22 +788,21 @@ if (FAILED(hr = stateblock_allocate_shader_constants(stateblock))) diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c -index 9647c2a..4990848 100644 +index 5d611c8..a053f34 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c -@@ -3469,9 +3469,9 @@ static HRESULT surface_blt_special(struct wined3d_surface *dst_surface, const RE +@@ -3413,8 +3413,8 @@ static HRESULT surface_blt_special(struct wined3d_surface *dst_surface, const RE enum wined3d_texture_filter_type filter) { struct wined3d_device *device = dst_surface->resource.device; - const struct wined3d_surface *rt = wined3d_rendertarget_view_get_surface(device->fb.render_targets[0]); - const struct wined3d_gl_info *gl_info = &device->adapter->gl_info; struct wined3d_swapchain *src_swapchain, *dst_swapchain; + const struct wined3d_surface *rt = wined3d_rendertarget_view_get_surface(device->state.fb.render_targets[0]); TRACE("dst_surface %p, dst_rect %s, src_surface %p, src_rect %s, flags %#x, blt_fx %p, filter %s.\n", dst_surface, wine_dbgstr_rect(dst_rect), src_surface, wine_dbgstr_rect(src_rect), diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c -index dd7d2c7..ed2964e 100644 +index 1ac5e7a..454cb21 100644 --- a/dlls/wined3d/swapchain.c +++ b/dlls/wined3d/swapchain.c @@ -421,7 +421,7 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, const RECT @@ -816,10 +815,10 @@ struct wined3d_context *context; struct wined3d_surface *front; diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c -index 468aea9..948b793 100644 +index 1686e30..09408e4 100644 --- a/dlls/wined3d/utils.c +++ b/dlls/wined3d/utils.c -@@ -3190,7 +3190,7 @@ void get_projection_matrix(const struct wined3d_context *context, const struct w +@@ -3192,7 +3192,7 @@ void get_projection_matrix(const struct wined3d_context *context, const struct w float y_offset = context->render_offscreen ? (center_offset - (2.0f * y) - h) / h : (center_offset - (2.0f * y) - h) / -h; @@ -828,7 +827,7 @@ state->render_states[WINED3D_RS_ZENABLE] : WINED3D_ZB_FALSE; float z_scale = zenable ? 2.0f : 0.0f; float z_offset = zenable ? -1.0f : 0.0f; -@@ -3620,7 +3620,7 @@ void gen_ffp_frag_op(const struct wined3d_context *context, const struct wined3d +@@ -3686,7 +3686,7 @@ void gen_ffp_frag_op(const struct wined3d_context *context, const struct wined3d unsigned int i; DWORD ttff; DWORD cop, aop, carg0, carg1, carg2, aarg0, aarg1, aarg2; @@ -838,10 +837,10 @@ const struct wined3d_d3d_info *d3d_info = context->d3d_info; diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h -index 03831b8..e922f86 100644 +index c325a06..e80ceb9 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h -@@ -1121,6 +1121,36 @@ struct wined3d_timestamp_query +@@ -1124,6 +1124,36 @@ struct wined3d_timestamp_query void context_alloc_timestamp_query(struct wined3d_context *context, struct wined3d_timestamp_query *query) DECLSPEC_HIDDEN; void context_free_timestamp_query(struct wined3d_timestamp_query *query) DECLSPEC_HIDDEN; @@ -878,7 +877,7 @@ struct wined3d_context { const struct wined3d_gl_info *gl_info; -@@ -1135,6 +1165,7 @@ struct wined3d_context +@@ -1138,6 +1168,7 @@ struct wined3d_context DWORD dirtyArray[STATE_HIGHEST + 1]; /* Won't get bigger than that, a state is never marked dirty 2 times */ DWORD numDirtyEntries; DWORD isStateDirty[STATE_HIGHEST / (sizeof(DWORD) * CHAR_BIT) + 1]; /* Bitmap to find out quickly if a state is dirty */ @@ -886,7 +885,7 @@ struct wined3d_swapchain *swapchain; struct wined3d_surface *current_rt; -@@ -1236,12 +1267,6 @@ struct wined3d_context +@@ -1239,12 +1270,6 @@ struct wined3d_context GLuint dummy_arbfp_prog; }; @@ -899,7 +898,7 @@ typedef void (*APPLYSTATEFUNC)(struct wined3d_context *ctx, const struct wined3d_state *state, DWORD state_id); struct StateEntry -@@ -1918,7 +1943,7 @@ struct wined3d_stream_state +@@ -1928,7 +1953,7 @@ struct wined3d_stream_state struct wined3d_state { DWORD flags; @@ -908,7 +907,7 @@ struct wined3d_vertex_declaration *vertex_declaration; struct wined3d_stream_output stream_output[MAX_STREAM_OUT]; -@@ -2024,7 +2049,6 @@ struct wined3d_device +@@ -2034,7 +2059,6 @@ struct wined3d_device struct wine_rb_tree samplers; /* Render Target Support */ @@ -916,7 +915,7 @@ struct wined3d_surface *onscreen_depth_stencil; struct wined3d_rendertarget_view *auto_depth_stencil_view; -@@ -2528,9 +2552,8 @@ struct wined3d_stateblock +@@ -2545,9 +2569,8 @@ struct wined3d_stateblock void stateblock_init_contained_states(struct wined3d_stateblock *stateblock) DECLSPEC_HIDDEN; void state_cleanup(struct wined3d_state *state) DECLSPEC_HIDDEN; @@ -928,7 +927,7 @@ void state_unbind_resources(struct wined3d_state *state) DECLSPEC_HIDDEN; struct wined3d_cs_ops -@@ -2543,7 +2566,6 @@ struct wined3d_cs +@@ -2560,7 +2583,6 @@ struct wined3d_cs { const struct wined3d_cs_ops *ops; struct wined3d_device *device; @@ -937,5 +936,5 @@ size_t data_size; -- -2.3.3 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0046-wined3d-Hackily-introduce-a-multithreaded-command-st.patch wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0046-wined3d-Hackily-introduce-a-multithreaded-command-st.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0046-wined3d-Hackily-introduce-a-multithreaded-command-st.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0046-wined3d-Hackily-introduce-a-multithreaded-command-st.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,16 +1,16 @@ -From 28c64ddb55487597d6542e81e47d27b08cb8351c Mon Sep 17 00:00:00 2001 +From 449e8ea8593261284351648eb19504e8e8769dde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Tue, 1 Oct 2013 14:31:56 +0200 Subject: wined3d: Hackily introduce a multithreaded command stream --- - dlls/wined3d/cs.c | 376 ++++++++++++++++++++++++++++++++++++----- + dlls/wined3d/cs.c | 380 ++++++++++++++++++++++++++++++++++++----- dlls/wined3d/wined3d_main.c | 9 + dlls/wined3d/wined3d_private.h | 18 ++ - 3 files changed, 365 insertions(+), 38 deletions(-) + 3 files changed, 368 insertions(+), 39 deletions(-) diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c -index 408e9b5..625012f 100644 +index 639dc4f..9247d98 100644 --- a/dlls/wined3d/cs.c +++ b/dlls/wined3d/cs.c @@ -24,8 +24,19 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3d); @@ -33,8 +33,8 @@ WINED3D_CS_OP_PRESENT, WINED3D_CS_OP_CLEAR, WINED3D_CS_OP_DRAW, -@@ -51,6 +62,18 @@ enum wined3d_cs_op - WINED3D_CS_OP_SET_CLIP_PLANE, +@@ -52,6 +63,18 @@ enum wined3d_cs_op + WINED3D_CS_OP_SET_COLOR_KEY, WINED3D_CS_OP_SET_MATERIAL, WINED3D_CS_OP_RESET_STATE, + WINED3D_CS_OP_STOP, @@ -52,7 +52,7 @@ }; struct wined3d_cs_present -@@ -101,7 +124,7 @@ struct wined3d_cs_set_viewport +@@ -102,7 +125,7 @@ struct wined3d_cs_set_viewport struct wined3d_cs_set_scissor_rect { enum wined3d_cs_op opcode; @@ -61,7 +61,7 @@ }; struct wined3d_cs_set_rendertarget_view -@@ -220,20 +243,20 @@ struct wined3d_cs_set_transform +@@ -230,20 +253,20 @@ struct wined3d_cs_set_transform { enum wined3d_cs_op opcode; enum wined3d_transform_state state; @@ -85,7 +85,7 @@ }; struct wined3d_cs_reset_state -@@ -241,7 +264,134 @@ struct wined3d_cs_reset_state +@@ -251,7 +274,134 @@ struct wined3d_cs_reset_state enum wined3d_cs_op opcode; }; @@ -221,7 +221,7 @@ { const struct wined3d_cs_present *op = data; struct wined3d_swapchain *swapchain; -@@ -251,6 +401,8 @@ static void wined3d_cs_exec_present(struct wined3d_cs *cs, const void *data) +@@ -261,6 +411,8 @@ static void wined3d_cs_exec_present(struct wined3d_cs *cs, const void *data) swapchain->swapchain_ops->swapchain_present(swapchain, op->src_rect, op->dst_rect, op->dirty_region, op->flags); @@ -230,7 +230,7 @@ } void wined3d_cs_emit_present(struct wined3d_cs *cs, struct wined3d_swapchain *swapchain, -@@ -271,7 +423,7 @@ void wined3d_cs_emit_present(struct wined3d_cs *cs, struct wined3d_swapchain *sw +@@ -281,7 +433,7 @@ void wined3d_cs_emit_present(struct wined3d_cs *cs, struct wined3d_swapchain *sw cs->ops->submit(cs); } @@ -239,7 +239,7 @@ { const struct wined3d_cs_clear *op = data; struct wined3d_device *device; -@@ -282,6 +434,8 @@ static void wined3d_cs_exec_clear(struct wined3d_cs *cs, const void *data) +@@ -292,6 +444,8 @@ static void wined3d_cs_exec_clear(struct wined3d_cs *cs, const void *data) device_clear_render_targets(device, device->adapter->gl_info.limits.buffers, &cs->state.fb, op->rect_count, op->rects, &draw_rect, op->flags, op->color, op->depth, op->stencil); @@ -248,7 +248,7 @@ } void wined3d_cs_emit_clear(struct wined3d_cs *cs, DWORD rect_count, const RECT *rects, -@@ -301,12 +455,14 @@ void wined3d_cs_emit_clear(struct wined3d_cs *cs, DWORD rect_count, const RECT * +@@ -311,12 +465,14 @@ void wined3d_cs_emit_clear(struct wined3d_cs *cs, DWORD rect_count, const RECT * cs->ops->submit(cs); } @@ -264,7 +264,7 @@ } void wined3d_cs_emit_draw(struct wined3d_cs *cs, UINT start_idx, UINT index_count, -@@ -325,12 +481,14 @@ void wined3d_cs_emit_draw(struct wined3d_cs *cs, UINT start_idx, UINT index_coun +@@ -335,12 +491,14 @@ void wined3d_cs_emit_draw(struct wined3d_cs *cs, UINT start_idx, UINT index_coun cs->ops->submit(cs); } @@ -280,7 +280,7 @@ } void wined3d_cs_emit_set_predication(struct wined3d_cs *cs, struct wined3d_query *predicate, BOOL value) -@@ -345,12 +503,14 @@ void wined3d_cs_emit_set_predication(struct wined3d_cs *cs, struct wined3d_query +@@ -355,12 +513,14 @@ void wined3d_cs_emit_set_predication(struct wined3d_cs *cs, struct wined3d_query cs->ops->submit(cs); } @@ -296,7 +296,7 @@ } void wined3d_cs_emit_set_viewport(struct wined3d_cs *cs, const struct wined3d_viewport *viewport) -@@ -364,12 +524,14 @@ void wined3d_cs_emit_set_viewport(struct wined3d_cs *cs, const struct wined3d_vi +@@ -374,12 +534,14 @@ void wined3d_cs_emit_set_viewport(struct wined3d_cs *cs, const struct wined3d_vi cs->ops->submit(cs); } @@ -313,7 +313,7 @@ } void wined3d_cs_emit_set_scissor_rect(struct wined3d_cs *cs, const RECT *rect) -@@ -378,17 +540,19 @@ void wined3d_cs_emit_set_scissor_rect(struct wined3d_cs *cs, const RECT *rect) +@@ -388,17 +550,19 @@ void wined3d_cs_emit_set_scissor_rect(struct wined3d_cs *cs, const RECT *rect) op = cs->ops->require_space(cs, sizeof(*op)); op->opcode = WINED3D_CS_OP_SET_SCISSOR_RECT; @@ -335,7 +335,7 @@ } void wined3d_cs_emit_set_rendertarget_view(struct wined3d_cs *cs, unsigned int view_idx, -@@ -404,7 +568,7 @@ void wined3d_cs_emit_set_rendertarget_view(struct wined3d_cs *cs, unsigned int v +@@ -414,7 +578,7 @@ void wined3d_cs_emit_set_rendertarget_view(struct wined3d_cs *cs, unsigned int v cs->ops->submit(cs); } @@ -344,7 +344,7 @@ { const struct wined3d_cs_set_depth_stencil_view *op = data; struct wined3d_device *device = cs->device; -@@ -442,6 +606,8 @@ static void wined3d_cs_exec_set_depth_stencil_view(struct wined3d_cs *cs, const +@@ -452,6 +616,8 @@ static void wined3d_cs_exec_set_depth_stencil_view(struct wined3d_cs *cs, const } device_invalidate_state(device, STATE_FRAMEBUFFER); @@ -353,7 +353,7 @@ } void wined3d_cs_emit_set_depth_stencil_view(struct wined3d_cs *cs, struct wined3d_rendertarget_view *view) -@@ -455,12 +621,14 @@ void wined3d_cs_emit_set_depth_stencil_view(struct wined3d_cs *cs, struct wined3 +@@ -465,12 +631,14 @@ void wined3d_cs_emit_set_depth_stencil_view(struct wined3d_cs *cs, struct wined3 cs->ops->submit(cs); } @@ -369,7 +369,7 @@ } void wined3d_cs_emit_set_vertex_declaration(struct wined3d_cs *cs, struct wined3d_vertex_declaration *declaration) -@@ -474,7 +642,7 @@ void wined3d_cs_emit_set_vertex_declaration(struct wined3d_cs *cs, struct wined3 +@@ -484,7 +652,7 @@ void wined3d_cs_emit_set_vertex_declaration(struct wined3d_cs *cs, struct wined3 cs->ops->submit(cs); } @@ -378,7 +378,7 @@ { const struct wined3d_cs_set_stream_source *op = data; struct wined3d_stream_state *stream; -@@ -492,6 +660,8 @@ static void wined3d_cs_exec_set_stream_source(struct wined3d_cs *cs, const void +@@ -502,6 +670,8 @@ static void wined3d_cs_exec_set_stream_source(struct wined3d_cs *cs, const void InterlockedDecrement(&prev->resource.bind_count); device_invalidate_state(cs->device, STATE_STREAMSRC); @@ -387,7 +387,7 @@ } void wined3d_cs_emit_set_stream_source(struct wined3d_cs *cs, UINT stream_idx, -@@ -509,7 +679,7 @@ void wined3d_cs_emit_set_stream_source(struct wined3d_cs *cs, UINT stream_idx, +@@ -519,7 +689,7 @@ void wined3d_cs_emit_set_stream_source(struct wined3d_cs *cs, UINT stream_idx, cs->ops->submit(cs); } @@ -396,7 +396,7 @@ { const struct wined3d_cs_set_stream_source_freq *op = data; struct wined3d_stream_state *stream; -@@ -519,6 +689,8 @@ static void wined3d_cs_exec_set_stream_source_freq(struct wined3d_cs *cs, const +@@ -529,6 +699,8 @@ static void wined3d_cs_exec_set_stream_source_freq(struct wined3d_cs *cs, const stream->flags = op->flags; device_invalidate_state(cs->device, STATE_STREAMSRC); @@ -405,7 +405,7 @@ } void wined3d_cs_emit_set_stream_source_freq(struct wined3d_cs *cs, UINT stream_idx, UINT frequency, UINT flags) -@@ -534,7 +706,7 @@ void wined3d_cs_emit_set_stream_source_freq(struct wined3d_cs *cs, UINT stream_i +@@ -544,7 +716,7 @@ void wined3d_cs_emit_set_stream_source_freq(struct wined3d_cs *cs, UINT stream_i cs->ops->submit(cs); } @@ -414,7 +414,7 @@ { const struct wined3d_cs_set_stream_output *op = data; struct wined3d_stream_output *stream; -@@ -549,6 +721,8 @@ static void wined3d_cs_exec_set_stream_output(struct wined3d_cs *cs, const void +@@ -559,6 +731,8 @@ static void wined3d_cs_exec_set_stream_output(struct wined3d_cs *cs, const void InterlockedIncrement(&op->buffer->resource.bind_count); if (prev) InterlockedDecrement(&prev->resource.bind_count); @@ -423,7 +423,7 @@ } void wined3d_cs_emit_set_stream_output(struct wined3d_cs *cs, UINT stream_idx, -@@ -565,7 +739,7 @@ void wined3d_cs_emit_set_stream_output(struct wined3d_cs *cs, UINT stream_idx, +@@ -575,7 +749,7 @@ void wined3d_cs_emit_set_stream_output(struct wined3d_cs *cs, UINT stream_idx, cs->ops->submit(cs); } @@ -432,7 +432,7 @@ { const struct wined3d_cs_set_index_buffer *op = data; struct wined3d_buffer *prev; -@@ -580,6 +754,8 @@ static void wined3d_cs_exec_set_index_buffer(struct wined3d_cs *cs, const void * +@@ -590,6 +764,8 @@ static void wined3d_cs_exec_set_index_buffer(struct wined3d_cs *cs, const void * InterlockedDecrement(&prev->resource.bind_count); device_invalidate_state(cs->device, STATE_INDEXBUFFER); @@ -441,7 +441,7 @@ } void wined3d_cs_emit_set_index_buffer(struct wined3d_cs *cs, struct wined3d_buffer *buffer, -@@ -595,7 +771,7 @@ void wined3d_cs_emit_set_index_buffer(struct wined3d_cs *cs, struct wined3d_buff +@@ -605,7 +781,7 @@ void wined3d_cs_emit_set_index_buffer(struct wined3d_cs *cs, struct wined3d_buff cs->ops->submit(cs); } @@ -450,7 +450,7 @@ { const struct wined3d_cs_set_constant_buffer *op = data; struct wined3d_buffer *prev; -@@ -609,6 +785,7 @@ static void wined3d_cs_exec_set_constant_buffer(struct wined3d_cs *cs, const voi +@@ -619,6 +795,7 @@ static void wined3d_cs_exec_set_constant_buffer(struct wined3d_cs *cs, const voi InterlockedDecrement(&prev->resource.bind_count); device_invalidate_state(cs->device, STATE_CONSTANT_BUFFER(op->type)); @@ -458,7 +458,7 @@ } void wined3d_cs_emit_set_constant_buffer(struct wined3d_cs *cs, enum wined3d_shader_type type, -@@ -625,7 +802,7 @@ void wined3d_cs_emit_set_constant_buffer(struct wined3d_cs *cs, enum wined3d_sha +@@ -635,7 +812,7 @@ void wined3d_cs_emit_set_constant_buffer(struct wined3d_cs *cs, enum wined3d_sha cs->ops->submit(cs); } @@ -467,16 +467,16 @@ { const struct wined3d_d3d_info *d3d_info = &cs->device->adapter->d3d_info; const struct wined3d_cs_set_texture *op = data; -@@ -685,6 +862,8 @@ static void wined3d_cs_exec_set_texture(struct wined3d_cs *cs, const void *data) - } +@@ -708,6 +885,8 @@ static void wined3d_cs_exec_set_texture(struct wined3d_cs *cs, const void *data) - device_invalidate_state(cs->device, STATE_SAMPLER(op->stage)); + if (new_use_color_key) + device_invalidate_state(cs->device, STATE_COLOR_KEY); + + return sizeof(*op); } void wined3d_cs_emit_set_texture(struct wined3d_cs *cs, UINT stage, struct wined3d_texture *texture) -@@ -699,12 +878,14 @@ void wined3d_cs_emit_set_texture(struct wined3d_cs *cs, UINT stage, struct wined +@@ -722,12 +901,14 @@ void wined3d_cs_emit_set_texture(struct wined3d_cs *cs, UINT stage, struct wined cs->ops->submit(cs); } @@ -492,7 +492,7 @@ } void wined3d_cs_emit_set_shader_resource_view(struct wined3d_cs *cs, enum wined3d_shader_type type, -@@ -721,12 +902,14 @@ void wined3d_cs_emit_set_shader_resource_view(struct wined3d_cs *cs, enum wined3 +@@ -744,12 +925,14 @@ void wined3d_cs_emit_set_shader_resource_view(struct wined3d_cs *cs, enum wined3 cs->ops->submit(cs); } @@ -508,7 +508,7 @@ } void wined3d_cs_emit_set_sampler(struct wined3d_cs *cs, enum wined3d_shader_type type, -@@ -743,13 +926,15 @@ void wined3d_cs_emit_set_sampler(struct wined3d_cs *cs, enum wined3d_shader_type +@@ -766,13 +949,15 @@ void wined3d_cs_emit_set_sampler(struct wined3d_cs *cs, enum wined3d_shader_type cs->ops->submit(cs); } @@ -525,7 +525,7 @@ } void wined3d_cs_emit_set_shader(struct wined3d_cs *cs, enum wined3d_shader_type type, struct wined3d_shader *shader) -@@ -764,12 +949,14 @@ void wined3d_cs_emit_set_shader(struct wined3d_cs *cs, enum wined3d_shader_type +@@ -787,12 +972,14 @@ void wined3d_cs_emit_set_shader(struct wined3d_cs *cs, enum wined3d_shader_type cs->ops->submit(cs); } @@ -541,7 +541,7 @@ } void wined3d_cs_emit_set_render_state(struct wined3d_cs *cs, enum wined3d_render_state state, DWORD value) -@@ -784,12 +971,14 @@ void wined3d_cs_emit_set_render_state(struct wined3d_cs *cs, enum wined3d_render +@@ -807,12 +994,14 @@ void wined3d_cs_emit_set_render_state(struct wined3d_cs *cs, enum wined3d_render cs->ops->submit(cs); } @@ -557,7 +557,7 @@ } void wined3d_cs_emit_set_texture_state(struct wined3d_cs *cs, UINT stage, -@@ -806,12 +995,14 @@ void wined3d_cs_emit_set_texture_state(struct wined3d_cs *cs, UINT stage, +@@ -829,12 +1018,14 @@ void wined3d_cs_emit_set_texture_state(struct wined3d_cs *cs, UINT stage, cs->ops->submit(cs); } @@ -573,7 +573,7 @@ } void wined3d_cs_emit_set_sampler_state(struct wined3d_cs *cs, UINT sampler_idx, -@@ -828,13 +1019,15 @@ void wined3d_cs_emit_set_sampler_state(struct wined3d_cs *cs, UINT sampler_idx, +@@ -851,13 +1042,15 @@ void wined3d_cs_emit_set_sampler_state(struct wined3d_cs *cs, UINT sampler_idx, cs->ops->submit(cs); } @@ -591,7 +591,7 @@ } void wined3d_cs_emit_set_transform(struct wined3d_cs *cs, enum wined3d_transform_state state, -@@ -845,17 +1038,19 @@ void wined3d_cs_emit_set_transform(struct wined3d_cs *cs, enum wined3d_transform +@@ -868,17 +1061,19 @@ void wined3d_cs_emit_set_transform(struct wined3d_cs *cs, enum wined3d_transform op = cs->ops->require_space(cs, sizeof(*op)); op->opcode = WINED3D_CS_OP_SET_TRANSFORM; op->state = state; @@ -614,7 +614,7 @@ } void wined3d_cs_emit_set_clip_plane(struct wined3d_cs *cs, UINT plane_idx, const struct wined3d_vec4 *plane) -@@ -865,17 +1060,19 @@ void wined3d_cs_emit_set_clip_plane(struct wined3d_cs *cs, UINT plane_idx, const +@@ -888,12 +1083,12 @@ void wined3d_cs_emit_set_clip_plane(struct wined3d_cs *cs, UINT plane_idx, const op = cs->ops->require_space(cs, sizeof(*op)); op->opcode = WINED3D_CS_OP_SET_CLIP_PLANE; op->plane_idx = plane_idx; @@ -624,6 +624,24 @@ cs->ops->submit(cs); } +-static void wined3d_cs_exec_set_color_key(struct wined3d_cs *cs, const void *data) ++static UINT wined3d_cs_exec_set_color_key(struct wined3d_cs *cs, const void *data) + { + const struct wined3d_cs_set_color_key *op = data; + struct wined3d_texture *texture = op->texture; +@@ -954,6 +1149,8 @@ static void wined3d_cs_exec_set_color_key(struct wined3d_cs *cs, const void *dat + break; + } + } ++ ++ return sizeof(*op); + } + + void wined3d_cs_emit_set_color_key(struct wined3d_cs *cs, struct wined3d_texture *texture, +@@ -976,12 +1173,14 @@ void wined3d_cs_emit_set_color_key(struct wined3d_cs *cs, struct wined3d_texture + cs->ops->submit(cs); + } + -static void wined3d_cs_exec_set_material(struct wined3d_cs *cs, const void *data) +static UINT wined3d_cs_exec_set_material(struct wined3d_cs *cs, const void *data) { @@ -637,7 +655,7 @@ } void wined3d_cs_emit_set_material(struct wined3d_cs *cs, const struct wined3d_material *material) -@@ -884,12 +1081,12 @@ void wined3d_cs_emit_set_material(struct wined3d_cs *cs, const struct wined3d_ma +@@ -990,12 +1189,12 @@ void wined3d_cs_emit_set_material(struct wined3d_cs *cs, const struct wined3d_ma op = cs->ops->require_space(cs, sizeof(*op)); op->opcode = WINED3D_CS_OP_SET_MATERIAL; @@ -652,7 +670,7 @@ { struct wined3d_adapter *adapter = cs->device->adapter; HRESULT hr; -@@ -899,6 +1096,8 @@ static void wined3d_cs_exec_reset_state(struct wined3d_cs *cs, const void *data) +@@ -1005,6 +1204,8 @@ static void wined3d_cs_exec_reset_state(struct wined3d_cs *cs, const void *data) if (FAILED(hr = state_init(&cs->state, &adapter->gl_info, &adapter->d3d_info, WINED3D_STATE_NO_REF | WINED3D_STATE_INIT_DEFAULT))) ERR("Failed to initialize CS state, hr %#x.\n", hr); @@ -661,7 +679,7 @@ } void wined3d_cs_emit_reset_state(struct wined3d_cs *cs) -@@ -911,8 +1110,9 @@ void wined3d_cs_emit_reset_state(struct wined3d_cs *cs) +@@ -1017,8 +1218,9 @@ void wined3d_cs_emit_reset_state(struct wined3d_cs *cs) cs->ops->submit(cs); } @@ -672,7 +690,7 @@ /* WINED3D_CS_OP_PRESENT */ wined3d_cs_exec_present, /* WINED3D_CS_OP_CLEAR */ wined3d_cs_exec_clear, /* WINED3D_CS_OP_DRAW */ wined3d_cs_exec_draw, -@@ -970,6 +1170,58 @@ static const struct wined3d_cs_ops wined3d_cs_st_ops = +@@ -1077,6 +1279,58 @@ static const struct wined3d_cs_ops wined3d_cs_st_ops = wined3d_cs_st_submit, }; @@ -731,7 +749,7 @@ struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device) { const struct wined3d_gl_info *gl_info = &device->adapter->gl_info; -@@ -995,12 +1247,60 @@ struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device) +@@ -1102,12 +1356,60 @@ struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device) return NULL; } @@ -820,7 +838,7 @@ if (appkey) RegCloseKey( appkey ); diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h -index 9a9097e..a32634d 100644 +index 089faa4..2addced 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -278,6 +278,7 @@ struct wined3d_settings @@ -831,7 +849,7 @@ }; extern struct wined3d_settings wined3d_settings DECLSPEC_HIDDEN; -@@ -2547,6 +2548,18 @@ HRESULT state_init(struct wined3d_state *state, const struct wined3d_gl_info *gl +@@ -2573,6 +2574,18 @@ HRESULT state_init(struct wined3d_state *state, const struct wined3d_gl_info *gl const struct wined3d_d3d_info *d3d_info, DWORD flags) DECLSPEC_HIDDEN; void state_unbind_resources(struct wined3d_state *state) DECLSPEC_HIDDEN; @@ -850,7 +868,7 @@ struct wined3d_cs_ops { void *(*require_space)(struct wined3d_cs *cs, size_t size); -@@ -2558,9 +2571,14 @@ struct wined3d_cs +@@ -2584,9 +2597,14 @@ struct wined3d_cs const struct wined3d_cs_ops *ops; struct wined3d_device *device; struct wined3d_state state; @@ -866,5 +884,5 @@ struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device) DECLSPEC_HIDDEN; -- -2.2.1 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0053-wined3d-Give-the-cs-its-own-state.patch wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0053-wined3d-Give-the-cs-its-own-state.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0053-wined3d-Give-the-cs-its-own-state.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0053-wined3d-Give-the-cs-its-own-state.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,4 +1,4 @@ -From 0f3dbbb7464b63565408e3d2914fcada665785c9 Mon Sep 17 00:00:00 2001 +From 35f36ec3b2bf7fa8bdfabd7d698b118ba2030ccf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Tue, 1 Oct 2013 15:30:26 +0200 Subject: wined3d: Give the cs its own state @@ -10,18 +10,18 @@ 3 files changed, 99 insertions(+), 16 deletions(-) diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c -index b68f252..3b83616 100644 +index a8327d1..1b466c3 100644 --- a/dlls/wined3d/cs.c +++ b/dlls/wined3d/cs.c -@@ -62,6 +62,7 @@ enum wined3d_cs_op - WINED3D_CS_OP_SET_CLIP_PLANE, +@@ -63,6 +63,7 @@ enum wined3d_cs_op + WINED3D_CS_OP_SET_COLOR_KEY, WINED3D_CS_OP_SET_MATERIAL, WINED3D_CS_OP_RESET_STATE, + WINED3D_CS_OP_STATEBLOCK, WINED3D_CS_OP_STOP, }; -@@ -268,6 +269,13 @@ struct wined3d_cs_reset_state +@@ -278,6 +279,13 @@ struct wined3d_cs_reset_state enum wined3d_cs_op opcode; }; @@ -35,7 +35,7 @@ /* FIXME: The list synchronization probably isn't particularly fast. */ static void wined3d_cs_list_enqueue(struct wined3d_cs_list *list, struct wined3d_cs_block *block) { -@@ -451,7 +459,7 @@ static UINT wined3d_cs_exec_clear(struct wined3d_cs *cs, const void *data) +@@ -461,7 +469,7 @@ static UINT wined3d_cs_exec_clear(struct wined3d_cs *cs, const void *data) unsigned int extra_rects = op->rect_count ? op->rect_count - 1 : 0; device = cs->device; @@ -44,7 +44,7 @@ device_clear_render_targets(device, device->adapter->gl_info.limits.buffers, &cs->state.fb, op->rect_count, op->rect_count ? op->rects : NULL, &draw_rect, op->flags, &op->color, op->depth, op->stencil); -@@ -482,7 +490,7 @@ static UINT wined3d_cs_exec_draw(struct wined3d_cs *cs, const void *data) +@@ -492,7 +500,7 @@ static UINT wined3d_cs_exec_draw(struct wined3d_cs *cs, const void *data) { const struct wined3d_cs_draw *op = data; @@ -53,7 +53,7 @@ op->start_instance, op->instance_count, op->indexed); return sizeof(*op); -@@ -897,6 +905,72 @@ void wined3d_cs_emit_set_texture(struct wined3d_cs *cs, UINT stage, struct wined +@@ -907,6 +915,72 @@ void wined3d_cs_emit_set_texture(struct wined3d_cs *cs, UINT stage, struct wined op->opcode = WINED3D_CS_OP_SET_TEXTURE; op->stage = stage; op->texture = texture; @@ -126,15 +126,15 @@ cs->ops->submit(cs); } -@@ -1161,6 +1235,7 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void - /* WINED3D_CS_OP_SET_CLIP_PLANE */ wined3d_cs_exec_set_clip_plane, +@@ -1250,6 +1324,7 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void + /* WINED3D_CS_OP_SET_COLOR_KEY */ wined3d_cs_exec_set_color_key, /* WINED3D_CS_OP_SET_MATERIAL */ wined3d_cs_exec_set_material, /* WINED3D_CS_OP_RESET_STATE */ wined3d_cs_exec_reset_state, + /* WINED3D_CS_OP_STATEBLOCK */ wined3d_cs_exec_transfer_stateblock, }; static void *wined3d_cs_st_require_space(struct wined3d_cs *cs, size_t size) -@@ -1250,7 +1325,7 @@ done: +@@ -1339,7 +1414,7 @@ done: struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device) { const struct wined3d_gl_info *gl_info = &device->adapter->gl_info; @@ -143,7 +143,7 @@ if (!(cs = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*cs)))) return NULL; -@@ -1258,8 +1333,7 @@ struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device) +@@ -1347,8 +1422,7 @@ struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device) if (FAILED(state_init(&cs->state, gl_info, &device->adapter->d3d_info, WINED3D_STATE_NO_REF | WINED3D_STATE_INIT_DEFAULT))) { @@ -153,7 +153,7 @@ } cs->ops = &wined3d_cs_st_ops; -@@ -1268,16 +1342,13 @@ struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device) +@@ -1357,16 +1431,13 @@ struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device) cs->data_size = WINED3D_INITIAL_CS_SIZE; if (!(cs->data = HeapAlloc(GetProcessHeap(), 0, cs->data_size))) { @@ -172,7 +172,7 @@ } if (wined3d_settings.cs_multithreaded) -@@ -1290,15 +1361,22 @@ struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device) +@@ -1379,15 +1450,22 @@ struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device) if (!(cs->thread = CreateThread(NULL, 0, wined3d_cs_run, cs, 0, NULL))) { ERR("Failed to create wined3d command stream thread.\n"); @@ -201,7 +201,7 @@ void wined3d_cs_destroy(struct wined3d_cs *cs) diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c -index 419148e..1c2f9de 100644 +index 3bd45da..b936039 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -3409,6 +3409,7 @@ HRESULT CDECL wined3d_device_draw_primitive(struct wined3d_device *device, UINT @@ -212,7 +212,7 @@ wined3d_cs_emit_draw(device->cs, start_vertex, vertex_count, 0, 0, FALSE); return WINED3D_OK; -@@ -3443,6 +3444,7 @@ HRESULT CDECL wined3d_device_draw_indexed_primitive(struct wined3d_device *devic +@@ -3452,6 +3453,7 @@ HRESULT CDECL wined3d_device_draw_indexed_primitive(struct wined3d_device *devic device_invalidate_state(device, STATE_BASEVERTEXINDEX); } @@ -220,7 +220,7 @@ wined3d_cs_emit_draw(device->cs, start_idx, index_count, 0, 0, TRUE); return WINED3D_OK; -@@ -3454,6 +3456,7 @@ void CDECL wined3d_device_draw_indexed_primitive_instanced(struct wined3d_device +@@ -3463,6 +3465,7 @@ void CDECL wined3d_device_draw_indexed_primitive_instanced(struct wined3d_device TRACE("device %p, start_idx %u, index_count %u, start_instance %u, instance_count %u.\n", device, start_idx, index_count, start_instance, instance_count); @@ -229,10 +229,10 @@ } diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h -index d8c6d63..8fcfa12 100644 +index 1f95a50..d8b24a5 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h -@@ -2561,7 +2561,7 @@ struct wined3d_cs_block +@@ -2584,7 +2584,7 @@ struct wined3d_cs_block { struct list entry; UINT pos; @@ -241,8 +241,8 @@ }; struct wined3d_cs_ops -@@ -2601,6 +2601,8 @@ void wined3d_cs_emit_set_clip_plane(struct wined3d_cs *cs, UINT plane_idx, - const struct wined3d_vec4 *plane) DECLSPEC_HIDDEN; +@@ -2626,6 +2626,8 @@ void wined3d_cs_emit_set_color_key(struct wined3d_cs *cs, struct wined3d_texture + WORD flags, const struct wined3d_color_key *color_key) DECLSPEC_HIDDEN; void wined3d_cs_emit_set_constant_buffer(struct wined3d_cs *cs, enum wined3d_shader_type type, UINT cb_idx, struct wined3d_buffer *buffer) DECLSPEC_HIDDEN; +void wined3d_cs_emit_transfer_stateblock(struct wined3d_cs *cs, @@ -251,5 +251,5 @@ struct wined3d_rendertarget_view *view) DECLSPEC_HIDDEN; void wined3d_cs_emit_set_index_buffer(struct wined3d_cs *cs, struct wined3d_buffer *buffer, -- -2.3.2 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0068-wined3d-Send-light-updates-through-the-command-strea.patch wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0068-wined3d-Send-light-updates-through-the-command-strea.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0068-wined3d-Send-light-updates-through-the-command-strea.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0068-wined3d-Send-light-updates-through-the-command-strea.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,4 +1,4 @@ -From 79d2e9e1c883ecb8c755fd1eafec7c1be1f85e71 Mon Sep 17 00:00:00 2001 +From bb19770fcc41425eb43a0aebe3b9611e7d170b23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Wed, 10 Apr 2013 17:16:02 +0200 Subject: wined3d: Send light updates through the command stream @@ -10,18 +10,18 @@ 3 files changed, 174 insertions(+), 65 deletions(-) diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c -index 8dc5ce8..1660380 100644 +index cf5c5b4..7ca37a9 100644 --- a/dlls/wined3d/cs.c +++ b/dlls/wined3d/cs.c -@@ -62,7 +62,6 @@ enum wined3d_cs_op - WINED3D_CS_OP_SET_CLIP_PLANE, +@@ -63,7 +63,6 @@ enum wined3d_cs_op + WINED3D_CS_OP_SET_COLOR_KEY, WINED3D_CS_OP_SET_MATERIAL, WINED3D_CS_OP_RESET_STATE, - WINED3D_CS_OP_STATEBLOCK, WINED3D_CS_OP_SET_VS_CONSTS_F, WINED3D_CS_OP_SET_VS_CONSTS_B, WINED3D_CS_OP_SET_VS_CONSTS_I, -@@ -72,6 +71,8 @@ enum wined3d_cs_op +@@ -73,6 +72,8 @@ enum wined3d_cs_op WINED3D_CS_OP_GLFINISH, WINED3D_CS_OP_SET_BASE_VERTEX_INDEX, WINED3D_CS_OP_SET_PRIMITIVE_TYPE, @@ -30,7 +30,7 @@ WINED3D_CS_OP_STOP, }; -@@ -278,12 +279,6 @@ struct wined3d_cs_reset_state +@@ -288,12 +289,6 @@ struct wined3d_cs_reset_state enum wined3d_cs_op opcode; }; @@ -43,7 +43,7 @@ struct wined3d_cs_set_consts_f { enum wined3d_cs_op opcode; -@@ -322,6 +317,19 @@ struct wined3d_cs_set_primitive_type +@@ -332,6 +327,19 @@ struct wined3d_cs_set_primitive_type GLenum gl_primitive_type; }; @@ -63,7 +63,7 @@ /* FIXME: The list synchronization probably isn't particularly fast. */ static void wined3d_cs_list_enqueue(struct wined3d_cs_list *list, struct wined3d_cs_block *block) { -@@ -971,35 +979,6 @@ void wined3d_cs_emit_set_texture(struct wined3d_cs *cs, UINT stage, struct wined +@@ -981,35 +989,6 @@ void wined3d_cs_emit_set_texture(struct wined3d_cs *cs, UINT stage, struct wined cs->ops->submit(cs); } @@ -99,7 +99,7 @@ static UINT wined3d_cs_exec_set_shader_resource_view(struct wined3d_cs *cs, const void *data) { const struct wined3d_cs_set_shader_resource_view *op = data; -@@ -1474,6 +1453,152 @@ void wined3d_cs_emit_set_primitive_type(struct wined3d_cs *cs, GLenum primitive_ +@@ -1562,6 +1541,152 @@ void wined3d_cs_emit_set_primitive_type(struct wined3d_cs *cs, GLenum primitive_ cs->ops->submit(cs); } @@ -252,15 +252,15 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void *data) = { /* WINED3D_CS_OP_FENCE */ wined3d_cs_exec_fence, -@@ -1502,7 +1627,6 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void - /* WINED3D_CS_OP_SET_CLIP_PLANE */ wined3d_cs_exec_set_clip_plane, +@@ -1591,7 +1716,6 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void + /* WINED3D_CS_OP_SET_COLOR_KEY */ wined3d_cs_exec_set_color_key, /* WINED3D_CS_OP_SET_MATERIAL */ wined3d_cs_exec_set_material, /* WINED3D_CS_OP_RESET_STATE */ wined3d_cs_exec_reset_state, - /* WINED3D_CS_OP_STATEBLOCK */ wined3d_cs_exec_transfer_stateblock, /* WINED3D_CS_OP_SET_VS_CONSTS_F */ wined3d_cs_exec_set_vs_consts_f, /* WINED3D_CS_OP_SET_VS_CONSTS_B */ wined3d_cs_exec_set_vs_consts_b, /* WINED3D_CS_OP_SET_VS_CONSTS_I */ wined3d_cs_exec_set_vs_consts_i, -@@ -1512,6 +1636,8 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void +@@ -1601,6 +1725,8 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void /* WINED3D_CS_OP_GLFINISH */ wined3d_cs_exec_glfinish, /* WINED3D_CS_OP_SET_BASE_VERTEX_INDEX */ wined3d_cs_exec_set_base_vertex_index, /* WINED3D_CS_OP_SET_PRIMITIVE_TYPE */ wined3d_cs_exec_set_primitive_type, @@ -270,7 +270,7 @@ static void *wined3d_cs_st_require_space(struct wined3d_cs *cs, size_t size) diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c -index 403a2f4..1629ee2 100644 +index 6e11cf8..a36d101 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -1466,14 +1466,6 @@ HRESULT CDECL wined3d_device_set_light(struct wined3d_device *device, @@ -339,7 +339,7 @@ wined3d_cs_emit_draw(device->cs, start_vertex, vertex_count, 0, 0, FALSE); return WINED3D_OK; -@@ -3427,8 +3411,6 @@ HRESULT CDECL wined3d_device_draw_indexed_primitive(struct wined3d_device *devic +@@ -3436,8 +3420,6 @@ HRESULT CDECL wined3d_device_draw_indexed_primitive(struct wined3d_device *devic return WINED3DERR_INVALIDCALL; } @@ -348,7 +348,7 @@ wined3d_cs_emit_draw(device->cs, start_idx, index_count, 0, 0, TRUE); return WINED3D_OK; -@@ -3440,7 +3422,6 @@ void CDECL wined3d_device_draw_indexed_primitive_instanced(struct wined3d_device +@@ -3449,7 +3431,6 @@ void CDECL wined3d_device_draw_indexed_primitive_instanced(struct wined3d_device TRACE("device %p, start_idx %u, index_count %u, start_instance %u, instance_count %u.\n", device, start_idx, index_count, start_instance, instance_count); @@ -357,10 +357,10 @@ } diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h -index 1447a60..d30f19f 100644 +index cc58a84..eedd4ff 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h -@@ -2559,7 +2559,9 @@ struct wined3d_cs_block +@@ -2582,7 +2582,9 @@ struct wined3d_cs_block { struct list entry; UINT pos; @@ -371,8 +371,8 @@ }; struct wined3d_cs_ops -@@ -2602,8 +2604,6 @@ void wined3d_cs_emit_set_clip_plane(struct wined3d_cs *cs, UINT plane_idx, - const struct wined3d_vec4 *plane) DECLSPEC_HIDDEN; +@@ -2627,8 +2629,6 @@ void wined3d_cs_emit_set_color_key(struct wined3d_cs *cs, struct wined3d_texture + WORD flags, const struct wined3d_color_key *color_key) DECLSPEC_HIDDEN; void wined3d_cs_emit_set_constant_buffer(struct wined3d_cs *cs, enum wined3d_shader_type type, UINT cb_idx, struct wined3d_buffer *buffer) DECLSPEC_HIDDEN; -void wined3d_cs_emit_transfer_stateblock(struct wined3d_cs *cs, @@ -380,7 +380,7 @@ void wined3d_cs_emit_set_depth_stencil_view(struct wined3d_cs *cs, struct wined3d_rendertarget_view *view) DECLSPEC_HIDDEN; void wined3d_cs_emit_set_index_buffer(struct wined3d_cs *cs, struct wined3d_buffer *buffer, -@@ -2649,6 +2649,8 @@ void wined3d_cs_emit_set_base_vertex_index(struct wined3d_cs *cs, +@@ -2674,6 +2674,8 @@ void wined3d_cs_emit_set_base_vertex_index(struct wined3d_cs *cs, UINT base_vertex_index) DECLSPEC_HIDDEN; void wined3d_cs_emit_set_primitive_type(struct wined3d_cs *cs, GLenum primitive_type) DECLSPEC_HIDDEN; @@ -390,5 +390,5 @@ /* Direct3D terminology with little modifications. We do not have an issued state * because only the driver knows about it, but we have a created state because d3d -- -2.3.2 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0072-wined3d-Send-blits-through-the-command-stream.patch wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0072-wined3d-Send-blits-through-the-command-stream.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0072-wined3d-Send-blits-through-the-command-stream.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0072-wined3d-Send-blits-through-the-command-stream.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,4 +1,4 @@ -From 3b80eec8bd2af7858157bdd2b821f7946023081f Mon Sep 17 00:00:00 2001 +From f095c8ad65086b4c17879e878f6387ef2f211e21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Mon, 29 Apr 2013 18:49:53 +0200 Subject: wined3d: Send blits through the command stream. @@ -12,10 +12,10 @@ 3 files changed, 226 insertions(+), 139 deletions(-) diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c -index 949bd6b..dcaedfd 100644 +index 032c1a2..0e758c8 100644 --- a/dlls/wined3d/cs.c +++ b/dlls/wined3d/cs.c -@@ -73,6 +73,7 @@ enum wined3d_cs_op +@@ -74,6 +74,7 @@ enum wined3d_cs_op WINED3D_CS_OP_SET_PRIMITIVE_TYPE, WINED3D_CS_OP_SET_LIGHT, WINED3D_CS_OP_SET_LIGHT_ENABLE, @@ -23,7 +23,7 @@ WINED3D_CS_OP_STOP, }; -@@ -330,6 +331,18 @@ struct wined3d_cs_set_light_enable +@@ -340,6 +341,18 @@ struct wined3d_cs_set_light_enable BOOL enable; }; @@ -42,7 +42,7 @@ /* FIXME: The list synchronization probably isn't particularly fast. */ static void wined3d_cs_list_enqueue(struct wined3d_cs_list *list, struct wined3d_cs_block *block) { -@@ -1393,6 +1406,9 @@ static UINT wined3d_cs_exec_glfinish(struct wined3d_cs *cs, const void *data) +@@ -1504,6 +1517,9 @@ static UINT wined3d_cs_exec_glfinish(struct wined3d_cs *cs, const void *data) struct wined3d_device *device = cs->device; struct wined3d_context *context; @@ -52,7 +52,7 @@ context = context_acquire(device, NULL); context->gl_info->gl_ops.gl.p_glFinish(); context_release(context); -@@ -1604,6 +1620,38 @@ void wined3d_cs_emit_set_light_enable(struct wined3d_cs *cs, UINT idx, BOOL enab +@@ -1715,6 +1731,38 @@ void wined3d_cs_emit_set_light_enable(struct wined3d_cs *cs, UINT idx, BOOL enab cs->ops->submit(cs); } @@ -91,7 +91,7 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void *data) = { /* WINED3D_CS_OP_FENCE */ wined3d_cs_exec_fence, -@@ -1643,6 +1691,7 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void +@@ -1755,6 +1803,7 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void /* WINED3D_CS_OP_SET_PRIMITIVE_TYPE */ wined3d_cs_exec_set_primitive_type, /* WINED3D_CS_OP_SET_LIGHT */ wined3d_cs_exec_set_light, /* WINED3D_CS_OP_SET_LIGHT_ENABLE */ wined3d_cs_exec_set_light_enable, @@ -99,7 +99,7 @@ }; static void *wined3d_cs_st_require_space(struct wined3d_cs *cs, size_t size) -@@ -1717,6 +1766,7 @@ static DWORD WINAPI wined3d_cs_run(void *thread_param) +@@ -1829,6 +1878,7 @@ static DWORD WINAPI wined3d_cs_run(void *thread_param) TRACE("Started.\n"); @@ -108,11 +108,11 @@ { struct wined3d_cs_block *block; diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c -index 6e8e2f5..8a833d5 100644 +index 87f6ef2..747c42a 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c -@@ -5092,14 +5092,13 @@ const struct blit_shader cpu_blit = { - cpu_blit_depth_fill, +@@ -4991,14 +4991,13 @@ const struct blit_shader cpu_blit = { + cpu_blit_blit_surface, }; -HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst_rect_in, @@ -128,7 +128,7 @@ BOOL scale, convert; static const DWORD simple_blit = WINEDDBLT_ASYNC -@@ -5108,111 +5107,6 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC +@@ -5009,111 +5008,6 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC | WINEDDBLT_DEPTHFILL | WINEDDBLT_DONOTWAIT; @@ -240,7 +240,7 @@ if (!device->d3d_initialized) { WARN("D3D not initialized, using fallback.\n"); -@@ -5255,8 +5149,8 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC +@@ -5156,8 +5050,8 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC } scale = src_surface @@ -251,7 +251,7 @@ convert = src_surface && src_surface->resource.format->id != dst_surface->resource.format->id; dst_ds_flags = dst_surface->resource.format->flags & (WINED3DFMT_FLAG_DEPTH | WINED3DFMT_FLAG_STENCIL); -@@ -5274,22 +5168,16 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC +@@ -5175,22 +5069,16 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC TRACE("Depth fill.\n"); if (!surface_convert_depth_to_float(dst_surface, fx->u5.dwFillDepth, &depth)) @@ -279,8 +279,8 @@ } } else -@@ -5316,8 +5204,8 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC - if (!surface_convert_color_to_float(dst_surface, fx->u5.dwFillColor, &color)) +@@ -5221,8 +5109,8 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC + palette, fx->u5.dwFillColor, &color)) goto fallback; - if (SUCCEEDED(surface_color_fill(dst_surface, &dst_rect, &color))) @@ -290,7 +290,7 @@ } else { -@@ -5333,9 +5221,9 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC +@@ -5250,9 +5138,9 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC TRACE("Not doing upload because of format conversion.\n"); else { @@ -302,7 +302,7 @@ { if (!wined3d_resource_is_offscreen(&dst_surface->container->resource)) { -@@ -5344,7 +5232,7 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC +@@ -5261,7 +5149,7 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC dst_surface->container->resource.draw_binding); context_release(context); } @@ -311,7 +311,7 @@ } } } -@@ -5369,51 +5257,192 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC +@@ -5285,50 +5173,191 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC wined3d_swapchain_present(dst_swapchain, NULL, NULL, dst_swapchain->win_handle, NULL, 0); dst_swapchain->desc.swap_effect = swap_effect; @@ -319,7 +319,7 @@ + return; } - if (fbo_blit_supported(&device->adapter->gl_info, WINED3D_BLIT_OP_COLOR_BLIT, + if (fbo_blit_supported(&device->adapter->gl_info, blit_op, - &src_rect, src_surface->resource.usage, src_surface->resource.pool, src_surface->resource.format, - &dst_rect, dst_surface->resource.usage, dst_surface->resource.pool, dst_surface->resource.format)) + src_rect, src_surface->resource.usage, src_surface->resource.pool, src_surface->resource.format, @@ -343,18 +343,17 @@ + return; } - if (arbfp_blit.blit_supported(&device->adapter->gl_info, WINED3D_BLIT_OP_COLOR_BLIT, + blitter = wined3d_select_blitter(&device->adapter->gl_info, &device->adapter->d3d_info, blit_op, - &src_rect, src_surface->resource.usage, src_surface->resource.pool, src_surface->resource.format, -- &dst_rect, dst_surface->resource.usage, dst_surface->resource.pool, dst_surface->resource.format)) +- &dst_rect, dst_surface->resource.usage, dst_surface->resource.pool, dst_surface->resource.format); + src_rect, src_surface->resource.usage, src_surface->resource.pool, src_surface->resource.format, -+ dst_rect, dst_surface->resource.usage, dst_surface->resource.pool, dst_surface->resource.format)) ++ dst_rect, dst_surface->resource.usage, dst_surface->resource.pool, dst_surface->resource.format); + if (blitter) { - TRACE("Using arbfp blit.\n"); - -- if (SUCCEEDED(arbfp_blit_surface(device, filter, src_surface, &src_rect, dst_surface, &dst_rect))) -- return WINED3D_OK; -+ if (SUCCEEDED(arbfp_blit_surface(device, filter, src_surface, src_rect, dst_surface, dst_rect))) -+ return; +- blitter->blit_surface(device, filter, src_surface, &src_rect, dst_surface, &dst_rect, color_key); +- return WINED3D_OK; ++ blitter->blit_surface(device, filter, src_surface, src_rect, dst_surface, dst_rect, color_key); ++ return; } } } @@ -518,10 +517,10 @@ static const struct wined3d_resource_ops surface_resource_ops = diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h -index 041feb3..342577c 100644 +index 85a7ca1..ee9df98 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h -@@ -2426,6 +2426,9 @@ void wined3d_surface_destroy(struct wined3d_surface *surface) DECLSPEC_HIDDEN; +@@ -2452,6 +2452,9 @@ void wined3d_surface_destroy(struct wined3d_surface *surface) DECLSPEC_HIDDEN; void wined3d_surface_upload_data(struct wined3d_surface *surface, const struct wined3d_gl_info *gl_info, const struct wined3d_format *format, const RECT *src_rect, UINT src_pitch, const POINT *dst_point, BOOL srgb, const struct wined3d_const_bo_address *data) DECLSPEC_HIDDEN; @@ -531,7 +530,7 @@ void draw_textured_quad(const struct wined3d_surface *src_surface, struct wined3d_context *context, const RECT *src_rect, const RECT *dst_rect, enum wined3d_texture_filter_type filter) DECLSPEC_HIDDEN; -@@ -2570,6 +2573,7 @@ struct wined3d_cs +@@ -2601,6 +2604,7 @@ struct wined3d_cs struct wined3d_device *device; struct wined3d_state state; HANDLE thread; @@ -539,7 +538,7 @@ DWORD tls_idx; struct wined3d_surface *onscreen_depth_stencil; -@@ -2646,6 +2650,10 @@ void wined3d_cs_emit_set_primitive_type(struct wined3d_cs *cs, +@@ -2679,6 +2683,10 @@ void wined3d_cs_emit_set_primitive_type(struct wined3d_cs *cs, GLenum primitive_type) DECLSPEC_HIDDEN; void wined3d_cs_emit_set_light(struct wined3d_cs *cs, const struct wined3d_light_info *light) DECLSPEC_HIDDEN; void wined3d_cs_emit_set_light_enable(struct wined3d_cs *cs, UINT idx, BOOL enable) DECLSPEC_HIDDEN; @@ -551,5 +550,5 @@ /* Direct3D terminology with little modifications. We do not have an issued state * because only the driver knows about it, but we have a created state because d3d -- -2.2.1 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0075-wined3d-Add-cs-waiting-debug-code.patch wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0075-wined3d-Add-cs-waiting-debug-code.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0075-wined3d-Add-cs-waiting-debug-code.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0075-wined3d-Add-cs-waiting-debug-code.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,29 +1,31 @@ -From c83ce498b74f5b547be9e158619a20079ea77681 Mon Sep 17 00:00:00 2001 +From b41844b91cb9817f378c3c666b3129c3c870d014 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Thu, 4 Jul 2013 20:40:39 +0200 Subject: wined3d: Add cs waiting debug code --- - dlls/wined3d/texture.c | 6 ++++++ - 1 file changed, 6 insertions(+) + dlls/wined3d/texture.c | 8 ++++++++ + 1 file changed, 8 insertions(+) diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c -index 084b4db..ac41088 100644 +index eb4996b..240e8fa 100644 --- a/dlls/wined3d/texture.c +++ b/dlls/wined3d/texture.c -@@ -576,6 +576,12 @@ HRESULT CDECL wined3d_texture_set_color_key(struct wined3d_texture *texture, +@@ -610,6 +610,14 @@ HRESULT CDECL wined3d_texture_set_color_key(struct wined3d_texture *texture, return WINED3DERR_INVALIDCALL; } ++ /* + if (wined3d_settings.cs_multithreaded) + { + FIXME("waiting for cs\n"); + texture->resource.device->cs->ops->finish(texture->resource.device->cs); + } ++ */ + - if (color_key) - { - switch (flags & ~WINED3D_CKEY_COLORSPACE) + wined3d_cs_emit_set_color_key(device->cs, texture, flags, color_key); + + return WINED3D_OK; -- -2.2.1 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0081-wined3d-Replace-the-linked-lists-with-a-ringbuffer.patch wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0081-wined3d-Replace-the-linked-lists-with-a-ringbuffer.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0081-wined3d-Replace-the-linked-lists-with-a-ringbuffer.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0081-wined3d-Replace-the-linked-lists-with-a-ringbuffer.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,15 +1,15 @@ -From 68ab1f57ab88ea0592fcaa9c2c73a283fdb8dd3c Mon Sep 17 00:00:00 2001 +From c115a25b8aba4ade5fa04cfb469b030eb29b941a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Thu, 4 Jul 2013 23:33:14 +0200 Subject: wined3d: Replace the linked lists with a ringbuffer --- - dlls/wined3d/cs.c | 360 ++++++++++++++++++----------------------- + dlls/wined3d/cs.c | 362 ++++++++++++++++++----------------------- dlls/wined3d/wined3d_private.h | 20 +-- - 2 files changed, 161 insertions(+), 219 deletions(-) + 2 files changed, 162 insertions(+), 220 deletions(-) diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c -index b691924..d35f114 100644 +index 6204e57..66c784b 100644 --- a/dlls/wined3d/cs.c +++ b/dlls/wined3d/cs.c @@ -22,20 +22,10 @@ @@ -35,7 +35,7 @@ WINED3D_CS_OP_FENCE, WINED3D_CS_OP_PRESENT, WINED3D_CS_OP_CLEAR, -@@ -368,99 +358,30 @@ struct wined3d_cs_resource_unmap +@@ -378,99 +368,30 @@ struct wined3d_cs_resource_unmap struct wined3d_resource *resource; }; @@ -149,7 +149,7 @@ } static UINT wined3d_cs_exec_fence(struct wined3d_cs *cs, const void *data) -@@ -481,14 +402,14 @@ static void wined3d_cs_emit_fence(struct wined3d_cs *cs, BOOL *signalled) +@@ -491,14 +412,14 @@ static void wined3d_cs_emit_fence(struct wined3d_cs *cs, BOOL *signalled) op = cs->ops->require_space(cs, sizeof(*op)); op->opcode = WINED3D_CS_OP_FENCE; op->signalled = signalled; @@ -166,7 +166,7 @@ /* A busy wait should be fine, we're not supposed to have to wait very * long. */ -@@ -546,7 +467,7 @@ void wined3d_cs_emit_present(struct wined3d_cs *cs, struct wined3d_swapchain *sw +@@ -556,7 +477,7 @@ void wined3d_cs_emit_present(struct wined3d_cs *cs, struct wined3d_swapchain *sw pending = InterlockedIncrement(&cs->pending_presents); @@ -175,7 +175,7 @@ while (pending > 1) pending = InterlockedCompareExchange(&cs->pending_presents, 0, 0); -@@ -573,8 +494,9 @@ void wined3d_cs_emit_clear(struct wined3d_cs *cs, DWORD rect_count, const RECT * +@@ -583,8 +504,9 @@ void wined3d_cs_emit_clear(struct wined3d_cs *cs, DWORD rect_count, const RECT * { struct wined3d_cs_clear *op; unsigned int extra_rects = rect_count ? rect_count - 1 : 0; @@ -186,7 +186,7 @@ op->opcode = WINED3D_CS_OP_CLEAR; op->rect_count = rect_count; if (rect_count) -@@ -584,7 +506,7 @@ void wined3d_cs_emit_clear(struct wined3d_cs *cs, DWORD rect_count, const RECT * +@@ -594,7 +516,7 @@ void wined3d_cs_emit_clear(struct wined3d_cs *cs, DWORD rect_count, const RECT * op->depth = depth; op->stencil = stencil; @@ -195,7 +195,7 @@ } static UINT wined3d_cs_exec_draw(struct wined3d_cs *cs, const void *data) -@@ -625,7 +547,7 @@ void wined3d_cs_emit_draw(struct wined3d_cs *cs, UINT start_idx, UINT index_coun +@@ -635,7 +557,7 @@ void wined3d_cs_emit_draw(struct wined3d_cs *cs, UINT start_idx, UINT index_coun op->instance_count = instance_count; op->indexed = indexed; @@ -204,7 +204,7 @@ } static UINT wined3d_cs_exec_set_predication(struct wined3d_cs *cs, const void *data) -@@ -647,7 +569,7 @@ void wined3d_cs_emit_set_predication(struct wined3d_cs *cs, struct wined3d_query +@@ -657,7 +579,7 @@ void wined3d_cs_emit_set_predication(struct wined3d_cs *cs, struct wined3d_query op->predicate = predicate; op->value = value; @@ -213,7 +213,7 @@ } static UINT wined3d_cs_exec_set_viewport(struct wined3d_cs *cs, const void *data) -@@ -669,7 +591,7 @@ void wined3d_cs_emit_set_viewport(struct wined3d_cs *cs, const struct wined3d_vi +@@ -679,7 +601,7 @@ void wined3d_cs_emit_set_viewport(struct wined3d_cs *cs, const struct wined3d_vi op->opcode = WINED3D_CS_OP_SET_VIEWPORT; op->viewport = *viewport; @@ -222,7 +222,7 @@ } static UINT wined3d_cs_exec_set_scissor_rect(struct wined3d_cs *cs, const void *data) -@@ -690,7 +612,7 @@ void wined3d_cs_emit_set_scissor_rect(struct wined3d_cs *cs, const RECT *rect) +@@ -700,7 +622,7 @@ void wined3d_cs_emit_set_scissor_rect(struct wined3d_cs *cs, const RECT *rect) op->opcode = WINED3D_CS_OP_SET_SCISSOR_RECT; op->rect = *rect; @@ -231,7 +231,7 @@ } static UINT wined3d_cs_exec_set_rendertarget_view(struct wined3d_cs *cs, const void *data) -@@ -713,7 +635,7 @@ void wined3d_cs_emit_set_rendertarget_view(struct wined3d_cs *cs, unsigned int v +@@ -723,7 +645,7 @@ void wined3d_cs_emit_set_rendertarget_view(struct wined3d_cs *cs, unsigned int v op->view_idx = view_idx; op->view = view; @@ -240,7 +240,7 @@ } static UINT wined3d_cs_exec_set_depth_stencil_view(struct wined3d_cs *cs, const void *data) -@@ -766,7 +688,7 @@ void wined3d_cs_emit_set_depth_stencil_view(struct wined3d_cs *cs, struct wined3 +@@ -776,7 +698,7 @@ void wined3d_cs_emit_set_depth_stencil_view(struct wined3d_cs *cs, struct wined3 op->opcode = WINED3D_CS_OP_SET_DEPTH_STENCIL_VIEW; op->view = view; @@ -249,7 +249,7 @@ } static UINT wined3d_cs_exec_set_vertex_declaration(struct wined3d_cs *cs, const void *data) -@@ -787,7 +709,7 @@ void wined3d_cs_emit_set_vertex_declaration(struct wined3d_cs *cs, struct wined3 +@@ -797,7 +719,7 @@ void wined3d_cs_emit_set_vertex_declaration(struct wined3d_cs *cs, struct wined3 op->opcode = WINED3D_CS_OP_SET_VERTEX_DECLARATION; op->declaration = declaration; @@ -258,7 +258,7 @@ } static UINT wined3d_cs_exec_set_stream_source(struct wined3d_cs *cs, const void *data) -@@ -824,7 +746,7 @@ void wined3d_cs_emit_set_stream_source(struct wined3d_cs *cs, UINT stream_idx, +@@ -834,7 +756,7 @@ void wined3d_cs_emit_set_stream_source(struct wined3d_cs *cs, UINT stream_idx, op->offset = offset; op->stride = stride; @@ -267,7 +267,7 @@ } static UINT wined3d_cs_exec_set_stream_source_freq(struct wined3d_cs *cs, const void *data) -@@ -851,7 +773,7 @@ void wined3d_cs_emit_set_stream_source_freq(struct wined3d_cs *cs, UINT stream_i +@@ -861,7 +783,7 @@ void wined3d_cs_emit_set_stream_source_freq(struct wined3d_cs *cs, UINT stream_i op->frequency = frequency; op->flags = flags; @@ -276,7 +276,7 @@ } static UINT wined3d_cs_exec_set_stream_output(struct wined3d_cs *cs, const void *data) -@@ -884,7 +806,7 @@ void wined3d_cs_emit_set_stream_output(struct wined3d_cs *cs, UINT stream_idx, +@@ -894,7 +816,7 @@ void wined3d_cs_emit_set_stream_output(struct wined3d_cs *cs, UINT stream_idx, op->buffer = buffer; op->offset = offset; @@ -285,7 +285,7 @@ } static UINT wined3d_cs_exec_set_index_buffer(struct wined3d_cs *cs, const void *data) -@@ -916,7 +838,7 @@ void wined3d_cs_emit_set_index_buffer(struct wined3d_cs *cs, struct wined3d_buff +@@ -926,7 +848,7 @@ void wined3d_cs_emit_set_index_buffer(struct wined3d_cs *cs, struct wined3d_buff op->buffer = buffer; op->format_id = format_id; @@ -294,7 +294,7 @@ } static UINT wined3d_cs_exec_set_constant_buffer(struct wined3d_cs *cs, const void *data) -@@ -947,7 +869,7 @@ void wined3d_cs_emit_set_constant_buffer(struct wined3d_cs *cs, enum wined3d_sha +@@ -957,7 +879,7 @@ void wined3d_cs_emit_set_constant_buffer(struct wined3d_cs *cs, enum wined3d_sha op->cb_idx = cb_idx; op->buffer = buffer; @@ -303,7 +303,7 @@ } static UINT wined3d_cs_exec_set_texture(struct wined3d_cs *cs, const void *data) -@@ -1022,7 +944,7 @@ void wined3d_cs_emit_set_texture(struct wined3d_cs *cs, UINT stage, struct wined +@@ -1032,7 +954,7 @@ void wined3d_cs_emit_set_texture(struct wined3d_cs *cs, UINT stage, struct wined op->opcode = WINED3D_CS_OP_SET_TEXTURE; op->stage = stage; op->texture = texture; @@ -312,7 +312,7 @@ } static UINT wined3d_cs_exec_set_shader_resource_view(struct wined3d_cs *cs, const void *data) -@@ -1045,7 +967,7 @@ void wined3d_cs_emit_set_shader_resource_view(struct wined3d_cs *cs, enum wined3 +@@ -1056,7 +978,7 @@ void wined3d_cs_emit_set_shader_resource_view(struct wined3d_cs *cs, enum wined3 op->view_idx = view_idx; op->view = view; @@ -321,7 +321,7 @@ } static UINT wined3d_cs_exec_set_sampler(struct wined3d_cs *cs, const void *data) -@@ -1068,7 +990,7 @@ void wined3d_cs_emit_set_sampler(struct wined3d_cs *cs, enum wined3d_shader_type +@@ -1080,7 +1002,7 @@ void wined3d_cs_emit_set_sampler(struct wined3d_cs *cs, enum wined3d_shader_type op->sampler_idx = sampler_idx; op->sampler = sampler; @@ -330,7 +330,7 @@ } static UINT wined3d_cs_exec_set_shader(struct wined3d_cs *cs, const void *data) -@@ -1089,6 +1011,8 @@ void wined3d_cs_emit_set_shader(struct wined3d_cs *cs, enum wined3d_shader_type +@@ -1102,6 +1024,8 @@ void wined3d_cs_emit_set_shader(struct wined3d_cs *cs, enum wined3d_shader_type op->opcode = WINED3D_CS_OP_SET_SHADER; op->type = type; op->shader = shader; @@ -339,7 +339,7 @@ } static UINT wined3d_cs_exec_set_vs_consts_f(struct wined3d_cs *cs, const void *data) -@@ -1124,8 +1048,9 @@ void wined3d_cs_emit_set_consts_f(struct wined3d_cs *cs, UINT start_register, +@@ -1137,8 +1061,9 @@ void wined3d_cs_emit_set_consts_f(struct wined3d_cs *cs, UINT start_register, { struct wined3d_cs_set_consts_f *op; UINT extra_space = vector4f_count - 1; @@ -350,7 +350,7 @@ switch (type) { case WINED3D_SHADER_TYPE_PIXEL: -@@ -1147,7 +1072,7 @@ void wined3d_cs_emit_set_consts_f(struct wined3d_cs *cs, UINT start_register, +@@ -1160,7 +1085,7 @@ void wined3d_cs_emit_set_consts_f(struct wined3d_cs *cs, UINT start_register, op->vector4f_count = vector4f_count; memcpy(op->constants, constants, sizeof(*constants) * 4 * vector4f_count); @@ -359,7 +359,7 @@ } static UINT wined3d_cs_exec_set_render_state(struct wined3d_cs *cs, const void *data) -@@ -1169,8 +1094,8 @@ void wined3d_cs_emit_set_render_state(struct wined3d_cs *cs, enum wined3d_render +@@ -1182,8 +1107,8 @@ void wined3d_cs_emit_set_render_state(struct wined3d_cs *cs, enum wined3d_render op->state = state; op->value = value; @@ -370,7 +370,7 @@ static UINT wined3d_cs_exec_set_vs_consts_b(struct wined3d_cs *cs, const void *data) { -@@ -1203,8 +1128,9 @@ void wined3d_cs_emit_set_consts_b(struct wined3d_cs *cs, UINT start_register, +@@ -1216,8 +1141,9 @@ void wined3d_cs_emit_set_consts_b(struct wined3d_cs *cs, UINT start_register, { struct wined3d_cs_set_consts_b *op; UINT extra_space = bool_count - 1; @@ -381,7 +381,7 @@ switch (type) { case WINED3D_SHADER_TYPE_PIXEL: -@@ -1226,7 +1152,7 @@ void wined3d_cs_emit_set_consts_b(struct wined3d_cs *cs, UINT start_register, +@@ -1239,7 +1165,7 @@ void wined3d_cs_emit_set_consts_b(struct wined3d_cs *cs, UINT start_register, op->bool_count = bool_count; memcpy(op->constants, constants, sizeof(op->constants) * bool_count); @@ -390,7 +390,7 @@ } static UINT wined3d_cs_exec_set_vs_consts_i(struct wined3d_cs *cs, const void *data) -@@ -1260,8 +1186,9 @@ void wined3d_cs_emit_set_consts_i(struct wined3d_cs *cs, UINT start_register, +@@ -1273,8 +1199,9 @@ void wined3d_cs_emit_set_consts_i(struct wined3d_cs *cs, UINT start_register, { struct wined3d_cs_set_consts_i *op; UINT extra_space = vector4i_count - 1; @@ -401,7 +401,7 @@ switch (type) { case WINED3D_SHADER_TYPE_PIXEL: -@@ -1283,7 +1210,7 @@ void wined3d_cs_emit_set_consts_i(struct wined3d_cs *cs, UINT start_register, +@@ -1296,7 +1223,7 @@ void wined3d_cs_emit_set_consts_i(struct wined3d_cs *cs, UINT start_register, op->vector4i_count = vector4i_count; memcpy(op->constants, constants, sizeof(op->constants) * vector4i_count); @@ -410,7 +410,7 @@ } static UINT wined3d_cs_exec_set_texture_state(struct wined3d_cs *cs, const void *data) -@@ -1307,7 +1234,7 @@ void wined3d_cs_emit_set_texture_state(struct wined3d_cs *cs, UINT stage, +@@ -1320,7 +1247,7 @@ void wined3d_cs_emit_set_texture_state(struct wined3d_cs *cs, UINT stage, op->state = state; op->value = value; @@ -419,7 +419,7 @@ } static UINT wined3d_cs_exec_set_sampler_state(struct wined3d_cs *cs, const void *data) -@@ -1331,7 +1258,7 @@ void wined3d_cs_emit_set_sampler_state(struct wined3d_cs *cs, UINT sampler_idx, +@@ -1344,7 +1271,7 @@ void wined3d_cs_emit_set_sampler_state(struct wined3d_cs *cs, UINT sampler_idx, op->state = state; op->value = value; @@ -428,7 +428,7 @@ } static UINT wined3d_cs_exec_set_transform(struct wined3d_cs *cs, const void *data) -@@ -1355,7 +1282,7 @@ void wined3d_cs_emit_set_transform(struct wined3d_cs *cs, enum wined3d_transform +@@ -1368,7 +1295,7 @@ void wined3d_cs_emit_set_transform(struct wined3d_cs *cs, enum wined3d_transform op->state = state; op->matrix = *matrix; @@ -437,7 +437,7 @@ } static UINT wined3d_cs_exec_set_clip_plane(struct wined3d_cs *cs, const void *data) -@@ -1377,7 +1304,7 @@ void wined3d_cs_emit_set_clip_plane(struct wined3d_cs *cs, UINT plane_idx, const +@@ -1390,7 +1317,7 @@ void wined3d_cs_emit_set_clip_plane(struct wined3d_cs *cs, UINT plane_idx, const op->plane_idx = plane_idx; op->plane = *plane; @@ -445,8 +445,17 @@ + cs->ops->submit(cs, sizeof(*op)); } + static UINT wined3d_cs_exec_set_color_key(struct wined3d_cs *cs, const void *data) +@@ -1468,7 +1395,7 @@ void wined3d_cs_emit_set_color_key(struct wined3d_cs *cs, struct wined3d_texture + else + op->set = 0; + +- cs->ops->submit(cs); ++ cs->ops->submit(cs, sizeof(*op)); + } + static UINT wined3d_cs_exec_set_material(struct wined3d_cs *cs, const void *data) -@@ -1398,7 +1325,7 @@ void wined3d_cs_emit_set_material(struct wined3d_cs *cs, const struct wined3d_ma +@@ -1489,7 +1416,7 @@ void wined3d_cs_emit_set_material(struct wined3d_cs *cs, const struct wined3d_ma op->opcode = WINED3D_CS_OP_SET_MATERIAL; op->material = *material; @@ -455,7 +464,7 @@ } static UINT wined3d_cs_exec_reset_state(struct wined3d_cs *cs, const void *data) -@@ -1422,7 +1349,7 @@ void wined3d_cs_emit_reset_state(struct wined3d_cs *cs) +@@ -1513,7 +1440,7 @@ void wined3d_cs_emit_reset_state(struct wined3d_cs *cs) op = cs->ops->require_space(cs, sizeof(*op)); op->opcode = WINED3D_CS_OP_RESET_STATE; @@ -464,7 +473,7 @@ } static UINT wined3d_cs_exec_glfinish(struct wined3d_cs *cs, const void *data) -@@ -1448,7 +1375,7 @@ void wined3d_cs_emit_glfinish(struct wined3d_cs *cs) +@@ -1539,7 +1466,7 @@ void wined3d_cs_emit_glfinish(struct wined3d_cs *cs) op = cs->ops->require_space(cs, sizeof(*op)); op->opcode = WINED3D_CS_OP_GLFINISH; @@ -473,7 +482,7 @@ } static UINT wined3d_cs_exec_set_base_vertex_index(struct wined3d_cs *cs, const void *data) -@@ -1470,7 +1397,7 @@ void wined3d_cs_emit_set_base_vertex_index(struct wined3d_cs *cs, +@@ -1561,7 +1488,7 @@ void wined3d_cs_emit_set_base_vertex_index(struct wined3d_cs *cs, op->opcode = WINED3D_CS_OP_SET_BASE_VERTEX_INDEX; op->base_vertex_index = base_vertex_index; @@ -482,7 +491,7 @@ } static UINT wined3d_cs_exec_set_primitive_type(struct wined3d_cs *cs, const void *data) -@@ -1496,7 +1423,7 @@ void wined3d_cs_emit_set_primitive_type(struct wined3d_cs *cs, GLenum primitive_ +@@ -1587,7 +1514,7 @@ void wined3d_cs_emit_set_primitive_type(struct wined3d_cs *cs, GLenum primitive_ op->opcode = WINED3D_CS_OP_SET_PRIMITIVE_TYPE; op->gl_primitive_type = primitive_type; @@ -491,7 +500,7 @@ } static UINT wined3d_cs_exec_set_light(struct wined3d_cs *cs, const void *data) -@@ -1553,7 +1480,7 @@ void wined3d_cs_emit_set_light(struct wined3d_cs *cs, const struct wined3d_light +@@ -1644,7 +1571,7 @@ void wined3d_cs_emit_set_light(struct wined3d_cs *cs, const struct wined3d_light op->opcode = WINED3D_CS_OP_SET_LIGHT; op->light = *light; @@ -500,7 +509,7 @@ } static UINT wined3d_cs_exec_set_light_enable(struct wined3d_cs *cs, const void *data) -@@ -1642,7 +1569,7 @@ void wined3d_cs_emit_set_light_enable(struct wined3d_cs *cs, UINT idx, BOOL enab +@@ -1733,7 +1660,7 @@ void wined3d_cs_emit_set_light_enable(struct wined3d_cs *cs, UINT idx, BOOL enab op->idx = idx; op->enable = enable; @@ -509,7 +518,7 @@ } static UINT wined3d_cs_exec_blt(struct wined3d_cs *cs, const void *data) -@@ -1674,7 +1601,7 @@ void wined3d_cs_emit_blt(struct wined3d_cs *cs, struct wined3d_surface *dst_surf +@@ -1765,7 +1692,7 @@ void wined3d_cs_emit_blt(struct wined3d_cs *cs, struct wined3d_surface *dst_surf if (fx) op->fx = *fx; @@ -518,7 +527,7 @@ } static UINT wined3d_cs_exec_clear_rtv(struct wined3d_cs *cs, const void *data) -@@ -1700,7 +1627,7 @@ void wined3d_cs_emit_clear_rtv(struct wined3d_cs *cs, struct wined3d_rendertarge +@@ -1791,7 +1718,7 @@ void wined3d_cs_emit_clear_rtv(struct wined3d_cs *cs, struct wined3d_rendertarge op->rect = *rect; op->color = *color; @@ -527,7 +536,7 @@ } static UINT wined3d_cs_exec_resource_map(struct wined3d_cs *cs, const void *data) -@@ -1724,12 +1651,14 @@ void *wined3d_cs_emit_resource_map(struct wined3d_cs *cs, struct wined3d_resourc +@@ -1815,12 +1742,14 @@ void *wined3d_cs_emit_resource_map(struct wined3d_cs *cs, struct wined3d_resourc op->flags = flags; op->mem = &ret; @@ -543,7 +552,7 @@ return ret; } -@@ -1751,11 +1680,13 @@ void wined3d_cs_emit_resource_unmap(struct wined3d_cs *cs, struct wined3d_resour +@@ -1842,11 +1771,13 @@ void wined3d_cs_emit_resource_unmap(struct wined3d_cs *cs, struct wined3d_resour op->opcode = WINED3D_CS_OP_RESOURCE_UNMAP; op->resource = resource; @@ -558,7 +567,7 @@ /* WINED3D_CS_OP_FENCE */ wined3d_cs_exec_fence, /* WINED3D_CS_OP_PRESENT */ wined3d_cs_exec_present, /* WINED3D_CS_OP_CLEAR */ wined3d_cs_exec_clear, -@@ -1799,42 +1730,59 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void +@@ -1891,42 +1822,59 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void /* WINED3D_CS_OP_RESOURCE_UNMAP */ wined3d_cs_exec_resource_unmap, }; @@ -641,7 +650,7 @@ }; /* FIXME: wined3d_device_uninit_3d() should either flush and wait, or be an -@@ -1846,9 +1794,38 @@ static void wined3d_cs_emit_stop(struct wined3d_cs *cs) +@@ -1938,9 +1886,38 @@ static void wined3d_cs_emit_stop(struct wined3d_cs *cs) op = wined3d_cs_mt_require_space(cs, sizeof(*op)); op->opcode = WINED3D_CS_OP_STOP; @@ -681,7 +690,7 @@ void wined3d_cs_switch_onscreen_ds(struct wined3d_cs *cs, struct wined3d_context *context, struct wined3d_surface *depth_stencil) { -@@ -1868,31 +1845,32 @@ void wined3d_cs_switch_onscreen_ds(struct wined3d_cs *cs, +@@ -1960,31 +1937,32 @@ void wined3d_cs_switch_onscreen_ds(struct wined3d_cs *cs, static DWORD WINAPI wined3d_cs_run(void *thread_param) { struct wined3d_cs *cs = thread_param; @@ -728,7 +737,7 @@ } done: -@@ -1917,25 +1895,10 @@ struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device) +@@ -2009,25 +1987,10 @@ struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device) cs->ops = &wined3d_cs_st_ops; cs->device = device; @@ -754,7 +763,7 @@ if (!(cs->thread = CreateThread(NULL, 0, wined3d_cs_run, cs, 0, NULL))) { ERR("Failed to create wined3d command stream thread.\n"); -@@ -1947,12 +1910,7 @@ struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device) +@@ -2039,12 +2002,7 @@ struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device) err: if (cs) @@ -767,7 +776,7 @@ HeapFree(GetProcessHeap(), 0, cs); return NULL; } -@@ -1971,17 +1929,7 @@ void wined3d_cs_destroy(struct wined3d_cs *cs) +@@ -2063,17 +2021,7 @@ void wined3d_cs_destroy(struct wined3d_cs *cs) CloseHandle(cs->thread); if (ret != WAIT_OBJECT_0) ERR("Wait failed (%#x).\n", ret); @@ -786,7 +795,7 @@ HeapFree(GetProcessHeap(), 0, cs); } diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h -index 6ee0c24..59d9753 100644 +index ed4d94b..35384e1 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -31,6 +31,7 @@ @@ -797,7 +806,7 @@ #include #include #include -@@ -2537,19 +2538,17 @@ struct wined3d_cs_list +@@ -2584,19 +2585,17 @@ struct wined3d_cs_list struct list blocks; }; @@ -822,7 +831,7 @@ void (*finish)(struct wined3d_cs *cs); }; -@@ -2560,14 +2559,9 @@ struct wined3d_cs +@@ -2607,14 +2606,9 @@ struct wined3d_cs struct wined3d_state state; HANDLE thread; DWORD thread_id; @@ -839,5 +848,5 @@ LONG pending_presents; }; -- -2.1.3 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0098-wined3d-Send-update_texture-calls-through-the-CS.patch wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0098-wined3d-Send-update_texture-calls-through-the-CS.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0098-wined3d-Send-update_texture-calls-through-the-CS.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0098-wined3d-Send-update_texture-calls-through-the-CS.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,4 +1,4 @@ -From 063ea3bd542ec568905d8788bf37e2a281be0c8b Mon Sep 17 00:00:00 2001 +From fe282dc2344e43fc6061c8bf6fafb6985472c2a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Thu, 1 Aug 2013 00:33:48 +0200 Subject: wined3d: Send update_texture calls through the CS @@ -10,10 +10,10 @@ 3 files changed, 97 insertions(+), 74 deletions(-) diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c -index 62124a7..b41e364 100644 +index 77ef49b..c63299f 100644 --- a/dlls/wined3d/cs.c +++ b/dlls/wined3d/cs.c -@@ -72,6 +72,7 @@ enum wined3d_cs_op +@@ -73,6 +73,7 @@ enum wined3d_cs_op WINED3D_CS_OP_UPDATE_SURFACE, WINED3D_CS_OP_TEXTURE_PRELOAD, WINED3D_CS_OP_SURFACE_PRELOAD, @@ -21,7 +21,7 @@ WINED3D_CS_OP_STOP, }; -@@ -403,6 +404,12 @@ struct wined3d_cs_surface_preload +@@ -413,6 +414,12 @@ struct wined3d_cs_surface_preload struct wined3d_surface *surface; }; @@ -34,7 +34,7 @@ static void wined3d_cs_mt_submit(struct wined3d_cs *cs, size_t size) { LONG new_val = (cs->queue.head + size) & (WINED3D_CS_QUEUE_SIZE - 1); -@@ -1891,6 +1898,31 @@ void wined3d_cs_emit_surface_preload(struct wined3d_cs *cs, struct wined3d_surfa +@@ -1999,6 +2006,31 @@ void wined3d_cs_emit_surface_preload(struct wined3d_cs *cs, struct wined3d_surfa cs->ops->submit(cs, sizeof(*op)); } @@ -66,7 +66,7 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void *data) = { /* WINED3D_CS_OP_NOP */ wined3d_cs_exec_nop, -@@ -1941,6 +1973,7 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void +@@ -2050,6 +2082,7 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void /* WINED3D_CS_OP_UPDATE_SURFACE */ wined3d_cs_exec_update_surface, /* WINED3D_CS_OP_TEXTURE_PRELOAD */ wined3d_cs_exec_texture_preload, /* WINED3D_CS_OP_SURFACE_PRELOAD */ wined3d_cs_exec_surface_preload, @@ -75,10 +75,10 @@ static inline void *_wined3d_cs_mt_require_space(struct wined3d_cs *cs, size_t size, BOOL prio) diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c -index 22ef49b..eb426ff 100644 +index 0d654b7..03202f7 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c -@@ -3416,16 +3416,15 @@ void CDECL wined3d_device_draw_indexed_primitive_instanced(struct wined3d_device +@@ -3426,16 +3426,15 @@ void CDECL wined3d_device_draw_indexed_primitive_instanced(struct wined3d_device } /* This is a helper function for UpdateTexture, there is no UpdateVolume method in D3D. */ @@ -98,7 +98,7 @@ if (src_volume->resource.format != dst_volume->resource.format) { -@@ -3443,8 +3442,6 @@ static HRESULT device_update_volume(struct wined3d_device *device, +@@ -3453,8 +3452,6 @@ static HRESULT device_update_volume(struct wined3d_device *device, if (FAILED(hr = wined3d_volume_map(src_volume, &src, NULL, WINED3D_MAP_READONLY))) return hr; @@ -106,8 +106,8 @@ - /* Only a prepare, since we're uploading the entire volume. */ wined3d_texture_prepare_texture(dst_volume->container, context, FALSE); - wined3d_texture_bind(dst_volume->container, context, FALSE); -@@ -3454,68 +3451,21 @@ static HRESULT device_update_volume(struct wined3d_device *device, + wined3d_texture_bind_and_dirtify(dst_volume->container, context, FALSE); +@@ -3464,68 +3461,21 @@ static HRESULT device_update_volume(struct wined3d_device *device, wined3d_volume_upload_data(dst_volume, context, &data); wined3d_resource_invalidate_location(&dst_volume->resource, ~WINED3D_LOCATION_TEXTURE_RGB); @@ -182,7 +182,7 @@ /* Update every surface level of the texture. */ switch (type) -@@ -3529,12 +3479,7 @@ HRESULT CDECL wined3d_device_update_texture(struct wined3d_device *device, +@@ -3539,12 +3489,7 @@ HRESULT CDECL wined3d_device_update_texture(struct wined3d_device *device, { src_surface = surface_from_resource(wined3d_texture_get_sub_resource(src_texture, i)); dst_surface = surface_from_resource(wined3d_texture_get_sub_resource(dst_texture, i)); @@ -196,7 +196,7 @@ } break; } -@@ -3548,12 +3493,7 @@ HRESULT CDECL wined3d_device_update_texture(struct wined3d_device *device, +@@ -3558,12 +3503,7 @@ HRESULT CDECL wined3d_device_update_texture(struct wined3d_device *device, { src_surface = surface_from_resource(wined3d_texture_get_sub_resource(src_texture, i)); dst_surface = surface_from_resource(wined3d_texture_get_sub_resource(dst_texture, i)); @@ -210,7 +210,7 @@ } break; } -@@ -3562,13 +3502,14 @@ HRESULT CDECL wined3d_device_update_texture(struct wined3d_device *device, +@@ -3572,13 +3512,14 @@ HRESULT CDECL wined3d_device_update_texture(struct wined3d_device *device, { for (i = 0; i < level_count; ++i) { @@ -227,7 +227,7 @@ } } break; -@@ -3576,9 +3517,54 @@ HRESULT CDECL wined3d_device_update_texture(struct wined3d_device *device, +@@ -3586,9 +3527,54 @@ HRESULT CDECL wined3d_device_update_texture(struct wined3d_device *device, default: FIXME("Unsupported texture type %#x.\n", type); @@ -284,10 +284,10 @@ } diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h -index 849f233..9c4cb9b 100644 +index f6da464..3f46b1c 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h -@@ -2095,6 +2095,8 @@ void device_resource_add(struct wined3d_device *device, struct wined3d_resource +@@ -2111,6 +2111,8 @@ void device_resource_add(struct wined3d_device *device, struct wined3d_resource void device_resource_released(struct wined3d_device *device, struct wined3d_resource *resource) DECLSPEC_HIDDEN; void device_invalidate_state(const struct wined3d_device *device, DWORD state) DECLSPEC_HIDDEN; void device_invalidate_shader_constants(const struct wined3d_device *device, DWORD mask) DECLSPEC_HIDDEN; @@ -296,7 +296,7 @@ static inline BOOL isStateDirty(const struct wined3d_context *context, DWORD state) { -@@ -2678,6 +2680,8 @@ void wined3d_cs_emit_update_surface(struct wined3d_cs *cs, struct wined3d_surfac +@@ -2698,6 +2700,8 @@ void wined3d_cs_emit_update_surface(struct wined3d_cs *cs, struct wined3d_surfac const RECT *src_rect, struct wined3d_surface *dst, const POINT *dst_point) DECLSPEC_HIDDEN; void wined3d_cs_emit_texture_preload(struct wined3d_cs *cs, struct wined3d_texture *texture) DECLSPEC_HIDDEN; void wined3d_cs_emit_surface_preload(struct wined3d_cs *cs, struct wined3d_surface *surface) DECLSPEC_HIDDEN; @@ -306,5 +306,5 @@ /* Direct3D terminology with little modifications. We do not have an issued state * because only the driver knows about it, but we have a created state because d3d -- -2.3.0 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0100-wined3d-Don-t-lock-the-src-volume-in-device_update_v.patch wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0100-wined3d-Don-t-lock-the-src-volume-in-device_update_v.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0100-wined3d-Don-t-lock-the-src-volume-in-device_update_v.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0100-wined3d-Don-t-lock-the-src-volume-in-device_update_v.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,4 +1,4 @@ -From 53122dd7633e0cd0d3c28240eec8f491c36e3da3 Mon Sep 17 00:00:00 2001 +From 18748f98ac34cb03bf13f9179ae7002393b3495e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Thu, 29 Aug 2013 22:25:14 +0200 Subject: wined3d: Don't lock the src volume in device_update_volume @@ -13,10 +13,10 @@ 1 file changed, 7 insertions(+), 24 deletions(-) diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c -index eb426ff..75a47a1 100644 +index 03202f7..0cfb10e 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c -@@ -3416,12 +3416,10 @@ void CDECL wined3d_device_draw_indexed_primitive_instanced(struct wined3d_device +@@ -3426,12 +3426,10 @@ void CDECL wined3d_device_draw_indexed_primitive_instanced(struct wined3d_device } /* This is a helper function for UpdateTexture, there is no UpdateVolume method in D3D. */ @@ -31,7 +31,7 @@ TRACE("src_volume %p, dst_volume %p.\n", src_volume, dst_volume); -@@ -3429,31 +3427,22 @@ static HRESULT device_update_volume(struct wined3d_context *context, +@@ -3439,31 +3437,22 @@ static HRESULT device_update_volume(struct wined3d_context *context, if (src_volume->resource.format != dst_volume->resource.format) { FIXME("Source and destination formats do not match.\n"); @@ -52,7 +52,7 @@ - /* Only a prepare, since we're uploading the entire volume. */ wined3d_texture_prepare_texture(dst_volume->container, context, FALSE); - wined3d_texture_bind(dst_volume->container, context, FALSE); + wined3d_texture_bind_and_dirtify(dst_volume->container, context, FALSE); - - data.buffer_object = 0; - data.addr = src.data; @@ -67,7 +67,7 @@ } /* Context activation is done by the caller */ -@@ -3502,15 +3491,9 @@ void device_exec_update_texture(struct wined3d_context *context, struct wined3d_ +@@ -3512,15 +3501,9 @@ void device_exec_update_texture(struct wined3d_context *context, struct wined3d_ { for (i = 0; i < level_count; ++i) { @@ -85,5 +85,5 @@ break; } -- -2.3.0 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0114-wined3d-Wrap-GL-BOs-in-a-structure.patch wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0114-wined3d-Wrap-GL-BOs-in-a-structure.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/0114-wined3d-Wrap-GL-BOs-in-a-structure.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/0114-wined3d-Wrap-GL-BOs-in-a-structure.patch 2015-04-18 23:54:01.000000000 +0000 @@ -1,4 +1,4 @@ -From 4f37cdd5e369a388229874ba94a0390e809f3aae Mon Sep 17 00:00:00 2001 +From e9a13b9c7f3776005db0f8f32a43241c6c66b5be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Fri, 30 Aug 2013 17:00:35 +0200 Subject: wined3d: Wrap GL BOs in a structure @@ -14,10 +14,10 @@ 5 files changed, 86 insertions(+), 28 deletions(-) diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c -index d051974..3aec1dd 100644 +index 18b1784..039ca85 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c -@@ -4981,3 +4981,56 @@ LRESULT device_process_message(struct wined3d_device *device, HWND window, BOOL +@@ -5052,3 +5052,56 @@ LRESULT device_process_message(struct wined3d_device *device, HWND window, BOOL else return CallWindowProcA(proc, window, message, wparam, lparam); } @@ -75,10 +75,10 @@ + wined3d_device_destroy_bo(device, context, bo); +} diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c -index 2dc25bf..8fb95a1 100644 +index 2530ee0..4496c9b 100644 --- a/dlls/wined3d/resource.c +++ b/dlls/wined3d/resource.c -@@ -145,12 +145,10 @@ HRESULT resource_init(struct wined3d_resource *resource, struct wined3d_device * +@@ -154,12 +154,10 @@ HRESULT resource_init(struct wined3d_resource *resource, struct wined3d_device * void wined3d_resource_free_bo(struct wined3d_resource *resource) { struct wined3d_context *context = context_acquire(resource->device, NULL); @@ -94,7 +94,7 @@ context_release(context); } -@@ -166,7 +164,7 @@ void resource_cleanup(struct wined3d_resource *resource) +@@ -175,7 +173,7 @@ void resource_cleanup(struct wined3d_resource *resource) adapter_adjust_memory(resource->device->adapter, (INT64)0 - resource->size); } @@ -103,7 +103,7 @@ wined3d_resource_free_bo(resource); wined3d_resource_free_sysmem(resource); -@@ -179,7 +177,7 @@ void resource_unload(struct wined3d_resource *resource) +@@ -188,7 +186,7 @@ void resource_unload(struct wined3d_resource *resource) if (resource->map_count) ERR("Resource %p is being unloaded while mapped.\n", resource); @@ -112,7 +112,7 @@ wined3d_resource_free_bo(resource); context_resource_unloaded(resource->device, -@@ -428,7 +426,7 @@ void wined3d_resource_get_memory(const struct wined3d_resource *resource, +@@ -437,7 +435,7 @@ void wined3d_resource_get_memory(const struct wined3d_resource *resource, { if (location & WINED3D_LOCATION_BUFFER) { @@ -121,7 +121,7 @@ data->addr = NULL; return; } -@@ -537,7 +535,7 @@ BYTE *wined3d_resource_get_map_ptr(const struct wined3d_resource *resource, +@@ -546,7 +544,7 @@ BYTE *wined3d_resource_get_map_ptr(const struct wined3d_resource *resource, { case WINED3D_LOCATION_BUFFER: gl_info = context->gl_info; @@ -130,7 +130,7 @@ if (gl_info->supported[ARB_MAP_BUFFER_RANGE]) { -@@ -580,7 +578,7 @@ void wined3d_resource_release_map_ptr(const struct wined3d_resource *resource, +@@ -589,7 +587,7 @@ void wined3d_resource_release_map_ptr(const struct wined3d_resource *resource, { case WINED3D_LOCATION_BUFFER: gl_info = context->gl_info; @@ -139,7 +139,7 @@ GL_EXTCALL(glUnmapBuffer(GL_PIXEL_UNPACK_BUFFER)); GL_EXTCALL(glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0)); checkGLcall("Unmap GL buffer"); -@@ -598,20 +596,14 @@ void wined3d_resource_release_map_ptr(const struct wined3d_resource *resource, +@@ -607,20 +605,14 @@ void wined3d_resource_release_map_ptr(const struct wined3d_resource *resource, } /* Context activation is done by the caller. */ @@ -166,7 +166,7 @@ BOOL wined3d_resource_prepare_system_memory(struct wined3d_resource *resource) diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c -index 1392745..90fa582 100644 +index fc719e7..d1020df 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c @@ -48,7 +48,7 @@ static void surface_cleanup(struct wined3d_surface *surface) @@ -178,7 +178,7 @@ || surface->rb_resolved || !list_empty(&surface->renderbuffers)) { struct wined3d_renderbuffer_entry *entry, *entry2; -@@ -2669,7 +2669,7 @@ HRESULT CDECL wined3d_surface_getdc(struct wined3d_surface *surface, HDC *dc) +@@ -2591,7 +2591,7 @@ HRESULT CDECL wined3d_surface_getdc(struct wined3d_surface *surface, HDC *dc) } if (!(surface->resource.map_binding == WINED3D_LOCATION_USER_MEMORY || surface->container->flags & WINED3D_TEXTURE_PIN_SYSMEM @@ -187,7 +187,7 @@ surface->resource.map_binding = WINED3D_LOCATION_DIB; } -@@ -4034,7 +4034,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, +@@ -3897,7 +3897,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface, /* Don't use PBOs for converted surfaces. During PBO conversion we look at * WINED3D_TEXTURE_CONVERTED but it isn't set (yet) in all cases it is * getting called. */ @@ -197,19 +197,19 @@ TRACE("Removing the pbo attached to surface %p.\n", surface); diff --git a/dlls/wined3d/volume.c b/dlls/wined3d/volume.c -index 6b41ca1..28985a4 100644 +index 6fc23f3..f6d2e8f 100644 --- a/dlls/wined3d/volume.c +++ b/dlls/wined3d/volume.c -@@ -216,7 +216,7 @@ static void wined3d_volume_load_location(struct wined3d_resource *resource, +@@ -218,7 +218,7 @@ static void wined3d_volume_load_location(struct wined3d_resource *resource, } else if (volume->resource.locations & WINED3D_LOCATION_BUFFER) { - struct wined3d_const_bo_address data = {volume->resource.buffer_object, NULL}; + struct wined3d_const_bo_address data = {volume->resource.buffer->name, NULL}; + wined3d_texture_bind_and_dirtify(volume->container, context, + location == WINED3D_LOCATION_TEXTURE_SRGB); wined3d_volume_upload_data(volume, context, &data); - } - else if (volume->resource.locations & WINED3D_LOCATION_TEXTURE_RGB) -@@ -265,12 +265,12 @@ static void wined3d_volume_load_location(struct wined3d_resource *resource, +@@ -269,12 +269,12 @@ static void wined3d_volume_load_location(struct wined3d_resource *resource, break; case WINED3D_LOCATION_BUFFER: @@ -225,10 +225,10 @@ if (volume->resource.locations & WINED3D_LOCATION_TEXTURE_RGB) wined3d_texture_bind_and_dirtify(volume->container, context, FALSE); diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h -index 4a99939..ff64215 100644 +index b23757b..2f85556 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h -@@ -1971,6 +1971,14 @@ struct wined3d_state +@@ -2007,6 +2007,14 @@ struct wined3d_state DWORD render_states[WINEHIGHEST_RENDER_STATE + 1]; }; @@ -243,7 +243,7 @@ #define WINED3D_UNMAPPED_STAGE ~0U /* Multithreaded flag. Removed from the public header to signal that -@@ -2076,6 +2084,11 @@ void device_invalidate_state(const struct wined3d_device *device, DWORD state) D +@@ -2113,6 +2121,11 @@ void device_invalidate_state(const struct wined3d_device *device, DWORD state) D void device_invalidate_shader_constants(const struct wined3d_device *device, DWORD mask) DECLSPEC_HIDDEN; void device_exec_update_texture(struct wined3d_context *context, struct wined3d_texture *src_texture, struct wined3d_texture *dst_texture) DECLSPEC_HIDDEN; @@ -255,7 +255,7 @@ static inline BOOL isStateDirty(const struct wined3d_context *context, DWORD state) { -@@ -2126,7 +2139,7 @@ struct wined3d_resource +@@ -2156,7 +2169,7 @@ struct wined3d_resource DWORD priority; void *heap_memory, *user_memory, *bitmap_data; UINT custom_row_pitch, custom_slice_pitch; @@ -265,5 +265,5 @@ DWORD locations; LONG access_fence; -- -2.2.1 +2.3.5 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/9999-IfDefined.patch wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/9999-IfDefined.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-CSMT_Main/9999-IfDefined.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-CSMT_Main/9999-IfDefined.patch 2015-04-18 23:54:01.000000000 +0000 @@ -406,7 +406,7 @@ float scale; union -@@ -4323,9 +4354,15 @@ +@@ -4303,9 +4334,15 @@ } } } else { @@ -422,7 +422,7 @@ WARN("unsupported blending in openGl\n"); } } -@@ -4677,7 +4714,11 @@ +@@ -4657,7 +4694,11 @@ static void viewport_miscpart(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { @@ -434,7 +434,7 @@ const struct wined3d_gl_info *gl_info = context->gl_info; struct wined3d_viewport vp = state->viewport; -@@ -4855,7 +4896,11 @@ +@@ -4835,7 +4876,11 @@ } else { @@ -446,7 +446,7 @@ UINT height; UINT width; -@@ -4919,7 +4964,11 @@ +@@ -4899,7 +4944,11 @@ void state_srgbwrite(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { @@ -476,7 +476,7 @@ diff --git a/dlls/wined3d/volume.c b/dlls/wined3d/volume.c --- a/dlls/wined3d/volume.c +++ b/dlls/wined3d/volume.c -@@ -97,6 +97,22 @@ +@@ -99,6 +99,22 @@ HeapFree(GetProcessHeap(), 0, converted_mem); } @@ -499,7 +499,7 @@ /* Context activation is done by the caller. */ static void wined3d_volume_download_data(struct wined3d_volume *volume, const struct wined3d_context *context, const struct wined3d_bo_address *data) -@@ -132,8 +148,33 @@ +@@ -134,8 +150,33 @@ static void wined3d_volume_evict_sysmem(struct wined3d_volume *volume) { wined3d_resource_free_sysmem(&volume->resource); @@ -533,7 +533,7 @@ } /* Context activation is done by the caller. */ -@@ -175,6 +216,7 @@ +@@ -177,6 +218,7 @@ return TRUE; } @@ -541,7 +541,7 @@ /* Context activation is done by the caller. */ static void wined3d_volume_load_location(struct wined3d_resource *resource, -@@ -185,6 +227,22 @@ +@@ -187,6 +229,22 @@ TRACE("Volume %p, loading %s, have %s.\n", volume, wined3d_debug_location(location), wined3d_debug_location(volume->resource.locations)); @@ -564,7 +564,7 @@ if ((volume->resource.access_flags & required_access) != required_access) { -@@ -203,6 +261,7 @@ +@@ -205,6 +263,7 @@ && !(volume->container->flags & WINED3D_TEXTURE_SRGB_ALLOCATED))) ERR("Trying to load (s)RGB texture without prior allocation.\n"); @@ -572,7 +572,7 @@ if (volume->resource.locations & WINED3D_LOCATION_DISCARDED) { TRACE("Volume previously discarded, nothing to do.\n"); -@@ -232,6 +291,37 @@ +@@ -238,6 +297,41 @@ return; } wined3d_resource_validate_location(&volume->resource, location); @@ -585,11 +585,15 @@ + else if (volume->locations & WINED3D_LOCATION_SYSMEM) + { + struct wined3d_const_bo_address data = {0, volume->resource.heap_memory}; ++ wined3d_texture_bind_and_dirtify(volume->container, context, ++ location == WINED3D_LOCATION_TEXTURE_SRGB); + wined3d_volume_upload_data(volume, context, &data); + } + else if (volume->locations & WINED3D_LOCATION_BUFFER) + { + struct wined3d_const_bo_address data = {volume->pbo, NULL}; ++ wined3d_texture_bind_and_dirtify(volume->container, context, ++ location == WINED3D_LOCATION_TEXTURE_SRGB); + wined3d_volume_upload_data(volume, context, &data); + } + else if (volume->locations & WINED3D_LOCATION_TEXTURE_RGB) @@ -610,7 +614,7 @@ if (wined3d_volume_can_evict(volume)) wined3d_volume_evict_sysmem(volume); -@@ -242,11 +332,24 @@ +@@ -248,11 +342,24 @@ if (!volume->resource.heap_memory) ERR("Trying to load WINED3D_LOCATION_SYSMEM without setting it up first.\n"); @@ -635,7 +639,7 @@ wined3d_texture_bind_and_dirtify(volume->container, context, FALSE); else wined3d_texture_bind_and_dirtify(volume->container, context, TRUE); -@@ -257,6 +360,7 @@ +@@ -263,6 +370,7 @@ else { FIXME("Implement WINED3D_LOCATION_SYSMEM loading from %s.\n", @@ -643,7 +647,7 @@ wined3d_debug_location(volume->resource.locations)); return; } -@@ -272,6 +376,28 @@ +@@ -278,6 +386,28 @@ struct wined3d_bo_address data = {volume->resource.buffer->name, NULL}; if (volume->resource.locations & WINED3D_LOCATION_TEXTURE_RGB) @@ -672,7 +676,7 @@ wined3d_texture_bind_and_dirtify(volume->container, context, FALSE); else wined3d_texture_bind_and_dirtify(volume->container, context, TRUE); -@@ -281,6 +407,7 @@ +@@ -287,6 +417,7 @@ else { FIXME("Implement WINED3D_LOCATION_BUFFER loading from %s.\n", @@ -680,7 +684,7 @@ wined3d_debug_location(volume->resource.locations)); return; } -@@ -290,6 +417,17 @@ +@@ -296,6 +427,17 @@ default: FIXME("Implement %s loading from %s.\n", wined3d_debug_location(location), wined3d_debug_location(volume->resource.locations)); @@ -698,7 +702,7 @@ } } -@@ -297,6 +435,7 @@ +@@ -303,6 +445,7 @@ void wined3d_volume_load(struct wined3d_volume *volume, struct wined3d_context *context, BOOL srgb_mode) { wined3d_texture_prepare_texture(volume->container, context, srgb_mode); @@ -706,7 +710,7 @@ wined3d_resource_load_location(&volume->resource, context, srgb_mode ? WINED3D_LOCATION_TEXTURE_SRGB : WINED3D_LOCATION_TEXTURE_RGB); } -@@ -309,6 +448,51 @@ +@@ -315,6 +458,51 @@ resource_cleanup(&volume->resource); volume->resource.parent_ops->wined3d_object_destroyed(volume->resource.parent); wined3d_cs_emit_volume_cleanup(device->cs, volume); @@ -758,7 +762,7 @@ } static void volume_unload(struct wined3d_resource *resource) -@@ -322,6 +506,7 @@ +@@ -328,6 +516,7 @@ TRACE("texture %p.\n", resource); @@ -766,7 +770,7 @@ if (wined3d_resource_prepare_system_memory(&volume->resource)) { context = context_acquire(device, NULL); -@@ -334,6 +519,29 @@ +@@ -340,6 +529,29 @@ ERR("Out of memory when unloading volume %p.\n", volume); wined3d_resource_validate_location(&volume->resource, WINED3D_LOCATION_DISCARDED); wined3d_resource_invalidate_location(&volume->resource, ~WINED3D_LOCATION_DISCARDED); @@ -796,7 +800,7 @@ } /* The texture name is managed by the container. */ -@@ -349,11 +557,13 @@ +@@ -355,11 +567,13 @@ return wined3d_texture_incref(volume->container); } @@ -810,7 +814,7 @@ ULONG CDECL wined3d_volume_decref(struct wined3d_volume *volume) { TRACE("Forwarding to container %p.\n", volume->container); -@@ -380,6 +590,36 @@ +@@ -386,6 +600,36 @@ return &volume->resource; } @@ -847,7 +851,7 @@ static BOOL wined3d_volume_check_box_dimensions(const struct wined3d_volume *volume, const struct wined3d_box *box) { -@@ -405,6 +645,7 @@ +@@ -411,6 +655,7 @@ HRESULT CDECL wined3d_volume_map(struct wined3d_volume *volume, struct wined3d_map_desc *map_desc, const struct wined3d_box *box, DWORD flags) { @@ -855,7 +859,7 @@ HRESULT hr; const struct wined3d_format *format = volume->resource.format; -@@ -432,6 +673,147 @@ +@@ -438,6 +683,147 @@ return hr; return hr; @@ -1003,7 +1007,7 @@ } struct wined3d_volume * CDECL wined3d_volume_from_resource(struct wined3d_resource *resource) -@@ -441,6 +823,7 @@ +@@ -447,6 +833,7 @@ HRESULT CDECL wined3d_volume_unmap(struct wined3d_volume *volume) { @@ -1011,7 +1015,7 @@ HRESULT hr; if (volume->resource.unmap_dirtify) -@@ -450,6 +833,33 @@ +@@ -456,6 +843,33 @@ if (hr == WINEDDERR_NOTLOCKED) return WINED3DERR_INVALIDCALL; return hr; @@ -1045,7 +1049,7 @@ } static ULONG volume_resource_incref(struct wined3d_resource *resource) -@@ -462,6 +872,7 @@ +@@ -468,6 +882,7 @@ return wined3d_volume_decref(volume_from_resource(resource)); } @@ -1053,7 +1057,7 @@ static void wined3d_volume_location_invalidated(struct wined3d_resource *resource, DWORD location) { struct wined3d_volume *volume = volume_from_resource(resource); -@@ -477,6 +888,13 @@ +@@ -483,6 +898,13 @@ volume_unload, wined3d_volume_location_invalidated, wined3d_volume_load_location, @@ -1067,7 +1071,7 @@ }; static HRESULT volume_init(struct wined3d_volume *volume, struct wined3d_texture *container, -@@ -513,7 +931,11 @@ +@@ -519,7 +941,11 @@ } volume->texture_level = level; @@ -1079,7 +1083,7 @@ if (desc->pool == WINED3D_POOL_DEFAULT && desc->usage & WINED3DUSAGE_DYNAMIC && gl_info->supported[ARB_PIXEL_BUFFER_OBJECT] -@@ -521,7 +943,9 @@ +@@ -527,7 +953,9 @@ { wined3d_resource_free_sysmem(&volume->resource); volume->resource.map_binding = WINED3D_LOCATION_BUFFER; @@ -1092,7 +1096,7 @@ diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c --- a/dlls/wined3d/utils.c +++ b/dlls/wined3d/utils.c -@@ -3190,7 +3190,11 @@ +@@ -3192,7 +3192,11 @@ float y_offset = context->render_offscreen ? (center_offset - (2.0f * y) - h) / h : (center_offset - (2.0f * y) - h) / -h; @@ -1104,7 +1108,7 @@ state->render_states[WINED3D_RS_ZENABLE] : WINED3D_ZB_FALSE; float z_scale = zenable ? 2.0f : 0.0f; float z_offset = zenable ? -1.0f : 0.0f; -@@ -3313,6 +3317,7 @@ +@@ -3315,6 +3319,7 @@ /* case WINED3D_TTFF_COUNT1: Won't ever get here. */ case WINED3D_TTFF_COUNT2: mat._13 = mat._23 = mat._33 = mat._43 = 0.0f; @@ -1112,7 +1116,7 @@ /* OpenGL divides the first 3 vertex coord by the 4th by default, * which is essentially the same as D3DTTFF_PROJECTED. Make sure that * the 4th coord evaluates to 1.0 to eliminate that. -@@ -3325,6 +3330,20 @@ +@@ -3327,6 +3332,20 @@ * A more serious problem occurs if the app passes 4 coordinates in, and the * 4th is != 1.0(opengl default). This would have to be fixed in draw_strided_slow * or a replacement shader. */ @@ -1133,7 +1137,7 @@ default: mat._14 = mat._24 = mat._34 = 0.0f; mat._44 = 1.0f; } -@@ -3620,7 +3639,11 @@ +@@ -3686,7 +3705,11 @@ unsigned int i; DWORD ttff; DWORD cop, aop, carg0, carg1, carg2, aarg0, aarg1, aarg2; @@ -1204,7 +1208,7 @@ shader_arb_ps_local_constants(compiled, context, state, rt_height); } -@@ -7770,7 +7778,11 @@ +@@ -7884,7 +7892,11 @@ /* Now load the surface */ if (wined3d_settings.offscreen_rendering_mode != ORM_FBO @@ -1216,7 +1220,7 @@ == WINED3D_LOCATION_DRAWABLE && !wined3d_resource_is_offscreen(&src_surface->container->resource)) { -@@ -7800,6 +7812,7 @@ +@@ -7914,6 +7926,7 @@ /* Leave the opengl state valid for blitting */ arbfp_blit_unset(context->gl_info); @@ -1224,7 +1228,7 @@ if (wined3d_settings.cs_multithreaded) context->gl_info->gl_ops.gl.p_glFinish(); else if (wined3d_settings.strict_draw_ordering -@@ -7811,6 +7824,17 @@ +@@ -7925,6 +7938,17 @@ wined3d_resource_validate_location(&dst_surface->resource, dst_surface->container->resource.draw_binding); wined3d_resource_invalidate_location(&dst_surface->resource, ~dst_surface->container->resource.draw_binding); @@ -1239,9 +1243,9 @@ + surface_validate_location(dst_surface, dst_surface->container->resource.draw_binding); + surface_invalidate_location(dst_surface, ~dst_surface->container->resource.draw_binding); +#endif /* STAGING_CSMT */ - - return WINED3D_OK; } + + static HRESULT arbfp_blit_color_fill(struct wined3d_device *device, struct wined3d_surface *dst_surface, diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c --- a/dlls/wined3d/view.c +++ b/dlls/wined3d/view.c @@ -1751,7 +1755,7 @@ }; extern struct wined3d_settings wined3d_settings DECLSPEC_HIDDEN; -@@ -997,9 +1027,14 @@ +@@ -998,9 +1028,14 @@ WORD use_map; /* MAX_ATTRIBS, 16 */ }; @@ -1766,7 +1770,7 @@ DWORD get_flexible_vertex_size(DWORD d3dvtVertexType) DECLSPEC_HIDDEN; #define eps 1e-8f -@@ -1084,8 +1119,10 @@ +@@ -1088,8 +1123,10 @@ struct list entry; GLuint id; struct wined3d_context *context; @@ -1777,7 +1781,7 @@ }; union wined3d_gl_query_object -@@ -1121,6 +1158,7 @@ +@@ -1125,6 +1162,7 @@ struct list entry; GLuint id; struct wined3d_context *context; @@ -1785,7 +1789,7 @@ UINT64 timestamp; }; -@@ -1156,6 +1194,12 @@ +@@ -1160,6 +1198,12 @@ for (i = 0; i < min(dst->rt_size, src->rt_size); i++) dst->render_targets[i] = src->render_targets[i]; } @@ -1798,7 +1802,7 @@ struct wined3d_context { -@@ -1171,7 +1215,9 @@ +@@ -1175,7 +1219,9 @@ DWORD dirtyArray[STATE_HIGHEST + 1]; /* Won't get bigger than that, a state is never marked dirty 2 times */ DWORD numDirtyEntries; DWORD isStateDirty[STATE_HIGHEST / (sizeof(DWORD) * CHAR_BIT) + 1]; /* Bitmap to find out quickly if a state is dirty */ @@ -1808,7 +1812,7 @@ struct wined3d_swapchain *swapchain; struct wined3d_surface *current_rt; -@@ -1271,8 +1317,17 @@ +@@ -1275,8 +1321,17 @@ GLfloat fog_coord_value; GLfloat color[4], fogstart, fogend, fogcolor[4]; GLuint dummy_arbfp_prog; @@ -1826,7 +1830,7 @@ }; typedef void (*APPLYSTATEFUNC)(struct wined3d_context *ctx, const struct wined3d_state *state, DWORD state_id); -@@ -1402,8 +1457,12 @@ +@@ -1410,8 +1465,12 @@ void context_apply_blit_state(struct wined3d_context *context, const struct wined3d_device *device) DECLSPEC_HIDDEN; BOOL context_apply_clear_state(struct wined3d_context *context, const struct wined3d_device *device, UINT rt_count, const struct wined3d_fb_state *fb) DECLSPEC_HIDDEN; @@ -1839,7 +1843,7 @@ void context_apply_fbo_state_blit(struct wined3d_context *context, GLenum target, struct wined3d_surface *render_target, struct wined3d_surface *depth_stencil, DWORD location) DECLSPEC_HIDDEN; void context_active_texture(struct wined3d_context *context, const struct wined3d_gl_info *gl_info, -@@ -1952,7 +2011,11 @@ +@@ -1963,7 +2022,11 @@ struct wined3d_state { DWORD flags; @@ -1851,7 +1855,7 @@ struct wined3d_vertex_declaration *vertex_declaration; struct wined3d_stream_output stream_output[MAX_STREAM_OUT]; -@@ -1997,6 +2060,7 @@ +@@ -2008,6 +2071,7 @@ DWORD render_states[WINEHIGHEST_RENDER_STATE + 1]; }; @@ -1859,7 +1863,7 @@ struct wined3d_gl_bo { GLuint name; -@@ -2005,6 +2069,7 @@ +@@ -2016,6 +2080,7 @@ UINT size; }; @@ -1867,7 +1871,7 @@ #define WINED3D_UNMAPPED_STAGE ~0U /* Multithreaded flag. Removed from the public header to signal that -@@ -2060,11 +2125,23 @@ +@@ -2071,11 +2136,23 @@ struct wined3d_rendertarget_view *back_buffer_view; struct wined3d_swapchain **swapchains; UINT swapchain_count; @@ -1891,7 +1895,7 @@ /* For rendering to a texture using glCopyTexImage */ GLuint depth_blt_texture; -@@ -2075,6 +2152,9 @@ +@@ -2086,6 +2163,9 @@ UINT xScreenSpace; UINT yScreenSpace; UINT cursorWidth, cursorHeight; @@ -1901,7 +1905,7 @@ HCURSOR hardwareCursor; /* The Wine logo texture */ -@@ -2106,6 +2186,7 @@ +@@ -2117,6 +2197,7 @@ UINT message, WPARAM wparam, LPARAM lparam, WNDPROC proc) DECLSPEC_HIDDEN; void device_resource_add(struct wined3d_device *device, struct wined3d_resource *resource) DECLSPEC_HIDDEN; void device_resource_released(struct wined3d_device *device, struct wined3d_resource *resource) DECLSPEC_HIDDEN; @@ -1909,7 +1913,7 @@ void device_invalidate_state(const struct wined3d_device *device, DWORD state) DECLSPEC_HIDDEN; void device_invalidate_shader_constants(const struct wined3d_device *device, DWORD mask) DECLSPEC_HIDDEN; void device_exec_update_texture(struct wined3d_context *context, struct wined3d_texture *src_texture, -@@ -2117,6 +2198,11 @@ +@@ -2128,6 +2209,11 @@ void device_create_dummy_textures(struct wined3d_device *device, struct wined3d_context *context) DECLSPEC_HIDDEN; void device_delete_opengl_contexts_cs(struct wined3d_device *device, struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN; @@ -1921,7 +1925,7 @@ static inline BOOL isStateDirty(const struct wined3d_context *context, DWORD state) { -@@ -2140,9 +2226,11 @@ +@@ -2144,9 +2230,11 @@ ULONG (*resource_incref)(struct wined3d_resource *resource); ULONG (*resource_decref)(struct wined3d_resource *resource); void (*resource_unload)(struct wined3d_resource *resource); @@ -1933,7 +1937,7 @@ }; struct wined3d_resource -@@ -2165,6 +2253,7 @@ +@@ -2169,6 +2257,7 @@ UINT depth; UINT size; DWORD priority; @@ -1941,7 +1945,7 @@ void *heap_memory, *map_heap_memory, *user_memory, *bitmap_data; UINT custom_row_pitch, custom_slice_pitch; struct wined3d_gl_bo *buffer, *map_buffer; -@@ -2172,6 +2261,11 @@ +@@ -2176,6 +2265,11 @@ DWORD locations; LONG access_fence; BOOL unmap_dirtify; @@ -1953,7 +1957,7 @@ void *parent; const struct wined3d_parent_ops *parent_ops; -@@ -2196,6 +2290,7 @@ +@@ -2200,6 +2294,7 @@ void *parent, const struct wined3d_parent_ops *parent_ops, const struct wined3d_resource_ops *resource_ops) DECLSPEC_HIDDEN; void resource_unload(struct wined3d_resource *resource) DECLSPEC_HIDDEN; @@ -1961,7 +1965,7 @@ DWORD wined3d_resource_access_from_location(DWORD location) DECLSPEC_HIDDEN; BOOL wined3d_resource_allocate_sysmem(struct wined3d_resource *resource) DECLSPEC_HIDDEN; void wined3d_resource_changed(struct wined3d_resource *resource, -@@ -2242,6 +2337,15 @@ +@@ -2246,6 +2341,15 @@ { while(InterlockedCompareExchange(&resource->access_fence, 0, 0)); } @@ -1977,7 +1981,7 @@ /* Tests show that the start address of resources is 32 byte aligned */ #define RESOURCE_ALIGNMENT 16 -@@ -2319,7 +2423,9 @@ +@@ -2330,7 +2434,9 @@ void wined3d_texture_apply_sampler_desc(struct wined3d_texture *texture, const struct wined3d_sampler_desc *sampler_desc, const struct wined3d_gl_info *gl_info) DECLSPEC_HIDDEN; @@ -1987,7 +1991,7 @@ void wined3d_texture_bind(struct wined3d_texture *texture, struct wined3d_context *context, BOOL srgb) DECLSPEC_HIDDEN; void wined3d_texture_bind_and_dirtify(struct wined3d_texture *texture, -@@ -2353,9 +2459,16 @@ +@@ -2364,9 +2470,16 @@ struct wined3d_resource resource; struct wined3d_texture *container; @@ -2004,7 +2008,7 @@ }; static inline struct wined3d_volume *volume_from_resource(struct wined3d_resource *resource) -@@ -2363,6 +2476,7 @@ +@@ -2374,6 +2487,7 @@ return CONTAINING_RECORD(resource, struct wined3d_volume, resource); } @@ -2012,7 +2016,7 @@ HRESULT wined3d_volume_create(struct wined3d_texture *container, const struct wined3d_resource_desc *desc, unsigned int level, struct wined3d_volume **volume) DECLSPEC_HIDDEN; void wined3d_volume_destroy(struct wined3d_volume *volume) DECLSPEC_HIDDEN; -@@ -2375,6 +2489,23 @@ +@@ -2386,6 +2500,23 @@ struct wined3d_surface_dib { HBITMAP DIBsection; @@ -2036,7 +2040,7 @@ UINT bitmap_size; }; -@@ -2400,7 +2531,11 @@ +@@ -2411,7 +2542,11 @@ struct wined3d_surface_ops { HRESULT (*surface_private_setup)(struct wined3d_surface *surface); @@ -2048,7 +2052,7 @@ }; struct wined3d_surface -@@ -2408,12 +2543,25 @@ +@@ -2419,12 +2554,25 @@ struct wined3d_resource resource; const struct wined3d_surface_ops *surface_ops; struct wined3d_texture *container; @@ -2074,7 +2078,7 @@ GLuint rb_multisample; GLuint rb_resolved; GLenum texture_target; -@@ -2457,10 +2605,19 @@ +@@ -2468,10 +2616,19 @@ GLenum surface_get_gl_buffer(const struct wined3d_surface *surface) DECLSPEC_HIDDEN; void surface_get_drawable_size(const struct wined3d_surface *surface, const struct wined3d_context *context, unsigned int *width, unsigned int *height) DECLSPEC_HIDDEN; @@ -2094,7 +2098,7 @@ void surface_modify_ds_location(struct wined3d_surface *surface, DWORD location, UINT w, UINT h) DECLSPEC_HIDDEN; void surface_prepare_rb(struct wined3d_surface *surface, const struct wined3d_gl_info *gl_info, BOOL multisample) DECLSPEC_HIDDEN; -@@ -2472,6 +2629,7 @@ +@@ -2483,6 +2640,7 @@ const struct wined3d_gl_info *gl_info, void *mem, unsigned int pitch) DECLSPEC_HIDDEN; HRESULT surface_upload_from_surface(struct wined3d_surface *dst_surface, const POINT *dst_point, struct wined3d_surface *src_surface, const RECT *src_rect) DECLSPEC_HIDDEN; @@ -2102,7 +2106,7 @@ HRESULT wined3d_surface_create(struct wined3d_texture *container, const struct wined3d_resource_desc *desc, GLenum target, unsigned int level, unsigned int layer, DWORD flags, struct wined3d_surface **surface) DECLSPEC_HIDDEN; -@@ -2490,6 +2648,21 @@ +@@ -2501,6 +2659,21 @@ void draw_textured_quad(const struct wined3d_surface *src_surface, struct wined3d_context *context, const RECT *src_rect, const RECT *dst_rect, enum wined3d_texture_filter_type filter) DECLSPEC_HIDDEN; void surface_flip(struct wined3d_surface *front, struct wined3d_surface *back) DECLSPEC_HIDDEN; @@ -2124,7 +2128,7 @@ /* Surface flags: */ #define SFLAG_DIBSECTION 0x00000001 /* Has a DIB section attached for GetDC. */ -@@ -2537,8 +2710,10 @@ +@@ -2548,8 +2721,10 @@ BOOL half_float_conv_needed; }; @@ -2135,7 +2139,7 @@ struct wined3d_saved_states { DWORD transform[(HIGHEST_TRANSFORMSTATE >> 5) + 1]; -@@ -2606,6 +2781,7 @@ +@@ -2617,6 +2792,7 @@ void stateblock_init_contained_states(struct wined3d_stateblock *stateblock) DECLSPEC_HIDDEN; void state_cleanup(struct wined3d_state *state) DECLSPEC_HIDDEN; @@ -2143,7 +2147,7 @@ HRESULT state_init(struct wined3d_state *state, const struct wined3d_gl_info *gl_info, const struct wined3d_d3d_info *d3d_info, DWORD flags) DECLSPEC_HIDDEN; void state_unbind_resources(struct wined3d_state *state) DECLSPEC_HIDDEN; -@@ -2656,6 +2832,32 @@ +@@ -2667,6 +2843,32 @@ void wined3d_cs_destroy(struct wined3d_cs *cs) DECLSPEC_HIDDEN; void wined3d_cs_switch_onscreen_ds(struct wined3d_cs *cs, struct wined3d_context *context, struct wined3d_surface *depth_stencil) DECLSPEC_HIDDEN; @@ -2176,7 +2180,7 @@ void wined3d_cs_emit_clear(struct wined3d_cs *cs, DWORD rect_count, const RECT *rects, DWORD flags, const struct wined3d_color *color, float depth, DWORD stencil) DECLSPEC_HIDDEN; -@@ -2703,6 +2905,7 @@ +@@ -2716,6 +2918,7 @@ void wined3d_cs_emit_set_vertex_declaration(struct wined3d_cs *cs, struct wined3d_vertex_declaration *declaration) DECLSPEC_HIDDEN; void wined3d_cs_emit_set_viewport(struct wined3d_cs *cs, const struct wined3d_viewport *viewport) DECLSPEC_HIDDEN; @@ -2184,7 +2188,7 @@ void wined3d_cs_emit_set_consts_f(struct wined3d_cs *cs, UINT start_register, const float *constants, UINT vector4f_count, enum wined3d_shader_type type) DECLSPEC_HIDDEN; void wined3d_cs_emit_set_consts_b(struct wined3d_cs *cs, UINT start_register, -@@ -2762,6 +2965,7 @@ +@@ -2775,6 +2978,7 @@ struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN; void wined3d_cs_emit_getdc(struct wined3d_cs *cs, struct wined3d_surface *surface) DECLSPEC_HIDDEN; void wined3d_cs_emit_releasedc(struct wined3d_cs *cs, struct wined3d_surface *surface) DECLSPEC_HIDDEN; @@ -2192,7 +2196,7 @@ /* Direct3D terminology with little modifications. We do not have an issued state * because only the driver knows about it, but we have a created state because d3d -@@ -2776,8 +2980,12 @@ +@@ -2789,8 +2993,12 @@ struct wined3d_query_ops { HRESULT (*query_get_data)(struct wined3d_query *query, void *data, DWORD data_size, DWORD flags); @@ -2205,7 +2209,7 @@ }; struct wined3d_query -@@ -2791,12 +2999,16 @@ +@@ -2804,12 +3012,16 @@ enum wined3d_query_type type; DWORD data_size; void *extendedData; @@ -2222,7 +2226,7 @@ /* TODO: Add tests and support for FLOAT16_4 POSITIONT, D3DCOLOR position, other * fixed function semantics as D3DCOLOR or FLOAT16 */ -@@ -2823,7 +3035,9 @@ +@@ -2836,7 +3048,9 @@ GLenum buffer_object_usage; GLenum buffer_type_hint; DWORD flags; @@ -2232,7 +2236,7 @@ void *map_ptr; struct wined3d_map_range *maps; -@@ -2848,11 +3062,15 @@ +@@ -2861,11 +3075,15 @@ BYTE *buffer_get_sysmem(struct wined3d_buffer *This, struct wined3d_context *context) DECLSPEC_HIDDEN; void buffer_internal_preload(struct wined3d_buffer *buffer, struct wined3d_context *context, const struct wined3d_state *state) DECLSPEC_HIDDEN; @@ -2248,7 +2252,7 @@ struct wined3d_rendertarget_view { -@@ -2890,8 +3108,10 @@ +@@ -2903,8 +3121,10 @@ return surface_from_resource(resource); } @@ -2259,7 +2263,7 @@ struct wined3d_shader_resource_view { LONG refcount; -@@ -2904,8 +3124,12 @@ +@@ -2917,8 +3137,12 @@ struct wined3d_swapchain_ops { void (*swapchain_present)(struct wined3d_swapchain *swapchain, const RECT *src_rect, @@ -2272,7 +2276,7 @@ }; struct wined3d_swapchain -@@ -2945,8 +3169,10 @@ +@@ -2958,8 +3182,10 @@ HDC swapchain_get_backup_dc(struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN; void swapchain_update_draw_bindings(struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN; void swapchain_update_render_to_fbo(struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN; @@ -2283,7 +2287,7 @@ /***************************************************************************** * Utility function prototypes -@@ -3157,7 +3383,9 @@ +@@ -3174,7 +3400,9 @@ void shader_generate_main(const struct wined3d_shader *shader, struct wined3d_shader_buffer *buffer, const struct wined3d_shader_reg_maps *reg_maps, const DWORD *byte_code, void *backend_ctx) DECLSPEC_HIDDEN; BOOL shader_match_semantic(const char *semantic_name, enum wined3d_decl_usage usage) DECLSPEC_HIDDEN; @@ -3797,7 +3801,7 @@ + + /* Only a prepare, since we're uploading the entire volume. */ + wined3d_texture_prepare_texture(dst_volume->container, context, FALSE); -+ wined3d_texture_bind(dst_volume->container, context, FALSE); ++ wined3d_texture_bind_and_dirtify(dst_volume->container, context, FALSE); + + data.buffer_object = 0; + data.addr = src.data; @@ -4289,7 +4293,7 @@ return WINED3D_OK; } -@@ -4235,8 +4877,10 @@ +@@ -4236,8 +4878,10 @@ unsigned int i; TRACE("device %p, swapchain_desc %p, mode %p, callback %p.\n", device, swapchain_desc, mode, callback); @@ -4300,7 +4304,7 @@ if (!(swapchain = wined3d_device_get_swapchain(device, 0))) { -@@ -4252,9 +4896,21 @@ +@@ -4253,9 +4897,21 @@ wined3d_texture_decref(device->logo_texture); device->logo_texture = NULL; } @@ -4322,7 +4326,7 @@ { for (i = 0; i < device->adapter->gl_info.limits.buffers; ++i) { -@@ -4263,6 +4919,7 @@ +@@ -4264,6 +4920,7 @@ } wined3d_device_set_depth_stencil_view(device, NULL); @@ -4330,7 +4334,7 @@ if (reset_state) { state_unbind_resources(&device->state); -@@ -4272,6 +4929,12 @@ +@@ -4273,6 +4930,12 @@ { wined3d_surface_decref(device->cs->onscreen_depth_stencil); device->cs->onscreen_depth_stencil = NULL; @@ -4343,7 +4347,7 @@ } if (reset_state) -@@ -4284,6 +4947,7 @@ +@@ -4285,6 +4948,7 @@ } } @@ -4351,7 +4355,7 @@ /* Free implicit resources and wait for the command stream before modifying * swapchain parameters. After modifying the swapchain parameters a new GL * context may be acquired by the worker thread. This causes problems in the -@@ -4305,6 +4969,7 @@ +@@ -4306,6 +4970,7 @@ } device->cs->ops->finish(device->cs); @@ -4359,7 +4363,7 @@ /* Is it necessary to recreate the gl context? Actually every setting can be changed * on an existing gl context, so there's no real need for recreation. * -@@ -4440,6 +5105,13 @@ +@@ -4447,6 +5112,13 @@ } } @@ -4373,7 +4377,7 @@ if (swapchain->desc.enable_auto_depth_stencil) { struct wined3d_resource_desc surface_desc; -@@ -4477,6 +5149,13 @@ +@@ -4484,6 +5156,13 @@ wined3d_device_set_depth_stencil_view(device, device->auto_depth_stencil_view); } @@ -4387,7 +4391,7 @@ if (swapchain->desc.backbuffer_count && FAILED(hr = wined3d_rendertarget_view_create_from_surface( surface_from_resource(wined3d_texture_get_sub_resource(swapchain->back_buffers[0], 0)), NULL, &wined3d_null_parent_ops, &device->back_buffer_view))) -@@ -4559,12 +5238,20 @@ +@@ -4566,12 +5245,20 @@ } wined3d_cs_emit_reset_state(device->cs); state_cleanup(&device->state); @@ -4408,7 +4412,7 @@ &device->adapter->d3d_info, WINED3D_STATE_INIT_DEFAULT))) ERR("Failed to initialize device state, hr %#x.\n", hr); device->update_state = &device->state; -@@ -4573,6 +5260,7 @@ +@@ -4580,6 +5267,7 @@ } else if (device->back_buffer_view) { @@ -4416,7 +4420,7 @@ struct wined3d_state *state = &device->state; wined3d_device_set_rendertarget_view(device, 0, device->back_buffer_view, FALSE); -@@ -4588,6 +5276,24 @@ +@@ -4595,6 +5283,24 @@ state->scissor_rect.left = 0; state->scissor_rect.right = swapchain->desc.backbuffer_width; state->scissor_rect.bottom = swapchain->desc.backbuffer_height; @@ -4441,7 +4445,7 @@ wined3d_cs_emit_set_scissor_rect(device->cs, &state->scissor_rect); } -@@ -4666,6 +5372,10 @@ +@@ -4673,6 +5379,10 @@ TRACE("device %p, resource %p, type %s.\n", device, resource, debug_d3dresourcetype(type)); @@ -4452,7 +4456,7 @@ switch (type) { case WINED3D_RTYPE_SURFACE: -@@ -4676,6 +5386,7 @@ +@@ -4683,6 +5393,7 @@ for (i = 0; i < device->adapter->gl_info.limits.buffers; ++i) { @@ -4460,7 +4464,7 @@ if (wined3d_rendertarget_view_get_surface(device->state.fb.render_targets[i]) == surface) { ERR("Surface %p is still in use as render target %u.\n", surface, i); -@@ -4687,6 +5398,19 @@ +@@ -4694,6 +5405,19 @@ { ERR("Surface %p is still in use as depth/stencil buffer.\n", surface); device->state.fb.depth_stencil = NULL; @@ -4480,7 +4484,7 @@ } } break; -@@ -4849,7 +5573,11 @@ +@@ -4856,7 +5580,11 @@ device->blitter = adapter->blitter; @@ -4492,7 +4496,7 @@ &adapter->d3d_info, WINED3D_STATE_INIT_DEFAULT))) { ERR("Failed to initialize device state, hr %#x.\n", hr); -@@ -4948,6 +5676,7 @@ +@@ -4955,6 +5683,7 @@ else return CallWindowProcA(proc, window, message, wparam, lparam); } @@ -4500,7 +4504,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, -@@ -5001,3 +5730,4 @@ +@@ -5008,3 +5737,4 @@ wined3d_device_destroy_bo(device, context, bo); } @@ -4508,7 +4512,7 @@ diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c -@@ -1070,8 +1070,15 @@ +@@ -1085,8 +1085,15 @@ const struct wined3d_shader_reg_maps *reg_maps, const struct shader_glsl_ctx_priv *ctx_priv) { const struct wined3d_shader_version *version = ®_maps->shader_version; @@ -4524,7 +4528,7 @@ unsigned int i, extra_constants_needed = 0; const struct wined3d_shader_lconst *lconst; const char *prefix; -@@ -1312,7 +1319,11 @@ +@@ -1327,7 +1334,11 @@ { UINT in_count = min(vec4_varyings(version->major, gl_info), shader->limits->packed_input); @@ -4536,7 +4540,7 @@ shader_addline(buffer, "varying vec4 %s_link[%u];\n", prefix, in_count); shader_addline(buffer, "vec4 %s_in[%u];\n", prefix, in_count); } -@@ -1353,6 +1364,7 @@ +@@ -1368,6 +1379,7 @@ } else { @@ -4544,7 +4548,7 @@ /* This happens because we do not have proper tracking of the * constant registers that are actually used, only the max * limit of the shader version. -@@ -1361,6 +1373,23 @@ +@@ -1376,6 +1388,23 @@ * it and just create the uniform. */ FIXME("Cannot find a free uniform for vpos correction params\n"); @@ -4590,15 +4594,15 @@ WINED3D_CS_OP_PRESENT, WINED3D_CS_OP_CLEAR, WINED3D_CS_OP_DRAW, -@@ -52,6 +59,7 @@ - WINED3D_CS_OP_SET_CLIP_PLANE, +@@ -53,6 +60,7 @@ + WINED3D_CS_OP_SET_COLOR_KEY, WINED3D_CS_OP_SET_MATERIAL, WINED3D_CS_OP_RESET_STATE, +#if defined(STAGING_CSMT) WINED3D_CS_OP_SET_VS_CONSTS_F, WINED3D_CS_OP_SET_VS_CONSTS_B, WINED3D_CS_OP_SET_VS_CONSTS_I, -@@ -130,6 +138,30 @@ +@@ -131,6 +139,30 @@ float depth; DWORD stencil; RECT rects[1]; @@ -4629,7 +4633,7 @@ }; struct wined3d_cs_draw -@@ -152,6 +184,7 @@ +@@ -153,6 +185,7 @@ struct wined3d_cs_set_viewport { enum wined3d_cs_op opcode; @@ -4637,7 +4641,7 @@ struct wined3d_viewport viewport; }; -@@ -159,6 +192,15 @@ +@@ -160,6 +193,15 @@ { enum wined3d_cs_op opcode; RECT rect; @@ -4653,7 +4657,7 @@ }; struct wined3d_cs_set_rendertarget_view -@@ -277,6 +319,7 @@ +@@ -287,6 +329,7 @@ { enum wined3d_cs_op opcode; enum wined3d_transform_state state; @@ -4661,7 +4665,7 @@ struct wined3d_matrix matrix; }; -@@ -291,6 +334,22 @@ +@@ -301,6 +344,22 @@ { enum wined3d_cs_op opcode; struct wined3d_material material; @@ -4684,7 +4688,7 @@ }; struct wined3d_cs_reset_state -@@ -298,6 +357,7 @@ +@@ -308,6 +367,7 @@ enum wined3d_cs_op opcode; }; @@ -4692,7 +4696,7 @@ struct wined3d_cs_set_consts_f { enum wined3d_cs_op opcode; -@@ -2652,192 +2712,867 @@ +@@ -2760,190 +2820,961 @@ /* WINED3D_CS_OP_NOP */ wined3d_cs_exec_nop, /* WINED3D_CS_OP_SKIP */ wined3d_cs_exec_skip, /* WINED3D_CS_OP_FENCE */ wined3d_cs_exec_fence, @@ -4719,6 +4723,7 @@ - /* WINED3D_CS_OP_SET_SAMPLER_STATE */ wined3d_cs_exec_set_sampler_state, - /* WINED3D_CS_OP_SET_TRANSFORM */ wined3d_cs_exec_set_transform, - /* WINED3D_CS_OP_SET_CLIP_PLANE */ wined3d_cs_exec_set_clip_plane, +- /* WINED3D_CS_OP_SET_COLOR_KEY */ wined3d_cs_exec_set_color_key, - /* WINED3D_CS_OP_SET_MATERIAL */ wined3d_cs_exec_set_material, - /* WINED3D_CS_OP_RESET_STATE */ wined3d_cs_exec_reset_state, - /* WINED3D_CS_OP_SET_VS_CONSTS_F */ wined3d_cs_exec_set_vs_consts_f, @@ -4970,9 +4975,8 @@ + op->viewport = viewport; + + cs->ops->submit(cs); - } - --static const struct wined3d_cs_ops wined3d_cs_mt_ops = ++} ++ +static void wined3d_cs_exec_set_scissor_rect(struct wined3d_cs *cs, const void *data) +{ + const struct wined3d_cs_set_scissor_rect *op = data; @@ -5239,6 +5243,7 @@ + const struct wined3d_d3d_info *d3d_info = &cs->device->adapter->d3d_info; + const struct wined3d_cs_set_texture *op = data; + struct wined3d_texture *prev; ++ BOOL old_use_color_key = FALSE, new_use_color_key = FALSE; + + prev = cs->state.textures[op->stage]; + cs->state.textures[op->stage] = op->texture; @@ -5264,6 +5269,9 @@ + device_invalidate_state(cs->device, STATE_TEXTURESTAGE(op->stage, WINED3D_TSS_COLOR_OP)); + device_invalidate_state(cs->device, STATE_TEXTURESTAGE(op->stage, WINED3D_TSS_ALPHA_OP)); + } ++ ++ if (!op->stage && op->texture->async.color_key_flags & WINED3D_CKEY_SRC_BLT) ++ new_use_color_key = TRUE; + } + + if (prev) @@ -5291,9 +5299,18 @@ + device_invalidate_state(cs->device, STATE_TEXTURESTAGE(op->stage, WINED3D_TSS_COLOR_OP)); + device_invalidate_state(cs->device, STATE_TEXTURESTAGE(op->stage, WINED3D_TSS_ALPHA_OP)); + } ++ ++ if (!op->stage && prev->async.color_key_flags & WINED3D_CKEY_SRC_BLT) ++ old_use_color_key = TRUE; + } + + device_invalidate_state(cs->device, STATE_SAMPLER(op->stage)); ++ ++ if (new_use_color_key != old_use_color_key) ++ device_invalidate_state(cs->device, STATE_RENDER(WINED3D_RS_COLORKEYENABLE)); ++ ++ if (new_use_color_key) ++ device_invalidate_state(cs->device, STATE_COLOR_KEY); +} + +void wined3d_cs_emit_set_texture(struct wined3d_cs *cs, UINT stage, struct wined3d_texture *texture) @@ -5479,6 +5496,89 @@ + cs->ops->submit(cs); +} + ++static void wined3d_cs_exec_set_color_key(struct wined3d_cs *cs, const void *data) ++{ ++ const struct wined3d_cs_set_color_key *op = data; ++ struct wined3d_texture *texture = op->texture; ++ ++ if (op->set) ++ { ++ switch (op->flags & ~WINED3D_CKEY_COLORSPACE) ++ { ++ case WINED3D_CKEY_DST_BLT: ++ texture->async.dst_blt_color_key = op->color_key; ++ texture->async.color_key_flags |= WINED3D_CKEY_DST_BLT; ++ break; ++ ++ case WINED3D_CKEY_DST_OVERLAY: ++ texture->async.dst_overlay_color_key = op->color_key; ++ texture->async.color_key_flags |= WINED3D_CKEY_DST_OVERLAY; ++ break; ++ ++ case WINED3D_CKEY_SRC_BLT: ++ if (texture == cs->state.textures[0]) ++ { ++ device_invalidate_state(cs->device, STATE_COLOR_KEY); ++ if (!(texture->async.color_key_flags & WINED3D_CKEY_SRC_BLT)) ++ device_invalidate_state(cs->device, STATE_RENDER(WINED3D_RS_COLORKEYENABLE)); ++ } ++ ++ texture->async.src_blt_color_key = op->color_key; ++ texture->async.color_key_flags |= WINED3D_CKEY_SRC_BLT; ++ break; ++ ++ case WINED3D_CKEY_SRC_OVERLAY: ++ texture->async.src_overlay_color_key = op->color_key; ++ texture->async.color_key_flags |= WINED3D_CKEY_SRC_OVERLAY; ++ break; ++ } ++ } ++ else ++ { ++ switch (op->flags & ~WINED3D_CKEY_COLORSPACE) ++ { ++ case WINED3D_CKEY_DST_BLT: ++ texture->async.color_key_flags &= ~WINED3D_CKEY_DST_BLT; ++ break; ++ ++ case WINED3D_CKEY_DST_OVERLAY: ++ texture->async.color_key_flags &= ~WINED3D_CKEY_DST_OVERLAY; ++ break; ++ ++ case WINED3D_CKEY_SRC_BLT: ++ if (texture == cs->state.textures[0] && texture->async.color_key_flags & WINED3D_CKEY_SRC_BLT) ++ device_invalidate_state(cs->device, STATE_RENDER(WINED3D_RS_COLORKEYENABLE)); ++ ++ texture->async.color_key_flags &= ~WINED3D_CKEY_SRC_BLT; ++ break; ++ ++ case WINED3D_CKEY_SRC_OVERLAY: ++ texture->async.color_key_flags &= ~WINED3D_CKEY_SRC_OVERLAY; ++ break; ++ } ++ } ++} ++ ++void wined3d_cs_emit_set_color_key(struct wined3d_cs *cs, struct wined3d_texture *texture, ++ WORD flags, const struct wined3d_color_key *color_key) ++{ ++ struct wined3d_cs_set_color_key *op; ++ ++ op = cs->ops->require_space(cs, sizeof(*op)); ++ op->opcode = WINED3D_CS_OP_SET_COLOR_KEY; ++ op->texture = texture; ++ op->flags = flags; ++ if (color_key) ++ { ++ op->color_key = *color_key; ++ op->set = 1; ++ } ++ else ++ op->set = 0; ++ ++ cs->ops->submit(cs); ++} ++ +static void wined3d_cs_exec_set_material(struct wined3d_cs *cs, const void *data) +{ + const struct wined3d_cs_set_material *op = data; @@ -5546,6 +5646,7 @@ + /* WINED3D_CS_OP_SET_SAMPLER_STATE */ wined3d_cs_exec_set_sampler_state, + /* WINED3D_CS_OP_SET_TRANSFORM */ wined3d_cs_exec_set_transform, + /* WINED3D_CS_OP_SET_CLIP_PLANE */ wined3d_cs_exec_set_clip_plane, ++ /* WINED3D_CS_OP_SET_COLOR_KEY */ wined3d_cs_exec_set_color_key, + /* WINED3D_CS_OP_SET_MATERIAL */ wined3d_cs_exec_set_material, + /* WINED3D_CS_OP_RESET_STATE */ wined3d_cs_exec_reset_state, +#if defined(STAGING_CSMT) @@ -5707,13 +5808,10 @@ + /* A busy wait should be fine, we're not supposed to have to wait very + * long. */ + while (!InterlockedCompareExchange(&fence, TRUE, TRUE)); -+} -+ -+static const struct wined3d_cs_ops wined3d_cs_mt_ops = - { - wined3d_cs_mt_require_space, - wined3d_cs_mt_require_space_prio, -@@ -3062,5 +3797,80 @@ + } + + static const struct wined3d_cs_ops wined3d_cs_mt_ops = +@@ -3171,5 +4002,80 @@ ERR("Closing event failed.\n"); } @@ -5861,7 +5959,7 @@ } return refcount; -@@ -498,8 +519,15 @@ +@@ -506,8 +527,15 @@ void CDECL wined3d_texture_preload(struct wined3d_texture *texture) { @@ -5877,7 +5975,7 @@ } void * CDECL wined3d_texture_get_parent(const struct wined3d_texture *texture) -@@ -528,6 +556,7 @@ +@@ -536,6 +564,7 @@ if (texture->lod != lod) { @@ -5885,7 +5983,7 @@ if (wined3d_settings.cs_multithreaded) { struct wined3d_device *device = texture->resource.device; -@@ -535,6 +564,7 @@ +@@ -543,6 +572,7 @@ device->cs->ops->finish(device->cs); } @@ -5893,22 +5991,23 @@ texture->lod = lod; texture->texture_rgb.base_level = ~0u; -@@ -594,12 +624,14 @@ +@@ -612,6 +642,7 @@ return WINED3DERR_INVALIDCALL; } +#if defined(STAGING_CSMT) + /* if (wined3d_settings.cs_multithreaded) { - FIXME("waiting for cs\n"); - texture->resource.device->cs->ops->finish(texture->resource.device->cs); +@@ -620,6 +651,7 @@ } + */ +#endif /* STAGING_CSMT */ - if (color_key) - { - switch (flags & ~WINED3D_CKEY_COLORSPACE) -@@ -700,10 +732,14 @@ + wined3d_cs_emit_set_color_key(device->cs, texture, flags, color_key); + + return WINED3D_OK; +@@ -675,10 +707,14 @@ } if (device->d3d_initialized) @@ -5923,7 +6022,7 @@ texture->resource.format = format; texture->resource.multisample_type = multisample_type; -@@ -811,6 +847,7 @@ +@@ -792,6 +828,7 @@ static void texture2d_sub_resource_load(struct wined3d_resource *sub_resource, struct wined3d_context *context, BOOL srgb) { @@ -5931,7 +6030,7 @@ surface_load(surface_from_resource(sub_resource), context, srgb); } -@@ -825,6 +862,19 @@ +@@ -806,6 +843,19 @@ wined3d_resource_load_location(&surface->resource, context, surface->resource.map_binding); context_release(context); wined3d_resource_invalidate_location(&surface->resource, ~surface->resource.map_binding); @@ -5951,7 +6050,7 @@ } static void texture2d_sub_resource_cleanup(struct wined3d_resource *sub_resource) -@@ -836,12 +886,25 @@ +@@ -817,12 +867,25 @@ static void texture2d_sub_resource_invalidate_location(struct wined3d_resource *sub_resource, DWORD location) { @@ -5977,7 +6076,7 @@ } static void texture2d_sub_resource_upload_data(struct wined3d_resource *sub_resource, -@@ -920,6 +983,7 @@ +@@ -901,6 +964,7 @@ if (gl_info->supported[APPLE_CLIENT_STORAGE]) { @@ -5985,7 +6084,7 @@ if (surface->flags & (SFLAG_NONPOW2) || texture->flags & WINED3D_TEXTURE_CONVERTED) { -@@ -928,12 +992,26 @@ +@@ -909,12 +973,26 @@ * WINED3D_TEXTURE_CONVERTED: The conversion destination memory is freed after loading the surface * heap_memory == NULL: Not defined in the extension. Seems to disable client storage effectively */ @@ -6012,7 +6111,7 @@ surface->flags |= SFLAG_CLIENT; mem = surface->resource.heap_memory; -@@ -1003,6 +1081,7 @@ +@@ -984,6 +1062,7 @@ wined3d_texture_unload_gl_texture(texture); } @@ -6020,7 +6119,7 @@ static void wined3d_texture_load_location_invalidated(struct wined3d_resource *resource, DWORD location) { ERR("Should not be called on textures.\n"); -@@ -1022,6 +1101,13 @@ +@@ -1003,6 +1082,13 @@ wined3d_texture_unload, wined3d_texture_load_location_invalidated, wined3d_texture_load_location, @@ -6034,7 +6133,7 @@ }; static HRESULT cubetexture_init(struct wined3d_texture *texture, const struct wined3d_resource_desc *desc, -@@ -1038,6 +1124,7 @@ +@@ -1019,6 +1105,7 @@ if (WINED3DFMT_UNKNOWN >= desc->format) { WARN("(%p) : Texture cannot be created with a format of WINED3DFMT_UNKNOWN.\n", texture); @@ -6042,7 +6141,7 @@ HeapFree(GetProcessHeap(), 0, texture); return WINED3DERR_INVALIDCALL; } -@@ -1046,6 +1133,14 @@ +@@ -1027,6 +1114,14 @@ { WARN("(%p) : Tried to create not supported cube texture.\n", texture); HeapFree(GetProcessHeap(), 0, texture); @@ -6057,7 +6156,7 @@ return WINED3DERR_INVALIDCALL; } -@@ -1055,6 +1150,7 @@ +@@ -1036,6 +1131,7 @@ if (!gl_info->supported[SGIS_GENERATE_MIPMAP]) { WARN("No mipmap generation support, returning D3DERR_INVALIDCALL.\n"); @@ -6065,7 +6164,7 @@ HeapFree(GetProcessHeap(), 0, texture); return WINED3DERR_INVALIDCALL; } -@@ -1063,6 +1159,14 @@ +@@ -1044,6 +1140,14 @@ { WARN("WINED3DUSAGE_AUTOGENMIPMAP is set, and level count != 1, returning D3DERR_INVALIDCALL.\n"); HeapFree(GetProcessHeap(), 0, texture); @@ -6080,7 +6179,7 @@ return WINED3DERR_INVALIDCALL; } } -@@ -1083,7 +1187,9 @@ +@@ -1064,7 +1168,9 @@ else { WARN("Attempted to create a NPOT cube texture (edge length %u) without GL support.\n", desc->width); @@ -6090,7 +6189,7 @@ return WINED3DERR_INVALIDCALL; } } -@@ -1093,7 +1199,9 @@ +@@ -1074,7 +1180,9 @@ surface_flags, device, parent, parent_ops, &texture_resource_ops))) { WARN("Failed to initialize texture, returning %#x\n", hr); @@ -6100,7 +6199,7 @@ return hr; } -@@ -1156,7 +1264,9 @@ +@@ -1137,7 +1245,9 @@ if (WINED3DFMT_UNKNOWN >= desc->format) { WARN("(%p) : Texture cannot be created with a format of WINED3DFMT_UNKNOWN.\n", texture); @@ -6110,7 +6209,7 @@ return WINED3DERR_INVALIDCALL; } -@@ -1187,7 +1297,9 @@ +@@ -1168,7 +1278,9 @@ else { WARN("Attempted to create a mipmapped NPOT texture without unconditional NPOT support.\n"); @@ -6120,7 +6219,7 @@ return WINED3DERR_INVALIDCALL; } } -@@ -1200,6 +1312,7 @@ +@@ -1181,6 +1293,7 @@ if (!gl_info->supported[SGIS_GENERATE_MIPMAP]) { WARN("No mipmap generation support, returning WINED3DERR_INVALIDCALL.\n"); @@ -6128,7 +6227,7 @@ HeapFree(GetProcessHeap(), 0, texture); return WINED3DERR_INVALIDCALL; } -@@ -1208,6 +1321,14 @@ +@@ -1189,6 +1302,14 @@ { WARN("WINED3DUSAGE_AUTOGENMIPMAP is set, and level count != 1, returning WINED3DERR_INVALIDCALL.\n"); HeapFree(GetProcessHeap(), 0, texture); @@ -6143,7 +6242,7 @@ return WINED3DERR_INVALIDCALL; } } -@@ -1216,7 +1337,9 @@ +@@ -1197,7 +1318,9 @@ surface_flags, device, parent, parent_ops, &texture_resource_ops))) { WARN("Failed to initialize texture, returning %#x.\n", hr); @@ -6153,7 +6252,7 @@ return hr; } -@@ -1308,12 +1431,25 @@ +@@ -1289,12 +1412,25 @@ static void texture3d_sub_resource_invalidate_location(struct wined3d_resource *sub_resource, DWORD location) { @@ -6179,7 +6278,7 @@ } static void texture3d_sub_resource_upload_data(struct wined3d_resource *sub_resource, -@@ -1348,7 +1484,11 @@ +@@ -1329,7 +1465,11 @@ void *mem = NULL; if (gl_info->supported[APPLE_CLIENT_STORAGE] && !format->convert @@ -6191,7 +6290,7 @@ { TRACE("Enabling GL_UNPACK_CLIENT_STORAGE_APPLE for volume %p\n", volume); gl_info->gl_ops.gl.p_glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, GL_TRUE); -@@ -1395,6 +1535,7 @@ +@@ -1376,6 +1516,7 @@ if (WINED3DFMT_UNKNOWN >= desc->format) { WARN("(%p) : Texture cannot be created with a format of WINED3DFMT_UNKNOWN.\n", texture); @@ -6199,7 +6298,7 @@ HeapFree(GetProcessHeap(), 0, texture); return WINED3DERR_INVALIDCALL; } -@@ -1403,6 +1544,14 @@ +@@ -1384,6 +1525,14 @@ { WARN("(%p) : Texture cannot be created - no volume texture support.\n", texture); HeapFree(GetProcessHeap(), 0, texture); @@ -6214,7 +6313,7 @@ return WINED3DERR_INVALIDCALL; } -@@ -1412,6 +1561,7 @@ +@@ -1393,6 +1542,7 @@ if (!gl_info->supported[SGIS_GENERATE_MIPMAP]) { WARN("No mipmap generation support, returning D3DERR_INVALIDCALL.\n"); @@ -6222,7 +6321,7 @@ HeapFree(GetProcessHeap(), 0, texture); return WINED3DERR_INVALIDCALL; } -@@ -1420,6 +1570,14 @@ +@@ -1401,6 +1551,14 @@ { WARN("WINED3DUSAGE_AUTOGENMIPMAP is set, and level count != 1, returning D3DERR_INVALIDCALL.\n"); HeapFree(GetProcessHeap(), 0, texture); @@ -6237,7 +6336,7 @@ return WINED3DERR_INVALIDCALL; } } -@@ -1447,7 +1605,9 @@ +@@ -1428,7 +1586,9 @@ { WARN("Attempted to create a NPOT volume texture (%u, %u, %u) without GL support.\n", desc->width, desc->height, desc->depth); @@ -6247,7 +6346,7 @@ return WINED3DERR_INVALIDCALL; } } -@@ -1457,7 +1617,9 @@ +@@ -1438,7 +1598,9 @@ 0, device, parent, parent_ops, &texture_resource_ops))) { WARN("Failed to initialize texture, returning %#x.\n", hr); @@ -6257,7 +6356,7 @@ return hr; } -@@ -1534,6 +1696,9 @@ +@@ -1515,6 +1677,9 @@ if (FAILED(hr)) { WARN("Failed to initialize texture, returning %#x.\n", hr); @@ -6702,7 +6801,7 @@ } static BOOL fbo_blit_supported(const struct wined3d_gl_info *gl_info, enum wined3d_blit_op blit_op, -@@ -1021,6 +1289,18 @@ +@@ -965,6 +1233,18 @@ return wined3d_surface_blt(surface, NULL, render_target, NULL, 0, NULL, WINED3D_TEXF_POINT); } @@ -6721,7 +6820,7 @@ static ULONG surface_resource_incref(struct wined3d_resource *resource) { return wined3d_surface_incref(surface_from_resource(resource)); -@@ -1041,6 +1321,7 @@ +@@ -985,6 +1265,7 @@ TRACE("surface %p.\n", surface); @@ -6729,7 +6828,7 @@ context = context_acquire(device, NULL); gl_info = context->gl_info; -@@ -1052,6 +1333,23 @@ +@@ -996,6 +1277,23 @@ * opengl resources, so we cannot leave early. */ wined3d_resource_validate_location(&surface->resource, WINED3D_LOCATION_DISCARDED); wined3d_resource_invalidate_location(&surface->resource, ~WINED3D_LOCATION_DISCARDED); @@ -6753,7 +6852,7 @@ /* We also get here when the ddraw swapchain is destroyed, for example * for a mode switch. In this case this surface won't necessarily be -@@ -1061,10 +1359,24 @@ +@@ -1005,10 +1303,24 @@ } else { @@ -6778,7 +6877,7 @@ /* Destroy fbo render buffers. This is needed for implicit render targets, for * all application-created targets the application has to release the surface -@@ -1095,6 +1407,7 @@ +@@ -1039,6 +1351,7 @@ resource_unload(resource); } @@ -6786,7 +6885,7 @@ static void wined3d_surface_location_invalidated(struct wined3d_resource *resource, DWORD location) { struct wined3d_surface *surface = surface_from_resource(resource); -@@ -1110,6 +1423,19 @@ +@@ -1054,6 +1367,19 @@ { surface_private_setup, surface_frontbuffer_updated, @@ -6806,7 +6905,7 @@ }; /***************************************************************************** -@@ -1153,6 +1479,7 @@ +@@ -1097,6 +1423,7 @@ return WINED3D_OK; } @@ -6814,7 +6913,7 @@ static void gdi_surface_frontbuffer_updated(struct wined3d_surface *surface) { x11_copy_to_screen(surface->container->swapchain, &surface->lockedRect); -@@ -1162,6 +1489,23 @@ +@@ -1106,6 +1433,23 @@ { gdi_surface_private_setup, gdi_surface_frontbuffer_updated, @@ -6838,7 +6937,7 @@ }; /* This call just downloads data, the caller is responsible for binding the -@@ -1180,7 +1524,11 @@ +@@ -1124,7 +1468,11 @@ return; } @@ -6850,7 +6949,7 @@ if (format->flags & WINED3DFMT_FLAG_COMPRESSED) { -@@ -1429,6 +1777,7 @@ +@@ -1373,6 +1721,7 @@ } } @@ -6858,7 +6957,7 @@ BOOL surface_check_block_align(struct wined3d_surface *surface, const RECT *rect) { struct wined3d_box box; -@@ -1443,6 +1792,27 @@ +@@ -1387,6 +1736,27 @@ box.bottom = rect->bottom; box.back = 1; return wined3d_resource_check_block_align(&surface->resource, &box); @@ -6886,7 +6985,7 @@ } HRESULT surface_upload_from_surface(struct wined3d_surface *dst_surface, const POINT *dst_point, -@@ -1525,11 +1895,17 @@ +@@ -1469,11 +1839,17 @@ return WINED3DERR_INVALIDCALL; } @@ -6904,25 +7003,25 @@ context = context_acquire(dst_surface->resource.device, NULL); gl_info = context->gl_info; -@@ -1540,10 +1916,17 @@ +@@ -1484,10 +1860,17 @@ if (update_w == dst_w && update_h == dst_h) wined3d_texture_prepare_texture(dst_surface->container, context, FALSE); else +#if defined(STAGING_CSMT) wined3d_resource_load_location(&dst_surface->resource, context, WINED3D_LOCATION_TEXTURE_RGB); - wined3d_texture_bind(dst_surface->container, context, FALSE); + wined3d_texture_bind_and_dirtify(dst_surface->container, context, FALSE); wined3d_resource_get_memory(&src_surface->resource, src_surface->resource.locations, &data); +#else /* STAGING_CSMT */ + surface_load_location(dst_surface, WINED3D_LOCATION_TEXTURE_RGB); -+ wined3d_texture_bind(dst_surface->container, context, FALSE); ++ wined3d_texture_bind_and_dirtify(dst_surface->container, context, FALSE); + + surface_get_memory(src_surface, &data, src_surface->locations); +#endif /* STAGING_CSMT */ wined3d_resource_get_pitch(&src_surface->resource, &src_row_pitch, &src_slice_pitch); wined3d_surface_upload_data(dst_surface, gl_info, src_format, src_rect, -@@ -1553,8 +1936,13 @@ +@@ -1495,8 +1878,13 @@ context_release(context); @@ -6936,7 +7035,7 @@ return WINED3D_OK; } -@@ -1658,8 +2046,12 @@ +@@ -1600,8 +1988,12 @@ return GL_BACK; } @@ -6949,7 +7048,7 @@ { DWORD location = srgb ? WINED3D_LOCATION_TEXTURE_SRGB : WINED3D_LOCATION_TEXTURE_RGB; -@@ -1668,6 +2060,7 @@ +@@ -1610,6 +2002,7 @@ if (surface->resource.pool == WINED3D_POOL_SCRATCH) ERR("Not supported on scratch surfaces.\n"); @@ -6957,7 +7056,7 @@ if (surface->resource.locations & location) { TRACE("surface is already in texture\n"); -@@ -1676,6 +2069,16 @@ +@@ -1618,6 +2011,16 @@ TRACE("Reloading because surface is dirty.\n"); wined3d_resource_load_location(&surface->resource, context, location); @@ -6974,7 +7073,7 @@ surface_evict_sysmem(surface); } -@@ -1758,6 +2161,7 @@ +@@ -1700,6 +2103,7 @@ void CDECL wined3d_surface_preload(struct wined3d_surface *surface) { @@ -6982,7 +7081,7 @@ const struct wined3d_device *device = surface->resource.device; TRACE("surface %p.\n", surface); -@@ -1768,6 +2172,17 @@ +@@ -1710,6 +2114,17 @@ } wined3d_cs_emit_surface_preload(device->cs, surface); @@ -7000,7 +7099,7 @@ } void * CDECL wined3d_surface_get_parent(const struct wined3d_surface *surface) -@@ -1975,6 +2390,7 @@ +@@ -1917,6 +2332,7 @@ { DeleteDC(surface->hDC); DeleteObject(surface->dib.DIBsection); @@ -7008,7 +7107,7 @@ surface->resource.bitmap_data = NULL; surface->flags &= ~SFLAG_DIBSECTION; create_dib = TRUE; -@@ -1983,6 +2399,15 @@ +@@ -1925,6 +2341,15 @@ surface->resource.locations = 0; wined3d_resource_free_sysmem(&surface->resource); surface->resource.map_heap_memory = NULL; @@ -7024,7 +7123,7 @@ width = texture_resource->width; height = texture_resource->height; -@@ -2008,7 +2433,11 @@ +@@ -1950,7 +2375,11 @@ else surface->flags &= ~SFLAG_NONPOW2; @@ -7036,7 +7135,7 @@ { surface->resource.map_binding = WINED3D_LOCATION_USER_MEMORY; valid_location = WINED3D_LOCATION_USER_MEMORY; -@@ -2050,11 +2479,19 @@ +@@ -1992,11 +2421,19 @@ if (!valid_location) { @@ -7056,7 +7155,7 @@ return WINED3D_OK; } -@@ -2413,6 +2850,7 @@ +@@ -2355,6 +2792,7 @@ static struct wined3d_texture *surface_convert_format(struct wined3d_surface *source, enum wined3d_format_id to_fmt) { @@ -7064,7 +7163,7 @@ void *dst_data = NULL, *src_data = NULL; UINT src_row_pitch, src_slice_pitch, dst_row_pitch, dst_slice_pitch; const struct d3dfmt_converter_desc *conv; -@@ -2421,6 +2859,13 @@ +@@ -2363,6 +2801,13 @@ struct wined3d_surface *dst; struct wined3d_context *context = NULL; struct wined3d_device *device = source->resource.device; @@ -7078,7 +7177,7 @@ conv = find_converter(source->resource.format->id, to_fmt); if (!conv) -@@ -2444,6 +2889,7 @@ +@@ -2386,6 +2831,7 @@ } dst = surface_from_resource(wined3d_texture_get_sub_resource(ret, 0)); @@ -7086,7 +7185,7 @@ wined3d_resource_get_pitch(&source->resource, &src_row_pitch, &src_slice_pitch); wined3d_resource_get_pitch(&ret->resource, &dst_row_pitch, &dst_slice_pitch); -@@ -2484,6 +2930,32 @@ +@@ -2426,6 +2872,32 @@ if (context) context_release(context); return NULL; @@ -7119,7 +7218,7 @@ } static HRESULT _Blt_ColorFill(BYTE *buf, unsigned int width, unsigned int height, -@@ -2551,6 +3023,7 @@ +@@ -2493,6 +2965,7 @@ HRESULT CDECL wined3d_surface_unmap(struct wined3d_surface *surface) { @@ -7127,7 +7226,7 @@ HRESULT hr; TRACE("surface %p.\n", surface); -@@ -2568,6 +3041,39 @@ +@@ -2510,6 +2983,39 @@ { struct wined3d_box box; const struct wined3d_format *format = surface->resource.format; @@ -7167,7 +7266,7 @@ if ((format->flags & WINED3DFMT_FLAG_BLOCKS) && rect && !surface_check_block_align(surface, rect)) -@@ -2579,6 +3085,13 @@ +@@ -2521,6 +3027,13 @@ return WINED3DERR_INVALIDCALL; } @@ -7181,7 +7280,7 @@ /* Performance optimization: Count how often a surface is mapped, if it is * mapped regularly do not throw away the system memory copy. This avoids * the need to download the surface from OpenGL all the time. The surface -@@ -2594,6 +3107,7 @@ +@@ -2536,6 +3049,7 @@ } } @@ -7189,7 +7288,7 @@ if (rect) { surface->lockedRect = *rect; -@@ -2658,22 +3172,121 @@ +@@ -2600,22 +3114,121 @@ WARN("Cannot use GetDC on a %s surface.\n", debug_d3dformat(surface->resource.format->id)); return WINED3DERR_INVALIDCALL; } @@ -7324,7 +7423,7 @@ } void wined3d_surface_releasedc_cs(struct wined3d_surface *surface) -@@ -2699,6 +3312,35 @@ +@@ -2641,6 +3254,35 @@ if (context) context_release(context); } @@ -7360,7 +7459,7 @@ } HRESULT CDECL wined3d_surface_releasedc(struct wined3d_surface *surface, HDC dc) -@@ -2718,6 +3360,7 @@ +@@ -2660,6 +3302,7 @@ surface->resource.map_count--; surface->flags &= ~SFLAG_DCINUSE; @@ -7368,7 +7467,7 @@ wined3d_cs_emit_releasedc(surface->resource.device->cs, surface); return WINED3D_OK; -@@ -2730,6 +3373,31 @@ +@@ -2672,6 +3315,31 @@ const struct wined3d_gl_info *gl_info; struct wined3d_context *context; struct wined3d_surface *restore_rt; @@ -7400,7 +7499,7 @@ BYTE *mem; BYTE *row, *top, *bottom; int i; -@@ -2737,6 +3405,7 @@ +@@ -2679,6 +3347,7 @@ struct wined3d_bo_address data; UINT row_pitch, slice_pitch; @@ -7408,7 +7507,7 @@ wined3d_resource_get_memory(&surface->resource, dst_location, &data); /* Context_release does not restore the original context in case of -@@ -2754,6 +3423,11 @@ +@@ -2696,6 +3365,11 @@ context = context_acquire(device, surface); } @@ -7420,7 +7519,7 @@ context_apply_blit_state(context, device); gl_info = context->gl_info; -@@ -2842,12 +3516,16 @@ +@@ -2784,12 +3458,16 @@ checkGLcall("glBindBuffer"); } @@ -7437,7 +7536,7 @@ } /* Read the framebuffer contents into a texture. Note that this function -@@ -2909,6 +3587,85 @@ +@@ -2851,6 +3529,85 @@ } } @@ -7523,7 +7622,7 @@ /* Does a direct frame buffer -> texture copy. Stretching is done with single * pixel copy calls. */ static void fb_copy_to_texture_direct(struct wined3d_surface *dst_surface, struct wined3d_surface *src_surface, -@@ -3015,8 +3772,13 @@ +@@ -2957,8 +3714,13 @@ /* The texture is now most up to date - If the surface is a render target * and has a drawable, this path is never entered. */ @@ -7537,7 +7636,7 @@ } /* Uses the hardware to stretch and flip the image */ -@@ -3084,7 +3846,11 @@ +@@ -3026,7 +3788,11 @@ checkGLcall("glEnable(texture_target)"); /* For now invalidate the texture copy of the back buffer. Drawable and sysmem copy are untouched */ @@ -7549,7 +7648,7 @@ } /* Make sure that the top pixel is always above the bottom pixel, and keep a separate upside down flag -@@ -3281,6 +4047,7 @@ +@@ -3223,6 +3989,7 @@ checkGLcall("glDeleteTextures(1, &backup)"); } @@ -7557,7 +7656,7 @@ if (wined3d_settings.cs_multithreaded) gl_info->gl_ops.gl.p_glFinish(); else if (wined3d_settings.strict_draw_ordering) -@@ -3292,6 +4059,17 @@ +@@ -3234,6 +4001,17 @@ * and has a drawable, this path is never entered. */ wined3d_resource_validate_location(&dst_surface->resource, WINED3D_LOCATION_TEXTURE_RGB); wined3d_resource_invalidate_location(&dst_surface->resource, ~WINED3D_LOCATION_TEXTURE_RGB); @@ -7575,7 +7674,7 @@ } /* Front buffer coordinates are always full screen coordinates, but our GL -@@ -3322,6 +4100,7 @@ +@@ -3264,6 +4042,7 @@ rect->bottom = drawable_height - rect->bottom; } @@ -7583,7 +7682,7 @@ /* Context activation is done by the caller. */ static void surface_blt_to_drawable(const struct wined3d_device *device, struct wined3d_context *old_ctx, -@@ -3356,6 +4135,26 @@ +@@ -3298,6 +4077,26 @@ /* Make sure the surface is up-to-date. This should probably use * wined3d_resource_load_location() and worry about the destination * surface too, unless we're overwriting it completely. */ @@ -7610,7 +7709,7 @@ wined3d_texture_load(src_surface->container, context, FALSE); /* Activate the destination context, set it up for blitting */ -@@ -3398,6 +4197,7 @@ +@@ -3340,6 +4139,7 @@ /* Leave the opengl state valid for blitting */ device->blitter->unset_shader(context->gl_info); @@ -7618,7 +7717,7 @@ if (wined3d_settings.cs_multithreaded) gl_info->gl_ops.gl.p_glFinish(); else if (wined3d_settings.strict_draw_ordering -@@ -3411,6 +4211,14 @@ +@@ -3353,6 +4153,14 @@ context = context_acquire(device, restore_rt); context_release(context); } @@ -7633,60 +7732,21 @@ } HRESULT surface_color_fill(struct wined3d_surface *s, const RECT *rect, const struct wined3d_color *color) -@@ -3434,9 +4242,15 @@ +@@ -3376,8 +4184,13 @@ enum wined3d_texture_filter_type filter) { struct wined3d_device *device = dst_surface->resource.device; +#if defined(STAGING_CSMT) - const struct wined3d_gl_info *gl_info = &device->adapter->gl_info; struct wined3d_swapchain *src_swapchain, *dst_swapchain; const struct wined3d_surface *rt = wined3d_rendertarget_view_get_surface(device->state.fb.render_targets[0]); +#else /* STAGING_CSMT */ + const struct wined3d_surface *rt = wined3d_rendertarget_view_get_surface(device->fb.render_targets[0]); -+ const struct wined3d_gl_info *gl_info = &device->adapter->gl_info; + struct wined3d_swapchain *src_swapchain, *dst_swapchain; +#endif /* STAGING_CSMT */ TRACE("dst_surface %p, dst_rect %s, src_surface %p, src_rect %s, flags %#x, blt_fx %p, filter %s.\n", dst_surface, wine_dbgstr_rect(dst_rect), src_surface, wine_dbgstr_rect(src_rect), -@@ -3561,7 +4375,9 @@ - /* Blit from offscreen surface to render target */ - struct wined3d_color_key old_blt_key = src_surface->container->src_blt_color_key; - DWORD old_color_key_flags = src_surface->container->color_key_flags; -+#if defined(STAGING_CSMT) - struct wined3d_context *context; -+#endif /* STAGING_CSMT */ - - TRACE("Blt from surface %p to rendertarget %p\n", src_surface, dst_surface); - -@@ -3595,6 +4411,7 @@ - wined3d_texture_set_color_key(src_surface->container, WINED3D_CKEY_SRC_BLT, NULL); - } - -+#if defined(STAGING_CSMT) - context = context_acquire(device, dst_surface); - surface_blt_to_drawable(device, context, filter, - flags & (WINEDDBLT_KEYSRC | WINEDDBLT_KEYSRCOVERRIDE | WINEDDBLT_ALPHATEST), -@@ -3607,6 +4424,18 @@ - - wined3d_resource_validate_location(&dst_surface->resource, dst_surface->container->resource.draw_binding); - wined3d_resource_invalidate_location(&dst_surface->resource, ~dst_surface->container->resource.draw_binding); -+#else /* STAGING_CSMT */ -+ surface_blt_to_drawable(device, filter, -+ flags & (WINEDDBLT_KEYSRC | WINEDDBLT_KEYSRCOVERRIDE | WINEDDBLT_ALPHATEST), -+ src_surface, src_rect, dst_surface, dst_rect); -+ -+ /* Restore the color key parameters */ -+ wined3d_texture_set_color_key(src_surface->container, WINED3D_CKEY_SRC_BLT, -+ (old_color_key_flags & WINED3D_CKEY_SRC_BLT) ? &old_blt_key : NULL); -+ -+ surface_validate_location(dst_surface, dst_surface->container->resource.draw_binding); -+ surface_invalidate_location(dst_surface, ~dst_surface->container->resource.draw_binding); -+#endif /* STAGING_CSMT */ - - return WINED3D_OK; - } -@@ -3681,6 +4510,7 @@ +@@ -3568,6 +4381,7 @@ { TRACE("surface %p, new location %#x, w %u, h %u.\n", surface, location, w, h); @@ -7694,7 +7754,7 @@ if (((surface->resource.locations & WINED3D_LOCATION_TEXTURE_RGB) && !(location & WINED3D_LOCATION_TEXTURE_RGB)) || (!(surface->resource.locations & WINED3D_LOCATION_TEXTURE_RGB) && (location & WINED3D_LOCATION_TEXTURE_RGB))) -@@ -3689,6 +4519,15 @@ +@@ -3576,6 +4390,15 @@ surface->ds_current_size.cx = w; surface->ds_current_size.cy = h; surface->resource.locations = location; @@ -7710,7 +7770,7 @@ } /* Context activation is done by the caller. */ -@@ -3703,7 +4542,11 @@ +@@ -3590,7 +4413,11 @@ /* TODO: Make this work for modes other than FBO */ if (wined3d_settings.offscreen_rendering_mode != ORM_FBO) return; @@ -7722,7 +7782,7 @@ { w = surface->ds_current_size.cx; h = surface->ds_current_size.cy; -@@ -3729,7 +4572,11 @@ +@@ -3616,7 +4443,11 @@ return; } @@ -7734,7 +7794,7 @@ { TRACE("Surface was discarded, no need copy data.\n"); switch (location) -@@ -3746,6 +4593,7 @@ +@@ -3633,6 +4464,7 @@ default: FIXME("Unhandled location %#x\n", location); } @@ -7742,7 +7802,7 @@ surface->resource.locations &= ~WINED3D_LOCATION_DISCARDED; surface->resource.locations |= location; surface->ds_current_size.cx = surface->resource.width; -@@ -3757,6 +4605,19 @@ +@@ -3644,6 +4476,19 @@ { FIXME("No up to date depth stencil location.\n"); surface->resource.locations |= location; @@ -7762,7 +7822,7 @@ surface->ds_current_size.cx = surface->resource.width; surface->ds_current_size.cy = surface->resource.height; return; -@@ -3821,9 +4682,13 @@ +@@ -3708,9 +4553,13 @@ context_invalidate_state(context, STATE_FRAMEBUFFER); @@ -7776,7 +7836,7 @@ gl_info->gl_ops.gl.p_glFlush(); /* Flush to ensure ordering across contexts. */ } else if (location == WINED3D_LOCATION_DRAWABLE) -@@ -3839,9 +4704,13 @@ +@@ -3726,9 +4575,13 @@ context_invalidate_state(context, STATE_FRAMEBUFFER); @@ -7790,7 +7850,7 @@ gl_info->gl_ops.gl.p_glFlush(); /* Flush to ensure ordering across contexts. */ } else -@@ -3849,6 +4718,7 @@ +@@ -3736,6 +4589,7 @@ ERR("Invalid location (%#x) specified.\n", location); } @@ -7798,7 +7858,7 @@ surface->resource.locations |= location; surface->ds_current_size.cx = surface->resource.width; surface->ds_current_size.cy = surface->resource.height; -@@ -3894,6 +4764,135 @@ +@@ -3781,6 +4635,135 @@ TRACE("Surface was discarded, nothing to do.\n"); return WINED3D_OK; } @@ -7934,7 +7994,7 @@ if (wined3d_settings.offscreen_rendering_mode == ORM_FBO && wined3d_resource_is_offscreen(&surface->container->resource)) -@@ -3903,6 +4902,7 @@ +@@ -3790,6 +4773,7 @@ } surface_get_rect(surface, NULL, &r); @@ -7942,7 +8002,7 @@ wined3d_resource_load_location(&surface->resource, context, WINED3D_LOCATION_TEXTURE_RGB); surface_blt_to_drawable(surface->resource.device, context, WINED3D_TEXF_POINT, FALSE, surface, &r, surface, &r); -@@ -3971,6 +4971,66 @@ +@@ -3858,6 +4842,66 @@ RECT rect = {0, 0, surface->resource.width, surface->resource.height}; surface_blt_fbo(device, context, WINED3D_TEXF_POINT, surface, src_location, @@ -8009,7 +8069,7 @@ &rect, surface, dst_location, &rect); return WINED3D_OK; -@@ -3980,6 +5040,7 @@ +@@ -3867,6 +4911,7 @@ if (srgb) { @@ -8017,7 +8077,7 @@ if ((surface->resource.locations & (WINED3D_LOCATION_TEXTURE_RGB | surface->resource.map_binding)) == WINED3D_LOCATION_TEXTURE_RGB) { -@@ -4008,6 +5069,39 @@ +@@ -3895,6 +4940,39 @@ wined3d_resource_prepare_system_memory(&surface->resource); wined3d_resource_load_location(&surface->resource, context, WINED3D_LOCATION_SYSMEM); } @@ -8057,7 +8117,7 @@ wined3d_texture_prepare_texture(texture, context, srgb); wined3d_texture_bind_and_dirtify(texture, context, srgb); -@@ -4022,7 +5116,11 @@ +@@ -3909,7 +4987,11 @@ /* Don't use PBOs for converted surfaces. During PBO conversion we look at * WINED3D_TEXTURE_CONVERTED but it isn't set (yet) in all cases it is * getting called. */ @@ -8069,7 +8129,7 @@ { TRACE("Removing the pbo attached to surface %p.\n", surface); -@@ -4031,6 +5129,7 @@ +@@ -3918,6 +5000,7 @@ else surface->resource.map_binding = WINED3D_LOCATION_SYSMEM; @@ -8077,7 +8137,7 @@ wined3d_resource_prepare_map_memory(&surface->resource, context); wined3d_resource_load_location(&surface->resource, context, surface->resource.map_binding); wined3d_resource_free_bo(&surface->resource); -@@ -4038,6 +5137,14 @@ +@@ -3925,6 +5008,14 @@ } wined3d_resource_get_memory(&surface->resource, surface->resource.locations, &data); @@ -8092,7 +8152,7 @@ if (format.convert) { /* This code is entered for texture formats which need a fixup. */ -@@ -4083,6 +5190,7 @@ +@@ -3970,6 +5061,7 @@ wined3d_surface_upload_data(surface, gl_info, &format, &src_rect, src_row_pitch, &dst_point, srgb, wined3d_const_bo_address(&data)); @@ -8100,7 +8160,7 @@ HeapFree(GetProcessHeap(), 0, mem); return WINED3D_OK; -@@ -4106,6 +5214,31 @@ +@@ -3993,6 +5085,31 @@ struct wined3d_context *context, DWORD location) { struct wined3d_surface *surface = surface_from_resource(resource); @@ -8132,7 +8192,7 @@ HRESULT hr; TRACE("surface %p, location %s.\n", surface, wined3d_debug_location(location)); -@@ -4113,6 +5246,7 @@ +@@ -4000,6 +5117,7 @@ if (surface->resource.usage & WINED3DUSAGE_DEPTHSTENCIL) { if (location == WINED3D_LOCATION_TEXTURE_RGB @@ -8140,12 +8200,16 @@ && surface->resource.locations & (WINED3D_LOCATION_DRAWABLE | WINED3D_LOCATION_DISCARDED)) { surface_load_ds_location(surface, context, location); -@@ -4127,16 +5261,58 @@ - else +@@ -4009,21 +5127,63 @@ + && surface->container->resource.draw_binding != WINED3D_LOCATION_DRAWABLE) { - FIXME("Unimplemented copy from %s to %s for depth/stencil buffers.\n", -- wined3d_debug_location(surface->resource.locations), wined3d_debug_location(location)); + /* Already up to date, nothing to do. */ - return; ++ return; ++ } ++ else ++ { ++ FIXME("Unimplemented copy from %s to %s for depth/stencil buffers.\n", + wined3d_debug_location(surface->resource.locations), wined3d_debug_location(location)); + return; + } @@ -8169,10 +8233,12 @@ + { + /* Already up to date, nothing to do. */ + return WINED3D_OK; -+ } -+ else -+ { -+ FIXME("Unimplemented copy from %s to %s for depth/stencil buffers.\n", + } + else + { + FIXME("Unimplemented copy from %s to %s for depth/stencil buffers.\n", +- wined3d_debug_location(surface->resource.locations), wined3d_debug_location(location)); +- return; + wined3d_debug_location(surface->locations), wined3d_debug_location(location)); + return WINED3DERR_INVALIDCALL; } @@ -8203,7 +8269,7 @@ } switch (location) -@@ -4145,6 +5321,7 @@ +@@ -4032,6 +5192,7 @@ case WINED3D_LOCATION_USER_MEMORY: case WINED3D_LOCATION_SYSMEM: case WINED3D_LOCATION_BUFFER: @@ -8211,7 +8277,7 @@ surface_load_sysmem(surface, context, location); break; -@@ -4162,6 +5339,24 @@ +@@ -4049,6 +5210,24 @@ if (FAILED(hr = surface_load_texture(surface, context, location == WINED3D_LOCATION_TEXTURE_SRGB))) return; @@ -8236,7 +8302,7 @@ break; default: -@@ -4169,12 +5364,21 @@ +@@ -4056,12 +5235,21 @@ break; } @@ -8258,7 +8324,7 @@ } static HRESULT ffp_blit_alloc(struct wined3d_device *device) { return WINED3D_OK; } -@@ -4268,6 +5472,7 @@ +@@ -4171,6 +5359,7 @@ const RECT *dst_rect, const struct wined3d_color *color) { const RECT draw_rect = {0, 0, dst_surface->resource.width, dst_surface->resource.height}; @@ -8266,7 +8332,7 @@ struct wined3d_rendertarget_view view, *view_ptr = &view; struct wined3d_fb_state fb = {&view_ptr, NULL, 1}; struct wined3d_texture *texture = dst_surface->container; -@@ -4288,6 +5493,21 @@ +@@ -4191,6 +5380,21 @@ view.sub_resource_idx = dst_surface->texture_layer * texture->level_count + dst_surface->texture_level; device_clear_render_targets(device, 1, &fb, 1, dst_rect, &draw_rect, WINED3DCLEAR_TARGET, color, 0.0f, 0); @@ -8288,7 +8354,7 @@ return WINED3D_OK; } -@@ -4296,6 +5516,7 @@ +@@ -4199,6 +5403,7 @@ const RECT *dst_rect, float depth) { const RECT draw_rect = {0, 0, dst_surface->resource.width, dst_surface->resource.height}; @@ -8296,7 +8362,7 @@ struct wined3d_rendertarget_view view; struct wined3d_fb_state fb = {NULL, &view}; struct wined3d_texture *texture = dst_surface->container; -@@ -4311,6 +5532,20 @@ +@@ -4214,6 +5419,20 @@ view.sub_resource_idx = dst_surface->texture_layer * texture->level_count + dst_surface->texture_level; device_clear_render_targets(device, 0, &fb, 1, dst_rect, &draw_rect, WINED3DCLEAR_ZBUFFER, 0, depth, 0); @@ -8317,7 +8383,38 @@ return WINED3D_OK; } -@@ -4468,6 +5703,7 @@ +@@ -4226,6 +5445,7 @@ + /* Blit from offscreen surface to render target */ + struct wined3d_color_key old_blt_key = src_surface->container->async.src_blt_color_key; + DWORD old_color_key_flags = src_surface->container->async.color_key_flags; ++#if defined(STAGING_CSMT) + struct wined3d_context *context; + + TRACE("Blt from surface %p to rendertarget %p\n", src_surface, dst_surface); +@@ -4243,6 +5463,22 @@ + + wined3d_resource_validate_location(&dst_surface->resource, dst_surface->container->resource.draw_binding); + wined3d_resource_invalidate_location(&dst_surface->resource, ~dst_surface->container->resource.draw_binding); ++#else /* STAGING_CSMT */ ++ ++ TRACE("Blt from surface %p to rendertarget %p\n", src_surface, dst_surface); ++ ++ wined3d_texture_set_color_key(src_surface->container, WINED3D_CKEY_SRC_BLT, color_key); ++ ++ surface_blt_to_drawable(device, filter, ++ !!color_key, src_surface, src_rect, dst_surface, dst_rect); ++ ++ /* Restore the color key parameters */ ++ wined3d_texture_set_color_key(src_surface->container, WINED3D_CKEY_SRC_BLT, ++ (old_color_key_flags & WINED3D_CKEY_SRC_BLT) ? &old_blt_key : NULL); ++ ++ surface_validate_location(dst_surface, dst_surface->container->resource.draw_binding); ++ surface_invalidate_location(dst_surface, ~dst_surface->container->resource.draw_binding); ++#endif /* STAGING_CSMT */ + } + + const struct blit_shader ffp_blit = { +@@ -4401,6 +5637,7 @@ int bpp, srcheight, srcwidth, dstheight, dstwidth, width; const struct wined3d_format *src_format, *dst_format; struct wined3d_texture *src_texture = NULL; @@ -8325,7 +8422,7 @@ void *src_data = NULL, *dst_data = NULL; UINT src_row_pitch, src_slice_pitch, dst_row_pitch, dst_slice_pitch; const BYTE *sbase = NULL; -@@ -4498,6 +5734,23 @@ +@@ -4431,6 +5668,23 @@ wined3d_resource_get_pitch(&dst_surface->resource, &dst_row_pitch, &dst_slice_pitch); src_data = dst_data; src_row_pitch = dst_row_pitch; @@ -8349,7 +8446,7 @@ src_format = dst_surface->resource.format; dst_format = src_format; } -@@ -4506,12 +5759,14 @@ +@@ -4439,12 +5693,14 @@ dst_format = dst_surface->resource.format; if (src_surface) { @@ -8364,7 +8461,7 @@ if (dst_surface->resource.format->id != src_surface->resource.format->id) { if (!(src_texture = surface_convert_format(src_surface, dst_format->id))) -@@ -4522,9 +5777,13 @@ +@@ -4455,9 +5711,13 @@ } src_surface = surface_from_resource(wined3d_texture_get_sub_resource(src_texture, 0)); } @@ -8378,7 +8475,7 @@ src_format = src_surface->resource.format; } else -@@ -4532,8 +5791,12 @@ +@@ -4465,8 +5725,12 @@ src_format = dst_format; } @@ -8391,7 +8488,7 @@ } bpp = dst_surface->resource.format->byte_count; -@@ -4544,12 +5807,24 @@ +@@ -4477,12 +5741,24 @@ width = (dst_rect->right - dst_rect->left) * bpp; if (src_surface) @@ -8416,7 +8513,7 @@ if (src_format->flags & dst_format->flags & WINED3DFMT_FLAG_BLOCKS) { -@@ -4584,7 +5859,11 @@ +@@ -4517,7 +5793,11 @@ } hr = surface_cpu_blt_compressed(sbase, dbuf, @@ -8428,7 +8525,7 @@ src_format, flags, fx); goto release; } -@@ -4592,7 +5871,11 @@ +@@ -4525,7 +5805,11 @@ /* First, all the 'source-less' blits */ if (flags & WINEDDBLT_COLORFILL) { @@ -8440,7 +8537,7 @@ flags &= ~WINEDDBLT_COLORFILL; } -@@ -4641,6 +5924,7 @@ +@@ -4574,6 +5858,7 @@ for (y = 0; y < dstheight; ++y) { memcpy(dbuf, sbuf, width); @@ -8448,7 +8545,7 @@ sbuf += src_row_pitch; dbuf += dst_row_pitch; } -@@ -4654,6 +5938,21 @@ +@@ -4587,6 +5872,21 @@ { sbuf -= src_row_pitch; dbuf -= dst_row_pitch; @@ -8470,7 +8567,7 @@ memcpy(dbuf, sbuf, width); } } -@@ -4663,8 +5962,13 @@ +@@ -4596,8 +5896,13 @@ for (y = 0; y < dstheight; ++y) { memmove(dbuf, sbuf, width); @@ -8484,7 +8581,7 @@ } } } -@@ -4673,9 +5977,15 @@ +@@ -4606,9 +5911,15 @@ /* Stretching in y direction only. */ for (y = sy = 0; y < dstheight; ++y, sy += yinc) { @@ -8500,7 +8597,7 @@ } } } -@@ -4685,6 +5995,7 @@ +@@ -4618,6 +5929,7 @@ int last_sy = -1; for (y = sy = 0; y < dstheight; ++y, sy += yinc) { @@ -8508,7 +8605,7 @@ sbuf = sbase + (sy >> 16) * src_row_pitch; if ((sy >> 16) == (last_sy >> 16)) -@@ -4692,6 +6003,15 @@ +@@ -4625,6 +5937,15 @@ /* This source row is the same as last source row - * Copy the already stretched row. */ memcpy(dbuf, dbuf - dst_row_pitch, width); @@ -8524,7 +8621,7 @@ } else { -@@ -4738,6 +6058,7 @@ +@@ -4671,6 +5992,7 @@ } #undef STRETCH_ROW } @@ -8532,7 +8629,7 @@ dbuf += dst_row_pitch; last_sy = sy; } -@@ -4746,6 +6067,16 @@ +@@ -4679,6 +6001,16 @@ else { LONG dstyinc = dst_row_pitch, dstxinc = bpp; @@ -8549,7 +8646,7 @@ DWORD keylow = 0xffffffff, keyhigh = 0, keymask = 0xffffffff; DWORD destkeylow = 0x0, destkeyhigh = 0xffffffff, destkeymask = 0xffffffff; if (flags & (WINEDDBLT_KEYSRC | WINEDDBLT_KEYDEST | WINEDDBLT_KEYSRCOVERRIDE | WINEDDBLT_KEYDESTOVERRIDE)) -@@ -4795,7 +6126,11 @@ +@@ -4728,7 +6060,11 @@ LONG tmpxy; dTopLeft = dbuf; dTopRight = dbuf + ((dstwidth - 1) * bpp); @@ -8561,7 +8658,7 @@ dBottomRight = dBottomLeft + ((dstwidth - 1) * bpp); if (fx->dwDDFX & WINEDDBLTFX_ARITHSTRETCHY) -@@ -4872,6 +6207,7 @@ +@@ -4805,6 +6141,7 @@ flags &= ~(WINEDDBLT_DDFX); } @@ -8569,7 +8666,7 @@ #define COPY_COLORKEY_FX(type) \ do { \ const type *s; \ -@@ -4893,6 +6229,29 @@ +@@ -4826,6 +6163,29 @@ d = (type *)(((BYTE *)d) + dstyinc); \ } \ } while(0) @@ -8599,7 +8696,7 @@ switch (bpp) { -@@ -4911,7 +6270,11 @@ +@@ -4844,7 +6204,11 @@ BYTE *d = dbuf, *dx; for (y = sy = 0; y < dstheight; ++y, sy += yinc) { @@ -8611,7 +8708,7 @@ dx = d; for (x = sx = 0; x < dstwidth; ++x, sx+= xinc) { -@@ -4942,10 +6305,12 @@ +@@ -4875,10 +6239,12 @@ } } @@ -8624,7 +8721,7 @@ error: if (flags && FIXME_ON(d3d_surface)) { -@@ -4953,6 +6318,7 @@ +@@ -4886,6 +6252,7 @@ } release: @@ -8632,7 +8729,7 @@ if (dst_data) { wined3d_resource_release_map_ptr(&dst_surface->resource, context); -@@ -4971,6 +6337,14 @@ +@@ -4904,6 +6271,14 @@ wined3d_texture_decref(src_texture); if (context) context_release(context); @@ -8647,15 +8744,15 @@ return hr; } -@@ -5005,6 +6379,7 @@ - cpu_blit_depth_fill, +@@ -4948,6 +6323,7 @@ + cpu_blit_blit_surface, }; +#if defined(STAGING_CSMT) void surface_blt_ugly(struct wined3d_surface *dst_surface, const RECT *dst_rect, struct wined3d_surface *src_surface, const RECT *src_rect, DWORD flags, const WINEDDBLTFX *fx, enum wined3d_texture_filter_type filter) -@@ -5012,6 +6387,16 @@ +@@ -4955,6 +6331,16 @@ struct wined3d_swapchain *src_swapchain, *dst_swapchain; struct wined3d_device *device = dst_surface->resource.device; DWORD src_ds_flags, dst_ds_flags; @@ -8672,7 +8769,7 @@ BOOL scale, convert; static const DWORD simple_blit = WINEDDBLT_ASYNC -@@ -5020,6 +6405,106 @@ +@@ -4965,6 +6351,106 @@ | WINEDDBLT_DEPTHFILL | WINEDDBLT_DONOTWAIT; @@ -8779,7 +8876,7 @@ if (!device->d3d_initialized) { WARN("D3D not initialized, using fallback.\n"); -@@ -5062,8 +6547,13 @@ +@@ -5007,8 +6493,13 @@ } scale = src_surface @@ -8793,7 +8890,7 @@ convert = src_surface && src_surface->resource.format->id != dst_surface->resource.format->id; dst_ds_flags = dst_surface->resource.format->flags & (WINED3DFMT_FLAG_DEPTH | WINED3DFMT_FLAG_STENCIL); -@@ -5081,6 +6571,7 @@ +@@ -5026,6 +6517,7 @@ TRACE("Depth fill.\n"); if (!surface_convert_depth_to_float(dst_surface, fx->u5.dwFillDepth, &depth)) @@ -8801,10 +8898,10 @@ return; if (SUCCEEDED(wined3d_surface_depth_fill(dst_surface, dst_rect, depth))) -@@ -5099,6 +6590,32 @@ - * implement those in the CPU blitter at the moment. */ - if ((dst_surface->resource.locations & dst_surface->resource.map_binding) - && (!src_surface || (src_surface->resource.locations & src_surface->resource.map_binding))) +@@ -5036,6 +6528,24 @@ + if (SUCCEEDED(wined3d_surface_depth_blt(src_surface, src_surface->container->resource.draw_binding, + src_rect, dst_surface, dst_surface->container->resource.draw_binding, dst_rect))) + return; +#else /* STAGING_CSMT */ + return WINED3DERR_INVALIDCALL; + @@ -8822,46 +8919,53 @@ + if (SUCCEEDED(wined3d_surface_depth_blt(src_surface, src_surface->container->resource.draw_binding, + &src_rect, dst_surface, dst_surface->container->resource.draw_binding, &dst_rect))) + return WINED3D_OK; -+ } -+ } -+ else -+ { -+ /* In principle this would apply to depth blits as well, but we don't -+ * implement those in the CPU blitter at the moment. */ ++#endif /* STAGING_CSMT */ + } + } + else +@@ -5044,8 +6554,13 @@ + + /* In principle this would apply to depth blits as well, but we don't + * implement those in the CPU blitter at the moment. */ ++#if defined(STAGING_CSMT) + if ((dst_surface->resource.locations & dst_surface->resource.map_binding) + && (!src_surface || (src_surface->resource.locations & src_surface->resource.map_binding))) ++#else /* STAGING_CSMT */ + if ((dst_surface->locations & dst_surface->resource.map_binding) + && (!src_surface || (src_surface->locations & src_surface->resource.map_binding))) +#endif /* STAGING_CSMT */ { if (scale) TRACE("Not doing sysmem blit because of scaling.\n"); -@@ -5117,6 +6634,7 @@ - if (!surface_convert_color_to_float(dst_surface, fx->u5.dwFillColor, &color)) +@@ -5066,8 +6581,13 @@ + palette, fx->u5.dwFillColor, &color)) goto fallback; +#if defined(STAGING_CSMT) if (SUCCEEDED(surface_color_fill(dst_surface, dst_rect, &color))) return; - } -@@ -5127,6 +6645,18 @@ - /* Upload */ - if ((src_surface->resource.locations & WINED3D_LOCATION_SYSMEM) - && !(dst_surface->resource.locations & WINED3D_LOCATION_SYSMEM)) +#else /* STAGING_CSMT */ + if (SUCCEEDED(surface_color_fill(dst_surface, &dst_rect, &color))) + return WINED3D_OK; -+ } -+ else -+ { -+ TRACE("Color blit.\n"); -+ -+ /* Upload */ -+ if ((src_surface->locations & WINED3D_LOCATION_SYSMEM) ++#endif /* STAGING_CSMT */ + } + else + { +@@ -5085,8 +6605,13 @@ + color_key = &src_surface->container->async.src_blt_color_key; + blit_op = WINED3D_BLIT_OP_COLOR_BLIT_CKEY; + } ++#if defined(STAGING_CSMT) + else if ((src_surface->resource.locations & WINED3D_LOCATION_SYSMEM) + && !(dst_surface->resource.locations & WINED3D_LOCATION_SYSMEM)) ++#else /* STAGING_CSMT */ ++ else if ((src_surface->locations & WINED3D_LOCATION_SYSMEM) + && !(dst_surface->locations & WINED3D_LOCATION_SYSMEM)) +#endif /* STAGING_CSMT */ { + /* Upload */ if (scale) - TRACE("Not doing upload because of scaling.\n"); -@@ -5134,6 +6664,7 @@ +@@ -5095,6 +6620,7 @@ TRACE("Not doing upload because of format conversion.\n"); else { @@ -8869,7 +8973,7 @@ POINT dst_point = {dst_rect->left, dst_rect->top}; if (SUCCEEDED(surface_upload_from_surface(dst_surface, &dst_point, src_surface, src_rect))) -@@ -5146,6 +6677,15 @@ +@@ -5107,6 +6633,15 @@ context_release(context); } return; @@ -8885,7 +8989,7 @@ } } } -@@ -5170,6 +6710,7 @@ +@@ -5130,6 +6665,7 @@ wined3d_swapchain_present(dst_swapchain, NULL, NULL, dst_swapchain->win_handle, NULL, 0); dst_swapchain->desc.swap_effect = swap_effect; @@ -8893,7 +8997,7 @@ return; } -@@ -5366,6 +6907,50 @@ +@@ -5325,6 +6861,49 @@ wined3d_surface_location_invalidated, wined3d_surface_load_location, }; @@ -8901,7 +9005,7 @@ + return WINED3D_OK; + } + -+ if (fbo_blit_supported(&device->adapter->gl_info, WINED3D_BLIT_OP_COLOR_BLIT, ++ if (fbo_blit_supported(&device->adapter->gl_info, blit_op, + &src_rect, src_surface->resource.usage, src_surface->resource.pool, src_surface->resource.format, + &dst_rect, dst_surface->resource.usage, dst_surface->resource.pool, dst_surface->resource.format)) + { @@ -8916,14 +9020,13 @@ + return WINED3D_OK; + } + -+ if (arbfp_blit.blit_supported(&device->adapter->gl_info, WINED3D_BLIT_OP_COLOR_BLIT, ++ blitter = wined3d_select_blitter(&device->adapter->gl_info, &device->adapter->d3d_info, blit_op, + &src_rect, src_surface->resource.usage, src_surface->resource.pool, src_surface->resource.format, -+ &dst_rect, dst_surface->resource.usage, dst_surface->resource.pool, dst_surface->resource.format)) ++ &dst_rect, dst_surface->resource.usage, dst_surface->resource.pool, dst_surface->resource.format); ++ if (blitter) + { -+ TRACE("Using arbfp blit.\n"); -+ -+ if (SUCCEEDED(arbfp_blit_surface(device, filter, src_surface, &src_rect, dst_surface, &dst_rect))) -+ return WINED3D_OK; ++ blitter->blit_surface(device, filter, src_surface, &src_rect, dst_surface, &dst_rect, color_key); ++ return WINED3D_OK; + } + } + } @@ -8944,7 +9047,7 @@ static HRESULT surface_init(struct wined3d_surface *surface, struct wined3d_texture *container, const struct wined3d_resource_desc *desc, GLenum target, unsigned int level, unsigned int layer, DWORD flags) -@@ -5433,7 +7018,11 @@ +@@ -5392,7 +6971,11 @@ } surface->container = container; @@ -8956,7 +9059,7 @@ list_init(&surface->renderbuffers); list_init(&surface->overlays); -@@ -5465,9 +7054,14 @@ +@@ -5424,9 +7007,14 @@ if (surface->resource.map_binding == WINED3D_LOCATION_DIB) { wined3d_resource_free_sysmem(&surface->resource); @@ -8971,7 +9074,7 @@ } return hr; -@@ -5494,7 +7088,11 @@ +@@ -5453,7 +7041,11 @@ if (FAILED(hr = surface_init(object, container, desc, target, level, layer, flags))) { WARN("Failed to initialize surface, returning %#x.\n", hr); @@ -9519,7 +9622,7 @@ diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c --- a/dlls/wined3d/directx.c +++ b/dlls/wined3d/directx.c -@@ -5341,9 +5341,15 @@ +@@ -5345,9 +5345,15 @@ DebugBreak(); } diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-resource_check_usage/0001-wined3d-Silence-repeated-resource_check_usage-FIXME.patch wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-resource_check_usage/0001-wined3d-Silence-repeated-resource_check_usage-FIXME.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-resource_check_usage/0001-wined3d-Silence-repeated-resource_check_usage-FIXME.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-resource_check_usage/0001-wined3d-Silence-repeated-resource_check_usage-FIXME.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,36 @@ +From 018b5f5d6211aa706e5aef762acb98d39240d9f1 Mon Sep 17 00:00:00 2001 +From: "Erich E. Hoover" +Date: Sun, 20 Jul 2014 22:29:02 +0200 +Subject: wined3d: Silence repeated resource_check_usage FIXME. (try 2) + +--- + dlls/wined3d/resource.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c +index 2f44d36..5988c82 100644 +--- a/dlls/wined3d/resource.c ++++ b/dlls/wined3d/resource.c +@@ -50,7 +50,7 @@ static DWORD resource_access_from_pool(enum wined3d_pool pool) + + static void resource_check_usage(DWORD usage) + { +- static const DWORD handled = WINED3DUSAGE_RENDERTARGET ++ static DWORD handled = WINED3DUSAGE_RENDERTARGET + | WINED3DUSAGE_DEPTHSTENCIL + | WINED3DUSAGE_WRITEONLY + | WINED3DUSAGE_DYNAMIC +@@ -66,7 +66,10 @@ static void resource_check_usage(DWORD usage) + * driver. */ + + if (usage & ~handled) ++ { + FIXME("Unhandled usage flags %#x.\n", usage & ~handled); ++ handled |= usage; ++ } + if ((usage & (WINED3DUSAGE_DYNAMIC | WINED3DUSAGE_WRITEONLY)) == WINED3DUSAGE_DYNAMIC) + WARN_(d3d_perf)("WINED3DUSAGE_DYNAMIC used without WINED3DUSAGE_WRITEONLY.\n"); + } +-- +1.8.3.2 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-wined3d_swapchain_present/0001-wined3d-Silence-repeated-wined3d_swapchain_present-F.patch wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-wined3d_swapchain_present/0001-wined3d-Silence-repeated-wined3d_swapchain_present-F.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/wined3d-wined3d_swapchain_present/0001-wined3d-Silence-repeated-wined3d_swapchain_present-F.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wined3d-wined3d_swapchain_present/0001-wined3d-Silence-repeated-wined3d_swapchain_present-F.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,36 @@ +From a347c9baa86ec4503d51b03c1659d08a7062839a Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Sun, 4 May 2014 00:53:51 +0200 +Subject: wined3d: Silence repeated wined3d_swapchain_present FIXME. + +--- + dlls/wined3d/swapchain.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c +index 75e6628..10c3911 100644 +--- a/dlls/wined3d/swapchain.c ++++ b/dlls/wined3d/swapchain.c +@@ -136,12 +136,17 @@ HRESULT CDECL wined3d_swapchain_present(struct wined3d_swapchain *swapchain, + const RECT *src_rect, const RECT *dst_rect, HWND dst_window_override, + const RGNDATA *dirty_region, DWORD flags) + { ++ static DWORD notified_flags = 0; ++ + TRACE("swapchain %p, src_rect %s, dst_rect %s, dst_window_override %p, dirty_region %p, flags %#x.\n", + swapchain, wine_dbgstr_rect(src_rect), wine_dbgstr_rect(dst_rect), + dst_window_override, dirty_region, flags); + +- if (flags) +- FIXME("Ignoring flags %#x.\n", flags); ++ if (flags & ~notified_flags) ++ { ++ FIXME("Ignoring flags %#x.\n", flags & ~notified_flags); ++ notified_flags |= flags; ++ } + + if (!swapchain->back_buffers) + { +-- +1.7.9.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wine.inf-ProfileList_UserSID/0001-wine.inf-Add-a-ProfileList-UserSID-registry-subkey.patch wine-staging-1.7.41~ubuntu12.04.1/patches/wine.inf-ProfileList_UserSID/0001-wine.inf-Add-a-ProfileList-UserSID-registry-subkey.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/wine.inf-ProfileList_UserSID/0001-wine.inf-Add-a-ProfileList-UserSID-registry-subkey.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wine.inf-ProfileList_UserSID/0001-wine.inf-Add-a-ProfileList-UserSID-registry-subkey.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,25 @@ +From 24ba61d54e9af4927f0e3be4c1789f3007d20b8b Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Sat, 18 Apr 2015 15:55:20 +0200 +Subject: wine.inf: Add a ProfileList\ registry subkey. + +--- + loader/wine.inf.in | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/loader/wine.inf.in b/loader/wine.inf.in +index d901251..68a1b69 100644 +--- a/loader/wine.inf.in ++++ b/loader/wine.inf.in +@@ -492,6 +492,8 @@ HKLM,%CurrentVersionNT%\Perflib,,16 + HKLM,%CurrentVersionNT%\Ports,,16 + HKLM,%CurrentVersionNT%\Print,,16 + HKLM,%CurrentVersionNT%\ProfileList,,16 ++; Update/Replace if local_user_sid in server/token.c changes ++HKLM,%CurrentVersionNT%\ProfileList\S-1-5-21-0-0-0-1000,,16 + + [CurrentVersionWow64] + HKLM,%CurrentVersion%,"ProgramFilesDir (x86)",,"%16426%" +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/wine.inf-ProfileList_UserSID/definition wine-staging-1.7.41~ubuntu12.04.1/patches/wine.inf-ProfileList_UserSID/definition --- wine-staging-1.7.40~ubuntu12.04.1/patches/wine.inf-ProfileList_UserSID/definition 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/wine.inf-ProfileList_UserSID/definition 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1 @@ +Fixes: [15670] Add a ProfileList\ registry subkey diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/winex11-ToUnicodeEx/0001-winex11-Allow-NULL-pointer-as-keystate-in-X11DRV_ToU.patch wine-staging-1.7.41~ubuntu12.04.1/patches/winex11-ToUnicodeEx/0001-winex11-Allow-NULL-pointer-as-keystate-in-X11DRV_ToU.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/winex11-ToUnicodeEx/0001-winex11-Allow-NULL-pointer-as-keystate-in-X11DRV_ToU.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/winex11-ToUnicodeEx/0001-winex11-Allow-NULL-pointer-as-keystate-in-X11DRV_ToU.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,88 +0,0 @@ -From e9507c2b46cd5ca8de228abffcbb3d1505a4d331 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Sat, 4 Apr 2015 22:29:58 +0200 -Subject: winex11: Allow NULL pointer as keystate in X11DRV_ToUnicodeEx. - ---- - dlls/winex11.drv/keyboard.c | 45 ++++++++++++++++++++++++--------------------- - 1 file changed, 24 insertions(+), 21 deletions(-) - -diff --git a/dlls/winex11.drv/keyboard.c b/dlls/winex11.drv/keyboard.c -index 1323e19..5737f40 100644 ---- a/dlls/winex11.drv/keyboard.c -+++ b/dlls/winex11.drv/keyboard.c -@@ -2463,7 +2463,7 @@ INT CDECL X11DRV_ToUnicodeEx(UINT virtKey, UINT scanCode, const BYTE *lpKeyState - if (!match_x11_keyboard_layout(hkl)) - FIXME_(key)("keyboard layout %p is not supported\n", hkl); - -- if ((lpKeyState[VK_MENU] & 0x80) && (lpKeyState[VK_CONTROL] & 0x80)) -+ if (lpKeyState && (lpKeyState[VK_MENU] & 0x80) && (lpKeyState[VK_CONTROL] & 0x80)) - { - TRACE_(key)("Ctrl+Alt+[key] won't generate a character\n"); - return 0; -@@ -2486,25 +2486,28 @@ INT CDECL X11DRV_ToUnicodeEx(UINT virtKey, UINT scanCode, const BYTE *lpKeyState - - EnterCriticalSection( &kbd_section ); - -- if (lpKeyState[VK_SHIFT] & 0x80) -+ if (lpKeyState) - { -- TRACE_(key)("ShiftMask = %04x\n", ShiftMask); -- e.state |= ShiftMask; -- } -- if (lpKeyState[VK_CAPITAL] & 0x01) -- { -- TRACE_(key)("LockMask = %04x\n", LockMask); -- e.state |= LockMask; -- } -- if (lpKeyState[VK_CONTROL] & 0x80) -- { -- TRACE_(key)("ControlMask = %04x\n", ControlMask); -- e.state |= ControlMask; -- } -- if (lpKeyState[VK_NUMLOCK] & 0x01) -- { -- TRACE_(key)("NumLockMask = %04x\n", NumLockMask); -- e.state |= NumLockMask; -+ if (lpKeyState[VK_SHIFT] & 0x80) -+ { -+ TRACE_(key)("ShiftMask = %04x\n", ShiftMask); -+ e.state |= ShiftMask; -+ } -+ if (lpKeyState[VK_CAPITAL] & 0x01) -+ { -+ TRACE_(key)("LockMask = %04x\n", LockMask); -+ e.state |= LockMask; -+ } -+ if (lpKeyState[VK_CONTROL] & 0x80) -+ { -+ TRACE_(key)("ControlMask = %04x\n", ControlMask); -+ e.state |= ControlMask; -+ } -+ if (lpKeyState[VK_NUMLOCK] & 0x01) -+ { -+ TRACE_(key)("NumLockMask = %04x\n", NumLockMask); -+ e.state |= NumLockMask; -+ } - } - - /* Restore saved AltGr state */ -@@ -2680,13 +2683,13 @@ INT CDECL X11DRV_ToUnicodeEx(UINT virtKey, UINT scanCode, const BYTE *lpKeyState - lpChar[0] = 0; - ret = 0; - } -- else if((lpKeyState[VK_SHIFT] & 0x80) /* Shift is pressed */ -+ else if (lpKeyState && (lpKeyState[VK_SHIFT] & 0x80) /* Shift is pressed */ - && (keysym == XK_KP_Decimal)) - { - lpChar[0] = 0; - ret = 0; - } -- else if((lpKeyState[VK_CONTROL] & 0x80) /* Control is pressed */ -+ else if (lpKeyState && (lpKeyState[VK_CONTROL] & 0x80) /* Control is pressed */ - && (keysym == XK_Return || keysym == XK_KP_Enter)) - { - lpChar[0] = '\n'; --- -2.3.3 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/winex11-ToUnicodeEx/definition wine-staging-1.7.41~ubuntu12.04.1/patches/winex11-ToUnicodeEx/definition --- wine-staging-1.7.40~ubuntu12.04.1/patches/winex11-ToUnicodeEx/definition 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/winex11-ToUnicodeEx/definition 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -Fixes: [38353] Allow NULL pointer as keystate argument in ToUnicodeEx diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/ws2_32-Select/0001-ws2_32-Properly-handle-closing-sockets-during-a-sele.patch wine-staging-1.7.41~ubuntu12.04.1/patches/ws2_32-Select/0001-ws2_32-Properly-handle-closing-sockets-during-a-sele.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/ws2_32-Select/0001-ws2_32-Properly-handle-closing-sockets-during-a-sele.patch 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/ws2_32-Select/0001-ws2_32-Properly-handle-closing-sockets-during-a-sele.patch 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1,104 @@ +From 2c467089a7cbb58f76375226314bd37d3e832e4d Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Thu, 16 Apr 2015 12:59:51 +0200 +Subject: ws2_32: Properly handle closing sockets during a select call. + +Based on a patch by Bruno Jesus. +--- + dlls/ntdll/ntdll.spec | 1 + + dlls/ntdll/server.c | 21 +++++++++++++++++++++ + dlls/ws2_32/socket.c | 8 +++++++- + dlls/ws2_32/tests/sock.c | 1 - + include/wine/server.h | 1 + + 5 files changed, 30 insertions(+), 2 deletions(-) + +diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec +index c3307b2..f47a24b 100644 +--- a/dlls/ntdll/ntdll.spec ++++ b/dlls/ntdll/ntdll.spec +@@ -1416,6 +1416,7 @@ + # Server interface + @ cdecl -norelay wine_server_call(ptr) + @ cdecl wine_server_fd_to_handle(long long long ptr) ++@ cdecl wine_server_handle_exists(long) + @ cdecl wine_server_handle_to_fd(long long ptr ptr) + @ cdecl wine_server_release_fd(long long) + @ cdecl wine_server_send_fd(long) +diff --git a/dlls/ntdll/server.c b/dlls/ntdll/server.c +index 29cfcb5..237f439 100644 +--- a/dlls/ntdll/server.c ++++ b/dlls/ntdll/server.c +@@ -1039,6 +1039,27 @@ int CDECL wine_server_fd_to_handle( int fd, unsigned int access, unsigned int at + + + /*********************************************************************** ++ * wine_server_handle_exists (NTDLL.@) ++ * ++ * Checks if a file handle exists (without duplicating it). ++ * ++ * PARAMS ++ * handle [I] Wine file handle. ++ * access [I] Win32 file access rights requested. ++ * ++ * RETURNS ++ * NTSTATUS code ++ */ ++int CDECL wine_server_handle_exists( HANDLE handle, unsigned int access ) ++{ ++ int unix_fd, needs_close, ret; ++ ret = server_get_unix_fd( handle, access, &unix_fd, &needs_close, NULL, NULL ); ++ if (!ret && needs_close) close( unix_fd ); ++ return !ret; ++} ++ ++ ++/*********************************************************************** + * wine_server_handle_to_fd (NTDLL.@) + * + * Retrieve the file descriptor corresponding to a file handle. +diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c +index 95ea83c..ff21577 100644 +--- a/dlls/ws2_32/socket.c ++++ b/dlls/ws2_32/socket.c +@@ -4788,7 +4788,13 @@ static void release_poll_fds( const WS_fd_set *readfds, const WS_fd_set *writefd + if (exceptfds) + { + for (i = 0; i < exceptfds->fd_count; i++, j++) +- if (fds[j].fd != -1) release_sock_fd( exceptfds->fd_array[i], fds[j].fd ); ++ { ++ if (fds[j].fd == -1) continue; ++ release_sock_fd( exceptfds->fd_array[i], fds[j].fd ); ++ if (!(fds[j].revents & POLLHUP)) continue; ++ if (wine_server_handle_exists( SOCKET2HANDLE( exceptfds->fd_array[i] ), 0 )) continue; ++ fds[j].revents = 0; ++ } + } + } + +diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c +index aa06a08..d276867 100644 +--- a/dlls/ws2_32/tests/sock.c ++++ b/dlls/ws2_32/tests/sock.c +@@ -3834,7 +3834,6 @@ todo_wine + FD_ZERO_ALL(); + FD_SET_ALL(fdWrite); + ret = select(0, &readfds, NULL, &exceptfds, &select_timeout); +-todo_wine + ok(ret == 1, "expected 1, got %d\n", ret); + ok(FD_ISSET(fdWrite, &readfds), "fdWrite socket is not in the set\n"); + WaitForSingleObject (thread_handle, 1000); +diff --git a/include/wine/server.h b/include/wine/server.h +index d573d1f..a114cf9 100644 +--- a/include/wine/server.h ++++ b/include/wine/server.h +@@ -52,6 +52,7 @@ struct __server_request_info + extern unsigned int wine_server_call( void *req_ptr ); + extern void CDECL wine_server_send_fd( int fd ); + extern int CDECL wine_server_fd_to_handle( int fd, unsigned int access, unsigned int attributes, HANDLE *handle ); ++extern int CDECL wine_server_handle_exists( HANDLE handle, unsigned int access ); + extern int CDECL wine_server_handle_to_fd( HANDLE handle, unsigned int access, int *unix_fd, unsigned int *options ); + extern void CDECL wine_server_release_fd( HANDLE handle, int unix_fd ); + +-- +2.3.5 + diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/ws2_32-Select/definition wine-staging-1.7.41~ubuntu12.04.1/patches/ws2_32-Select/definition --- wine-staging-1.7.40~ubuntu12.04.1/patches/ws2_32-Select/definition 1970-01-01 00:00:00.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/ws2_32-Select/definition 2015-04-18 23:54:01.000000000 +0000 @@ -0,0 +1 @@ +Fixes: [38399] Properly handle closing sockets during a select call diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/ws2_32-WS_select/0001-ws2_32-Don-t-return-an-error-in-WS_select-when-EINTR.patch wine-staging-1.7.41~ubuntu12.04.1/patches/ws2_32-WS_select/0001-ws2_32-Don-t-return-an-error-in-WS_select-when-EINTR.patch --- wine-staging-1.7.40~ubuntu12.04.1/patches/ws2_32-WS_select/0001-ws2_32-Don-t-return-an-error-in-WS_select-when-EINTR.patch 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/ws2_32-WS_select/0001-ws2_32-Don-t-return-an-error-in-WS_select-when-EINTR.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ -From c3996fd61ba65678d9cfefed715a137b697a72a1 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Michael=20M=C3=BCller?= -Date: Sat, 28 Mar 2015 20:47:52 +0100 -Subject: ws2_32: Don't return an error in WS_select when EINTR happens during - timeout. - ---- - dlls/ws2_32/socket.c | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c -index e7e3de5..d99e566 100644 ---- a/dlls/ws2_32/socket.c -+++ b/dlls/ws2_32/socket.c -@@ -4601,7 +4601,11 @@ int WINAPI WS_select(int nfds, WS_fd_set *ws_readfds, - } - - timeout = torig - (tv2.tv_sec * 1000) - (tv2.tv_usec + 999) / 1000; -- if (timeout <= 0) break; -+ if (timeout <= 0) -+ { -+ ret = 0; -+ break; -+ } - } else break; - } - release_poll_fds( ws_readfds, ws_writefds, ws_exceptfds, pollfds ); --- -2.1.0 - diff -Nru wine-staging-1.7.40~ubuntu12.04.1/patches/ws2_32-WS_select/definition wine-staging-1.7.41~ubuntu12.04.1/patches/ws2_32-WS_select/definition --- wine-staging-1.7.40~ubuntu12.04.1/patches/ws2_32-WS_select/definition 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/patches/ws2_32-WS_select/definition 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -Fixes: Don't return an error in WS_select when EINTR happens during timeout diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/ar.po wine-staging-1.7.41~ubuntu12.04.1/po/ar.po --- wine-staging-1.7.40~ubuntu12.04.1/po/ar.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/ar.po 2015-04-18 23:36:02.000000000 +0000 @@ -45,8 +45,8 @@ msgid "&Modify..." msgstr "&تعديل..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "ال&حجم:" @@ -550,7 +550,7 @@ msgid "&Underline" msgstr "تسطي&ر" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "اللو&ن:" @@ -717,7 +717,7 @@ msgid "&to:" msgstr "إل&ى:" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 msgid "Si&ze:" msgstr "ال&حجم:" @@ -2194,7 +2194,7 @@ msgid "&File name:" msgstr "ا&سم الملف:" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "استعر&ض..." @@ -2945,7 +2945,7 @@ msgid "Player" msgstr "المشغل" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "الجهاز" @@ -3460,7 +3460,7 @@ msgid "Joysticks" msgstr "مقابض اللعب" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "مع&طل" @@ -6750,7 +6750,7 @@ msgid "Hyperlink Information" msgstr "معلومات الوصلة العليا" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "الن&وع:" @@ -7573,7 +7573,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8072,7 +8072,7 @@ msgid "&Open:" msgstr "ا&فتح:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "ا&ستعرض..." @@ -8117,7 +8117,7 @@ msgid "Date deleted" msgstr "تاريخ الحذف" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "سطح المكتب" @@ -9511,7 +9511,7 @@ msgid "Digi&tal" msgstr "ر&قمية" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "ال&خط..." @@ -12883,7 +12883,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "يجري تحديث إعدادات واين في %s ، يرجى الانتظار..." -#: winecfg.rc:139 +#: winecfg.rc:141 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 " @@ -12894,23 +12894,23 @@ "الإصدارة 2.1 او أحدث من رخصة غنّو العمومية المنشورة بواسطة منظمة البرمجيات " "الحرة ، ترجمه أعضاء من فريق عيون العرب و مجتمع لينكس العربي." -#: winecfg.rc:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "معلومات تسجيل وندوز" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "ال&مالك:" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "المن&ظمة:" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "إعدادات التطبيق" -#: winecfg.rc:153 +#: winecfg.rc:155 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 @@ "بألسنة المكتبات و الرّسوميّات وذلك للسماح بتغييرات واسعة النّطاق تتعلق بتطبيق " "معين." -#: winecfg.rc:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "أ&ضف تطبيقًا..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "أزل تطبيقًا" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "إصدارة الوندو&ز:" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "إعدادات النّافذة" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "التقا&ط آلي للفأرة في وضع ملء الشاشة" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "السّماح لمدير النّواف&ذ بتأطيرها" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "السّماح لمدير النّوا&فذ بالتّحكم بها" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "محاكاة سطح المكتب افترا&ضي" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "حجم س&طح المكتب:" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "دقة الشّاشة" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "هذا مثالٌ نصيٌّ باستخدام عشر نقاط من الخط تاهوما" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "المكتبات المسيطرة" -#: winecfg.rc:190 +#: winecfg.rc:192 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12978,167 +12978,161 @@ "المضمّنة ( المصممّة بواسطة واين ) أو المكتبات الاصلية ( الموفّرة بواسطة تطبيق " "أو مأخوذة من وندوز ) " -#: winecfg.rc:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "إعداد سي&طرة مكتباتية جديد:" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "أ&ضف" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "السيط&رات الحالية:" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "ت&حرير..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "تحرير السيطرة" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "المكتبة المستعملة" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "الم&ضمّنة (المبنية بواسطة واين)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "الأ&صليّة (المأخوذة من وندوز)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "المضمّنة ثمّ الأصليّة" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "الأصليّة ثمّ المضمّنة" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "اختر ال&كل\tCtrl+A" -#: winecfg.rc:230 +#: winecfg.rc:232 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "إعدادات واين" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "فشل الاتّصال بمدير المحرّكات ، لا يمكن تحريرالاعدادات" -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "أ&ضف..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "ك&شف تلقائي" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "الم&سار:" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "الخيارات المتقدمة" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "الج&هاز:" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "است&عراض..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "الاس&م:" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "المس&لسل:" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "أظهر الملفات المخفيّة" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "معالج المحركات" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "الافتراضيات" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "جهاز الإخراج:" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "جهاز الإخراج الصوتي:" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "جهاز الإدخال:" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "جهاز الإدخال الصوتي:" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "ا&ختبار الصوت" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 #, fuzzy #| msgid "Wine configuration" msgid "Speaker configuration" msgstr "إعدادات واين" -#: winecfg.rc:276 -#, fuzzy -#| msgid "De&vice:" -msgid "Device:" -msgstr "الج&هاز:" - -#: winecfg.rc:278 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "العرض" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "السّم&ة:" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "ت&ثبيت سمة..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "العن&صر:" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "اللو&ن:" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "الم&جلدات" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "موص&ول إلى:" @@ -13218,21 +13212,21 @@ msgid "(System default)" msgstr "(الاعداد الافتراضي)" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 #, fuzzy #| msgid "graphic" msgid "Quadraphonic" msgstr "رسومي" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -13351,127 +13345,127 @@ "\n" "تذكر انه بإمكانك الضغط على زر أضف في لسان المحركات لإضافة محرك.\n" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "خلفية التحكمات" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "نص التحكمات" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "خلفية القوائم" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "نص القوائم" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "شريط التمرير" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "خلفية الاختيار" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "نص الاختيار" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "خلفية اﻷدوات" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "نص الأدوات" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "خلفية النافذة" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "نص النافذة" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "شريط العنوان المفعل" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "العنوان المفعل" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "شريط العنوان غير المفعل" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "العنوان غير المفعل" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "نص الرسائل" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "مساحة العمل" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "إطار النافذة" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "الحد المفعل" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "الحد غير المفعل" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "ظل التحكمات" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "النص الرّمادي" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "إضاءة التحكمات" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "الظل الغامق للتحكمات" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "إضاءة التحكمات" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "الخلفية البديلة للتحكمات" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "عنصر ساخن" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "تفعيل انحدار شريط العنوان" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "إلغاء تفعيل انحدار شريط العنوان" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "القوائم المضاءة" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "شريط القوائم" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/bg.po wine-staging-1.7.41~ubuntu12.04.1/po/bg.po --- wine-staging-1.7.40~ubuntu12.04.1/po/bg.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/bg.po 2015-04-18 23:36:02.000000000 +0000 @@ -46,8 +46,8 @@ msgid "&Modify..." msgstr "&Промени" -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "Размер:" @@ -562,7 +562,7 @@ msgid "&Underline" msgstr "Под&чертан" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "Цвят:" @@ -731,7 +731,7 @@ msgid "&to:" msgstr "&до:" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 msgid "Si&ze:" msgstr "Size:" @@ -2221,7 +2221,7 @@ msgid "&File name:" msgstr "&Файл" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 #, fuzzy msgid "B&rowse..." msgstr "Избор..." @@ -2940,7 +2940,7 @@ msgid "Player" msgstr "Възпроизведи" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 #, fuzzy msgid "Device" msgstr "De&vice:" @@ -3483,7 +3483,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "&Забрани" @@ -6892,7 +6892,7 @@ msgid "Hyperlink Information" msgstr "Информация" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "&Тип:" @@ -7673,7 +7673,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "" @@ -8182,7 +8182,7 @@ msgid "&Open:" msgstr "" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "&Избери..." @@ -8227,7 +8227,7 @@ msgid "Date deleted" msgstr "" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 #, fuzzy msgctxt "display name" msgid "Desktop" @@ -9537,7 +9537,7 @@ msgid "Digi&tal" msgstr "" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Шрифт..." @@ -12720,7 +12720,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "" -#: winecfg.rc:139 +#: winecfg.rc:141 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 " @@ -12728,24 +12728,24 @@ "option) any later version." msgstr "" -#: winecfg.rc:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "Owner:" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "Organization:" -#: winecfg.rc:152 +#: winecfg.rc:154 #, fuzzy msgid "Application settings" msgstr " Настройка на приложенията " -#: winecfg.rc:153 +#: winecfg.rc:155 #, fuzzy msgid "" "Wine can mimic different Windows versions for each application. This tab is " @@ -12757,57 +12757,57 @@ "за да можете да променяте, освен общосистемните, и специфичните за " "приложенията настройки." -#: winecfg.rc:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "&Добавяне на приложение..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "Пре&махване на приложение" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "&Версия на Windows:" -#: winecfg.rc:167 +#: winecfg.rc:169 #, fuzzy msgid "Window settings" msgstr " Настройка на прозорците " -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "Управлението на прозорците от мениджъра на прозорци" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "Емулирай виртуален работен плот" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "Размер на работния плот:" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:189 +#: winecfg.rc:191 #, fuzzy msgid "DLL overrides" msgstr " DLL замени " -#: winecfg.rc:190 +#: winecfg.rc:192 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12817,170 +12817,165 @@ "(осигурена от Wine) или собствена (взета от Windows или осигурена от " "приложението)." -#: winecfg.rc:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "Нова библиотечна замяна:" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "&Добави" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "Съществуващи замени:" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "&Редактирай..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "Редактиране на замяна" -#: winecfg.rc:206 +#: winecfg.rc:208 #, fuzzy msgid "Load order" msgstr " Ред на зареждане " -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "&Вградена (Wine)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "&Собствена (Windows)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "В&градена, после собствена" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "Со&бствена, после вградена" -#: winecfg.rc:218 +#: winecfg.rc:220 #, fuzzy msgid "Select Drive Letter" msgstr "Маркирай &всичко" -#: winecfg.rc:230 +#: winecfg.rc:232 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Настройки на Wine" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "&Добави..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "&Открий" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "&Път:" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "Покажи допълнителните" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "Из&бери..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "&Етикет:" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "&Номер:" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "Показвай файловете, започващи с точка" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 #, fuzzy #| msgid "Wine configuration" msgid "Speaker configuration" msgstr "Настройки на Wine" -#: winecfg.rc:276 -#, fuzzy -msgid "Device:" -msgstr "De&vice:" - -#: winecfg.rc:278 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 #, fuzzy msgid "Appearance" msgstr " Външен вид " -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "Тема:" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "Инсталирай тема..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "" -#: winecfg.rc:302 +#: winecfg.rc:304 #, fuzzy msgid "Folders" msgstr "Папка" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "Връзка към:" @@ -13063,21 +13058,21 @@ msgid "(System default)" msgstr "Системен път" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 #, fuzzy #| msgid "Graphics" msgid "Quadraphonic" msgstr "Графика" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -13187,135 +13182,135 @@ "Remember to click 'Add' in the Drives tab to create one!\n" msgstr "" -#: winecfg.rc:97 +#: winecfg.rc:99 #, fuzzy msgid "Controls Background" msgstr "&Копирай фона" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "" -#: winecfg.rc:100 +#: winecfg.rc:102 #, fuzzy msgid "Menu Background" msgstr "&Копирай фона" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "" -#: winecfg.rc:102 +#: winecfg.rc:104 #, fuzzy msgid "Scrollbar" msgstr "Превърти тук" -#: winecfg.rc:103 +#: winecfg.rc:105 #, fuzzy msgid "Selection Background" msgstr "Постави като &фон на работния плот" -#: winecfg.rc:104 +#: winecfg.rc:106 #, fuzzy msgid "Selection Text" msgstr "Маркирай &всичко" -#: winecfg.rc:105 +#: winecfg.rc:107 #, fuzzy msgid "Tooltip Background" msgstr "&Копирай фона" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:109 #, fuzzy msgid "Window Background" msgstr "&Копирай фона" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:116 #, fuzzy msgid "Application Workspace" msgstr "Приложения" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/ca.po wine-staging-1.7.41~ubuntu12.04.1/po/ca.po --- wine-staging-1.7.40~ubuntu12.04.1/po/ca.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/ca.po 2015-04-18 23:36:02.000000000 +0000 @@ -52,8 +52,8 @@ msgid "&Modify..." msgstr "&Modifica..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "&Mida:" @@ -574,7 +574,7 @@ msgid "&Underline" msgstr "&Subratllat" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "&Color:" @@ -741,7 +741,7 @@ msgid "&to:" msgstr "&a:" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 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:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "&Navega..." @@ -3005,7 +3005,7 @@ msgid "Player" msgstr "Reproductor" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "Dispositiu" @@ -3522,7 +3522,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "&Deshabilitada" @@ -6828,7 +6828,7 @@ msgid "Hyperlink Information" msgstr "Informació de Hiperenllaç" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "&Tipus:" @@ -7688,7 +7688,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "ppp" @@ -8190,7 +8190,7 @@ msgid "&Open:" msgstr "&Obrir:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "&Navega..." @@ -8235,7 +8235,7 @@ msgid "Date deleted" msgstr "Data suprimit" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Escriptori" @@ -9701,7 +9701,7 @@ msgid "Digi&tal" msgstr "Digi&tal" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "Tipus de &lletra..." @@ -13131,7 +13131,7 @@ msgstr "" "La configuració del Wine en %s s'està actualitzant, si us plau, espereu..." -#: winecfg.rc:139 +#: winecfg.rc:141 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 " @@ -13143,23 +13143,23 @@ "la Free Software Foundation; o la versió 2.1 de la Llicència, o (a la vostra " "elecció) qualsevol versió posterior." -#: winecfg.rc:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "Informació de registració del Windows" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "Pr&opietari:" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "Organit&zació:" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "Ajustaments de les aplicacions" -#: winecfg.rc:153 +#: winecfg.rc:155 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 " @@ -13170,56 +13170,56 @@ "permetre-us canviar la configuració del sistema o d'una aplicació en " "aquestes pestanyes també." -#: winecfg.rc:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "&Afegeix aplicació..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "T&reure aplicació" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "Versió de &Windows:" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "Ajustaments de finestra" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" "Captura automàticament el &ratolí en les finestres de pantalla completa" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "Permet que el gestor de finestres &decori les finestres" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "Permet que el gestor de finestres &controli les finestres" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "&Emula un escriptori virtual" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "&Mida d'escriptori:" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "Resolució de pantalla" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "Això és un text de mostra en Tahoma de 10 punts" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "Reemplaçaments DLL" -#: winecfg.rc:190 +#: winecfg.rc:192 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -13229,57 +13229,57 @@ "(proporcionada pel Wine) o nativa (treta de Windows o proporcionada per " "l'aplicació)." -#: winecfg.rc:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "&Nou reemplaçament per la biblioteca:" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "&Afegeix" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "&Reemplaçaments Existents:" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "&Edita..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "Editar Reemplaçament" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "Ordre de càrrega" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "&Interna (Wine)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "&Nativa (Windows)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "In&terna, després Nativa" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "Nati&va, després Interna" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "Lletra de la Unitat" -#: winecfg.rc:230 +#: winecfg.rc:232 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Configuració del Wine" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13287,111 +13287,105 @@ "S'ha fallat en connectar al gestor de muntatge; la configuració d'unitat no " "es pot editar." -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "&Afegeix..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "Auto&detecta" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "&Ruta:" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "Mostrar &Avançat" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "Dispositi&u:" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "Na&vega..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "&Etiqueta:" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "&Sèrie:" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "Mostra els fitxers de &punt" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "Diagnòstics de controlador" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "Predeterminats" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "Dispositiu de sortida:" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "Dispositiu de sortida de veu:" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "Dispositiu d'entrada:" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "Dispositiu d'entrada de veu:" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "&Prova el So" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 #, 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 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "Aparença" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "&Tema:" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "&Instal·la tema..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "&Element:" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "C&olor:" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "Carpetes" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "En&llaça a:" @@ -13471,21 +13465,21 @@ msgid "(System default)" msgstr "(Defecte del sistema)" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 #, fuzzy #| msgid "graphic" msgid "Quadraphonic" msgstr "gràfic" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -13606,127 +13600,127 @@ "\n" "Recordeu fer clic en 'Afegir' en la pestanya Unitats per crear una!\n" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "Controls--Fons" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "Controls--Text" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "Menú--Fons" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "Menú--Text" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "Barra de Desplaçament" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "Selecció--Fons" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "Selecció--Text" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "Indicador de Funció--Fons" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "Indicador de Funció--Text" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "Finestra--Fons" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "Finestra--Text" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "Títol Actiu--Barra" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "Títol Actiu--Text" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "Títol Inactiu--Barra" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "Títol Inactiu--Text" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "Text de Quadre de Missatge" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "Espai de Treball d'Aplicació" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "Marca de Finestra" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "Vora Activa" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "Vora Inactiva" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "Controls--Ombra" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "Text Gris" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "Controls--Ressalt" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "Controls--Ombra Fosca" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "Controls--Brillo" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "Controls--Fons Alternatiu" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "Element Ressaltat" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "Gradient de Barra de Títol Actiu" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "Gradient de Barra de Títol Inactiu" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "Menú--Ressalt" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "Menú--Barra" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/cs.po wine-staging-1.7.41~ubuntu12.04.1/po/cs.po --- wine-staging-1.7.40~ubuntu12.04.1/po/cs.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/cs.po 2015-04-18 23:36:02.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:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "Veliko&st:" @@ -557,7 +557,7 @@ msgid "&Underline" msgstr "&Podtržení" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "&Barva:" @@ -724,7 +724,7 @@ msgid "&to:" msgstr "&do:" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 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:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "P&rocházet..." @@ -2899,7 +2899,7 @@ msgid "Player" msgstr "Hráč" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "Zařízení" @@ -3416,7 +3416,7 @@ msgid "Joysticks" msgstr "Pákové ovladače" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "&Zakázat" @@ -6710,7 +6710,7 @@ msgid "Hyperlink Information" msgstr "Informace o hypertextovém odkazu" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "&Typ:" @@ -7503,7 +7503,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "bodů na palec (dpi)" @@ -8003,7 +8003,7 @@ msgid "&Open:" msgstr "&Otevřít:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "&Procházet..." @@ -8048,7 +8048,7 @@ msgid "Date deleted" msgstr "Datum bylo odstraněno" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Plocha" @@ -9452,7 +9452,7 @@ msgid "Digi&tal" msgstr "Digi&tální" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Písmo..." @@ -12764,7 +12764,7 @@ msgstr "" "Konfigurace Wine umístěná v %s je právě aktualizována, prosím čekejte..." -#: winecfg.rc:139 +#: winecfg.rc:141 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 " @@ -12776,23 +12776,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:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "Informace o registraci Windows" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "&Vlastník:" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "Organi&zace:" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "Nastavení aplikací" -#: winecfg.rc:153 +#: winecfg.rc:155 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 " @@ -12802,55 +12802,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:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "Přid&at aplikaci..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "Odeb&rat aplikaci" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "Verze &Windows:" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "Nastavení oken" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Automaticky odchytávat &myš v režimu celé obrazovky" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "Povolit správci oken &dekorovat okna" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "Povolit &správci oken kontrolu nad okny" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "&Emulace virtuálního desktopu" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "&Velikost desktopu:" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "Rozlišení obrazovky" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "Toto je testovací text - 10 bodů, Tahoma" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "Nastavení DLL" -#: winecfg.rc:190 +#: winecfg.rc:192 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12859,57 +12859,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:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "&Nové nastavení pro knihovnu:" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "Přid&at" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "&Existující nastavení knihoven:" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "&Upravit..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "Úprava nastavení knihovny" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "Pořadí nahrávání" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "&Vestavěná (Wine)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "&Nativní (Windows)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "V&estavěná pak nativní" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "N&ativní a pak vestavěná" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "Vyberte písmeno disku" -#: winecfg.rc:230 +#: winecfg.rc:232 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Konfigurace Wine" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -12917,111 +12917,105 @@ "Selhalo připojení k správci přípojných bodů, nelze upravovat konfiguraci " "diskových jednotek." -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "Přid&at..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "Auto&detekce" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "&Cesta:" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "Zobrazit rozšířené &možnosti" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "&Zařízení:" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "Procház&et..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "P&opisek:" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "&Sériové číslo:" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "Zo&brazit soubory s tečkou na začátku názvu" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "Diagnostika ovladače" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "Výchozí nastavení" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "Výstupní zařízení:" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "Zařízení hlasového výstupu:" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "Vstupní zařízení:" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "Zařízení hlasového vstupu:" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "O&testovat zvuk" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 #, 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 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "Vzhled" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "&Téma:" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "&Instalovat téma..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "Po&ložka:" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "B&arva:" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "Adresáře" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "&Odkaz do:" @@ -13101,21 +13095,21 @@ msgid "(System default)" msgstr "(Výchozí v systému)" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 #, fuzzy #| msgid "graphic" msgid "Quadraphonic" msgstr "grafika" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -13236,127 +13230,127 @@ "\n" "Klikněte na ‘Přidat...’ v záložce Disky a vytvořte ho!\n" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "Pozadí ovládacích prvků" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "Písmo ovládacích prvků" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "Pozadí menu" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "Písmo menu" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "Posuvník" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "Pozadí výběru" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "Písmo výběru" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "Pozadí tipu" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "Písmo tipu" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "Pozadí okna" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "Písmo okna" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "Pozadí titulku aktivního okna" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "Písmo titulku aktivního okna" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "Pozadí titulku neaktivního okna" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "Písmo titulku neaktivního okna" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "Písmo okna zprávy" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "Pracovní prostor aplikace" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "Písmo okna" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "Okraj aktivního okna" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "Okraj neaktivního okna" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "Stíny ovládacích prvků" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "Pošedlý text" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "Zvýraznění ovládacích prvků" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "Tmavé stíny ovládacích prvků" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "Nasvícení ovládacích prvků" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "Alternativní pozadí ovládacích prvků" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "Prvek pod ukazatelem" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "Přechod titulku aktivního okna" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "Přechod titulku neaktivního okna" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "Zvýraznění v menu" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "Lišta menu" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/da.po wine-staging-1.7.41~ubuntu12.04.1/po/da.po --- wine-staging-1.7.40~ubuntu12.04.1/po/da.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/da.po 2015-04-18 23:36:02.000000000 +0000 @@ -47,8 +47,8 @@ msgid "&Modify..." msgstr "&Rediger..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "&Størrelse:" @@ -565,7 +565,7 @@ msgid "&Underline" msgstr "&Understreget" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "&Farve:" @@ -732,7 +732,7 @@ msgid "&to:" msgstr "&til:" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 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:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "&Gennemse..." @@ -2976,7 +2976,7 @@ msgid "Player" msgstr "Afspiller" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "Enhed" @@ -3493,7 +3493,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "&Deaktiver" @@ -6795,7 +6795,7 @@ msgid "Hyperlink Information" msgstr "Information om Hyperlink'et" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "T&ype:" @@ -7653,7 +7653,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8153,7 +8153,7 @@ msgid "&Open:" msgstr "&Åbn:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "&Gennemse..." @@ -8198,7 +8198,7 @@ msgid "Date deleted" msgstr "Dato slettet" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Skrivebord" @@ -9630,7 +9630,7 @@ msgid "Digi&tal" msgstr "&Digital" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Skrifttype..." @@ -13026,7 +13026,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:139 +#: winecfg.rc:141 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 " @@ -13038,23 +13038,23 @@ "publiceret af Free Software Foundation; enten version 2.1, eller (efter dit " "valg) en senere version." -#: winecfg.rc:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "Windows registreringsoplysninger" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "Ejer:" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "Organisation:" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "Programindstillinger" -#: winecfg.rc:153 +#: winecfg.rc:155 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 " @@ -13065,55 +13065,55 @@ "for at ændre indstillinger på hele systemet eller per program i disse " "faneblade." -#: winecfg.rc:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "&Tilføj program..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "&Fjern program" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "&Windows version:" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "Vindueindstillinger" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Automatisk fang &musen i vinduer med fuld skærm" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "Tillad vindues manageren at &dekorere vinduerne" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "Tillad vindues manageren at styre vinduerne" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "Emuler et virtuel &skrivebord" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "Skrivebord &størrelse:" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "Skærmopløsning" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "Dette er en eksempel tekst med 10 punkts Tahoma" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "DLL overstyringer" -#: winecfg.rc:190 +#: winecfg.rc:192 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -13122,57 +13122,57 @@ "Dynamiske Link Biblioteker kan specificeres individuelt for enten indbygget " "(fra Wine) eller indfødt (taget fra Windows eller et program)." -#: winecfg.rc:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "&Nye overstyringer for bibliotek:" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "&Tilføj" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "Eksisterende &overstyringer:" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "&Rediger..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "Rediger overstyring" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "Indlæsningsrækkefølge" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "Ind&bygget (Wine)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "Ind&født (Windows)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "Indb&ygget derefter indfødt" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "I&ndfødt derefter indbygget" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "Vælg Drevbogstav" -#: winecfg.rc:230 +#: winecfg.rc:232 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Wine konfiguration" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13180,111 +13180,105 @@ "Det lykkedes ikke at forbinde til mount manageren. Drevkonfigurationen kan " "ikke redigeres." -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "&Tilføj..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "Auto&detekter" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "&Sti:" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "Vis &avanceret" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "Enhed:" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "G&ennemse..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "Etiket:" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "Se&riel:" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "Vis &dot filer" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "Driver diagnostik" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "Standarder" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "Output enhed:" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "Stemme output enhed:" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "Input enhed:" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "Stemme input enhed:" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "&Test lyd" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 #, fuzzy #| msgid "Wine configuration" msgid "Speaker configuration" msgstr "Wine konfiguration" -#: winecfg.rc:276 -#, fuzzy -#| msgid "De&vice:" -msgid "Device:" -msgstr "Enhed:" - -#: winecfg.rc:278 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "Udseende" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "&Tema:" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "&Installer tema..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "&Element:" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "F&arve:" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "Mapper" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "&Link til:" @@ -13364,21 +13358,21 @@ msgid "(System default)" msgstr "(System standard)" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 #, fuzzy #| msgid "graphic" msgid "Quadraphonic" msgstr "Grafik" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -13498,127 +13492,127 @@ "\n" "Husk at klikke Tilføj i Drev tabben for lave en!\n" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "Kontrol baggrund" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "Kontrol tekst" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "Menubaggrund" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "Menutekst" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "Scrollbar" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "Markeret baggrund" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "Markeret tekst" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "Baggrund i værktøjstip" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "Tekst i værktøjstip" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "vinduesbaggrund" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "vinduestekst" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "Aktiv titellinje" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "Aktiv titeltekst" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "Inaktiv titellinje" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "Inaktiv titeltekst" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "Meldingsvinduestekst" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "Arbejdsområde i program" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "Vinduesramme" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "Aktiv kant" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "Inaktiv kant" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "Kontrol skygge" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "Grå tekst" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "Markeret controls" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "Kontrol mørk skygge" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "Kontrol lys" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "Baggrund for skiftende controls" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "Markeret element" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "Gradient for aktiv titellinje" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "Gradient for Inaktiv titellinje" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "Markeret menu" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "Menulinje" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/de.po wine-staging-1.7.41~ubuntu12.04.1/po/de.po --- wine-staging-1.7.40~ubuntu12.04.1/po/de.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/de.po 2015-04-18 23:36:02.000000000 +0000 @@ -47,8 +47,8 @@ msgid "&Modify..." msgstr "&Ändern..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "&Größe:" @@ -557,7 +557,7 @@ msgid "&Underline" msgstr "&Unterstrichen" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "&Farbe:" @@ -724,7 +724,7 @@ msgid "&to:" msgstr "&bis:" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 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:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "&Wählen..." @@ -2961,7 +2961,7 @@ msgid "Player" msgstr "Player" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "Gerät" @@ -3479,7 +3479,7 @@ msgid "Joysticks" msgstr "Joysticks" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "&Deaktivieren" @@ -6760,7 +6760,7 @@ msgid "Hyperlink Information" msgstr "Hyperlink-Informationen" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "&Typ:" @@ -7547,7 +7547,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8047,7 +8047,7 @@ msgid "&Open:" msgstr "Ö&ffnen:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "&Durchsuchen..." @@ -8092,7 +8092,7 @@ msgid "Date deleted" msgstr "Gelöscht am" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Desktop" @@ -9556,7 +9556,7 @@ msgid "Digi&tal" msgstr "Digi&tal" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "Schrift&art..." @@ -12969,7 +12969,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:139 +#: winecfg.rc:141 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 " @@ -12981,23 +12981,23 @@ "veröffentlicht, weiterverteilen und/oder modifizieren; entweder gemäß " "Version 2.1 der Lizenz oder (nach Ihrer Option) jeder späteren Version." -#: winecfg.rc:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "Windows Registrierungs-Informationen" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "&Eigentümer:" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "&Organisation:" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "Anwendungseinstellungen" -#: winecfg.rc:153 +#: winecfg.rc:155 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 " @@ -13008,55 +13008,55 @@ "verknüpft, so dass Sie entweder systemweite oder anwendungsabhängige " "Einstellungen in diesen Reitern vornehmen können." -#: winecfg.rc:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "Anw. &hinzufügen..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "Anw. &entfernen" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "&Windows-Version:" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "Fenstereinstellungen" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Im Vollbildmodus automatisch die &Maus einfangen" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "Erlaube dem Fenstermanager die Fenster zu &dekorieren" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "Erlaube dem Fenstermanager die &Fenster zu kontrollieren" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "&Emuliere einen virtuellen Bildschirm" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "Desktop-&Größe:" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "Bildschirmauflösung" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "Dies ist ein Beispieltext in 10 Punkt Tahoma" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "DLL-Überschreibungen" -#: winecfg.rc:190 +#: winecfg.rc:192 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -13066,55 +13066,55 @@ "Builtin (gestellt durch Wine) oder Native (von Windows oder durch die " "Anwendung gestellt)." -#: winecfg.rc:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "&Neue Überschreibung für:" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "&Festlegen" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "Bestehende Über&schreibungen:" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "&Bearbeiten..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "Überschreibung bearbeiten" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "Ladereihenfolge" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "&Builtin (Wine)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "&Native (Windows)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "Bui<in dann Native" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "Nati&ve dann Builtin" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "Laufwerksbuchstaben wählen" -#: winecfg.rc:230 +#: winecfg.rc:232 msgid "Drive configuration" msgstr "Laufwerkskonfiguration" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13122,107 +13122,103 @@ "Fehler beim Verbinden mit dem Mountmanager. Die Laufwerkskonfiguration kann " "nicht bearbeitet werden." -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "&Hinzufügen..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "&Automatisch" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "&Pfad:" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "&Erweitert" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "Ge&rät:" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "Durch&suchen..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "&Bezeichnung:" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "S&erien-Nr.:" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "D&ot-Dateien anzeigen" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "Treiberdiagnose" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "Standards" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "Ausgabegerät:" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "Sprachausgabegerät:" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "Eingabegerät:" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "Spracheingabegerät:" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "Sound &testen" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 msgid "Speaker configuration" msgstr "Lautsprecher-Konfiguration" -#: winecfg.rc:276 -msgid "Device:" -msgstr "Gerät:" - -#: winecfg.rc:278 +#: winecfg.rc:280 msgid "Speakers:" msgstr "Lautsprecher:" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "Darstellung" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "&Thema:" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "Thema &installieren..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "&Element:" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "F&arbe:" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "Ordner" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "&Verknüpfe:" @@ -13302,19 +13298,19 @@ msgid "(System default)" msgstr "(Systemstandard)" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "5.1 Surround" -#: winecfg.rc:90 +#: winecfg.rc:92 msgid "Quadraphonic" msgstr "Quadrofon" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "Stereo" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "Mono" @@ -13434,127 +13430,127 @@ "Vergessen Sie nicht, im Reiter 'Laufwerke' ein solches anzulegen, indem Sie " "auf 'Hinzufügen' klicken!\n" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "Steuerelementhintergrund" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "Steuerelementtext" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "Menühintergrund" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "Menütext" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "Bildlaufleiste" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "Auswahlhintergrund" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "Auswahltext" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "Tooltip-Hintergrund" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "Tooltip-Text" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "Fensterhintergrund" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "Fenstertext" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "Aktive Titelleiste" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "Aktiver Titelleistentext" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "Inaktive Titelleiste" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "Inaktiver Titelleistentext" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "Dialogfeldtext" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "Anwendungsarbeitsplatz" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "Fensterrahmen" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "Aktiver Rand" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "Inaktiver Rand" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "Steuerelementschatten" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "Grauer Text" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "Steuerelementhervorhebung" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "Dunkler Steuerelementschatten" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "Steuerelementerhellung" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "Alternativer Steuerelementhintergrund" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "Aktiv hervorgehobenes Element" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "Gradient der aktiven Titelleiste" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "Gradient der inaktiven Titelleiste" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "Menühervorhebung" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "Menüleiste" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/el.po wine-staging-1.7.41~ubuntu12.04.1/po/el.po --- wine-staging-1.7.40~ubuntu12.04.1/po/el.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/el.po 2015-04-18 23:36:02.000000000 +0000 @@ -43,8 +43,8 @@ msgid "&Modify..." msgstr "" -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "&Μέγεθος:" @@ -541,7 +541,7 @@ msgid "&Underline" msgstr "&Υπογράμμιση" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "&Χρώμα:" @@ -709,7 +709,7 @@ msgid "&to:" msgstr "&έως:" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 msgid "Si&ze:" msgstr "Μέγε&θος:" @@ -2176,7 +2176,7 @@ msgid "&File name:" msgstr "&Περιεχόμενα" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "" @@ -2884,7 +2884,7 @@ msgid "Player" msgstr "" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "" @@ -3406,7 +3406,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "" @@ -6775,7 +6775,7 @@ msgid "Hyperlink Information" msgstr "" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "" @@ -7535,7 +7535,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "" @@ -8039,7 +8039,7 @@ msgid "&Open:" msgstr "" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "" @@ -8085,7 +8085,7 @@ msgid "Date deleted" msgstr "" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 #, fuzzy msgctxt "display name" msgid "Desktop" @@ -9376,7 +9376,7 @@ msgid "Digi&tal" msgstr "" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "" @@ -12487,7 +12487,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "" -#: winecfg.rc:139 +#: winecfg.rc:141 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 " @@ -12495,250 +12495,246 @@ "option) any later version." msgstr "" -#: winecfg.rc:141 +#: winecfg.rc:143 #, fuzzy msgid "Windows registration information" msgstr "Εκτύπωση" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "" -#: winecfg.rc:144 +#: winecfg.rc:146 #, fuzzy msgid "Organi&zation:" msgstr "Επιλογές" -#: winecfg.rc:152 +#: winecfg.rc:154 #, fuzzy msgid "Application settings" msgstr "Επιλογές" -#: winecfg.rc:153 +#: winecfg.rc:155 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:157 +#: winecfg.rc:159 #, fuzzy msgid "&Add application..." msgstr "Επιλογές" -#: winecfg.rc:158 +#: winecfg.rc:160 #, fuzzy msgid "&Remove application" msgstr "Επιλογές" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "" -#: winecfg.rc:173 +#: winecfg.rc:175 #, fuzzy msgid "Desktop &size:" msgstr "Επιφάνεια Εργασίας" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "" -#: winecfg.rc:190 +#: winecfg.rc:192 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:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "" -#: winecfg.rc:197 +#: winecfg.rc:199 #, fuzzy msgid "&Edit..." msgstr "Εκτύπωση" -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "" -#: winecfg.rc:230 +#: winecfg.rc:232 #, fuzzy msgid "Drive configuration" msgstr "Επιλογές" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "" -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "" -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:267 #, fuzzy msgid "Defaults" msgstr "Προεπιλεγμένος εκτυπωτής; " -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 #, fuzzy msgid "Speaker configuration" msgstr "Επιλογές" -#: winecfg.rc:276 -msgid "Device:" -msgstr "" - -#: winecfg.rc:278 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "" -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "" -#: winecfg.rc:302 +#: winecfg.rc:304 #, fuzzy msgid "Folders" msgstr "Κατάλογοι Συστήματος" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "" @@ -12822,19 +12818,19 @@ msgid "(System default)" msgstr "Κατάλογοι Συστήματος" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 msgid "Quadraphonic" msgstr "" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -12941,129 +12937,129 @@ "Remember to click 'Add' in the Drives tab to create one!\n" msgstr "" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "" -#: winecfg.rc:98 +#: winecfg.rc:100 #, fuzzy msgid "Controls Text" msgstr "&Περιεχόμενα" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:116 #, fuzzy msgid "Application Workspace" msgstr "Επιλογές" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/en.po wine-staging-1.7.41~ubuntu12.04.1/po/en.po --- wine-staging-1.7.40~ubuntu12.04.1/po/en.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/en.po 2015-04-18 23:36:02.000000000 +0000 @@ -47,8 +47,8 @@ msgid "&Modify..." msgstr "&Modify..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "&Size:" @@ -556,7 +556,7 @@ msgid "&Underline" msgstr "&Underline" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "&Colour:" @@ -723,7 +723,7 @@ msgid "&to:" msgstr "&to:" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 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:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "B&rowse..." @@ -2955,7 +2955,7 @@ msgid "Player" msgstr "Player" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "Device" @@ -3470,7 +3470,7 @@ msgid "Joysticks" msgstr "Joysticks" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "&Disable" @@ -6746,7 +6746,7 @@ msgid "Hyperlink Information" msgstr "Hyperlink Information" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "&Type:" @@ -7533,7 +7533,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8033,7 +8033,7 @@ msgid "&Open:" msgstr "&Open:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "&Browse..." @@ -8078,7 +8078,7 @@ msgid "Date deleted" msgstr "Date deleted" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Desktop" @@ -9504,7 +9504,7 @@ msgid "Digi&tal" msgstr "Digi&tal" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Font..." @@ -12876,7 +12876,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:139 +#: winecfg.rc:141 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 " @@ -12888,23 +12888,23 @@ "Free Software Foundation; either version 2.1 of the Licence, or (at your " "option) any later version." -#: winecfg.rc:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "Windows registration information" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "&Owner:" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "Organi&sation:" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "Application settings" -#: winecfg.rc:153 +#: winecfg.rc:155 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 @@ "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:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "&Add application..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "&Remove application" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "&Windows Version:" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "Window settings" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Automatically capture the &mouse in full-screen windows" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "Allow the window manager to &decorate the windows" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "Allow the &window manager to control the windows" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "&Emulate a virtual desktop" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "Desktop &size:" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "Screen resolution" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "This is a sample text using 10 point Tahoma" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "DLL overrides" -#: winecfg.rc:190 +#: winecfg.rc:192 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12972,55 +12972,55 @@ "(provided by Wine) or native (taken from Windows or provided by the " "application)." -#: winecfg.rc:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "&New override for library:" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "&Add" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "Existing &overrides:" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "&Edit..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "Edit Override" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "Load order" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "&Builtin (Wine)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "&Native (Windows)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "Bui<in then Native" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "Nati&ve then Builtin" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "Select Drive Letter" -#: winecfg.rc:230 +#: winecfg.rc:232 msgid "Drive configuration" msgstr "Drive configuration" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13028,107 +13028,103 @@ "Failed to connect to the mount manager, the drive configuration cannot be " "edited." -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "&Add..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "Auto&detect" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "&Path:" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "Show &Advanced" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "De&vice:" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "Bro&wse..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "&Label:" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "S&erial:" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "Show &dot files" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "Driver diagnostics" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "Defaults" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "Output device:" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "Voice output device:" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "Input device:" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "Voice input device:" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "&Test Sound" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 msgid "Speaker configuration" msgstr "Speaker configuration" -#: winecfg.rc:276 -msgid "Device:" -msgstr "Device:" - -#: winecfg.rc:278 +#: winecfg.rc:280 msgid "Speakers:" msgstr "Speakers:" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "Appearance" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "&Theme:" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "&Install theme..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "It&em:" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "C&olour:" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "Folders" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "&Link to:" @@ -13208,19 +13204,19 @@ msgid "(System default)" msgstr "(System default)" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "5.1 Surround" -#: winecfg.rc:90 +#: winecfg.rc:92 msgid "Quadraphonic" msgstr "Quadraphonic" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "Stereo" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "Mono" @@ -13337,127 +13333,127 @@ "\n" "Remember to click 'Add' in the Drives tab to create one!\n" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "Controls Background" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "Controls Text" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "Menu Background" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "Menu Text" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "Scrollbar" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "Selection Background" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "Selection Text" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "Tooltip Background" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "Tooltip Text" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "Window Background" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "Window Text" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "Active Title Bar" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "Active Title Text" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "Inactive Title Bar" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "Inactive Title Text" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "Message Box Text" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "Application Workspace" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "Window Frame" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "Active Border" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "Inactive Border" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "Controls Shadow" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "Grey Text" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "Controls Highlight" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "Controls Dark Shadow" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "Controls Light" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "Controls Alternate Background" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "Hot Tracked Item" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "Active Title Bar Gradient" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "Inactive Title Bar Gradient" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "Menu Highlight" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "Menu Bar" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/en_US.po wine-staging-1.7.41~ubuntu12.04.1/po/en_US.po --- wine-staging-1.7.40~ubuntu12.04.1/po/en_US.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/en_US.po 2015-04-18 23:36:02.000000000 +0000 @@ -47,8 +47,8 @@ msgid "&Modify..." msgstr "&Modify..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "&Size:" @@ -556,7 +556,7 @@ msgid "&Underline" msgstr "&Underline" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "&Color:" @@ -723,7 +723,7 @@ msgid "&to:" msgstr "&to:" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 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:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "B&rowse..." @@ -2955,7 +2955,7 @@ msgid "Player" msgstr "Player" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "Device" @@ -3470,7 +3470,7 @@ msgid "Joysticks" msgstr "Joysticks" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "&Disable" @@ -6746,7 +6746,7 @@ msgid "Hyperlink Information" msgstr "Hyperlink Information" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "&Type:" @@ -7533,7 +7533,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8033,7 +8033,7 @@ msgid "&Open:" msgstr "&Open:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "&Browse..." @@ -8078,7 +8078,7 @@ msgid "Date deleted" msgstr "Date deleted" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Desktop" @@ -9504,7 +9504,7 @@ msgid "Digi&tal" msgstr "Digi&tal" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Font..." @@ -12876,7 +12876,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:139 +#: winecfg.rc:141 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 " @@ -12888,23 +12888,23 @@ "Free Software Foundation; either version 2.1 of the License, or (at your " "option) any later version." -#: winecfg.rc:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "Windows registration information" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "&Owner:" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "Organi&zation:" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "Application settings" -#: winecfg.rc:153 +#: winecfg.rc:155 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 @@ "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:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "&Add application..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "&Remove application" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "&Windows Version:" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "Window settings" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Automatically capture the &mouse in full-screen windows" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "Allow the window manager to &decorate the windows" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "Allow the &window manager to control the windows" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "&Emulate a virtual desktop" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "Desktop &size:" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "Screen resolution" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "This is a sample text using 10 point Tahoma" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "DLL overrides" -#: winecfg.rc:190 +#: winecfg.rc:192 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12972,55 +12972,55 @@ "(provided by Wine) or native (taken from Windows or provided by the " "application)." -#: winecfg.rc:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "&New override for library:" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "&Add" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "Existing &overrides:" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "&Edit..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "Edit Override" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "Load order" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "&Builtin (Wine)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "&Native (Windows)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "Bui<in then Native" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "Nati&ve then Builtin" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "Select Drive Letter" -#: winecfg.rc:230 +#: winecfg.rc:232 msgid "Drive configuration" msgstr "Drive configuration" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13028,107 +13028,103 @@ "Failed to connect to the mount manager, the drive configuration cannot be " "edited." -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "&Add..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "Auto&detect" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "&Path:" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "Show &Advanced" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "De&vice:" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "Bro&wse..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "&Label:" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "S&erial:" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "Show &dot files" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "Driver diagnostics" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "Defaults" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "Output device:" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "Voice output device:" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "Input device:" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "Voice input device:" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "&Test Sound" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 msgid "Speaker configuration" msgstr "Speaker configuration" -#: winecfg.rc:276 -msgid "Device:" -msgstr "Device:" - -#: winecfg.rc:278 +#: winecfg.rc:280 msgid "Speakers:" msgstr "Speakers:" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "Appearance" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "&Theme:" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "&Install theme..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "It&em:" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "C&olor:" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "Folders" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "&Link to:" @@ -13208,19 +13204,19 @@ msgid "(System default)" msgstr "(System default)" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "5.1 Surround" -#: winecfg.rc:90 +#: winecfg.rc:92 msgid "Quadraphonic" msgstr "Quadraphonic" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "Stereo" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "Mono" @@ -13337,127 +13333,127 @@ "\n" "Remember to click 'Add' in the Drives tab to create one!\n" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "Controls Background" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "Controls Text" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "Menu Background" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "Menu Text" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "Scrollbar" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "Selection Background" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "Selection Text" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "Tooltip Background" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "Tooltip Text" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "Window Background" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "Window Text" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "Active Title Bar" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "Active Title Text" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "Inactive Title Bar" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "Inactive Title Text" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "Message Box Text" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "Application Workspace" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "Window Frame" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "Active Border" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "Inactive Border" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "Controls Shadow" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "Gray Text" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "Controls Highlight" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "Controls Dark Shadow" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "Controls Light" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "Controls Alternate Background" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "Hot Tracked Item" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "Active Title Bar Gradient" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "Inactive Title Bar Gradient" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "Menu Highlight" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "Menu Bar" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/eo.po wine-staging-1.7.41~ubuntu12.04.1/po/eo.po --- wine-staging-1.7.40~ubuntu12.04.1/po/eo.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/eo.po 2015-04-18 23:36:02.000000000 +0000 @@ -52,8 +52,8 @@ msgid "&Modify..." msgstr "&Modifi..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "&Dimensio:" @@ -547,7 +547,7 @@ msgid "&Underline" msgstr "S&ubstreko" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "&Koloro:" @@ -714,7 +714,7 @@ msgid "&to:" msgstr "ĝis:" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 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:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "&Foliumi..." @@ -2879,7 +2879,7 @@ msgid "Player" msgstr "" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "" @@ -3383,7 +3383,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "&Malaktivigi" @@ -6677,7 +6677,7 @@ msgid "Hyperlink Information" msgstr "Ligilaj informoj" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "&Tipo:" @@ -7446,7 +7446,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "" @@ -7944,7 +7944,7 @@ msgid "&Open:" msgstr "&Malfermi:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "&Foliumi..." @@ -7989,7 +7989,7 @@ msgid "Date deleted" msgstr "Dato forigita" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Labortablo" @@ -9270,7 +9270,7 @@ msgid "Digi&tal" msgstr "&Cifereca" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Tiparo..." @@ -12372,7 +12372,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "La Wine-agordo en %s aktualiĝas, bonvolu atendi..." -#: winecfg.rc:139 +#: winecfg.rc:141 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 " @@ -12380,23 +12380,23 @@ "option) any later version." msgstr "" -#: winecfg.rc:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "Informoj pri vindoza registriĝo" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "&Estro:" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "Organi&zaĵo:" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "Programa agordo" -#: winecfg.rc:153 +#: winecfg.rc:155 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 " @@ -12406,222 +12406,216 @@ "langeto estas kunligata al la langetoj Bibliotekoj kaj Grafikaĵoj por " "permesi, ke vi ŝanĝu agordaĵojn tutsisteme aŭ ĉiuprograme." -#: winecfg.rc:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "&Aldoni programon..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "&Forigi programon" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "&Vindoza eldono:" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "Fenestra agordo" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Aŭtomate kapti la &muson en tutekranaj fenestroj" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "Permesi la fenestroadministrol &ornami la fenestrojn" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "Permesi la &fenestroadministrilon regi la fenestrojn" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "&Simuli virtualan labortablon" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "Labortabla &grando:" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "Ekrana distingivo" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "Jen ekzempla teksto kun 10-punkta Tahoma" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "DLL superregoj" -#: winecfg.rc:190 +#: winecfg.rc:192 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:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "&Aldoni" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "&Redakti..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "&Ena (Wino)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "&Indiĝena (Vindozo)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "&Post ena indiĝena" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "&Antaŭ ena indiĝena" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "Elekti aparatajn literojn" -#: winecfg.rc:230 +#: winecfg.rc:232 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Wine-agordo" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "&Aldoni..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "&Vojo:" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "Montri &Altnivele" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "&Aparato:" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "&Foliumi..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "&Etikedo:" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "&Seria:" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "Montri &punktajn dosierojn" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "Defaŭltojn" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "&Eliga dosiernomo:" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "Ena aparato:" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "&Provo sona" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 #, fuzzy #| msgid "Wine configuration" msgid "Speaker configuration" msgstr "Wine-agordo" -#: winecfg.rc:276 -#, fuzzy -#| msgid "De&vice:" -msgid "Device:" -msgstr "&Aparato:" - -#: winecfg.rc:278 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "Aspekto" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "&Etoso:" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "&Instali etoson..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "&Koloro:" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "Dosierujoj" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "" @@ -12701,21 +12695,21 @@ msgid "(System default)" msgstr "(Sistema defaŭlta)" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 #, fuzzy #| msgid "Graphics" msgid "Quadraphonic" msgstr "Grafikaĵoj" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -12822,127 +12816,127 @@ "Remember to click 'Add' in the Drives tab to create one!\n" msgstr "" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "Fenestraĵa fono" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "Fenestraĵa teksto" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "Rulumilo" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "Elektita teksto" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "Fenestra teksto" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "Aktiva titolzono" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "Programa laborspaco" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "Fenestra kadro" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "Regas ombrojn" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "Menuzono" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/es.po wine-staging-1.7.41~ubuntu12.04.1/po/es.po --- wine-staging-1.7.40~ubuntu12.04.1/po/es.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/es.po 2015-04-18 23:36:02.000000000 +0000 @@ -47,8 +47,8 @@ msgid "&Modify..." msgstr "&Modificar..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "Ta&maño:" @@ -568,7 +568,7 @@ msgid "&Underline" msgstr "&Subrayado" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "C&olor:" @@ -735,7 +735,7 @@ msgid "&to:" msgstr "&hasta:" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 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:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "Explo&rar..." @@ -2985,7 +2985,7 @@ msgid "Player" msgstr "Jugador" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "Dispositivo" @@ -3502,7 +3502,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "&Deshabilitar" @@ -6805,7 +6805,7 @@ msgid "Hyperlink Information" msgstr "Información sobre el enlace" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "&Tipo:" @@ -7665,7 +7665,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "ppp" @@ -8166,7 +8166,7 @@ msgid "&Open:" msgstr "&Abrir:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "&Examinar..." @@ -8211,7 +8211,7 @@ msgid "Date deleted" msgstr "Fecha de borrado" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Escritorio" @@ -9679,7 +9679,7 @@ msgid "Digi&tal" msgstr "&Digital" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Fuente..." @@ -13118,7 +13118,7 @@ msgstr "" "La configuración de Wine en %s está siendo actualizada, por favor espere..." -#: winecfg.rc:139 +#: winecfg.rc:141 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 " @@ -13130,23 +13130,23 @@ "Software Foundation; bajo la versión 2.1 de la licencia, o (a tu discreción) " "cualquier versión posterior." -#: winecfg.rc:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "Información de registro de Windows" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "&Propietario:" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "&Organización:" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "Configuración de las aplicaciones" -#: winecfg.rc:153 +#: winecfg.rc:155 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 " @@ -13156,55 +13156,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:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "&Añadir aplicación..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "&Eliminar aplicación" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "&Versión a imitar:" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "Configuración de las ventanas" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Capturar el &ratón automáticamente en pantalla completa" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "Permitir que el gestor de ventanas &decore las ventanas" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "Permitir que el gestor de ventanas &controle las ventanas" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "&Emular un escritorio virtual" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "Di&mensiones:" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "Resolución" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "Esto es un texto de ejemplo usando Tahoma de 10 puntos" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "Sustitución de DLLs" -#: winecfg.rc:190 +#: winecfg.rc:192 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -13214,57 +13214,57 @@ "interna (proporcionada por Wine) o bien nativa (obtenida de Windows o " "proporcionada por la aplicación)." -#: winecfg.rc:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "&Nueva sustitución de librería:" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "&Añadir" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "&Sustituciones existentes:" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "&Editar..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "Modificar sustitución" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "Orden de carga" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "&Interna (Wine)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "&Nativa (Windows)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "I&nterna y luego nativa" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "Nati&va y luego interna" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "Seleccionar letra de la unidad" -#: winecfg.rc:230 +#: winecfg.rc:232 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Configuración de Wine" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13272,111 +13272,105 @@ "Falló en la conexión al gestor de montaje, la configuración de unidades no " "se ha podido editar." -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "&Añadir..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "Auto&detectar" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "&Ruta:" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "Mostrar &avanzado" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "Dispositi&vo:" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "E&xaminar..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "Eti&queta:" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "&Nº serie:" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "Mostrar archivos &punto" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "Diagnósticos del controlador" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "Configuraciones por defecto" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "Dispositivo de salida:" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "Dispositivo de salida de voz:" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "Dispositivo de entrada:" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "Dispositivo de entrada de voz:" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "Probar &sonido" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 #, 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 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "Apariencia" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "&Tema:" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "&Instalar tema..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "&Elemento:" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "C&olor:" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "Carpeta" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "E&nlace a:" @@ -13456,21 +13450,21 @@ msgid "(System default)" msgstr "(Predeterminado del sistema)" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 #, fuzzy #| msgid "graphic" msgid "Quadraphonic" msgstr "gráfico" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -13590,127 +13584,127 @@ "\n" "¡Recuerde pulsar 'Añadir' en la pestaña Unidades para crear una!\n" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "Fondo del control" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "Texto del control" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "Fondo del menú" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "Texto del menú" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "Barra de desplazamiento" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "Fondo de la selección" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "Texto de la selección" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "Fondo del consejo" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "Texto del consejo" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "Fondo de la ventana" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "Texto de la ventana" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "Barra de título activa" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "Texto de barra de título activa" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "Barra de título inactiva" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "Texto de barra de título inactiva" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "Texto de cuadro de diálogo" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "Entorno de trabajo de la aplicación" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "Recuadro de la ventana" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "Borde activo" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "Borde inactivo" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "Sombra del control" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "Texto en gris" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "Resaltado del control" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "Sombra oscura del control" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "Parte iluminada del control" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "Fondo alternativo del control" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "Elemento resaltado" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "Gradiente barra título activa" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "Gradiente barra título inactiva" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "Resaltado del menú" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "Barra de menú" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/fa.po wine-staging-1.7.41~ubuntu12.04.1/po/fa.po --- wine-staging-1.7.40~ubuntu12.04.1/po/fa.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/fa.po 2015-04-18 23:36:02.000000000 +0000 @@ -43,8 +43,8 @@ msgid "&Modify..." msgstr "" -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "" @@ -557,7 +557,7 @@ msgid "&Underline" msgstr "" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "" @@ -730,7 +730,7 @@ msgid "&to:" msgstr "" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 msgid "Si&ze:" msgstr "" @@ -2213,7 +2213,7 @@ msgid "&File name:" msgstr "&پرونده" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "" @@ -2926,7 +2926,7 @@ msgid "Player" msgstr "" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "" @@ -3447,7 +3447,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "" @@ -6763,7 +6763,7 @@ msgid "Hyperlink Information" msgstr "اطلاعات" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "" @@ -7515,7 +7515,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "" @@ -8029,7 +8029,7 @@ msgid "&Open:" msgstr "&باز‌کردن...\tCtrl+O" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "" @@ -8076,7 +8076,7 @@ msgid "Date deleted" msgstr "&حذف\tDel" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "" @@ -9374,7 +9374,7 @@ msgid "Digi&tal" msgstr "" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&قلم‌ها..." @@ -12495,7 +12495,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "" -#: winecfg.rc:139 +#: winecfg.rc:141 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 " @@ -12503,251 +12503,247 @@ "option) any later version." msgstr "" -#: winecfg.rc:141 +#: winecfg.rc:143 #, fuzzy msgid "Windows registration information" msgstr "اطلاعات" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "" -#: winecfg.rc:144 +#: winecfg.rc:146 #, fuzzy msgid "Organi&zation:" msgstr "اطلاعات" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "" -#: winecfg.rc:153 +#: winecfg.rc:155 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:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "" -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:189 +#: winecfg.rc:191 #, fuzzy msgid "DLL overrides" msgstr "&ویرایش" -#: winecfg.rc:190 +#: winecfg.rc:192 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:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "" -#: winecfg.rc:197 +#: winecfg.rc:199 #, fuzzy msgid "&Edit..." msgstr "&ویرایش" -#: winecfg.rc:203 +#: winecfg.rc:205 #, fuzzy msgid "Edit Override" msgstr "&ویرایش" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "" -#: winecfg.rc:207 +#: winecfg.rc:209 #, fuzzy msgid "&Builtin (Wine)" msgstr "&درباره نت‌پد" -#: winecfg.rc:208 +#: winecfg.rc:210 #, fuzzy msgid "&Native (Windows)" msgstr "ذخیره &به نام..." -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "" -#: winecfg.rc:218 +#: winecfg.rc:220 #, fuzzy msgid "Select Drive Letter" msgstr "انتخاب &همه\tCtrl+A" -#: winecfg.rc:230 +#: winecfg.rc:232 #, fuzzy msgid "Drive configuration" msgstr "اطلاعات" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "" -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "" -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:267 #, fuzzy msgid "Defaults" msgstr "صفحه &p" -#: winecfg.rc:266 +#: winecfg.rc:268 #, fuzzy msgid "Output device:" msgstr "&پرونده" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 #, fuzzy msgid "Speaker configuration" msgstr "اطلاعات" -#: winecfg.rc:276 -msgid "Device:" -msgstr "" - -#: winecfg.rc:278 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "" -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "" @@ -12830,19 +12826,19 @@ msgid "(System default)" msgstr "" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 msgid "Quadraphonic" msgstr "" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -12947,134 +12943,134 @@ "Remember to click 'Add' in the Drives tab to create one!\n" msgstr "" -#: winecfg.rc:97 +#: winecfg.rc:99 #, fuzzy msgid "Controls Background" msgstr "ذخیره &به نام..." -#: winecfg.rc:98 +#: winecfg.rc:100 #, fuzzy msgid "Controls Text" msgstr "&محتویات" -#: winecfg.rc:100 +#: winecfg.rc:102 #, fuzzy msgid "Menu Background" msgstr "ذخیره &به نام..." -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "" -#: winecfg.rc:103 +#: winecfg.rc:105 #, fuzzy msgid "Selection Background" msgstr "ذخیره &به نام..." -#: winecfg.rc:104 +#: winecfg.rc:106 #, fuzzy msgid "Selection Text" msgstr "انتخاب &همه\tCtrl+A" -#: winecfg.rc:105 +#: winecfg.rc:107 #, fuzzy msgid "Tooltip Background" msgstr "ذخیره &به نام..." -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:109 #, fuzzy msgid "Window Background" msgstr "ذخیره &به نام..." -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/fi.po wine-staging-1.7.41~ubuntu12.04.1/po/fi.po --- wine-staging-1.7.40~ubuntu12.04.1/po/fi.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/fi.po 2015-04-18 23:36:02.000000000 +0000 @@ -46,8 +46,8 @@ msgid "&Modify..." msgstr "&Muokkaa..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "&Koko:" @@ -552,7 +552,7 @@ msgid "&Underline" msgstr "A&lleviivaus" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "&Väri:" @@ -719,7 +719,7 @@ msgid "&to:" msgstr "Mi&hin:" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 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:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "&Selaa..." @@ -2950,7 +2950,7 @@ msgid "Player" msgstr "Soitin" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "Laite" @@ -3465,7 +3465,7 @@ msgid "Joysticks" msgstr "Joystickit" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "&Poista käytöstä" @@ -6742,7 +6742,7 @@ msgid "Hyperlink Information" msgstr "Tietoja hyperlinkistä" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "&Tyyppi:" @@ -7527,7 +7527,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8025,7 +8025,7 @@ msgid "&Open:" msgstr "&Avaa:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "&Selaa..." @@ -8070,7 +8070,7 @@ msgid "Date deleted" msgstr "Poistoaika" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Työpöytä" @@ -9483,7 +9483,7 @@ msgid "Digi&tal" msgstr "Di&gitaalinen" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Fontti..." @@ -12855,7 +12855,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:139 +#: winecfg.rc:141 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 " @@ -12866,23 +12866,23 @@ "Foundationin GNU Lesser General Public License (LGPL) määrää joko lisenssin " "versiossa 2.1 tai (halutessasi) missä tahansa uudemmassa versiossa." -#: winecfg.rc:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "Windowsin rekisteröintitiedot" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "&Omistaja:" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "Or&ganisaatio:" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "Sovellusten asetukset" -#: winecfg.rc:153 +#: winecfg.rc:155 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 " @@ -12892,55 +12892,55 @@ "välilehti toimii yhdessä Kirjastot- ja Grafiikka-välilehtien kanssa sallien " "järjestelmän laajuiset ja sovelluskohtaiset asetukset." -#: winecfg.rc:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "&Lisää sovellus..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "&Poista sovellus" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "&Windowsin versio:" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "Ikkuna-asetukset" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Kaappaa hiiri kokoruututilassa automaattisesti" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "Salli ikkunointiohjelman määrätä ikkunoiden &tyyli" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "Salli ikkunointiohjelman &hallita ikkunoita" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "&Emuloi virtuaalista työpöytää" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "Työpöydän &koko:" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "Näytön resoluutio" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "Tämä on näyteteksti 10 pisteen Tahoma-fontilla" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "DLL-tiedostojen ohitukset" -#: winecfg.rc:190 +#: winecfg.rc:192 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12950,161 +12950,157 @@ "sisäänrakennettua (Winen tarjoamaa) tai natiivia (Windows-asennuksesta " "otettua tai sovelluksen tarjoamaa) versiota." -#: winecfg.rc:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "&Uusi ohitus kirjastolle:" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "&Lisää" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "&Olemassaolevat ohitukset:" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "&Muokkaa..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "Muokkaa ohitusta" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "&Latausjärjestys" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "&Sisäinen (Wine)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "&Natiivi (Windows)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "S&isäinen, sitten natiivi" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "Natiivi, sitten sisäinen" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "Valitse aseman kirjain" -#: winecfg.rc:230 +#: winecfg.rc:232 msgid "Drive configuration" msgstr "Asemien asetukset" -#: winecfg.rc:231 +#: winecfg.rc:233 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:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "&Lisää..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "&Hae automaattisesti" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "&Polku:" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "Nä&ytä lisäasetukset" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "Lai&te:" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "S&elaa..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "&Nimi:" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "&Sarjanumero:" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "Näytä p&istetiedostot" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "Ajurin diagnostiikka" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "Oletukset" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "Ulostulolaite:" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "Äänen ulostulolaite:" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "Sisääntulolaite:" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "Äänen sisääntulolaite:" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "&Testiääni" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 msgid "Speaker configuration" msgstr "Kaiutinasetukset" -#: winecfg.rc:276 -msgid "Device:" -msgstr "Laite:" - -#: winecfg.rc:278 +#: winecfg.rc:280 msgid "Speakers:" msgstr "Kaiuttimet:" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "Ulkonäkö" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "&Teema:" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "&Asenna teema..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "Ko&hta:" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "&Väri:" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "Kansiot" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "&Linkitä kohteeseen:" @@ -13184,19 +13180,19 @@ msgid "(System default)" msgstr "(Järjestelmän oletus)" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "5.1 Surround" -#: winecfg.rc:90 +#: winecfg.rc:92 msgid "Quadraphonic" msgstr "Neliääninen" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "Stereo" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "Mono" @@ -13313,127 +13309,127 @@ "\n" "Muista painaa Asemat-välilehdellä 'Lisää' ja luoda se!\n" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "Kontrollien tausta" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "Kontrollien teksti" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "Valikon tausta" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "Valikon teksti" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "Vierityspalkki" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "Valintojen tausta" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "Valintojen teksti" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "Työkaluvihjeen tausta" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "Työkaluvihjeen teksti" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "Ikkunan tausta" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "Ikkunan teksti" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "Aktiivinen otsikkopalkki" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "Aktiivinen otsikkoteksti" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "Epäaktiivinen otsikkopalkki" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "Epäaktiivinen otsikkoteksti" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "Viestilaatikon teksti" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "Ohjelmien työtila" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "Ikkunanreuna" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "Aktiivinen reunus" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "Epäaktiivinen reunus" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "Kontrollien varjo" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "Harmaa teksti" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "Kontrollien korostus" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "Kontrollien syvä varjo" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "Kontrollien valo" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "Kontrollien vaihtoehtotausta" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "Aktiivinen elementti" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "Aktiivisen otsikkopalkin liukuväri" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "Epäaktiivisen otsikkopalkin liukuväri" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "Valikon korostus" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "Valikkopalkki" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/fr.po wine-staging-1.7.41~ubuntu12.04.1/po/fr.po --- wine-staging-1.7.40~ubuntu12.04.1/po/fr.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/fr.po 2015-04-18 23:36:02.000000000 +0000 @@ -47,8 +47,8 @@ msgid "&Modify..." msgstr "&Modifier..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "T&aille :" @@ -560,7 +560,7 @@ msgid "&Underline" msgstr "&Souligné" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "&Couleur :" @@ -727,7 +727,7 @@ msgid "&to:" msgstr "&à :" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 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:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "Parcou&rir..." @@ -2977,7 +2977,7 @@ msgid "Player" msgstr "Lecteur" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "Périphérique" @@ -3494,7 +3494,7 @@ msgid "Joysticks" msgstr "Joysticks" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "&Désactiver" @@ -6779,7 +6779,7 @@ msgid "Hyperlink Information" msgstr "Informations sur l'hyperlien" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "&Type :" @@ -7580,7 +7580,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "ppp" @@ -8081,7 +8081,7 @@ msgid "&Open:" msgstr "&Ouvrir :" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "&Parcourir..." @@ -8126,7 +8126,7 @@ msgid "Date deleted" msgstr "Date de suppression" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Bureau" @@ -9593,7 +9593,7 @@ msgid "Digi&tal" msgstr "&Numérique" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Police..." @@ -13040,7 +13040,7 @@ "La configuration de Wine est en cours de mise à jour dans %s ; veuillez " "patienter..." -#: winecfg.rc:139 +#: winecfg.rc:141 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 " @@ -13052,23 +13052,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:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "Informations d'enregistrement de Windows" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "&Propriétaire :" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "&Organisation :" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "Paramètres des applications" -#: winecfg.rc:153 +#: winecfg.rc:155 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 " @@ -13079,55 +13079,55 @@ "permettre de changer des paramètres globaux ou par application dans ces " "onglets." -#: winecfg.rc:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "&Ajouter une application..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "&Supprimer une application" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "Version de &Windows :" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "Paramètres des fenêtres" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Capturer automatiquement la &souris dans les fenêtres plein écran" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "Permettre au gestionnaire de fenêtres de &décorer les fenêtres" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "Permettre au gestionnaire de fenêtres de &contrôler les fenêtres" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "É&muler un bureau virtuel" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "&Taille du bureau :" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "Résolution de l'écran" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "Ceci est un exemple utilisant du Tahoma 10 points" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "Remplacement de DLL" -#: winecfg.rc:190 +#: winecfg.rc:192 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -13138,55 +13138,55 @@ "intégrée (distribuée avec Wine) de chaque bibliothèque partagée (DLL) " "utilisée par un programme." -#: winecfg.rc:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "&Nouveau remplacement pour :" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "A&jouter" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "Remplacements existants :" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "&Modifier..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "Éditer le remplacement" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "Ordre de chargement" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "&intégrée (Wine)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "&native (Windows)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "i&ntégrée puis native" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "n&ative puis intégrée" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "Sélectionnez la lettre du lecteur" -#: winecfg.rc:230 +#: winecfg.rc:232 msgid "Drive configuration" msgstr "Configuration des lecteurs" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13194,107 +13194,103 @@ "N'a pu se connecter au gestionnaire de montage : la configuration du lecteur " "n'a pu être éditée." -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "&Ajouter..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "&Détection automatique" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "&Chemin :" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "Afficher les dé&tails" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "&Périphérique :" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "&Parcourir..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "É&tiquette :" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "N° de &série :" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "Montrer les fichiers cachés" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "Diagnostic de pilotes" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "Valeurs par défaut" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "Périphérique de sortie :" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "Périphérique de sortie voix :" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "Périphérique d'entrée :" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "Périphérique d'entrée voix :" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "&Tester le son" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 msgid "Speaker configuration" msgstr "Configuration des haut-parleurs" -#: winecfg.rc:276 -msgid "Device:" -msgstr "Périphérique :" - -#: winecfg.rc:278 +#: winecfg.rc:280 msgid "Speakers:" msgstr "Haut-parleurs :" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "Apparence" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "&Thème :" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "&Installer un thème..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "Élé&ment :" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "Couleu&r :" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "Dossiers" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "&Lier à :" @@ -13374,19 +13370,19 @@ msgid "(System default)" msgstr "(Valeur par défaut du système)" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "Ambiophonique 5.1" -#: winecfg.rc:90 +#: winecfg.rc:92 msgid "Quadraphonic" msgstr "Quadraphonique" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "Stéréo" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "Mono" @@ -13506,127 +13502,127 @@ "N'oubliez pas d'en recréer un en cliquant sur le bouton « Ajouter » dans " "l'onglet « Lecteurs » !\n" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "Contrôle l'arrière-plan" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "Contrôle le texte" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "Arrière-plan du menu" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "Texte du menu" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "Barre de défilement" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "Arrière-plan de la sélection" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "Texte de la sélection" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "Arrière-plan de l'infobulle" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "Texte de l'infobulle" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "Arrière-plan de la fenêtre" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "Texte de la fenêtre" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "Barre de titre active" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "Texte de la barre de titre active" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "Barre de titre inactive" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "Texte de la barre de titre inactive" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "Texte des boîtes à messages" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "Espace de travail de l'application" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "Cadre de la fenêtre" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "Bordure active" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "Bordure inactive" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "Ombre des contrôles" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "Texte gris" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "Surbrillance des contrôles" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "Ombre sombre des contrôles" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "Lumière des contrôles" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "Arrière-plan alternatif des contrôles" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "Élément actif" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "Dégradé de la barre de titre active" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "Dégradé de la barre de titre inactive" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "Surbrillance du menu" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "Barre de menu" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/he.po wine-staging-1.7.41~ubuntu12.04.1/po/he.po --- wine-staging-1.7.40~ubuntu12.04.1/po/he.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/he.po 2015-04-18 23:36:02.000000000 +0000 @@ -54,8 +54,8 @@ msgid "&Modify..." msgstr "&שינוי..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "&גודל:" @@ -561,7 +561,7 @@ msgid "&Underline" msgstr "קו &תחתי" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "&צבע:" @@ -730,7 +730,7 @@ msgid "&to:" msgstr "&עד:" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 msgid "Si&ze:" msgstr "&גודל:" @@ -2222,7 +2222,7 @@ msgid "&File name:" msgstr "&שם הקובץ:" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 #, fuzzy msgid "B&rowse..." msgstr "&עיון" @@ -2954,7 +2954,7 @@ msgid "Player" msgstr "נגינה" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "" @@ -3470,7 +3470,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 #, fuzzy msgid "&Disable" msgstr "Table" @@ -7021,7 +7021,7 @@ msgid "Hyperlink Information" msgstr "פרטי הקישור" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "&סוג:" @@ -7812,7 +7812,7 @@ msgid "b" msgstr "בתים" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "נק׳ לאינטש" @@ -8314,7 +8314,7 @@ msgid "&Open:" msgstr "&פתיחה:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "&עיון..." @@ -8359,7 +8359,7 @@ msgid "Date deleted" msgstr "תאריך המחיקה" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "שולחן העבודה" @@ -9697,7 +9697,7 @@ msgid "Digi&tal" msgstr "&דיגיטלי" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&גופן..." @@ -13086,7 +13086,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "התצורה של wine שב־%s מתעדכנת, נא להמתין..." -#: winecfg.rc:139 +#: winecfg.rc:141 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 " @@ -13094,270 +13094,266 @@ "option) any later version." msgstr "" -#: winecfg.rc:141 +#: winecfg.rc:143 #, fuzzy msgid "Windows registration information" msgstr "&פרטי הגרסה" -#: winecfg.rc:142 +#: winecfg.rc:144 #, fuzzy msgid "&Owner:" msgstr "בעלים" -#: winecfg.rc:144 +#: winecfg.rc:146 #, fuzzy msgid "Organi&zation:" msgstr "הנפשה" -#: winecfg.rc:152 +#: winecfg.rc:154 #, fuzzy msgid "Application settings" msgstr "יישומים" -#: winecfg.rc:153 +#: winecfg.rc:155 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:157 +#: winecfg.rc:159 #, fuzzy msgid "&Add application..." msgstr "יישום" -#: winecfg.rc:158 +#: winecfg.rc:160 #, fuzzy msgid "&Remove application" msgstr "יישום" -#: winecfg.rc:159 +#: winecfg.rc:161 #, fuzzy msgid "&Windows Version:" msgstr "גודל החלון" -#: winecfg.rc:167 +#: winecfg.rc:169 #, fuzzy msgid "Window settings" msgstr "טקסט בחלון" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "" -#: winecfg.rc:173 +#: winecfg.rc:175 #, fuzzy msgid "Desktop &size:" msgstr "שולחן העבודה" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:189 +#: winecfg.rc:191 #, fuzzy msgid "DLL overrides" msgstr "תצוגת ע&ריכה" -#: winecfg.rc:190 +#: winecfg.rc:192 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:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "הו&ספה" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "" -#: winecfg.rc:197 +#: winecfg.rc:199 #, fuzzy msgid "&Edit..." msgstr "&עריכה" -#: winecfg.rc:203 +#: winecfg.rc:205 #, fuzzy msgid "Edit Override" msgstr "תצוגת ע&ריכה" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "" -#: winecfg.rc:207 +#: winecfg.rc:209 #, fuzzy msgid "&Builtin (Wine)" msgstr "על &אודות Wine" -#: winecfg.rc:208 +#: winecfg.rc:210 #, fuzzy msgid "&Native (Windows)" msgstr "י&ציאה מ־Windows" -#: winecfg.rc:209 +#: winecfg.rc:211 #, fuzzy msgid "Bui<in then Native" msgstr "מובנה, טבעי" -#: winecfg.rc:210 +#: winecfg.rc:212 #, fuzzy msgid "Nati&ve then Builtin" msgstr "טבעי, מובנה" -#: winecfg.rc:218 +#: winecfg.rc:220 #, fuzzy msgid "Select Drive Letter" msgstr "טקסט הבחירה" -#: winecfg.rc:230 +#: winecfg.rc:232 #, fuzzy msgid "Drive configuration" msgstr "תצורת Wine" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:234 +#: winecfg.rc:236 #, fuzzy msgid "&Add..." msgstr "הו&ספה" -#: winecfg.rc:236 +#: winecfg.rc:238 #, fuzzy msgid "Auto&detect" msgstr "זיהוי אוטומטי" -#: winecfg.rc:239 +#: winecfg.rc:241 #, fuzzy msgid "&Path:" msgstr "ה&נתיב המלא:" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 #, fuzzy msgid "Show &Advanced" msgstr "הצגת אפשרויות מ&תקדמות" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "" -#: winecfg.rc:249 +#: winecfg.rc:251 #, fuzzy msgid "Bro&wse..." msgstr "&עיון" -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "" -#: winecfg.rc:256 +#: winecfg.rc:258 #, fuzzy msgid "Show &dot files" msgstr "אין עוד קבצים\n" -#: winecfg.rc:263 +#: winecfg.rc:265 #, fuzzy msgid "Driver diagnostics" msgstr "כלי ניתוח ה־DirectX" -#: winecfg.rc:265 +#: winecfg.rc:267 #, fuzzy msgid "Defaults" msgstr "הגדרת &בררות מחדל" -#: winecfg.rc:266 +#: winecfg.rc:268 #, fuzzy msgid "Output device:" msgstr "שם קובץ ה&פלט:" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 #, fuzzy msgid "Speaker configuration" msgstr "תצורת Wine" -#: winecfg.rc:276 -msgid "Device:" -msgstr "" - -#: winecfg.rc:278 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "" -#: winecfg.rc:289 +#: winecfg.rc:291 #, fuzzy msgid "&Install theme..." msgstr "התקנה..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "" -#: winecfg.rc:296 +#: winecfg.rc:298 #, fuzzy msgid "C&olor:" msgstr "&צבע" -#: winecfg.rc:302 +#: winecfg.rc:304 #, fuzzy msgid "Folders" msgstr "תיקייה" -#: winecfg.rc:305 +#: winecfg.rc:307 #, fuzzy msgid "&Link to:" msgstr "קישורים אל" @@ -13455,20 +13451,20 @@ msgid "(System default)" msgstr "נתיב המערכת" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 #, fuzzy msgid "Quadraphonic" msgstr "גרפיקה" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -13608,157 +13604,157 @@ "\n" "מומלץ שלא לשכוח ללחוץ על 'הוספה' בלשונית הכוננים כדי ליצור אחד כזה!\n" -#: winecfg.rc:97 +#: winecfg.rc:99 #, fuzzy msgid "Controls Background" msgstr "רקע הפקדים" -#: winecfg.rc:98 +#: winecfg.rc:100 #, fuzzy msgid "Controls Text" msgstr "טקסט הפקדים" -#: winecfg.rc:100 +#: winecfg.rc:102 #, fuzzy msgid "Menu Background" msgstr "רקע התפריט" -#: winecfg.rc:101 +#: winecfg.rc:103 #, fuzzy msgid "Menu Text" msgstr "טקסט בתפריט" -#: winecfg.rc:102 +#: winecfg.rc:104 #, fuzzy msgid "Scrollbar" msgstr "סרגל גלילה" -#: winecfg.rc:103 +#: winecfg.rc:105 #, fuzzy msgid "Selection Background" msgstr "רקע הבחירה" -#: winecfg.rc:104 +#: winecfg.rc:106 #, fuzzy msgid "Selection Text" msgstr "טקסט הבחירה" -#: winecfg.rc:105 +#: winecfg.rc:107 #, fuzzy msgid "Tooltip Background" msgstr "רקע חלונית העצה" -#: winecfg.rc:106 +#: winecfg.rc:108 #, fuzzy msgid "Tooltip Text" msgstr "טקסט חלונית עצה" -#: winecfg.rc:107 +#: winecfg.rc:109 #, fuzzy msgid "Window Background" msgstr "רקע החלון" -#: winecfg.rc:108 +#: winecfg.rc:110 #, fuzzy msgid "Window Text" msgstr "טקסט בחלון" -#: winecfg.rc:109 +#: winecfg.rc:111 #, fuzzy msgid "Active Title Bar" msgstr "כותרת החלון הפעיל" -#: winecfg.rc:110 +#: winecfg.rc:112 #, fuzzy msgid "Active Title Text" msgstr "טקסט בכותרת של פעיל" -#: winecfg.rc:111 +#: winecfg.rc:113 #, fuzzy msgid "Inactive Title Bar" msgstr "סרגל כותרת של בלתי פעיל" -#: winecfg.rc:112 +#: winecfg.rc:114 #, fuzzy msgid "Inactive Title Text" msgstr "טקסט כותרת של בלתי פעיל" -#: winecfg.rc:113 +#: winecfg.rc:115 #, fuzzy msgid "Message Box Text" msgstr "טקסט בתיבת הודעות" -#: winecfg.rc:114 +#: winecfg.rc:116 #, fuzzy msgid "Application Workspace" msgstr "מרחב היישומים" -#: winecfg.rc:115 +#: winecfg.rc:117 #, fuzzy msgid "Window Frame" msgstr "מסגרת החלון" -#: winecfg.rc:116 +#: winecfg.rc:118 #, fuzzy msgid "Active Border" msgstr "מסגרת של פעיל" -#: winecfg.rc:117 +#: winecfg.rc:119 #, fuzzy msgid "Inactive Border" msgstr "מסגרת של בלתי פעיל" -#: winecfg.rc:118 +#: winecfg.rc:120 #, fuzzy msgid "Controls Shadow" msgstr "הצללת הפקדים" -#: winecfg.rc:119 +#: winecfg.rc:121 #, fuzzy msgid "Gray Text" msgstr "טקסט אפור" -#: winecfg.rc:120 +#: winecfg.rc:122 #, fuzzy msgid "Controls Highlight" msgstr "הדגשת פקדים" -#: winecfg.rc:121 +#: winecfg.rc:123 #, fuzzy msgid "Controls Dark Shadow" msgstr "הפקדים בהצללה כהה" -#: winecfg.rc:122 +#: winecfg.rc:124 #, fuzzy msgid "Controls Light" msgstr "פקדים בהירים" -#: winecfg.rc:123 +#: winecfg.rc:125 #, fuzzy msgid "Controls Alternate Background" msgstr "צבע רקע הפקדים משתנה" -#: winecfg.rc:124 +#: winecfg.rc:126 #, fuzzy msgid "Hot Tracked Item" msgstr "פריט במעקב חם" -#: winecfg.rc:125 +#: winecfg.rc:127 #, fuzzy msgid "Active Title Bar Gradient" msgstr "מדרג שורת כותרת של חלון פעיל" -#: winecfg.rc:126 +#: winecfg.rc:128 #, fuzzy msgid "Inactive Title Bar Gradient" msgstr "מדרג שורת כותרת של חלון בלתי פעיל" -#: winecfg.rc:127 +#: winecfg.rc:129 #, fuzzy msgid "Menu Highlight" msgstr "הדגשה בתפריט" -#: winecfg.rc:128 +#: winecfg.rc:130 #, fuzzy msgid "Menu Bar" msgstr "סרגל תפריטים" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/hi.po wine-staging-1.7.41~ubuntu12.04.1/po/hi.po --- wine-staging-1.7.40~ubuntu12.04.1/po/hi.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/hi.po 2015-04-18 23:36:02.000000000 +0000 @@ -43,8 +43,8 @@ msgid "&Modify..." msgstr "" -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "" @@ -541,7 +541,7 @@ msgid "&Underline" msgstr "" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "" @@ -708,7 +708,7 @@ msgid "&to:" msgstr "" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 msgid "Si&ze:" msgstr "" @@ -2164,7 +2164,7 @@ msgid "&File name:" msgstr "" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "" @@ -2870,7 +2870,7 @@ msgid "Player" msgstr "" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "" @@ -3383,7 +3383,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "" @@ -6657,7 +6657,7 @@ msgid "Hyperlink Information" msgstr "" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "" @@ -7398,7 +7398,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "" @@ -7902,7 +7902,7 @@ msgid "&Open:" msgstr "" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "" @@ -7947,7 +7947,7 @@ msgid "Date deleted" msgstr "" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "" @@ -9216,7 +9216,7 @@ msgid "Digi&tal" msgstr "डिज़िटल (&t)" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "फ़ॉन्ट (&F)..." @@ -12289,7 +12289,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "" -#: winecfg.rc:139 +#: winecfg.rc:141 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 " @@ -12297,241 +12297,237 @@ "option) any later version." msgstr "" -#: winecfg.rc:141 +#: winecfg.rc:143 #, fuzzy msgid "Windows registration information" msgstr "फ़ॉन्ट (&F)..." -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "" -#: winecfg.rc:153 +#: winecfg.rc:155 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:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "" -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "" -#: winecfg.rc:190 +#: winecfg.rc:192 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:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "" -#: winecfg.rc:197 +#: winecfg.rc:199 #, fuzzy msgid "&Edit..." msgstr "फ़ॉन्ट (&F)..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "" -#: winecfg.rc:230 +#: winecfg.rc:232 msgid "Drive configuration" msgstr "" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "" -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "" -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 msgid "Speaker configuration" msgstr "" -#: winecfg.rc:276 -msgid "Device:" -msgstr "" - -#: winecfg.rc:278 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "" -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "" @@ -12611,19 +12607,19 @@ msgid "(System default)" msgstr "" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 msgid "Quadraphonic" msgstr "" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -12728,128 +12724,128 @@ "Remember to click 'Add' in the Drives tab to create one!\n" msgstr "" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "" -#: winecfg.rc:109 +#: winecfg.rc:111 #, fuzzy msgid "Active Title Bar" msgstr "बिना शीर्षकपट्टी के (&W)" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/hr.po wine-staging-1.7.41~ubuntu12.04.1/po/hr.po --- wine-staging-1.7.40~ubuntu12.04.1/po/hr.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/hr.po 2015-04-18 23:36:02.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:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "&Veličina:" @@ -555,7 +555,7 @@ msgid "&Underline" msgstr "Po&dcrtano" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "&Boja:" @@ -722,7 +722,7 @@ msgid "&to:" msgstr "&do:" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 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:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "N&ađi..." @@ -2950,7 +2950,7 @@ msgid "Player" msgstr "Reproduciratelj" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "Uređaj" @@ -3467,7 +3467,7 @@ msgid "Joysticks" msgstr "Joystici" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "&Isključi" @@ -6757,7 +6757,7 @@ msgid "Hyperlink Information" msgstr "Podaci o hipervezi" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "&Tip:" @@ -7583,7 +7583,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8084,7 +8084,7 @@ msgid "&Open:" msgstr "&Otvori:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "&Nađi..." @@ -8129,7 +8129,7 @@ msgid "Date deleted" msgstr "Datum brisanja" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Radna površina" @@ -9435,7 +9435,7 @@ msgid "Digi&tal" msgstr "&Digitalni" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Font..." @@ -12569,7 +12569,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:139 +#: winecfg.rc:141 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 " @@ -12580,23 +12580,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:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "Informacija o Windows registraciji" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "&Vlasnik:" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "Organi&zacija:" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "Postavke aplikacije" -#: winecfg.rc:153 +#: winecfg.rc:155 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 " @@ -12606,55 +12606,55 @@ "je povezan sa tabovima Biblioteke i Grafika kako bi dozvolio sistemske " "promjene ili za podešavanje aplikacija u tim istim tabovima." -#: winecfg.rc:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "&Dodaj aplikaciju..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "&Ukloni aplikaciju" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "&Verzija Windowsa:" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "Postavke prozora" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Automatski uhvati miš u ful&l-screen prozorima" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "Dozvoli upravitelju prozora &ukrašavanje prozora" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "Dozvoli upravitelju &prozora upravljanje prozorom" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "&Emulacija virutalnoe radne površine" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "&Veličina radne površine:" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "Rezolucija ekrana" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "Ovo je primjer teksta koristeći 10 Tahoma" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "DLL nadjačavanja" -#: winecfg.rc:190 +#: winecfg.rc:192 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12663,57 +12663,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:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "&Novo nadjačavanje biblioteke:" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "&Dodaj" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "Postojeća nad&jačavanja:" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "&Izmjeni..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "Izmjeni podešavanje" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "Redoslijed učitavanja" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "&Ugrađeno (Wine)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "&Nativno (Windows)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "Ugrađe&no pa nativno" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "Nativno &pa ugrađeno" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "Izaberi slovo pogona" -#: winecfg.rc:230 +#: winecfg.rc:232 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Wine konfiguracija" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -12721,111 +12721,105 @@ "Nije uspjelo povezivanje sa mount upraviteljem, konfiguracija pogona se ne " "može izmijeniti." -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "&Dodaj..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "Auto&detektiraj" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "&Putanja:" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "Pokaži &napredno" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "U&ređaj:" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "Na&đi..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "&Oznaka:" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "S&erijski:" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "Prikaži &dot datoteke" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "Driver dijagnostika" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "Podrazumijevano" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "Izlazni uređaj:" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "Izlazni uređaj za glas:" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "Ulazni uređaj:" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "Ulazni uređdaj za glas:" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "Is&probaj zvuk" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 #, 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 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "Izgled" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "&Tema:" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "&Instaliraj temu..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "Stavka:" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "B&oja:" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "Mape" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "&Veza do:" @@ -12905,21 +12899,21 @@ msgid "(System default)" msgstr "(Sistemska putanja)" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 #, fuzzy #| msgid "graphic" msgid "Quadraphonic" msgstr "grafika" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -13039,127 +13033,127 @@ "\n" "Kliknite 'Dodaj' u Pogoni tabu kako bi ga napravili!\n" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "Kontrole pozadine" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "Kontrole teksta" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "Pozadina menija" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "Tekst menija" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "Scrollbar" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "Odabir pozadine" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "Odabir teksta" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "Tooltip pozadine" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "Tooltip teksta" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "Pozadina prozora" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "Text prozora" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "Aktivni nazivni Bar" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "Aktivni nazivni Text" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "Neaktivni nazivni Bar" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "Neaktivni nazivni Text" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "Poruka Box Text" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "Radni prostor aplikacije" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "Okvir prozora" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "Aktivni rub" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "Neaktivni rub" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "Kontrola sjene" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "Sivi Text" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "Kontrola odabranog" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "Kontrola tamne sjene" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "Kontrola svijetla" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "Kontrola alternativne pozadine" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "Gradijent aktivne naslovne trake" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "Gradijent neaktivne naslovne trake" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "Isticanje izbornika" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "Traka izbornika" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/hu.po wine-staging-1.7.41~ubuntu12.04.1/po/hu.po --- wine-staging-1.7.40~ubuntu12.04.1/po/hu.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/hu.po 2015-04-18 23:36:02.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:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "&Méret:" @@ -569,7 +569,7 @@ msgid "&Underline" msgstr "&Aláhúzott" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "Szín:" @@ -736,7 +736,7 @@ msgid "&to:" msgstr "Ed&dig:" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 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:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "Tallózás..." @@ -2990,7 +2990,7 @@ msgid "Player" msgstr "Lejátszás" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "Eszköz" @@ -3509,7 +3509,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "Tiltá&s" @@ -6813,7 +6813,7 @@ msgid "Hyperlink Information" msgstr "Hiperhivatkozás információ" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "&Típus:" @@ -7613,7 +7613,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8114,7 +8114,7 @@ msgid "&Open:" msgstr "&Megnyitás:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "&Tallózás..." @@ -8159,7 +8159,7 @@ msgid "Date deleted" msgstr "Törlési dátum" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Asztal" @@ -9610,7 +9610,7 @@ msgid "Digi&tal" msgstr "Digi&tális" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Betűtípus..." @@ -13033,7 +13033,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:139 +#: winecfg.rc:141 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 " @@ -13045,23 +13045,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:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "Windows Regisztráció Információ" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "&Tulajdonos:" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "&Szervezet:" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "Alkalmazás beállítások" -#: winecfg.rc:153 +#: winecfg.rc:155 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 " @@ -13072,55 +13072,55 @@ "tegye a rendszerszintű vagy alkalmazásonkénti beállításokat ezeken a füleken " "is." -#: winecfg.rc:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "&Alkalmazás hozzáadás..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "Alkalmazás &eltávolítás" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "&Windows verzió:" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "Ablak beállítások" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Automatikusan érzékeli az &egeret teljes képernyős ablak esetén" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "Megengedi az ablak kezelőnek, hogy &díszítse az ablakot" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "Az ablak kezelő kezelheti az ablakokat" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "Virtuális asztal emulálása" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "Asztal &méret:" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "Képernyő felbontás" -#: winecfg.rc:182 +#: winecfg.rc:184 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:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "DLL felülbírálások" -#: winecfg.rc:190 +#: winecfg.rc:192 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -13130,57 +13130,57 @@ "hogy beépítettek (a Wine biztosítja), vagy natívak (a windowsból nyert, vagy " "az alkalmazás biztosítja)." -#: winecfg.rc:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "Új felülbírálás könyvtárhoz:" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "Hozzá&adás" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "Létező felülbírálások:" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "Sz&erkesztés..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "Felülbírálás szerkesztése" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "Betöltési sorrend" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "&Beépített (Wine)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "&Natív (Windows)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "Beépítet&t, natív" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "Natí&v, beépített" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "Válassza ki a meghajtó betűjelét" -#: winecfg.rc:230 +#: winecfg.rc:232 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Wine konfiguráció" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13188,111 +13188,105 @@ "Nem lehet kapcsolódni az eszközmenedzserhez, a meghajtó beállítást nem lehet " "szerkeszteni." -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "Hozzá&ad..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "Automata &felismerés" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "&Útvonal:" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "Haladó >>" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "Eszkö&z:" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "Tall&ózás..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "&Címke:" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "S&orozatszám:" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "Rejtett fájlok megjelenítése" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "Driver diagnosztika" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "Alapértékek" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "Kimeneti eszköz:" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "Hang kimeneti eszköz:" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "Bemeneti eszköz:" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "Hang bemeneti eszköz:" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "&Teszt hang" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 #, 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 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "Megjelenés" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "Téma:" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "Téma telepítése..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "&Elem:" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "Szín:" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "Rendszermappák" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "Mappa &útvonal:" @@ -13372,21 +13366,21 @@ msgid "(System default)" msgstr "(Rendszer alapértelmezett)" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 #, fuzzy #| msgid "graphic" msgid "Quadraphonic" msgstr "grafika" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -13507,127 +13501,127 @@ "Emlékeztetőül, klikkeljen a 'Hozzáad'-ra a meghajtók fülön, hogy létrehozzon " "egyet!\n" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "Vezérlők háttere" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "Vezérlők szövege" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "Menü háttér" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "Menü szöveg" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "Görgetősáv" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "Beállítás há&ttérként" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "Kijelölt szöveg" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "Tooltip háttér" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "Tooptip szöveg" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "Ablak háttér" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "Ablak szöveg" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "Aktív címsor" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "Aktív címsor szöveg" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "Inaktív címsor" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "Inaktív címsor szöveg" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "Üzenetablak szöveg" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "Alkalmazás munkaterület" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "Ablak keret" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "Aktív keret" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "Inaktív keret" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "Vezérlők árnyékolása" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "Szürke szöveg" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "Vezérlők kiemelése" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "Vezérlők sötét árnyékolása" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "Vezérlők fénybeállítása" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "Vezérlőnként változó hátter" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "Kiemeltsáv elem" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "Aktív ablakcímsor áttetszóség" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "Inaktív ablakcímsor áttetszóség" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "Menü kiemelés" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "Menüsor" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/it.po wine-staging-1.7.41~ubuntu12.04.1/po/it.po --- wine-staging-1.7.40~ubuntu12.04.1/po/it.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/it.po 2015-04-18 23:36:02.000000000 +0000 @@ -52,8 +52,8 @@ msgid "&Modify..." msgstr "&Modifica..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "Dimen&sione:" @@ -575,7 +575,7 @@ msgid "&Underline" msgstr "S&ottolineato" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "&Colore:" @@ -742,7 +742,7 @@ msgid "&to:" msgstr "&a:" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 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:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "&Naviga..." @@ -3000,7 +3000,7 @@ msgid "Player" msgstr "Riproduttore" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "Unità" @@ -3517,7 +3517,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "&Disabilita" @@ -6822,7 +6822,7 @@ msgid "Hyperlink Information" msgstr "Informazioni sull'iperlink" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "&Tipo:" @@ -7682,7 +7682,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8182,7 +8182,7 @@ msgid "&Open:" msgstr "&Apri:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "&Naviga..." @@ -8227,7 +8227,7 @@ msgid "Date deleted" msgstr "Data di eliminazione" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Scrivania" @@ -9689,7 +9689,7 @@ msgid "Digi&tal" msgstr "Digi&tale" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Carattere..." @@ -13120,7 +13120,7 @@ msgstr "" "La configurazione di Wine in %s è in aggiornamento, aspetta un momento..." -#: winecfg.rc:139 +#: winecfg.rc:141 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 " @@ -13132,23 +13132,23 @@ "dalla Free Software Foundation; sia la versione 2.1 della licenza, o (a tua " "scelta) qualunque altra versione più recente." -#: winecfg.rc:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "Informazioni di registrazione di Windows" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "&Proprietario:" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "&Organizzazione:" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "Impostazioni delle applicazioni" -#: winecfg.rc:153 +#: winecfg.rc:155 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 " @@ -13159,55 +13159,55 @@ "cambiare le impostazioni a livello di sistema o per applicazione pure in " "quelle schede." -#: winecfg.rc:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "&Aggiungi applicazione..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "&Rimuovi applicazione" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "Versione di Windows:" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "Impostazioni delle finestre" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Cattura automaticamente il &mouse nelle finestre a schermo pieno" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "Permetti al gestore delle finestre di &decorare le finestre" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "Permetti al &gestore delle finestre di controllare le finestre" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "&Emula un desktop virtuale" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "Dimensione del desktop:" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "Risoluzione dello schermo" -#: winecfg.rc:182 +#: winecfg.rc:184 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:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "Sostituzioni di DLL" -#: winecfg.rc:190 +#: winecfg.rc:192 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -13217,57 +13217,57 @@ "essere integrate (fornite da Wine) o native (prese da Windows o fornite " "dall'applicazione)." -#: winecfg.rc:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "&Nuova sostituzione per la libreria:" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "&Aggiungi" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "&Sostituzioni esistenti:" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "&Modifica..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "Modifica sostituzione" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "Ordine di caricamento" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "&Integrata (Wine)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "&Nativa (Windows)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "In&tegrata poi nativa" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "N&ativa poi integrata" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "Seleziona la lettera dell'unità" -#: winecfg.rc:230 +#: winecfg.rc:232 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Configurazione di Wine" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13275,111 +13275,105 @@ "Impossibile connettersi al gestore delle unità, la configurazione dell'unità " "non può essere modificata." -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "Aggiungi..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "&Rileva automaticamente" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "&Percorso:" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "Mostra controlli &avanzati" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "&Unità:" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "Na&viga..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "&Etichetta:" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "Numero &seriale:" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "Mostra file &dot" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "Diagnostica del driver" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "Valori predefiniti" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "Unità output:" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "Unità output voce:" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "Unità input:" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "Unità input voce:" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "&Test dell'audio" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 #, 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 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "Aspetto" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "&Tema:" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "&Installa un tema..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "Ogg&etto:" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "C&olore:" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "Cartelle" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "&Collega a:" @@ -13459,21 +13453,21 @@ msgid "(System default)" msgstr "(valore predefinito di sistema)" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 #, fuzzy #| msgid "graphic" msgid "Quadraphonic" msgstr "immagine" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -13594,127 +13588,127 @@ "\n" "Ricordati di cliccare 'Aggiungi' nella sezione Unità per crearne uno!\n" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "Controlli - Sfondo" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "Controlli - Testo" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "Menù - Sfondo" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "Menù - Testo" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "Barra di scorrimento" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "Selezione - Sfondo" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "Selezione - Testo" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "Tooltip - Sfondo" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "Tooltip - Testo" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "Finestra - Sfondo" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "Finestra - Testo" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "Titolo attivo - Barra" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "Titolo attivo - Testo" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "Titolo inattivo - Barra" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "Titolo inattivo - Testo" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "Testo della casella di Messaggio" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "Spazio di lavoro dell'applicazione" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "Frame della finestra" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "Bordo attivo" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "Bordo inattivo" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "Controlli - Ombre" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "Testo disabilitato" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "Controlli - Selezione" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "Controlli - Ombre scure" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "Controlli - Luce" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "Controlli - Sfondo alternativo" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "Oggetto Hot Tracked" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "Titolo attivo - Gradiente della barra" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "Titolo inattivo - Gradiente della barra" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "Menù - Selezione" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "Menù - Barra" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/ja.po wine-staging-1.7.41~ubuntu12.04.1/po/ja.po --- wine-staging-1.7.40~ubuntu12.04.1/po/ja.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/ja.po 2015-04-18 23:36:02.000000000 +0000 @@ -48,8 +48,8 @@ msgid "&Modify..." msgstr "変更(&M)..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "サイズ(&S):" @@ -558,7 +558,7 @@ msgid "&Underline" msgstr "下線(&U)" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "配色(&C):" @@ -725,7 +725,7 @@ msgid "&to:" msgstr "ページまで(&T):" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 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:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "参照(&R)..." @@ -2950,7 +2950,7 @@ msgid "Player" msgstr "プレイヤー" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "デバイス" @@ -3463,7 +3463,7 @@ msgid "Joysticks" msgstr "ジョイスティック" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "無効化(&D)" @@ -6742,7 +6742,7 @@ msgid "Hyperlink Information" msgstr "ハイパーリンクの情報" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "タイプ(&T):" @@ -7524,7 +7524,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8024,7 +8024,7 @@ msgid "&Open:" msgstr "名前(&O):" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "参照(&B)..." @@ -8069,7 +8069,7 @@ msgid "Date deleted" msgstr "削除日" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "デスクトップ" @@ -9493,7 +9493,7 @@ msgid "Digi&tal" msgstr "デジタル(&T)" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "フォント(&F)..." @@ -12870,7 +12870,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "%s にある Wine 設定を更新しています。しばらくお待ちください..." -#: winecfg.rc:139 +#: winecfg.rc:141 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 " @@ -12882,23 +12882,23 @@ "望によってはそれ以降の バージョン のうちどれか) の定める条件の下で 再頒布 ま" "たは 改変 することができます。" -#: winecfg.rc:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "Windows 登録情報" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "所有者(&O):" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "組織(&Z):" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "アプリケーション設定" -#: winecfg.rc:153 +#: winecfg.rc:155 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 " @@ -12908,55 +12908,55 @@ "ます。 このタブはライブラリ及びグラフィック各タブと連動しますので、システム全" "体の設定や 個別アプリケーションの設定の変更が行えます。" -#: winecfg.rc:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "アプリケーションを追加(&A)..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "アプリケーションを削除(&R)" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "&Windows バージョン:" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "ウィンドウ設定" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "フルスクリーン ウィンドウでマウスを自動的に捕捉する(&M)" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "ウィンドウ マネージャがウィンドウを装飾するのを許可する(&D)" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "ウィンドウ マネージャがウィンドウを制御するのを許可する(&W)" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "仮想デスクトップをエミュレートする(&D)" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "デスクトップの大きさ(&Z):" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "画面の解像度(&R)" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "10 ポイントの Thamoa による見本です" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "DLL オーバーライド" -#: winecfg.rc:190 +#: winecfg.rc:192 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12965,162 +12965,158 @@ "ダイナミック リンク ライブラリ(DLL)は個別に 内蔵版(Wine提供) または ネイティ" "ブ版(Windows もしくはアプリケーション提供のもの)を選ぶことができます。" -#: winecfg.rc:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "ライブラリの新規オーバーライド(&N):" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "追加(&A)" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "既存のオーバーライド(&O):" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "編集(&E)..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "オーバーライドの編集" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "読込順序" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "内蔵版(Wine)(&B)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "ネイティブ版(Windows)(&N)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "内蔵版後にネイティブ版(&L)" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "ネイティブ版後に内蔵版(&V)" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "ドライブ レターを選択" -#: winecfg.rc:230 +#: winecfg.rc:232 msgid "Drive configuration" msgstr "ドライブの設定" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" "マウント マネージャへの接続に失敗したため、ドライブ設定は変更できません。" -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "追加(&A)..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "自動検出(&D)" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "パス(&P):" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "詳細を表示(&A)" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "デバイス(&V):" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "参照(&W)..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "ラベル(&L):" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "シリアル番号(&E):" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "ドット ファイルを表示する" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "ドライバ診断" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "デフォルト" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "出力デバイス:" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "音声出力デバイス:" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "入力デバイス:" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "音声入力デバイス:" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "音をテスト(&T)" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 msgid "Speaker configuration" msgstr "スピーカー 設定" -#: winecfg.rc:276 -msgid "Device:" -msgstr "デバイス:" - -#: winecfg.rc:278 +#: winecfg.rc:280 msgid "Speakers:" msgstr "スピーカー:" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "外観" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "テーマ(&T):" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "テーマのインストール(&I)..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "項目(&E):" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "色(&O):" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "フォルダ" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "リンク先(&L):" @@ -13200,19 +13196,19 @@ msgid "(System default)" msgstr "(システム デフォルト)" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "5.1 サラウンド" -#: winecfg.rc:90 +#: winecfg.rc:92 msgid "Quadraphonic" msgstr "4 チャンネル ステレオ" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "ステレオ" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "モノラル" @@ -13332,127 +13328,127 @@ "C ドライブを作成するためにドライブ タブ内の [追加] を忘れずにクリックしてくだ" "さい!\n" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "コントロールの背景" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "コントロールのテキスト" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "メニューの背景" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "メニューのテキスト" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "スクロール バー" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "選択項目の背景" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "選択項目のテキスト" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "ヒントの背景" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "ヒントのテキスト" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "ウィンドウの背景" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "ウィンドウのテキスト" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "アクティブ タイトル バー" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "アクティブ タイトルのテキスト" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "非アクティブ タイトル バー" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "非アクティブ タイトルのテキスト" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "メッセージ ボックスのテキスト" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "アプリケーション作業域" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "ウィンドウの境界" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "アクティブ境界" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "非アクティブ境界" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "コントロールの影" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "灰色テキスト" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "コントロールの明るい部分" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "コントロールの暗い影" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "コントロールの明かり" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "コントロールの別の背景" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "選択中のアイテム" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "アクティブ タイトル バーの階調" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "非アクティブ タイトル バーの階調" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "メニューの明るい部分" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "メニュー バー" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/ko.po wine-staging-1.7.41~ubuntu12.04.1/po/ko.po --- wine-staging-1.7.40~ubuntu12.04.1/po/ko.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/ko.po 2015-04-18 23:36:02.000000000 +0000 @@ -46,8 +46,8 @@ msgid "&Modify..." msgstr "고치기(&M)..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "크기(&S):" @@ -556,7 +556,7 @@ msgid "&Underline" msgstr "밑줄(&U)" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "색상(&C):" @@ -723,7 +723,7 @@ msgid "&to:" msgstr "끝(&T):" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 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:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "찾기(&R)..." @@ -2954,7 +2954,7 @@ msgid "Player" msgstr "플레이어" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "장치" @@ -3469,7 +3469,7 @@ msgid "Joysticks" msgstr "조이스틱" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "사용하지 않음(&D)" @@ -6759,7 +6759,7 @@ msgid "Hyperlink Information" msgstr "하이퍼링크 정보" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "형식(&T):" @@ -7584,7 +7584,7 @@ msgid "b" msgstr "비트" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8082,7 +8082,7 @@ msgid "&Open:" msgstr "열기(&O):" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "찾기(&B)..." @@ -8127,7 +8127,7 @@ msgid "Date deleted" msgstr "지워진 날짜" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "바탕화면" @@ -9537,7 +9537,7 @@ msgid "Digi&tal" msgstr "디지털(&T)" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "글꼴(&F)..." @@ -12909,7 +12909,7 @@ msgstr "" "Wine 설정 %s 이 업데이트되는 중입니다, 잠시만 기다려주시기 바랍니다..." -#: winecfg.rc:139 +#: winecfg.rc:141 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 " @@ -12921,23 +12921,23 @@ "서 이 프로그램을 재배포 또는 수정할 수 있습니다. 라이센스의 버전은 2.1 또는 " "(선택적으로) 그 이후 버전을 따르면 됩니다." -#: winecfg.rc:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "윈도우즈 등록 정보" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "소유자(&O):" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "단체(&Z):" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "응용프로그램 설정" -#: winecfg.rc:153 +#: winecfg.rc:155 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 " @@ -12947,55 +12947,55 @@ "이 탭은 시스템 전체뿐만 아니라 해당 탭의 각각의 응용프로그램 설정을 변경할 " "수 있도록 라이브러리 및 그래픽 탭에 연결되어 있습니다." -#: winecfg.rc:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "응용프로그램 추가(&A)..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "응용프로그램 제거(&R)" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "윈도우즈 버젼(&W):" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "창 설정" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "전체 화면 창에서 자동으로 마우스 잡기(&M)" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "창관리자가 Wine창을 꾸미도록 함(&D)" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "창관리자가 Wine창을 관리하도록 함(&W)" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "가상 데스크탑 흉내내기(&E)" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "데스크탑 크기(&S):" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "화면 해상도" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "DLL 덮어쓰기" -#: winecfg.rc:190 +#: winecfg.rc:192 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -13004,168 +13004,162 @@ "동적 링크 라이브러리는 개별적으로 내장(Wine에 의해 제공)이나 네이티브(윈도우" "즈나 프로그램에 의해 제공)으로 지정될수 있습니다." -#: winecfg.rc:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "새로 덮어쓸 라이브러리(&N):" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "더하기(&A)" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "현재 덮어쓰기 목록(&O):" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "고치기(&E)..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "덮어쓰기 고치기" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "불러오기 순서" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "내장(&B)(Wine)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "네이티브(&N)(Win)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "내장, 네이티브(&L)" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "네이티브, 내장(&V)" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "드라이브 문자 선택" -#: winecfg.rc:230 +#: winecfg.rc:232 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Wine 설정" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" "연결 관리자가 연결하는 데 실패함, 이 드라이브 설정을 수정될 수 없습니다." -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "추가(&A)..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "자동찾기(&D)" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "경로(&P):" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "추가옵션 보이기(&A)" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "장치(&V):" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "찾아보기(&W)..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "라벨(&L):" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "시리얼(&E):" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "숨은 파일 보이기(&D)" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "드라이버 진단" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "기본" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "출력 장치:" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "음성 출력 장치:" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "입력 장치:" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "음성 입력 장치:" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "소리 테스트(&T)" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 #, fuzzy #| msgid "Wine configuration" msgid "Speaker configuration" msgstr "Wine 설정" -#: winecfg.rc:276 -#, fuzzy -#| msgid "De&vice:" -msgid "Device:" -msgstr "장치(&V):" - -#: winecfg.rc:278 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "외양" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "테마(&T):" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "테마 설치(&I)..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "목록(&E):" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "색상(&O):" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "폴더" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "연결 위치(&L):" @@ -13245,21 +13239,21 @@ msgid "(System default)" msgstr "(시스템 기본)" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 #, fuzzy #| msgid "graphic" msgid "Quadraphonic" msgstr "그림" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -13379,127 +13373,127 @@ "\n" "드라이브 탭에서 '추가'를 클릭해서 만드는 것을 잊지 마십시오!\n" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "컨트롤 배경" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "컨트롤 문자" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "메뉴 배경" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "메뉴 문자" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "목록바" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "선택된 배경" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "선택된 문자" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "도구팁 배경" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "도구팁 문자" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "창 배경" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "창 문자" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "활성된 제목 막대" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "활성된 제목 문자" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "비활성된 제목 막대" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "비활성된 제목 문자" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "메세지 상자 텍스트" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "어플리케이션 작업공간" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "창 프레임" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "활성화된 창틀" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "비 활성화된 창틀" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "컨트롤 그함지" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "회색 문자" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "컨트롤 하이라이트" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "컨트롤 어두운 그림자" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "컨트롤 밝음" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "컨트롤 바뀔때 배경" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "핫 트랙된 아이템" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "활성화된 제목 바 색깔 변화" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "비활성화된 제목바 색깔 변화" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "메뉴 하이라이트" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "메뉴바" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/lt.po wine-staging-1.7.41~ubuntu12.04.1/po/lt.po --- wine-staging-1.7.40~ubuntu12.04.1/po/lt.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/lt.po 2015-04-18 23:36:02.000000000 +0000 @@ -49,8 +49,8 @@ msgid "&Modify..." msgstr "&Modifikuoti..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "&Dydis:" @@ -557,7 +557,7 @@ msgid "&Underline" msgstr "&Pabraukimas" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "&Spalva:" @@ -724,7 +724,7 @@ msgid "&to:" msgstr "iki:" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 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:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "Pari&nkti..." @@ -2959,7 +2959,7 @@ msgid "Player" msgstr "Žaidėjas" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "Įtaisas" @@ -3474,7 +3474,7 @@ msgid "Joysticks" msgstr "Vairasvirtės" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "&Išjungti" @@ -6752,7 +6752,7 @@ msgid "Hyperlink Information" msgstr "Saito informacija" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "&Tipas:" @@ -7537,7 +7537,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "tašk./col." @@ -8037,7 +8037,7 @@ msgid "&Open:" msgstr "&Atverti:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "&Parinkti..." @@ -8082,7 +8082,7 @@ msgid "Date deleted" msgstr "Pašalinimo data" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Darbalaukis" @@ -9509,7 +9509,7 @@ msgid "Digi&tal" msgstr "Skai&tmeninis" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "Š&riftas..." @@ -12890,7 +12890,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "„Wine“ konfigūracija (%s) atnaujinama, palaukite..." -#: winecfg.rc:139 +#: winecfg.rc:141 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 " @@ -12902,23 +12902,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:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "„Windows“ registracijos informacija" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "Savininkas:" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "Organizacija:" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "Programų nuostatos" -#: winecfg.rc:153 +#: winecfg.rc:155 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 " @@ -12929,55 +12929,55 @@ "galima keisti sistemines nuostatas ar kiekvienos programos nuostatas " "atskirai." -#: winecfg.rc:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "&Pridėti programą..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "Pa&šalinti programą" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "„Windows“ &versija:" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "Langų nuostatos" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Automatiškai &užvaldyti pelę viso ekrano languose" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "Leisti langų tvarkytuvei &dekoruoti langus" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "Leisti langų tvarkytuvei &kontroliuoti langus" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "&Emuliuoti virtualų darbalaukį" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "Darbalaukio d&ydis:" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "Ekrano skiriamoji geba" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "Tai yra pavyzdinis tekstas naudojantis 10 taškų Tahoma" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "DLL nustelbimai" -#: winecfg.rc:190 +#: winecfg.rc:192 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12986,55 +12986,55 @@ "Kiekviena dinaminė biblioteka gali būti įtaisyta (pateikta su „Wine“) ar " "sava (paimta iš „Windows“ ar pateikta programos)." -#: winecfg.rc:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "&Naujas nustelbimas bibliotekai:" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "&Pridėti" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "Egzistuojantys n&ustelbimai:" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "&Redaguoti..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "Redaguoti nustelbimą" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "Įkėlimo tvarka" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "&Įtaisyta („Wine“)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "&Sava („Windows“)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "Į&taisyta, po to sava" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "S&ava, po to įtaisyta" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "Parinkite disko raidę" -#: winecfg.rc:230 +#: winecfg.rc:232 msgid "Drive configuration" msgstr "Diskų konfigūravimas" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13042,107 +13042,103 @@ "Nepavyko prisijungti prie diskų tvarkytuvės, diskų konfigūracija negali būti " "redaguojama." -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "&Pridėti..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "Automatiškai &aptikti" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "&Kelias:" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "Rodyti papil&domas" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "Įtai&sas:" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "Parinkti..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "Va&rdas:" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "N&umeris:" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "Rodyti &failus su tašku" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "Tvarkyklės diagnostika" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "Numatytosios reikšmės" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "Išvedimo įtaisas:" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "Balso išvedimo įtaisas:" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "Įvedimo įtaisas:" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "Balso įvedimo įtaisas:" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "&Testuoti garsą" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 msgid "Speaker configuration" msgstr "Garsiakalbių konfigūravimas" -#: winecfg.rc:276 -msgid "Device:" -msgstr "Įtaisas:" - -#: winecfg.rc:278 +#: winecfg.rc:280 msgid "Speakers:" msgstr "Garsiakalbiai:" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "Išvaizda" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "&Apipavidalinimas:" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "&Įdiegti apipavidalinimą..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "&Elementas:" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "S&palva:" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "Aplankai" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "S&usieti su:" @@ -13222,19 +13218,19 @@ msgid "(System default)" msgstr "(Sistemos numatytasis)" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "Erdviniai 5.1" -#: winecfg.rc:90 +#: winecfg.rc:92 msgid "Quadraphonic" msgstr "Kvadrofoniniai" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "Stereofoniniai" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "Monofoninis" @@ -13352,127 +13348,127 @@ "\n" "Nepamirškite paspausti „Pridėti“ diskų kortelėje, kad jį sukurtumėte!\n" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "Valdiklių fonas" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "Valdiklių tekstas" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "Meniu fonas" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "Meniu tekstas" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "Slankjuostė" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "Žymėjimo fonas" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "Žymėjimo tekstas" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "Patarimo fonas" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "Patarimo tekstas" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "Lango fonas" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "Lango tekstas" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "Aktyvi lango antraštės juosta" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "Aktyvios lango antraštės tekstas" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "Neaktyvi lango antraštės juosta" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "Neaktyvios lango antraštės tekstas" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "Pranešimo lango tekstas" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "Programos erdvė" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "Lango rėmelis" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "Aktyvi kraštinė" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "Neaktyvi kraštinė" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "Valdiklių šešėlis" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "Pilkas tekstas" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "Valdiklių paryškinimas" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "Valdiklių tamsus šešėlis" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "Valdiklių šviesumas" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "Valdiklių alternatyvus fonas" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "Sekamas elementas" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "Aktyvios lango antraštės gradientas" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "Neaktyvios lango antraštės gradientas" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "Meniu paryškinimas" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "Meniu juosta" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/ml.po wine-staging-1.7.41~ubuntu12.04.1/po/ml.po --- wine-staging-1.7.40~ubuntu12.04.1/po/ml.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/ml.po 2015-04-18 23:36:02.000000000 +0000 @@ -43,8 +43,8 @@ msgid "&Modify..." msgstr "" -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "" @@ -541,7 +541,7 @@ msgid "&Underline" msgstr "" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "" @@ -708,7 +708,7 @@ msgid "&to:" msgstr "" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 msgid "Si&ze:" msgstr "" @@ -2164,7 +2164,7 @@ msgid "&File name:" msgstr "" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "" @@ -2870,7 +2870,7 @@ msgid "Player" msgstr "" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "" @@ -3383,7 +3383,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "" @@ -6657,7 +6657,7 @@ msgid "Hyperlink Information" msgstr "" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "" @@ -7398,7 +7398,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "" @@ -7902,7 +7902,7 @@ msgid "&Open:" msgstr "" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "" @@ -7947,7 +7947,7 @@ msgid "Date deleted" msgstr "" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "" @@ -9216,7 +9216,7 @@ msgid "Digi&tal" msgstr "_ഡിജിറ്റല്‍" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "_അക്ഷരസഞ്ചയം..." @@ -12289,7 +12289,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "" -#: winecfg.rc:139 +#: winecfg.rc:141 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 " @@ -12297,241 +12297,237 @@ "option) any later version." msgstr "" -#: winecfg.rc:141 +#: winecfg.rc:143 #, fuzzy msgid "Windows registration information" msgstr "_അക്ഷരസഞ്ചയം..." -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "" -#: winecfg.rc:153 +#: winecfg.rc:155 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:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "" -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "" -#: winecfg.rc:190 +#: winecfg.rc:192 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:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "" -#: winecfg.rc:197 +#: winecfg.rc:199 #, fuzzy msgid "&Edit..." msgstr "_അക്ഷരസഞ്ചയം..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "" -#: winecfg.rc:230 +#: winecfg.rc:232 msgid "Drive configuration" msgstr "" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "" -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "" -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 msgid "Speaker configuration" msgstr "" -#: winecfg.rc:276 -msgid "Device:" -msgstr "" - -#: winecfg.rc:278 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "" -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "" @@ -12611,19 +12607,19 @@ msgid "(System default)" msgstr "" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 msgid "Quadraphonic" msgstr "" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -12728,128 +12724,128 @@ "Remember to click 'Add' in the Drives tab to create one!\n" msgstr "" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "" -#: winecfg.rc:109 +#: winecfg.rc:111 #, fuzzy msgid "Active Title Bar" msgstr "റ്റൈറ്റില്‍ബാര്‍ _ഇല്ലാതെ" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/nb_NO.po wine-staging-1.7.41~ubuntu12.04.1/po/nb_NO.po --- wine-staging-1.7.40~ubuntu12.04.1/po/nb_NO.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/nb_NO.po 2015-04-18 23:36:02.000000000 +0000 @@ -48,8 +48,8 @@ msgid "&Modify..." msgstr "&Endre..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "Størrelse:" @@ -556,7 +556,7 @@ msgid "&Underline" msgstr "&Understreket" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "Farge:" @@ -723,7 +723,7 @@ msgid "&to:" msgstr "&Til:" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 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:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "&Bla …" @@ -2968,7 +2968,7 @@ msgid "Player" msgstr "Avspiller" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "Enhet" @@ -3486,7 +3486,7 @@ msgid "Joysticks" msgstr "Styrespaker" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "&Deaktiver" @@ -6774,7 +6774,7 @@ msgid "Hyperlink Information" msgstr "Informasjon om koblingen" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "&Type:" @@ -7601,7 +7601,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8101,7 +8101,7 @@ msgid "&Open:" msgstr "&Åpne:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "&Bla..." @@ -8146,7 +8146,7 @@ msgid "Date deleted" msgstr "Dato slettet" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Skrivebord" @@ -9565,7 +9565,7 @@ msgid "Digi&tal" msgstr "Digi&tal" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "Skri&ft..." @@ -12934,7 +12934,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "Vent mens Wine-oppsettet i «%s» blir oppdatert..." -#: winecfg.rc:139 +#: winecfg.rc:141 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 " @@ -12946,23 +12946,23 @@ "Foundation», enten versjon 2.1 av denne Lisensen, eller (hvis du ønsker det) " "en nyere versjon." -#: winecfg.rc:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "Brukerinformasjon for Windows" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "Eier:" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "Organisasjon:" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "Programminnstillinger" -#: winecfg.rc:153 +#: winecfg.rc:155 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 " @@ -12972,55 +12972,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:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "Legg til progr&am..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "Fje&rn program" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "&Windows-versjon:" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "Vinduinnstillinger" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Fang &musen automatisk i fullskjermvinduer" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "Tillat vindusbehandleren å &dekorere vinduer" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "Tillat vindusbehandleren å kontrollere vinduene" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "Vis et virtuelt skrivebord" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "Størrelse:" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "Skjermoppløsning" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "Forhåndsvisning av tekst med 10 punkters Tahoma" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "DLL-overstyring" -#: winecfg.rc:190 +#: winecfg.rc:192 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -13030,55 +13030,55 @@ "innebygget (fra Wine) eller innfødt (tatt fra Windows eller gitt av et " "program)." -#: winecfg.rc:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "Ny overstyring for bibliotek:" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "&Legg til" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "Gjeldende overstyringer:" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "R&ediger..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "Rediger overstyring" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "Lastingsrekkefølge" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "Inne&bygget (Wine)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "I&nnfødt (Windows)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "&Innebygget så innfødt" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "Innfdø&dt så innebygget" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "Velg stasjonsbokstav" -#: winecfg.rc:230 +#: winecfg.rc:232 msgid "Drive configuration" msgstr "Oppsett av stasjoner" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13086,111 +13086,105 @@ "Klarte ikke koble til monteringsbehandleren; diskstasjonene kan derfor ikke " "redigeres." -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "&Legg til..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "&Automatisk" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "&Sti:" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "Avansert visning" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "En&het:" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "&Bla..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "Vo&lumnavn:" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "S&erienummer:" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "Vis .-filer" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "Driverdiagnostikk" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "Standardverdier" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "Ut-enhet:" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "Ut-enhet for tale:" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "Inn-enhet:" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "Inn-enhet for tale:" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "&Test" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 #, 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 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "Utseende" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "Tema:" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "Installer tema..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "Element:" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "Farge:" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "Mappe" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "Pek til:" @@ -13270,21 +13264,21 @@ msgid "(System default)" msgstr "(Standard)" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 #, fuzzy #| msgid "graphic" msgid "Quadraphonic" msgstr "grafikk" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -13401,127 +13395,127 @@ "\n" "Husk å trykke «Legg til» i stasjonsfanen for å lage en!\n" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "Kontrollerbakgrunn" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "Kontrollertekst" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "Menybakgrunn" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "Menytekst" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "Rullefelt" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "Bakgrunn for merking" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "Merket tekst" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "Bakgrunn for verktøytips" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "Tekst i verktøytips" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "Vindubakgrunn" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "Vinduteksts" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "Aktiv tittellinje" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "Aktiv titteltekst" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "Inaktiv tittellinje" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "Inaktiv titteltekst" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "Meldingsvindutekst" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "Arbeidsområde i program" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "Visrusramme" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "Aktiv kant" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "Inaktiv kant" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "Kontrollerskygge" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "Grå tekst" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "Merket kontroller" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "Mørk skygge i kontroller" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "Kontrollerlys" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "Bakgrunn for skiftende kontroller" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "Merket element" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "Gradient for aktiv tittellinje" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "Gradient for inaktiv tittellinje" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "Menymerking" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "Menylinje" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/nl.po wine-staging-1.7.41~ubuntu12.04.1/po/nl.po --- wine-staging-1.7.40~ubuntu12.04.1/po/nl.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/nl.po 2015-04-18 23:36:02.000000000 +0000 @@ -47,8 +47,8 @@ msgid "&Modify..." msgstr "&Wijzigen..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "Tekstgrootte:" @@ -558,7 +558,7 @@ msgid "&Underline" msgstr "&Onderstrepen" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "Kleuren:" @@ -727,7 +727,7 @@ msgid "&to:" msgstr "&t/m:" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 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:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "Bladeren..." @@ -2983,7 +2983,7 @@ msgid "Player" msgstr "Speler" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "Apparaat" @@ -3501,7 +3501,7 @@ msgid "Joysticks" msgstr "Joysticks" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "&Uitzetten" @@ -6795,7 +6795,7 @@ msgid "Hyperlink Information" msgstr "Webverwijzing Informatie" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "&Soort:" @@ -7657,7 +7657,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8157,7 +8157,7 @@ msgid "&Open:" msgstr "&Openen:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "&Bladeren..." @@ -8202,7 +8202,7 @@ msgid "Date deleted" msgstr "Datum verwijderd" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Bureaublad" @@ -9646,7 +9646,7 @@ msgid "Digi&tal" msgstr "&Digitaal" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Lettertype..." @@ -13083,7 +13083,7 @@ msgstr "" "De Wine configuratie in %s wordt bijgewerkt, even geduld alstublieft..." -#: winecfg.rc:139 +#: winecfg.rc:141 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 " @@ -13095,23 +13095,23 @@ "gepubliceerd door de Free Software Foundation; versie 2.1 van de licentie, " "of (naar keuze) een latere versie." -#: winecfg.rc:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "Windows registratie-informatie" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "Eigenaar:" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "Organisatie:" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "Toepassingsinstellingen" -#: winecfg.rc:153 +#: winecfg.rc:155 #, fuzzy msgid "" "Wine can mimic different Windows versions for each application. This tab is " @@ -13123,56 +13123,56 @@ "systeemwijde als applicatiespecifieke instellingen in deze tabs mogelijk te " "maken." -#: winecfg.rc:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "Toepassing toevoegen..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "Toepassing verwijderen" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "Windowsversie:" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "Vensterinstellingen" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Indien volledig scherm, vang de &muis automatisch af" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "Laat de window manager de vensters &decoreren" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "Laat de window manager de vensters beheren" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "Emuleer een virtueel bureaublad" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "Afmetingen:" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "Schermresolutie" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "Dit is een tekstvoorbeeld in Tahoma met puntgrootte 10" -#: winecfg.rc:189 +#: winecfg.rc:191 #, fuzzy msgid "DLL overrides" msgstr "DLL Overrides " -#: winecfg.rc:190 +#: winecfg.rc:192 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -13182,57 +13182,57 @@ "dan wel \"native\" moet zijn. De instelling voor \"*\" geldt voor alle niet " "expliciet genoemde bestanden." -#: winecfg.rc:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "Nieuwe override voor dll:" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "&Toevoegen" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "Bestaande overrides:" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "&Bewerken..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "Override bewerken" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "Laadvolgorde" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "Inge&bouwd (Wine)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "Wi&ndows (MSWindows)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "Bui<in dan Native" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "Nati&ve dan Builtin" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "Selecteer Stationsletter" -#: winecfg.rc:230 +#: winecfg.rc:232 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Wine configuratie" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13240,111 +13240,105 @@ "Kon niet verbinden met de mount manager, de schijfconfiguratie kan niet " "worden bewerkt." -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "&Toevoegen..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "&Automatisch instellen" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "&Pad:" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "Toon uitgebreid" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "A&pparaat:" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "B&laderen..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "&Naam:" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "S&erienummer:" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "Toon \".\" bestanden" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "Aansturingsdiagnostiek" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "Standaardinstellingen" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "Uitvoer apparaat:" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "Stemuitvoer:" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "Invoer apparaat:" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "Steminvoer:" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "Geluidstest" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 #, 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 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "Uiterlijk" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "Thema:" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "Thema installeren..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "Onderdeel:" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "Kleur:" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "Mappen" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "Verwijs naar:" @@ -13424,21 +13418,21 @@ msgid "(System default)" msgstr "(Standaardinstelling van het systeem)" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 #, fuzzy #| msgid "graphic" msgid "Quadraphonic" msgstr "grafisch" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -13560,127 +13554,127 @@ "Vergeet niet om m.b.v. de knop 'Toevoegen' in de Stations tab een C station " "aan te maken!\n" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "Instellingen Achtergrond" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "Instellingen Tekst" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "Menu Achtergrond" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "Menu Tekst" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "Scrollbalk" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "Selectie Achtergrond" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "Selectie Tekst" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "Tooltip Achtergrond" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "Tooltip Tekst" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "Venster Achtergrond" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "Venster Tekst" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "Actieve Titelbalk" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "Actieve Titeltekst" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "Inactieve Titelbalk" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "Inactieve Titeltekst" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "Meldingsvenster Tekst" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "Applicatie Werkruimte" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "Vensterraamwerk" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "Actieve Rand" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "Inactieve Rand" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "Knopschaduw" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "Grijze Tekst" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "Knoppen Gemarkeerd" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "Knoppen Donkere Schaduw" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "Knoppen Licht" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "Knoppen Alternatieve Achtergrond" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "Hot-Tracked Onderdeel" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "Actieve Titelbalk Verloop" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "Inactieve Titelbalk Verloop" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "Menu Gemarkeerd" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "Menubalk" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/or.po wine-staging-1.7.41~ubuntu12.04.1/po/or.po --- wine-staging-1.7.40~ubuntu12.04.1/po/or.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/or.po 2015-04-18 23:36:02.000000000 +0000 @@ -43,8 +43,8 @@ msgid "&Modify..." msgstr "" -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "" @@ -541,7 +541,7 @@ msgid "&Underline" msgstr "" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "" @@ -708,7 +708,7 @@ msgid "&to:" msgstr "" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 msgid "Si&ze:" msgstr "" @@ -2164,7 +2164,7 @@ msgid "&File name:" msgstr "" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "" @@ -2870,7 +2870,7 @@ msgid "Player" msgstr "" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "" @@ -3383,7 +3383,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "" @@ -6657,7 +6657,7 @@ msgid "Hyperlink Information" msgstr "" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "" @@ -7398,7 +7398,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "" @@ -7902,7 +7902,7 @@ msgid "&Open:" msgstr "" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "" @@ -7947,7 +7947,7 @@ msgid "Date deleted" msgstr "" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "" @@ -9216,7 +9216,7 @@ msgid "Digi&tal" msgstr "ଡିଜିଟାଲ (&)" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "ଅକ୍ଷରରୂପ (&F)..." @@ -12289,7 +12289,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "" -#: winecfg.rc:139 +#: winecfg.rc:141 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 " @@ -12297,241 +12297,237 @@ "option) any later version." msgstr "" -#: winecfg.rc:141 +#: winecfg.rc:143 #, fuzzy msgid "Windows registration information" msgstr "ଅକ୍ଷରରୂପ (&F)..." -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "" -#: winecfg.rc:153 +#: winecfg.rc:155 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:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "" -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "" -#: winecfg.rc:190 +#: winecfg.rc:192 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:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "" -#: winecfg.rc:197 +#: winecfg.rc:199 #, fuzzy msgid "&Edit..." msgstr "ଅକ୍ଷରରୂପ (&F)..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "" -#: winecfg.rc:230 +#: winecfg.rc:232 msgid "Drive configuration" msgstr "" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "" -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "" -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 msgid "Speaker configuration" msgstr "" -#: winecfg.rc:276 -msgid "Device:" -msgstr "" - -#: winecfg.rc:278 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "" -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "" @@ -12611,19 +12607,19 @@ msgid "(System default)" msgstr "" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 msgid "Quadraphonic" msgstr "" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -12728,128 +12724,128 @@ "Remember to click 'Add' in the Drives tab to create one!\n" msgstr "" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "" -#: winecfg.rc:109 +#: winecfg.rc:111 #, fuzzy msgid "Active Title Bar" msgstr "ଶୀର୍ଷକ ପଟି ବିନା (&W)" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/pa.po wine-staging-1.7.41~ubuntu12.04.1/po/pa.po --- wine-staging-1.7.40~ubuntu12.04.1/po/pa.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/pa.po 2015-04-18 23:36:02.000000000 +0000 @@ -43,8 +43,8 @@ msgid "&Modify..." msgstr "" -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "" @@ -541,7 +541,7 @@ msgid "&Underline" msgstr "" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "" @@ -708,7 +708,7 @@ msgid "&to:" msgstr "" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 msgid "Si&ze:" msgstr "" @@ -2164,7 +2164,7 @@ msgid "&File name:" msgstr "" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "" @@ -2870,7 +2870,7 @@ msgid "Player" msgstr "" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "" @@ -3383,7 +3383,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "" @@ -6657,7 +6657,7 @@ msgid "Hyperlink Information" msgstr "" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "" @@ -7398,7 +7398,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "" @@ -7902,7 +7902,7 @@ msgid "&Open:" msgstr "" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "" @@ -7947,7 +7947,7 @@ msgid "Date deleted" msgstr "" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "" @@ -9216,7 +9216,7 @@ msgid "Digi&tal" msgstr "ਡਿਜ਼ੀਟਲ(&t)" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "ਫੌਂਟ(&F)..." @@ -12289,7 +12289,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "" -#: winecfg.rc:139 +#: winecfg.rc:141 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 " @@ -12297,241 +12297,237 @@ "option) any later version." msgstr "" -#: winecfg.rc:141 +#: winecfg.rc:143 #, fuzzy msgid "Windows registration information" msgstr "ਫੌਂਟ(&F)..." -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "" -#: winecfg.rc:153 +#: winecfg.rc:155 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:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "" -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "" -#: winecfg.rc:190 +#: winecfg.rc:192 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:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "" -#: winecfg.rc:197 +#: winecfg.rc:199 #, fuzzy msgid "&Edit..." msgstr "ਫੌਂਟ(&F)..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "" -#: winecfg.rc:230 +#: winecfg.rc:232 msgid "Drive configuration" msgstr "" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "" -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "" -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 msgid "Speaker configuration" msgstr "" -#: winecfg.rc:276 -msgid "Device:" -msgstr "" - -#: winecfg.rc:278 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "" -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "" @@ -12611,19 +12607,19 @@ msgid "(System default)" msgstr "" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 msgid "Quadraphonic" msgstr "" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -12728,128 +12724,128 @@ "Remember to click 'Add' in the Drives tab to create one!\n" msgstr "" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "" -#: winecfg.rc:109 +#: winecfg.rc:111 #, fuzzy msgid "Active Title Bar" msgstr "ਟਾਈਟਲਬਾਰ ਤੋਂ ਬਿਨਾਂ(&W)" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/pl.po wine-staging-1.7.41~ubuntu12.04.1/po/pl.po --- wine-staging-1.7.40~ubuntu12.04.1/po/pl.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/pl.po 2015-04-18 23:36:02.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:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "&Rozmiar:" @@ -561,7 +561,7 @@ msgid "&Underline" msgstr "P&odkreślona" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "&Kolor:" @@ -728,7 +728,7 @@ msgid "&to:" msgstr "&do:" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 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:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "P&rzeglądaj..." @@ -2976,7 +2976,7 @@ msgid "Player" msgstr "Odtwarzacz" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "Urządzenie" @@ -3494,7 +3494,7 @@ msgid "Joysticks" msgstr "Joysticki" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "Wyłą&cz" @@ -6772,7 +6772,7 @@ msgid "Hyperlink Information" msgstr "Własności hiperłącza" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "&Typ:" @@ -7559,7 +7559,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8058,7 +8058,7 @@ msgid "&Open:" msgstr "&Otwórz:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "&Przeglądaj..." @@ -8103,7 +8103,7 @@ msgid "Date deleted" msgstr "Data usunięcia" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Pulpit" @@ -9547,7 +9547,7 @@ msgid "Digi&tal" msgstr "C&yfrowy" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Czcionka..." @@ -12943,7 +12943,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:139 +#: winecfg.rc:141 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 " @@ -12955,23 +12955,23 @@ "opublikowanej przez Free Software Foundation; licencji w wersji 2.1, lub " "(według własnego uznania) dowolnej późniejszej." -#: winecfg.rc:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "Informacje do rejestracji w Windows" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "Właściciel:" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "Organizacja:" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "Ustawienia aplikacji" -#: winecfg.rc:153 +#: winecfg.rc:155 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 " @@ -12981,55 +12981,55 @@ "zakładce jest powiązany z zakładkami Biblioteki i Grafika - ustawienia tam " "również dotyczą wszystkich aplikacji lub tylko wybranej." -#: winecfg.rc:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "&Dodaj aplikację..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "&Usuń aplikację" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "&Wersja Windows:" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "Ustawienia okien" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Automatycznie przechwyć &mysz w oknach pełnoekranowych" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "Pozwól menedżerowi okien &dekorować okna" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "Pozwól menedżerowi okien &zarządzać oknami Wine" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "Emuluj wirtualny &pulpit" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "&Rozmiar pulpitu:" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "Rozdzielczość ekranu" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "Oto przykład zastosowania 10-punktowej czcionki Tahoma" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "Zastąpione biblioteki DLL" -#: winecfg.rc:190 +#: winecfg.rc:192 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -13039,55 +13039,55 @@ "(dostarczonej z Wine) czy natywnej (wziętej z Windows lub dostarczonej wraz " "z aplikacją)." -#: winecfg.rc:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "&Nowa reguła dla biblioteki:" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "Dod&aj" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "Istniejące reguły:" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "&Edycja..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "Edycja reguły" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "Kolejność wczytywania" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "Tylko &wbudowana (Wine)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "Tylko &natywna (Windows)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "Preferuj w&budowaną" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "Preferuj n&atywną" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "Wybierz literę napędu" -#: winecfg.rc:230 +#: winecfg.rc:232 msgid "Drive configuration" msgstr "Ustawienia dysków" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13095,111 +13095,105 @@ "Nieudane połączenie z programem do zarządzania montowaniem, nie można " "zmienić ustawień napędu." -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "Dod&aj..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "Wykryj &samoczynnie" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "&Ścieżka:" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "Opcje z&aawansowane >>" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "U&rządzenie:" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "Prze&glądaj..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "&Etykieta:" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "Numer s&eryjny:" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "Pokazuj pliki zaczynające się od kropki" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "Diagnostyka sterownika" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "Domyślne" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "Urządzenie wyjściowe:" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "Urządzenie wyjściowe głosu:" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "Urządzenie wejściowe:" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "Urządzenie wejściowe głosu:" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "Próba dźwięku" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 #, 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 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "Wygląd" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "Wys&trój:" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "Za&instaluj wystrój..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "El&ement:" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "K&olor:" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "Katalogi" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "Dowiązany do:" @@ -13279,21 +13273,21 @@ msgid "(System default)" msgstr "(Domyślne systemowe)" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 #, fuzzy #| msgid "graphic" msgid "Quadraphonic" msgstr "grafika" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -13411,127 +13405,127 @@ "\n" "Nie zapomnij użyć 'Dodaj' w zakładce 'Dyski', aby go utworzyć!\n" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "Kontrolki - tło" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "Kontrolki - tekst" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "Tło menu" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "Tekst menu" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "Pasek przewijania" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "Tło zaznaczonego obszaru" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "Zaznaczony tekst" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "Tło podpowiedzi" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "Tekst podpowiedzi" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "Tło okna" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "Tekst okna" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "Tło nagłówka aktywnego okna" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "Tytuł aktywnego okna" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "Tło nagłówka nieaktywnego okna" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "Tytuł nieaktywnego okna" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "Tekst okien komunikatów" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "Wnętrze okna aplikacji" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "Ramka okna" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "Obramowanie aktywnego okna" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "Obramowanie nieaktywnego okna" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "Kontrolki - cień" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "Szary tekst" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "Kontrolki - podświetlenie" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "Kontrolki - głębszy cień" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "Kontrolki - jaśniejszy cień" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "Kontrolki - alternatywne tło" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "Śledzony element" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "Gradient nagłówka aktywnego okna" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "Gradient nagłówka nieaktywnego okna" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "Podświetlone menu" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "Pasek menu" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/pt_BR.po wine-staging-1.7.41~ubuntu12.04.1/po/pt_BR.po --- wine-staging-1.7.40~ubuntu12.04.1/po/pt_BR.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/pt_BR.po 2015-04-18 23:36:02.000000000 +0000 @@ -47,8 +47,8 @@ msgid "&Modify..." msgstr "&Modificar..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "Taman&ho:" @@ -558,7 +558,7 @@ msgid "&Underline" msgstr "&Sublinhado" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "&Cor:" @@ -725,7 +725,7 @@ msgid "&to:" msgstr "&até:" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 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:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "&Navegar..." @@ -2967,7 +2967,7 @@ msgid "Player" msgstr "Tocador" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "Dispositivo" @@ -3485,7 +3485,7 @@ msgid "Joysticks" msgstr "Controles" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "&Desativar" @@ -6764,7 +6764,7 @@ msgid "Hyperlink Information" msgstr "Informação do Hiperlink" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "&Tipo:" @@ -7551,7 +7551,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "ppp" @@ -8051,7 +8051,7 @@ msgid "&Open:" msgstr "&Abrir:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "&Procurar..." @@ -8096,7 +8096,7 @@ msgid "Date deleted" msgstr "Data de exclusão" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Área de Trabalho" @@ -9548,7 +9548,7 @@ msgid "Digi&tal" msgstr "Digi&tal" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Fonte..." @@ -12957,7 +12957,7 @@ msgstr "" "A configuração do Wine em %s está sendo atualizada, por favor, aguarde..." -#: winecfg.rc:139 +#: winecfg.rc:141 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 @@ "Software Foundation; tanto na versão 2.1 desta licença ou (à sua escolha) " "qualquer versão posterior." -#: winecfg.rc:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "Informações de registro do Windows" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "&Proprietário:" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "&Organização:" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "Configurações de Aplicativo" -#: winecfg.rc:153 +#: winecfg.rc:155 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 " @@ -12995,55 +12995,55 @@ "aba é ligada às abas Bibliotecas e Gráficos para permitir alterar " "configurações globais ou por aplicativo também nessas abas." -#: winecfg.rc:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "&Adicionar aplicativo..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "&Remover aplicativo" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "Versão do &Windows:" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "Configurações de Janela" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Capturar o &mouse automaticamente em janelas em tela cheia" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "Permitir que o gerenciador de janelas &decore as janelas" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "Permitir que o gerenciador de janelas &controle as janelas" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "&Emular uma área de trabalho virtual" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "Tamanho da Tela:" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "Resolução da Tela" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "Este é um texto exemplo usando Tahoma 10 pontos" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "Substituições de DLL" -#: winecfg.rc:190 +#: winecfg.rc:192 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 @@ "embutidas (fornecidas pelo Wine) ou nativas (tiradas do Windows ou " "fornecidas pelo aplicativo)." -#: winecfg.rc:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "&Nova substituição para a biblioteca:" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "&Adicionar" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "Substituições e&xistentes:" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "&Editar..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "Editar Substituição" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "Ordem de Carregamento" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "&Embutida (Wine)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "&Nativa (Windows)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "E&mbutida depois Nativa" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "Nati&va depois Embutida" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "Selecione a Letra" -#: winecfg.rc:230 +#: winecfg.rc:232 msgid "Drive configuration" msgstr "Configuração de unidades" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13109,111 +13109,105 @@ "Falha de conexão com o gerenciador de montagem, a configuração da unidade " "não pôde ser alterada." -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "&Adicionar..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "Auto &Detectar" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "&Caminho:" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "&Avançado" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "Dispositi&vo:" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "Nave&gar..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "&Rótulo:" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "&Serial:" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "&Mostrar arquivos com ponto" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "Diagnósticos de driver" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "Dispositivos Padrões" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "Saída:" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "Saída de voz:" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "Entrada:" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "Entrada de voz:" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "&Testar Som" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 #, 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 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "Aparência" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "&Tema:" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "&Instalar tema..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "It&em:" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "C&or:" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "Pastas" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "&Atalho para:" @@ -13293,21 +13287,21 @@ msgid "(System default)" msgstr "(Padrão do sistema)" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 #, fuzzy #| msgid "graphic" msgid "Quadraphonic" msgstr "gráfico" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -13425,127 +13419,127 @@ "\n" "Lembre-se de clicar em 'Adicionar' na aba Unidades para criar uma!\n" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "Fundo do Botão" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "Texto do Botão" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "Fundo do Menu" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "Texto do Menu" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "Barra de Rolagem" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "Fundo de Seleção" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "Texto de Seleção" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "Fundo da Dica" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "Texto da Dica" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "Fundo da Janela" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "Texto da Janela" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "Barra de Título Ativa" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "Texto de Título Ativo" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "Barra de Título Inativa" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "Texto de Título Inativo" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "Texto da Caixa de Mensagens" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "Área do Aplicativo" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "Corpo da Janela" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "Borda Ativa" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "Borda Inativa" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "Sombra dos Botões" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "Texto Inativo" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "Realce do Botão" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "Sombra Escura do Botão" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "Luz do Botão" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "Fundo Alternativo do Botão" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "Elemento Ativo" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "Gradiente da Barra Ativa" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "Gradiente da Barra Inativa" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "Realce de Menu" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "Barra de Menu" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/pt_PT.po wine-staging-1.7.41~ubuntu12.04.1/po/pt_PT.po --- wine-staging-1.7.40~ubuntu12.04.1/po/pt_PT.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/pt_PT.po 2015-04-18 23:36:02.000000000 +0000 @@ -47,8 +47,8 @@ msgid "&Modify..." msgstr "&Modificar..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "&Tamanho:" @@ -558,7 +558,7 @@ msgid "&Underline" msgstr "&Sublinhado" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "&Cor:" @@ -725,7 +725,7 @@ msgid "&to:" msgstr "&até:" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 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:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "P&rocurar..." @@ -2967,7 +2967,7 @@ msgid "Player" msgstr "Leitor" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "Dispositivo" @@ -3484,7 +3484,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "&Desactivar" @@ -6758,7 +6758,7 @@ msgid "Hyperlink Information" msgstr "Informação da Hiperligação" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "&Tipo:" @@ -7520,7 +7520,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8021,7 +8021,7 @@ msgid "&Open:" msgstr "&Abrir:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "&Procurar..." @@ -8066,7 +8066,7 @@ msgid "Date deleted" msgstr "Data de exclusão" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Área de trabalho" @@ -9516,7 +9516,7 @@ msgid "Digi&tal" msgstr "Digi&tal" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "Tipo de &Letra..." @@ -12914,7 +12914,7 @@ msgstr "" "A configuração do Wine em %s está a ser actualizada, por favor aguarde..." -#: winecfg.rc:139 +#: winecfg.rc:141 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 @@ "Programas Livres; também a versão 2.1 da Licença, ou (na sua opinião) " "qualquer versão posterior." -#: winecfg.rc:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "Informações de registro do Windows" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "&Proprietário:" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "&Organização:" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "Definições da aplicação" -#: winecfg.rc:153 +#: winecfg.rc:155 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 @@ "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:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "&Adicionar aplicação..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "&Remover aplicação" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "Versão do &Windows:" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "Definições da Janela" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Captura automaticamente o &rato em janelas de ecrã-completo" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "Permite ao gestor de janelas &decorar as janelas" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "Permite ao &gestor de janelas controlar as janelas" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "Emular um ecrã &virtual" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "Tamanho do &ecrã:" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "Resolução do Ecrã" -#: winecfg.rc:182 +#: winecfg.rc:184 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:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "Substituição de DLL" -#: winecfg.rc:190 +#: winecfg.rc:192 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,57 +13010,57 @@ "para serem embutidas (fornecido pelo Wine) ou nativas (tiradas do Windows ou " "fornecidas pela aplicação)." -#: winecfg.rc:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "&Nova substituição para:" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "&Adicionar" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "Substituições E&xistentes:" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "&Editar..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "Editar Substituição" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "Ordem de Carregamento" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "Em&butida (Wine)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "&Nativa (Windows)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "E&mbutida depois Nativa" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "Nati&va depois Embutida" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "Seleccione a letra da drive" -#: winecfg.rc:230 +#: winecfg.rc:232 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Configuração Wine" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13068,111 +13068,105 @@ "Falhou a ligação ao gestor de unidades, a configuração da unidade não pode " "ser editada." -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "&Adicionar..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "Auto&detectar" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "&Localização:" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "&Avançado" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "Dispositi&vo:" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "P&rocurar..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "&Nome:" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "Nº S&erie:" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "Mostrar &ficheiros com pontos" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "Diagnósticos do controlador" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "Padrões" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "Dispositivo de saída:" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "Dispositivo de saída de voz:" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "Dispositivo de entrada:" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "Dispositivo de entrada de voz:" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "&Testar Som" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 #, 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 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "Aparência" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "&Tema:" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "&Instalar tema..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "It&em:" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "C&or:" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "Pastas" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "&Ligar a:" @@ -13252,21 +13246,21 @@ msgid "(System default)" msgstr "(Padrão do sistema)" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 #, fuzzy #| msgid "graphic" msgid "Quadraphonic" msgstr "gráfico" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -13385,127 +13379,127 @@ "Certifique-se que clica em 'Adicionar' no separador Unidades para criar " "uma!\n" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "Fundo dos Controlos" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "Texto dos Controlos" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "Fundo do Menu" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "Texto do Menu" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "Barra de Rolagem" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "Fundo de Selecção" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "Texto de Selecção" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "Fundo das Dicas" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "Texto das Dicas" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "Fundo das Janelas" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "Texto das Janelas" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "Barra de Título Activa" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "Texto de Título Activo" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "Barra de Título Inactiva" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "Texto de Título Inactivo" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "Texto da Caixa de Mensagem" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "Espaço de trabalho de aplicações" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "Quandro de janela" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "Margem ativa" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "Margem inativa" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "Controla sombra" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "Texto cinzento" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "Controla realce" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "Controla sombra escura" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "Controla luz" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "Controla fundo alternativo" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "Gradiente da barra de título ativa" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "Gradiente da barra de título inativa" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "Realce de menu" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "Barra de menu" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/rm.po wine-staging-1.7.41~ubuntu12.04.1/po/rm.po --- wine-staging-1.7.40~ubuntu12.04.1/po/rm.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/rm.po 2015-04-18 23:36:02.000000000 +0000 @@ -45,8 +45,8 @@ msgid "&Modify..." msgstr "Capchar" -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "" @@ -554,7 +554,7 @@ msgid "&Underline" msgstr "" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "" @@ -722,7 +722,7 @@ msgid "&to:" msgstr "" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 msgid "Si&ze:" msgstr "" @@ -2190,7 +2190,7 @@ msgid "&File name:" msgstr "&Datoteca" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "" @@ -2895,7 +2895,7 @@ msgid "Player" msgstr "" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "" @@ -3411,7 +3411,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "" @@ -6706,7 +6706,7 @@ msgid "Hyperlink Information" msgstr "INFUORMAZIUN" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "" @@ -7453,7 +7453,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "" @@ -7960,7 +7960,7 @@ msgid "&Open:" msgstr "&Rivir" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "" @@ -8005,7 +8005,7 @@ msgid "Date deleted" msgstr "" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "" @@ -9282,7 +9282,7 @@ msgid "Digi&tal" msgstr "" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "" @@ -12376,7 +12376,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "" -#: winecfg.rc:139 +#: winecfg.rc:141 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 " @@ -12384,250 +12384,246 @@ "option) any later version." msgstr "" -#: winecfg.rc:141 +#: winecfg.rc:143 #, fuzzy msgid "Windows registration information" msgstr "INFUORMAZIUN" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "" -#: winecfg.rc:144 +#: winecfg.rc:146 #, fuzzy msgid "Organi&zation:" msgstr "INFUORMAZIUN" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "" -#: winecfg.rc:153 +#: winecfg.rc:155 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:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "" -#: winecfg.rc:158 +#: winecfg.rc:160 #, fuzzy msgid "&Remove application" msgstr "&Annotaziun..." -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:189 +#: winecfg.rc:191 #, fuzzy msgid "DLL overrides" msgstr "&Lavurar" -#: winecfg.rc:190 +#: winecfg.rc:192 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:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "" -#: winecfg.rc:197 +#: winecfg.rc:199 #, fuzzy msgid "&Edit..." msgstr "&Lavurar" -#: winecfg.rc:203 +#: winecfg.rc:205 #, fuzzy msgid "Edit Override" msgstr "&Lavurar" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "" -#: winecfg.rc:207 +#: winecfg.rc:209 #, fuzzy msgid "&Builtin (Wine)" msgstr "I&nfuormaziuns" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "" -#: winecfg.rc:230 +#: winecfg.rc:232 #, fuzzy msgid "Drive configuration" msgstr "INFUORMAZIUN" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "" -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "" -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "" -#: winecfg.rc:266 +#: winecfg.rc:268 #, fuzzy msgid "Output device:" msgstr "&Datoteca" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 #, fuzzy msgid "Speaker configuration" msgstr "INFUORMAZIUN" -#: winecfg.rc:276 -msgid "Device:" -msgstr "" - -#: winecfg.rc:278 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "" -#: winecfg.rc:289 +#: winecfg.rc:291 #, fuzzy msgid "&Install theme..." msgstr "&Annotaziun..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "" @@ -12709,19 +12705,19 @@ msgid "(System default)" msgstr "" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 msgid "Quadraphonic" msgstr "" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -12826,127 +12822,127 @@ "Remember to click 'Add' in the Drives tab to create one!\n" msgstr "" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/ro.po wine-staging-1.7.41~ubuntu12.04.1/po/ro.po --- wine-staging-1.7.40~ubuntu12.04.1/po/ro.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/ro.po 2015-04-18 23:36:02.000000000 +0000 @@ -46,8 +46,8 @@ msgid "&Modify..." msgstr "&Modifică..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "Mărime:" @@ -541,7 +541,7 @@ msgid "&Underline" msgstr "&Subliniat" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "Culoare:" @@ -708,7 +708,7 @@ msgid "&to:" msgstr "&la:" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 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:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "&Navighează..." @@ -2946,7 +2946,7 @@ msgid "Player" msgstr "Program de redare" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "Dispozitiv" @@ -3453,7 +3453,7 @@ msgid "Joysticks" msgstr "Joystick-uri" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "&Dezactivează" @@ -6978,7 +6978,7 @@ msgid "Hyperlink Information" msgstr "Informații de hiperlegătură" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "&Tipul:" @@ -7776,7 +7776,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8276,7 +8276,7 @@ msgid "&Open:" msgstr "&Deschide:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "Navi&gare..." @@ -8321,7 +8321,7 @@ msgid "Date deleted" msgstr "Data ștergerii" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 #, fuzzy msgctxt "display name" msgid "Desktop" @@ -9775,7 +9775,7 @@ msgid "Digi&tal" msgstr "Digi&tal" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Font..." @@ -13122,7 +13122,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "Actualizez configurația Wine în %s, așteptați..." -#: winecfg.rc:139 +#: winecfg.rc:141 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 " @@ -13130,23 +13130,23 @@ "option) any later version." msgstr "" -#: winecfg.rc:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "Informații de înregistrare Windows" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "&Deținătorul:" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "Organi&zația:" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "Setări pentru aplicații" -#: winecfg.rc:153 +#: winecfg.rc:155 #, fuzzy msgid "" "Wine can mimic different Windows versions for each application. This tab is " @@ -13158,55 +13158,55 @@ "„Setări de fereastră” și permite schimbarea setărilor globale sau pe " "aplicație în această subfereastră." -#: winecfg.rc:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "&Adaugă o aplicație..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "&Șterge aplicația" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "Versiunea &Windows:" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "Setări de fereastră" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "Permite administratorului de ferestre să &decoreze ferestrele" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "Permite administratorului de ferestre să &administreze ferestrele" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "&Emulează un ecran virtual" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "Mărime ecran:" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "Rezoluție ecran" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "Suprascrieri DLL" -#: winecfg.rc:190 +#: winecfg.rc:192 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -13215,57 +13215,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:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "Suprascriere nouă pentru librăria:" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "&Adaugă" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "Suprascrieri existente:" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "&Editează..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "Editează suprascrierea" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "Ordinea de încărcare" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "&Builtin (Wine)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "&Native (Windows)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "Bui<in apoi Native" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "Nati&ve apoi Builtin" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "Selecția literei de disc" -#: winecfg.rc:230 +#: winecfg.rc:232 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Setări Wine" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13273,111 +13273,105 @@ "A eșuat conectarea la managerul de montare, configurația discurilor nu poate " "fi schimbată." -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "&Adaugă..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "&Detectează" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "&Calea:" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "Afișează opțiunile a&vansate" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "Dispoziti&v:" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "Navighează..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "&Etichetă:" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "N&umăr de serie:" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "Afișează &fișierele ascunse" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "&Testează sunetul" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 #, 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 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "Aspect" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "Tematică:" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "Instalează o tematică..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "Element:" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "Culoare:" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "Dosare" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "Leagă la:" @@ -13457,21 +13451,21 @@ msgid "(System default)" msgstr "(Setare implicită)" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 #, fuzzy #| msgid "graphic" msgid "Quadraphonic" msgstr "grafică" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -13592,127 +13586,127 @@ "\n" "Nu uitați să o adăugați în subfereastra „Mapare de discuri”!\n" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "Fundal controale" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "Text controale" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "Fundal meniu" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "Text meniu" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "Bare de defilare" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "Fundal selecție" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "Text selecție" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "Fundal baloane de ajutor" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "Text baloane de ajutor" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "Fundal fereastră" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "Text fereastră" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "Bară de titlu activă" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "Text bară de titlu activă" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "Bară de titlu inactivă" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "Text bară de titlu inactivă" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "Text casetă de mesaje" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "Spațiul de lucru al aplicației" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "Cadru de fereastră" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "Margini active" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "Margini inactive" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "Umbră pentru controale" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "Text gri" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "Evidențiere controale" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "Umbră întunecată pentru controale" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "Lumină pentru controale" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "Fundal alternativ pentru controale" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "Element cu urmărire fierbinte" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "Gradient bară de titlu activă" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "Gradient bară de titlu inactivă" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "Evidențiere meniu" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "Bară de meniu" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/ru.po wine-staging-1.7.41~ubuntu12.04.1/po/ru.po --- wine-staging-1.7.40~ubuntu12.04.1/po/ru.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/ru.po 2015-04-18 23:36:02.000000000 +0000 @@ -47,8 +47,8 @@ msgid "&Modify..." msgstr "&Изменить..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "Размер:" @@ -557,7 +557,7 @@ msgid "&Underline" msgstr "Под&чёркнутый" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "Цвет:" @@ -724,7 +724,7 @@ msgid "&to:" msgstr "&до:" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 msgid "Si&ze:" msgstr "Размер:" @@ -2201,7 +2201,7 @@ msgid "&File name:" msgstr "Имя &файла:" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "&Обзор..." @@ -2960,7 +2960,7 @@ msgid "Player" msgstr "Адаптер" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "Устройство" @@ -3477,7 +3477,7 @@ msgid "Joysticks" msgstr "Джойстики" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "&Отключить" @@ -6754,7 +6754,7 @@ msgid "Hyperlink Information" msgstr "Информация о ссылке" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "&Тип:" @@ -7539,7 +7539,7 @@ msgid "b" msgstr "бит" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "т/дюйм" @@ -8039,7 +8039,7 @@ msgid "&Open:" msgstr "&Открыть:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "&Обзор..." @@ -8084,7 +8084,7 @@ msgid "Date deleted" msgstr "Время удаления" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Рабочий стол" @@ -9507,7 +9507,7 @@ msgid "Digi&tal" msgstr "&Цифровые" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Шрифт..." @@ -12884,7 +12884,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "Выполняется обновление конфигурации Wine %s. Пожалуйста, подождите..." -#: winecfg.rc:139 +#: winecfg.rc:141 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 " @@ -12896,23 +12896,23 @@ "General Public License версии 2.1 или более поздней по вашему выбору. " "Лицензия опубликована Free Software Foundation." -#: winecfg.rc:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "Регистрационная информация Windows" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "Имя:" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "Организация:" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "Настройка приложений" -#: winecfg.rc:153 +#: winecfg.rc:155 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 " @@ -12923,55 +12923,55 @@ "позволяет изменять настройки в этих вкладках как для определённого " "приложения, так и глобально." -#: winecfg.rc:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "&Добавить приложение..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "&Удалить приложение" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "&Версия Windows:" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "Настройки окон" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Автоматически &удерживать мышь в полноэкранных окнах" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "Разрешить менеджеру окон &декорировать окна" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "Разрешить менеджеру окон управлять &окнами Wine" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "&Эмулировать виртуальный рабочий стол" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "&Рабочий стол:" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "Разрешение экрана" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "Пример текста, шрифт Tahoma 10 пунктов" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "Замещения DLL" -#: winecfg.rc:190 +#: winecfg.rc:192 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12980,55 +12980,55 @@ "Здесь указывается, какую динамически подключаемую библиотеку (DLL) " "использовать: встроенную в Wine или стороннюю (из Windows)." -#: winecfg.rc:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "Новое замещение для библиотеки:" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "&Установить" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "Существующие замещения:" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "&Изменить..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "Изменить замещение" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "Порядок загрузки" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "&Встроенная (Wine)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "С&торонняя (Windows)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "В&строенная, затем сторонняя" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "Ст&оронняя, затем встроенная" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "Выберите букву диска" -#: winecfg.rc:230 +#: winecfg.rc:232 msgid "Drive configuration" msgstr "Настройка дисков" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13036,107 +13036,103 @@ "Невозможно соединиться с mount manager! Конфигурация дисков не будет " "редактироваться." -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "&Добавить..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "&Автоопределение" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "&Путь:" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "&Дополнительно" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "У&стройство:" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "Об&зор..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "&Метка:" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "Сер. &номер:" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "Показывать файлы, начинающиеся с точки" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "Диагностика драйвера" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "По умолчанию" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "Устройство вывода:" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "Уст-во речевого вывода:" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "Устройство ввода:" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "Уст-во речевого ввода:" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "&Проверить звук" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 msgid "Speaker configuration" msgstr "Конфигурация каналов" -#: winecfg.rc:276 -msgid "Device:" -msgstr "Устройство:" - -#: winecfg.rc:278 +#: winecfg.rc:280 msgid "Speakers:" msgstr "Каналы:" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "Внешний вид" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "&Тема:" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "Установить тему..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "Элемент:" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "Цвет:" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "Папки" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "Привязать к:" @@ -13216,19 +13212,19 @@ msgid "(System default)" msgstr "(по умолчанию)" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "Объёмное звучание 5.1" -#: winecfg.rc:90 +#: winecfg.rc:92 msgid "Quadraphonic" msgstr "Квадрофония" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "Стерео" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "Моно" @@ -13346,127 +13342,127 @@ "\n" "Не забудьте его создать!\n" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "Элементы управления - фон" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "Элементы управления - текст" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "Меню - фон" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "Меню - текст" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "Полоса прокрутки" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "Выделение - фон" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "Выделение - текст" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "Подсказка - фон" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "Подсказка - текст" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "Содержимое окна - фон" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "Содержимое окна - текст" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "Активное окно" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "Активное окно - текст" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "Пассивное окно" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "Пассивное окно - текст" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "Окно сообщения - текст" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "Содержимое окна MDI - фон" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "Окно - рамка" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "Активное окно - рамка" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "Пассивное окно - рамка" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "Элементы управления - тень" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "Недоступный элемент" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "Элементы управления - светлая рамка" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "Элементы управления - тёмная тень" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "Элементы управления - свет" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "Элементы управления - фон 2" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "Ссылка, Подсветка" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "Градиент активного окна" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "Градиент пассивного окна" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "Плоское меню - подсветка" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "Плоское меню - фон" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/sk.po wine-staging-1.7.41~ubuntu12.04.1/po/sk.po --- wine-staging-1.7.40~ubuntu12.04.1/po/sk.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/sk.po 2015-04-18 23:36:02.000000000 +0000 @@ -52,8 +52,8 @@ msgid "&Modify..." msgstr "&Zmeniť..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "&Veľkosť:" @@ -575,7 +575,7 @@ msgid "&Underline" msgstr "&Podčiarknuté" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "&Farba:" @@ -742,7 +742,7 @@ msgid "&to:" msgstr "&do:" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 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:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "P&rechádzaj..." @@ -2904,7 +2904,7 @@ msgid "Player" msgstr "Prehrávač" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "Zariadenie" @@ -3425,7 +3425,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "&Zakázať" @@ -6764,7 +6764,7 @@ msgid "Hyperlink Information" msgstr "Informácie" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 #, fuzzy msgid "&Type:" msgstr "Typ" @@ -7539,7 +7539,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "" @@ -8059,7 +8059,7 @@ msgid "&Open:" msgstr "" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "" @@ -8104,7 +8104,7 @@ msgid "Date deleted" msgstr "" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 #, fuzzy msgctxt "display name" msgid "Desktop" @@ -9397,7 +9397,7 @@ msgid "Digi&tal" msgstr "Digi&tálne" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "" @@ -12531,7 +12531,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:139 +#: winecfg.rc:141 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 " @@ -12539,23 +12539,23 @@ "option) any later version." msgstr "" -#: winecfg.rc:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "Informácie o registrácii Windows" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "&Vlastník:" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "Organi&zácia:" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "Nastavenia aplikácie" -#: winecfg.rc:153 +#: winecfg.rc:155 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 " @@ -12565,55 +12565,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:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "&Pridať aplikáciu..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "&Odstrániť aplikáciu" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "&Verzia Windows:" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "Nastavenia okna" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "&Vytvoriť virtuálnu plochu" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "Veľkosť &plochy:" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "Rozlíšenie obrazovky" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "DLL prepísania" -#: winecfg.rc:190 +#: winecfg.rc:192 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12623,167 +12623,161 @@ "(poskytnuté z Wine) alebo natívne (prevziate z Windows alebo poskytnuté " "aplikáciou)." -#: winecfg.rc:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "&Nové prepísanie pre knižnicu:" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "&Pridať" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "Existujúce &prepísania:" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "&Upraviť..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "Upraviť prepísanie" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "Poradie načítavania" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "&Vstavané (Wine)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "&Natívne (Windows)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "Vst&avané potom natívne" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "Natí&vne potom vstavané" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "" -#: winecfg.rc:230 +#: winecfg.rc:232 #, fuzzy msgid "Drive configuration" msgstr "Informácie" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "&Pridať..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "Automatická &detekcia" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "&Cesta:" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "Ukáž &pokročilé" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "Za&riadenie:" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "Pre&chádzať..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "&Označenie:" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "Diagnostika ovládača" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "Predvolené" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "Výstupné zariadenie:" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "Hlasové výstupné zariadenie:" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "Vstupné zariadenie:" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "Hlasové vstupné zariadenie:" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "&Skúška zvuku" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 #, fuzzy msgid "Speaker configuration" msgstr "Informácie" -#: winecfg.rc:276 -#, fuzzy -#| msgid "De&vice:" -msgid "Device:" -msgstr "Za&riadenie:" - -#: winecfg.rc:278 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "Vzhľad" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "" -#: winecfg.rc:289 +#: winecfg.rc:291 #, fuzzy msgid "&Install theme..." msgstr "&Skomentovať..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "" -#: winecfg.rc:302 +#: winecfg.rc:304 #, fuzzy msgid "Folders" msgstr "Systémové adresáre" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "" @@ -12867,19 +12861,19 @@ msgid "(System default)" msgstr "Systémová cesta" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 msgid "Quadraphonic" msgstr "" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -12987,128 +12981,128 @@ "Remember to click 'Add' in the Drives tab to create one!\n" msgstr "" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "Pozadie okna" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "" -#: winecfg.rc:109 +#: winecfg.rc:111 #, fuzzy msgid "Active Title Bar" msgstr "&Bez titulkového pruhu" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/sl.po wine-staging-1.7.41~ubuntu12.04.1/po/sl.po --- wine-staging-1.7.40~ubuntu12.04.1/po/sl.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/sl.po 2015-04-18 23:36:02.000000000 +0000 @@ -52,8 +52,8 @@ msgid "&Modify..." msgstr "&Spremeni ..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "&Velikost:" @@ -574,7 +574,7 @@ msgid "&Underline" msgstr "P&odčrtano" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "&Barva:" @@ -741,7 +741,7 @@ msgid "&to:" msgstr "&do:" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 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:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "B&rskaj ..." @@ -2994,7 +2994,7 @@ msgid "Player" msgstr "Igralec" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "Naprava" @@ -3511,7 +3511,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "&Onemogoči" @@ -6814,7 +6814,7 @@ msgid "Hyperlink Information" msgstr "Lastnosti hiperpovezave" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "&Vrsta:" @@ -7670,7 +7670,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8170,7 +8170,7 @@ msgid "&Open:" msgstr "&Odpri:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "&Brskaj ..." @@ -8215,7 +8215,7 @@ msgid "Date deleted" msgstr "Datum je bil izbrisan" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Namizje" @@ -9644,7 +9644,7 @@ msgid "Digi&tal" msgstr "Digi&talna ura" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Pisava ..." @@ -13058,7 +13058,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:139 +#: winecfg.rc:141 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 " @@ -13070,23 +13070,23 @@ "Software Foundation Ali pod različico licence 2.1 ali (po vaši želji) pod " "katerokoli novejšo različico." -#: winecfg.rc:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "Podatki o registraciji Windows" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "&Lastnik:" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "Organi&zacija:" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "Nastavitve programov" -#: winecfg.rc:153 +#: winecfg.rc:155 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 " @@ -13097,55 +13097,55 @@ "spreminjanje nastavitev v teh dveh zavihkih tako za ves sistem kot za " "posamezne programe." -#: winecfg.rc:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "&Dodaj program ..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "&Odstrani program" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "&Različica Windows:" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "Nastavitve okna" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Samodejno zajemi &miško v celozaslonskih oknih" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "Dovoli upravljalniku oken, da okra&si okna" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "Dovoli upravljalniku &oken, da upravlja z Wine-ovimi okni" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "Posnemaj navidezno &namizje" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "&Velikost namizja:" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "Ločljivost zaslona" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "Vzorčno besedilo, napisano s pisavo Tahoma velikosti 10 točk" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "Prepisi DLL" -#: winecfg.rc:190 +#: winecfg.rc:192 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -13155,57 +13155,57 @@ "izviona ('native'; vzeta iz Windows ali nameščena skupaj s programom za " "Windows)." -#: winecfg.rc:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "&Nov prepis za knjižnico:" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "&Dodaj" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "Obstoječi &prepisi:" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "&Uredi ..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "Uredi prepis" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "Red nalaganja" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "&Vgrajena (Wine)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "&Izvorna (Windows)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "Vgra&jena, izvorna" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "I&zvorna, vgrajena" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "Izberite črko pogona" -#: winecfg.rc:230 +#: winecfg.rc:232 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Nastavitve Wine" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13213,111 +13213,105 @@ "Napaka med povezovanjem z upravljalnikom priklopov (mount manager); " "nastavitev pogonov ne bo mogoče urejati." -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "&Dodaj ..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "&Samodejno zaznaj" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "&Pot:" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "Pokaži &napredno" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "Na&prava:" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "&Brskaj ..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "&Oznaka:" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "Zapor&edna št.:" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "Pokaži &datoteke s piko" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "Diagnostika gonilnikov" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "Privzeto" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "Izhodna naprava:" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "Naprava zvočnega izhoda:" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "Vhodna naprava:" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "Naprava zvočnega vhoda:" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "&Preizkusi zvok" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 #, 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 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "Videz" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "&Tema:" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "&Namesti temo ..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "P&redmet:" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "B&arva:" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "Mape" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "&Poveži z:" @@ -13397,21 +13391,21 @@ msgid "(System default)" msgstr "(Sistemsko privzeto)" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 #, fuzzy #| msgid "graphic" msgid "Quadraphonic" msgstr "grafika" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -13532,127 +13526,127 @@ "\n" "Če ga želite dodati, uporabite gumb 'Dodaj' v zavihku Pogoni!\n" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "Ozadje nadzornikov" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "Besedilo nadzornikov" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "Ozadje menija" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "Besedilo menija" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "Drsnik" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "Ozadje izbire" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "Besedilo izbire" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "Ozadje orodnega namiga" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "Besedilo orodnega namiga" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "Ozadje okna" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "Besedilo okna" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "Dejavna nazivna vrstica" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "Besedilo dejavnega naziva" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "Nedejavna nazivna vrstica" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "Besedilno nedejavnega naziva" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "Sporočilo polja z besedilom" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "Delovni prostor programa" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "Okvir okna" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "Dejaven rob" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "Nedejaven rob" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "Senca nadzornikov" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "Sivo besedilo" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "Poudarjanje nadzornikov" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "Temna senca nadzornikov" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "Svetlost nadzornikov" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "Nadomestno ozadje nadzornikov" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "Predmet s hitrim sledenjem" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "Preliv dejavne nazivne vrstice" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "Preliv nedejavne nazivne vrstice" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "Poudarjanje menija" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "Menijska vrstica" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/sr_RS@cyrillic.po wine-staging-1.7.41~ubuntu12.04.1/po/sr_RS@cyrillic.po --- wine-staging-1.7.40~ubuntu12.04.1/po/sr_RS@cyrillic.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/sr_RS@cyrillic.po 2015-04-18 23:36:02.000000000 +0000 @@ -47,8 +47,8 @@ msgid "&Modify..." msgstr "&Измени..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "&Величина:" @@ -562,7 +562,7 @@ msgid "&Underline" msgstr "&Подвуци" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "&Боја:" @@ -731,7 +731,7 @@ msgid "&to:" msgstr "&до:" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 msgid "Si&ze:" msgstr "&Величина:" @@ -2226,7 +2226,7 @@ msgid "&File name:" msgstr "&Датотека" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 #, fuzzy msgid "B&rowse..." msgstr "" @@ -2953,7 +2953,7 @@ msgid "Player" msgstr "Репродукуј" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "" @@ -3501,7 +3501,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 #, fuzzy msgid "&Disable" msgstr "табела" @@ -7035,7 +7035,7 @@ msgid "Hyperlink Information" msgstr "Подаци о хипервези" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "&Врста:" @@ -7864,7 +7864,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "тпи" @@ -8379,7 +8379,7 @@ msgid "&Open:" msgstr "&Отвори:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "&Разгледај..." @@ -8424,7 +8424,7 @@ msgid "Date deleted" msgstr "Датум брисања" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 #, fuzzy msgctxt "display name" msgid "Desktop" @@ -9741,7 +9741,7 @@ msgid "Digi&tal" msgstr "&Дигитални" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Фонт..." @@ -12991,7 +12991,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "Wine поставке у %s се ажурирају. Молимо, сачекајте..." -#: winecfg.rc:139 +#: winecfg.rc:141 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 " @@ -12999,176 +12999,176 @@ "option) any later version." msgstr "" -#: winecfg.rc:141 +#: winecfg.rc:143 #, fuzzy msgid "Windows registration information" msgstr "Подаци" -#: winecfg.rc:142 +#: winecfg.rc:144 #, fuzzy msgid "&Owner:" msgstr "Власник" -#: winecfg.rc:144 +#: winecfg.rc:146 #, fuzzy msgid "Organi&zation:" msgstr "анимација" -#: winecfg.rc:152 +#: winecfg.rc:154 #, fuzzy msgid "Application settings" msgstr "Програми" -#: winecfg.rc:153 +#: winecfg.rc:155 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:157 +#: winecfg.rc:159 #, fuzzy msgid "&Add application..." msgstr "програм" -#: winecfg.rc:158 +#: winecfg.rc:160 #, fuzzy msgid "&Remove application" msgstr "програм" -#: winecfg.rc:159 +#: winecfg.rc:161 #, fuzzy msgid "&Windows Version:" msgstr "&Прозор" -#: winecfg.rc:167 +#: winecfg.rc:169 #, fuzzy msgid "Window settings" msgstr "&Прозор" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "" -#: winecfg.rc:173 +#: winecfg.rc:175 #, fuzzy msgid "Desktop &size:" msgstr "Радна површина" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:189 +#: winecfg.rc:191 #, fuzzy msgid "DLL overrides" msgstr "&Уређивање" -#: winecfg.rc:190 +#: winecfg.rc:192 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:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "" -#: winecfg.rc:197 +#: winecfg.rc:199 #, fuzzy msgid "&Edit..." msgstr "&Уређивање" -#: winecfg.rc:203 +#: winecfg.rc:205 #, fuzzy msgid "Edit Override" msgstr "&Уређивање" -#: winecfg.rc:206 +#: winecfg.rc:208 #, fuzzy msgid "Load order" msgstr "граница" -#: winecfg.rc:207 +#: winecfg.rc:209 #, fuzzy msgid "&Builtin (Wine)" msgstr "&О Бележници" -#: winecfg.rc:208 +#: winecfg.rc:210 #, fuzzy msgid "&Native (Windows)" msgstr "&Прозор" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "" -#: winecfg.rc:218 +#: winecfg.rc:220 #, fuzzy msgid "Select Drive Letter" msgstr "Изабери &све" -#: winecfg.rc:230 +#: winecfg.rc:232 #, fuzzy msgid "Drive configuration" msgstr "Подаци" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "" -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "" -#: winecfg.rc:249 +#: winecfg.rc:251 #, fuzzy msgid "Bro&wse..." msgstr "" @@ -13177,90 +13177,86 @@ "#-#-#-#-# sr_RS@cyrillic.po (Wine) #-#-#-#-#\n" "Разгледај" -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:267 #, fuzzy msgid "Defaults" msgstr "Подразумевано" -#: winecfg.rc:266 +#: winecfg.rc:268 #, fuzzy msgid "Output device:" msgstr "&Назив одредишне датотеке:" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "" -#: winecfg.rc:274 +#: winecfg.rc:276 #, fuzzy msgid "&Test Sound" msgstr "звук" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 #, fuzzy msgid "Speaker configuration" msgstr "Подаци" -#: winecfg.rc:276 -msgid "Device:" -msgstr "" - -#: winecfg.rc:278 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "" -#: winecfg.rc:289 +#: winecfg.rc:291 #, fuzzy msgid "&Install theme..." msgstr "Инсталирање..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "" -#: winecfg.rc:296 +#: winecfg.rc:298 #, fuzzy msgid "C&olor:" msgstr "&Колона" -#: winecfg.rc:302 +#: winecfg.rc:304 #, fuzzy msgid "Folders" msgstr "Нова фасцикла" -#: winecfg.rc:305 +#: winecfg.rc:307 #, fuzzy msgid "&Link to:" msgstr "Везе" @@ -13351,21 +13347,21 @@ msgid "(System default)" msgstr "Системска путања" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 #, fuzzy #| msgid "graphic" msgid "Quadraphonic" msgstr "графика" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -13475,141 +13471,141 @@ "Remember to click 'Add' in the Drives tab to create one!\n" msgstr "" -#: winecfg.rc:97 +#: winecfg.rc:99 #, fuzzy msgid "Controls Background" msgstr "&Умножи позадину" -#: winecfg.rc:98 +#: winecfg.rc:100 #, fuzzy msgid "Controls Text" msgstr "Контрола" -#: winecfg.rc:100 +#: winecfg.rc:102 #, fuzzy msgid "Menu Background" msgstr "&Умножи позадину" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "" -#: winecfg.rc:102 +#: winecfg.rc:104 #, fuzzy msgid "Scrollbar" msgstr "трака за померање" -#: winecfg.rc:103 +#: winecfg.rc:105 #, fuzzy msgid "Selection Background" msgstr "Постави као позадину" -#: winecfg.rc:104 +#: winecfg.rc:106 #, fuzzy msgid "Selection Text" msgstr "Изабери &све" -#: winecfg.rc:105 +#: winecfg.rc:107 #, fuzzy msgid "Tooltip Background" msgstr "&Умножи позадину" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:109 #, fuzzy msgid "Window Background" msgstr "&Умножи позадину" -#: winecfg.rc:108 +#: winecfg.rc:110 #, fuzzy msgid "Window Text" msgstr "&Прозор" -#: winecfg.rc:109 +#: winecfg.rc:111 #, fuzzy msgid "Active Title Bar" msgstr "насловна линија" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:116 #, fuzzy msgid "Application Workspace" msgstr "Програми" -#: winecfg.rc:115 +#: winecfg.rc:117 #, fuzzy msgid "Window Frame" msgstr "&Прозор" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:120 #, fuzzy msgid "Controls Shadow" msgstr "Управљачки панел" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:124 #, fuzzy msgid "Controls Light" msgstr "Контрола" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "" -#: winecfg.rc:128 +#: winecfg.rc:130 #, fuzzy msgid "Menu Bar" msgstr "линија менија" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/sr_RS@latin.po wine-staging-1.7.41~ubuntu12.04.1/po/sr_RS@latin.po --- wine-staging-1.7.40~ubuntu12.04.1/po/sr_RS@latin.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/sr_RS@latin.po 2015-04-18 23:36:02.000000000 +0000 @@ -47,8 +47,8 @@ msgid "&Modify..." msgstr "&Izmeni..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "&Veličina:" @@ -605,7 +605,7 @@ msgid "&Underline" msgstr "" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "&Boja:" @@ -789,7 +789,7 @@ msgid "&to:" msgstr "" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 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:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "N&ađi..." @@ -3032,7 +3032,7 @@ msgid "Player" msgstr "Reprodukuj" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 #, fuzzy msgid "Device" msgstr "Na&prava:" @@ -3579,7 +3579,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "&Isključi" @@ -7129,7 +7129,7 @@ msgid "Hyperlink Information" msgstr "Podaci o hipervezi" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "&Ukucaj:" @@ -7962,7 +7962,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "tpi" @@ -8482,7 +8482,7 @@ msgid "&Open:" msgstr "&Otvori:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "&Nađi..." @@ -8527,7 +8527,7 @@ msgid "Date deleted" msgstr "Datum brisanja" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 #, fuzzy msgctxt "display name" msgid "Desktop" @@ -9845,7 +9845,7 @@ msgid "Digi&tal" msgstr "&Digitalni" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "" @@ -13143,7 +13143,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:139 +#: winecfg.rc:141 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 " @@ -13151,25 +13151,25 @@ "option) any later version." msgstr "" -#: winecfg.rc:141 +#: winecfg.rc:143 #, fuzzy msgid "Windows registration information" msgstr " Informacija o registraciji Windowsa " -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "&Vlasnik:" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "Organi&zacija:" -#: winecfg.rc:152 +#: winecfg.rc:154 #, fuzzy msgid "Application settings" msgstr " Podešavanje aplikacije " -#: winecfg.rc:153 +#: winecfg.rc:155 #, fuzzy msgid "" "Wine can mimic different Windows versions for each application. This tab is " @@ -13180,58 +13180,58 @@ "za Biblioteke i Grafika tabove da dozvoli sistemske promene ili za " "podešavanje aplikacija u istim tabovima." -#: winecfg.rc:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "&Dodaj aplikaciju..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "&Ukloni aplikaciju" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "&Verzija Windowsa:" -#: winecfg.rc:167 +#: winecfg.rc:169 #, fuzzy msgid "Window settings" msgstr " Podešavanje prozora " -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "Dozvoli temi da &ukrasi prozor" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "Dozvoli &menadžeru prozora da upravlja prozorom" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "&Emulacija veštačkog desktopa" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "Desktop &veličina:" -#: winecfg.rc:178 +#: winecfg.rc:180 #, fuzzy msgid "Screen resolution" msgstr " Rezolucija &Ekrana " -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "Ovo je osnovni tekst 10 Tahoma" -#: winecfg.rc:189 +#: winecfg.rc:191 #, fuzzy msgid "DLL overrides" msgstr " DLL Podešavanja " -#: winecfg.rc:190 +#: winecfg.rc:192 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -13240,58 +13240,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:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "&Novo podešavanje biblioteke:" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "&Dodaj" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "Postojeća &podešavanja:" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "&Izmeni..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "Izmeni podešavanje" -#: winecfg.rc:206 +#: winecfg.rc:208 #, fuzzy msgid "Load order" msgstr " Redosled učitavanja " -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "&Builtin (Wine)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "&Native (Windows)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "Bui<in pa Native" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "Nati&ve pa Builtin" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "Izaberi slovo diska" -#: winecfg.rc:230 +#: winecfg.rc:232 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Wine konfiguracija" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13299,113 +13299,107 @@ "Uspelo povezivanje sa mount menadžerom, disk konfiguracija se ne može " "izmeniti." -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "&Dodaj..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "Auto&matski" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "&Putanja:" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "Pokaži &Napredno" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "Na&prava:" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "Na&đi..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "&Naziv:" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "S&erijski:" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "Prikaži &dot fajlove" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "&Probaj zvuk" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 #, 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 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 #, fuzzy msgid "Appearance" msgstr " Izgled " -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "&Tema:" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "&Instaliraj teme..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "B&oja:" -#: winecfg.rc:302 +#: winecfg.rc:304 #, fuzzy msgid "Folders" msgstr "Fascikla:" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "&Veza do:" @@ -13492,21 +13486,21 @@ msgid "(System default)" msgstr "Sistemska putanja" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 #, fuzzy #| msgid "graphic" msgid "Quadraphonic" msgstr "grafika" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -13629,127 +13623,127 @@ "\n" "Kliknite 'Dodaj' u diskovi tabu da napravite!\n" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "Kontrole pozadine" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "Kontrole teksta" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "Pozadina menija" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "Tekst menija" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "Odabir pozadine" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "Odabir teksta" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "Tooltip pozadina" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "Pozadina prozora" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "Text Prozora" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "Aktivni nazivni Bar" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "Aktivni nazivni Text" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "Neaktivni nazivni Bar" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "Neaktivni nazivni Text" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "Poruka Box Text" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "Radni prostor aplikacije" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "Ram prozora" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "Aktivna ivica" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "Neaktivna ivica" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "Kontrola senke" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "Sivi Text" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "Kontrola odabranog" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "Kontrola mracne senke" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "Kontrola svetla" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "Kontrola alternativne pozadine" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "Aktivni nazivni bar Gradient" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "Neaktivni nazivni bar Gradient" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "Meni osvetljenog" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "Meni Bar" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/sv.po wine-staging-1.7.41~ubuntu12.04.1/po/sv.po --- wine-staging-1.7.40~ubuntu12.04.1/po/sv.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/sv.po 2015-04-18 23:36:02.000000000 +0000 @@ -47,8 +47,8 @@ msgid "&Modify..." msgstr "&Ändra..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "&Storlek:" @@ -555,7 +555,7 @@ msgid "&Underline" msgstr "&Understruken" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "&Färg:" @@ -722,7 +722,7 @@ msgid "&to:" msgstr "&till:" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 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:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "B&läddra..." @@ -2963,7 +2963,7 @@ msgid "Player" msgstr "Spelare" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "Enhet" @@ -3469,7 +3469,7 @@ msgid "Joysticks" msgstr "Joysticks" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "&Inaktivera" @@ -6753,7 +6753,7 @@ msgid "Hyperlink Information" msgstr "Länkinformation" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "&Typ:" @@ -7565,7 +7565,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8065,7 +8065,7 @@ msgid "&Open:" msgstr "&Öppna:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "&Bläddra..." @@ -8110,7 +8110,7 @@ msgid "Date deleted" msgstr "Borttagningsdatum" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Skrivbord" @@ -9509,7 +9509,7 @@ msgid "Digi&tal" msgstr "Digi&tal" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "T&ypsnitt..." @@ -12819,7 +12819,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:139 +#: winecfg.rc:141 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 " @@ -12831,23 +12831,23 @@ "publicerad av Free Software Foundation, antingen version 2.1 eller (om du så " "vill) någon senare version." -#: winecfg.rc:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "Registreringsinformation för Windows" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "Ägare:" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "Organisation:" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "Programinställningar" -#: winecfg.rc:153 +#: winecfg.rc:155 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 " @@ -12858,55 +12858,55 @@ "inställningar i de flikarna också, antingen systemövergripande eller per " "program." -#: winecfg.rc:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "&Lägg till program..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "&Ta bort program" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "&Windows-version:" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "Fönsterinställningar" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Fånga &musen automatiskt i fullskärmsfönster" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "Tillåt fönsterhanteraren att &dekorera fönstren" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "Tillåt &fönsterhanteraren att styra fönstren" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "Emulera ett virtuellt skriv&bord" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "Storlek på &skrivbord:" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "Skärm&upplösning" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "Denna exempeltext använder 10-punkters Tahoma" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "DLL-åsidosättningar" -#: winecfg.rc:190 +#: winecfg.rc:192 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12916,55 +12916,55 @@ "(tillhandahålls av Wine) eller ursprungliga (tagna från Windows eller " "tillhandahålls av programmet)." -#: winecfg.rc:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "&Ny åsidosättning för bibliotek:" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "Lägg &till" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "Befintliga &åsidosättningar:" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "R&edigera..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "Redigera åsidosättning" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "Inläsningsordning" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "&Inbyggd (Wine)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "&Ursprunglig (Windows)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "Inb&yggd sedan Ursprunglig" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "Urs&prunglig sedan Inbyggd" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "Välj enhetsbokstav" -#: winecfg.rc:230 +#: winecfg.rc:232 msgid "Drive configuration" msgstr "Enhetskonfiguration" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -12972,111 +12972,105 @@ "Misslyckades med att ansluta till monteringshanteraren. " "Enhetskonfigurationen kan inte redigeras." -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "&Lägg till..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "Upptäck aut&omatiskt" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "&Sökväg:" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "Visa &avancerat" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "E&nhet:" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "&Bläddra..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "&Etikett:" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "S&erienr:" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "Visa &punktfiler" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "&Testa ljud" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 #, 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 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "Utseende" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "&Tema:" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "&Installera tema..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "Ob&jekt:" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "Fä&rg:" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "Mappar" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "&Länka till:" @@ -13156,21 +13150,21 @@ msgid "(System default)" msgstr "(Systemstandard)" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 #, fuzzy #| msgid "graphic" msgid "Quadraphonic" msgstr "grafik" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -13287,127 +13281,127 @@ "\n" "Kom ihåg att klicka på ‘Lägg till’ i fliken Enheter för att skapa en!\n" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "Bakgrund i kontroller" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "Text i kontroller" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "Menybakgrund" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "Menytext" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "Rullningslist" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "Bakgrund för markering" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "Text för markering" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "Bakgrund för verktygstips" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "Text för verktygstips" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "Fönsterbakgrund" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "Fönstertext" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "Aktiv titellist" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "Aktiv titeltext" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "Inaktiv titellist" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "Inaktiv titeltext" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "Text i meddelandefönster" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "Arbetsyta i program" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "Fönsterram" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "Aktiv kant" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "Inaktiv kant" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "Skugga i kontroller" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "Grå text" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "Markering i kontroller" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "Mörk skugga i kontroller" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "Ljus i kontroller" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "Alternativ bakgrund i kontroller" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "Hovrat föremål" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "Gradient för aktiv titellist" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "Gradient för inaktiv titellist" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "Menymarkering" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "Menyrad" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/te.po wine-staging-1.7.41~ubuntu12.04.1/po/te.po --- wine-staging-1.7.40~ubuntu12.04.1/po/te.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/te.po 2015-04-18 23:36:02.000000000 +0000 @@ -43,8 +43,8 @@ msgid "&Modify..." msgstr "" -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "" @@ -541,7 +541,7 @@ msgid "&Underline" msgstr "" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "" @@ -708,7 +708,7 @@ msgid "&to:" msgstr "" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 msgid "Si&ze:" msgstr "" @@ -2164,7 +2164,7 @@ msgid "&File name:" msgstr "" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "" @@ -2870,7 +2870,7 @@ msgid "Player" msgstr "" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "" @@ -3383,7 +3383,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "" @@ -6657,7 +6657,7 @@ msgid "Hyperlink Information" msgstr "" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "" @@ -7398,7 +7398,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "" @@ -7902,7 +7902,7 @@ msgid "&Open:" msgstr "" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "" @@ -7947,7 +7947,7 @@ msgid "Date deleted" msgstr "" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "" @@ -9216,7 +9216,7 @@ msgid "Digi&tal" msgstr "డిజిటల్ (&t)" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "ఫాంట్ (&F)..." @@ -12289,7 +12289,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "" -#: winecfg.rc:139 +#: winecfg.rc:141 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 " @@ -12297,241 +12297,237 @@ "option) any later version." msgstr "" -#: winecfg.rc:141 +#: winecfg.rc:143 #, fuzzy msgid "Windows registration information" msgstr "ఫాంట్... (&F)" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "" -#: winecfg.rc:153 +#: winecfg.rc:155 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:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "" -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "" -#: winecfg.rc:190 +#: winecfg.rc:192 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:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "" -#: winecfg.rc:197 +#: winecfg.rc:199 #, fuzzy msgid "&Edit..." msgstr "ఫాంట్... (&F)" -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "" -#: winecfg.rc:230 +#: winecfg.rc:232 msgid "Drive configuration" msgstr "" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "" -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "" -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 msgid "Speaker configuration" msgstr "" -#: winecfg.rc:276 -msgid "Device:" -msgstr "" - -#: winecfg.rc:278 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "" -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "" @@ -12611,19 +12607,19 @@ msgid "(System default)" msgstr "" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 msgid "Quadraphonic" msgstr "" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -12728,128 +12724,128 @@ "Remember to click 'Add' in the Drives tab to create one!\n" msgstr "" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "" -#: winecfg.rc:109 +#: winecfg.rc:111 #, fuzzy msgid "Active Title Bar" msgstr "శీర్షికపట్టీ లేకుండా (&W)" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/th.po wine-staging-1.7.41~ubuntu12.04.1/po/th.po --- wine-staging-1.7.40~ubuntu12.04.1/po/th.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/th.po 2015-04-18 23:36:02.000000000 +0000 @@ -43,8 +43,8 @@ msgid "&Modify..." msgstr "" -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "ขนาด:" @@ -540,7 +540,7 @@ msgid "&Underline" msgstr "ขีดเส้นใต้" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "สี:" @@ -709,7 +709,7 @@ msgid "&to:" msgstr "ส่งถึง:" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 msgid "Si&ze:" msgstr "ขนาด:" @@ -2180,7 +2180,7 @@ msgid "&File name:" msgstr "แฟ้ม" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "" @@ -2900,7 +2900,7 @@ msgid "Player" msgstr "" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "" @@ -3422,7 +3422,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "" @@ -6788,7 +6788,7 @@ msgid "Hyperlink Information" msgstr "รายละเอียด" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "" @@ -7553,7 +7553,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "" @@ -8062,7 +8062,7 @@ msgid "&Open:" msgstr "เปิด...\tCtrl+O" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "" @@ -8109,7 +8109,7 @@ msgid "Date deleted" msgstr "ลบ\tDel" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 #, fuzzy msgctxt "display name" msgid "Desktop" @@ -9397,7 +9397,7 @@ msgid "Digi&tal" msgstr "ดิจิตัล" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 #, fuzzy msgid "&Font..." msgstr "" @@ -12531,7 +12531,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "" -#: winecfg.rc:139 +#: winecfg.rc:141 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 " @@ -12539,249 +12539,245 @@ "option) any later version." msgstr "" -#: winecfg.rc:141 +#: winecfg.rc:143 #, fuzzy msgid "Windows registration information" msgstr "รายละเอียด" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "" -#: winecfg.rc:144 +#: winecfg.rc:146 #, fuzzy msgid "Organi&zation:" msgstr "รายละเอียด" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "" -#: winecfg.rc:153 +#: winecfg.rc:155 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:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "" -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "" -#: winecfg.rc:173 +#: winecfg.rc:175 #, fuzzy msgid "Desktop &size:" msgstr "พื้นที่ทำงาน" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "" -#: winecfg.rc:190 +#: winecfg.rc:192 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:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "" -#: winecfg.rc:197 +#: winecfg.rc:199 #, fuzzy msgid "&Edit..." msgstr "แก้ไข" -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "" -#: winecfg.rc:218 +#: winecfg.rc:220 #, fuzzy msgid "Select Drive Letter" msgstr "เลือกทั้งหมด\tCtrl+A" -#: winecfg.rc:230 +#: winecfg.rc:232 #, fuzzy msgid "Drive configuration" msgstr "รายละเอียด" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "" -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "" -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:267 #, fuzzy msgid "Defaults" msgstr "เครื่องพิมพ์ปกติ; " -#: winecfg.rc:266 +#: winecfg.rc:268 #, fuzzy msgid "Output device:" msgstr "แฟ้ม" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 #, fuzzy msgid "Speaker configuration" msgstr "รายละเอียด" -#: winecfg.rc:276 -msgid "Device:" -msgstr "" - -#: winecfg.rc:278 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "" -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "" -#: winecfg.rc:302 +#: winecfg.rc:304 #, fuzzy msgid "Folders" msgstr "ขอบกระดาษ" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "" @@ -12864,19 +12860,19 @@ msgid "(System default)" msgstr "" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 msgid "Quadraphonic" msgstr "" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -12983,130 +12979,130 @@ "Remember to click 'Add' in the Drives tab to create one!\n" msgstr "" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "" -#: winecfg.rc:98 +#: winecfg.rc:100 #, fuzzy msgid "Controls Text" msgstr "เนื้อหา" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "" -#: winecfg.rc:104 +#: winecfg.rc:106 #, fuzzy msgid "Selection Text" msgstr "เลือกทั้งหมด\tCtrl+A" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "" -#: winecfg.rc:109 +#: winecfg.rc:111 #, fuzzy msgid "Active Title Bar" msgstr "แสดงแทบเมนู" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/tr.po wine-staging-1.7.41~ubuntu12.04.1/po/tr.po --- wine-staging-1.7.40~ubuntu12.04.1/po/tr.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/tr.po 2015-04-18 23:36:02.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:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "&Boyut:" @@ -558,7 +558,7 @@ msgid "&Underline" msgstr "&Altı Çizili" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "&Renk:" @@ -725,7 +725,7 @@ msgid "&to:" msgstr "Biti&ş:" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 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:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "&Gözat..." @@ -2963,7 +2963,7 @@ msgid "Player" msgstr "Oyuncu" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "Aygıt" @@ -3479,7 +3479,7 @@ msgid "Joysticks" msgstr "Oyun Kolları" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "&Etkisizleştir" @@ -6770,7 +6770,7 @@ msgid "Hyperlink Information" msgstr "Bağlantı Bilgisi" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "&Tür:" @@ -7594,7 +7594,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -8094,7 +8094,7 @@ msgid "&Open:" msgstr "&Aç:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "&Gözat..." @@ -8139,7 +8139,7 @@ msgid "Date deleted" msgstr "Silinme tarihi" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Masaüstü" @@ -9563,7 +9563,7 @@ msgid "Digi&tal" msgstr "Sa&yısal" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Yazıtipi..." @@ -12873,7 +12873,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:139 +#: winecfg.rc:141 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 " @@ -12885,23 +12885,23 @@ "herhangi sonraki sürümü altında şartlara bağlı kalarak tekrar dağıtabilir ve/" "veya düzenlenebilir." -#: winecfg.rc:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "Windows kayıt bilgisi" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "Sahip:" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "Şirket:" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "Uygulama ayarları" -#: winecfg.rc:153 +#: winecfg.rc:155 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 " @@ -12911,55 +12911,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:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "Uygulama &Ekle..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "Uygulama &Kaldır" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "&Windows Sürümü:" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "Pencere ayarları" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Fareyi ta&m ekran pencerelerde otomatik olarak yakala" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "Pencere yöneticisinin pencereleri &düzenlemesine izin ver" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "Pencere yöneticisinin pencereleri yönetmesine izin ver" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "Sanal masaüstü kullan" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "Masaüstü büyüklüğü:" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "Ekran Çözünürlüğü" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "Bu, 10 nokta Tahoma kullanan örnek bir metindir" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "DLL Öncelikleri" -#: winecfg.rc:190 +#: winecfg.rc:192 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12969,168 +12969,162 @@ "(Windows'tan alınmış veya uygulama tarafından sağlanmış) olarak " "belirtilebilir." -#: winecfg.rc:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "Kitaplık için yeni öncelik:" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "&Ekle" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "Var olan öncelikler:" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "&Düzenle..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "Öncelik Düzenle" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "Yükleme Sırası" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "&Yerleşik (Wine)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "&Doğal (Windows)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "Önce Yer&leşik sonra Doğal" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "Önce D&oğal sonra Yerleşik" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "Sürücü Harfini Seçin" -#: winecfg.rc:230 +#: winecfg.rc:232 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Wine yapılandırması" -#: winecfg.rc:231 +#: winecfg.rc:233 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:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "&Ekle..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "Otomatik &Algıla" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "&Yol:" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "Gelişmiş Ayarlar" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "Ay&gıt:" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "Gö&zat..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "&Etiket:" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "S&eri No:" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "Noktayla başlayan dosyaları göster" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "Sürücü tanıları" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "Varsayılanlar" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "Çıktı aygıtı:" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "Ses çıkış aygıtı:" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "Girdi aygıtı:" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "Ses giriş aygıtı:" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "&Ses Testi" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 #, 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 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "Görünüm" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "Tema:" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "Tema kur..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "&Öğe:" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "Re&nk:" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "Klasörler" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "Hedef d&izin:" @@ -13210,21 +13204,21 @@ msgid "(System default)" msgstr "(Varsayılan sistem)" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 #, fuzzy #| msgid "graphic" msgid "Quadraphonic" msgstr "grafik" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -13345,127 +13339,127 @@ "\n" "Bir tane oluşturmak için Sürücüler sekmesinden Ekle'yi tıklamayı unutmayın!\n" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "Arkaplanı Denetler" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "Metni Denetler" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "Menü Arkaplanı" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "Menü Metni" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "Kaydırma Çubuğu" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "Seçim Arkaplanı" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "Seçim Metni" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "İpucu Arkaplanı" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "İpucu Metni" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "Pencere Arkaplanı" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "Pencere Metni" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "Menü Belirtmesi" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "Menü çubuğu" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/uk.po wine-staging-1.7.41~ubuntu12.04.1/po/uk.po --- wine-staging-1.7.40~ubuntu12.04.1/po/uk.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/uk.po 2015-04-18 23:36:02.000000000 +0000 @@ -46,8 +46,8 @@ msgid "&Modify..." msgstr "&Змінити..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "&Розмір:" @@ -553,7 +553,7 @@ msgid "&Underline" msgstr "&Підкреслений" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "&Колір:" @@ -720,7 +720,7 @@ msgid "&to:" msgstr "&до:" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 msgid "Si&ze:" msgstr "Ро&змір:" @@ -2201,7 +2201,7 @@ msgid "&File name:" msgstr "&Ім'я файлу:" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "&Огляд..." @@ -2958,7 +2958,7 @@ msgid "Player" msgstr "Програвач" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "Пристрій" @@ -3473,7 +3473,7 @@ msgid "Joysticks" msgstr "Джойстик" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "Вим&кнути" @@ -6759,7 +6759,7 @@ msgid "Hyperlink Information" msgstr "Дані про Гіперпосилання" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "&Тип:" @@ -7617,7 +7617,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "точок на дюйм" @@ -8117,7 +8117,7 @@ msgid "&Open:" msgstr "&Відкрити:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "&Огляд..." @@ -8162,7 +8162,7 @@ msgid "Date deleted" msgstr "Дата видалення" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "Стільниця" @@ -9587,7 +9587,7 @@ msgid "Digi&tal" msgstr "&Ци&фровий" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "&Шрифт..." @@ -12968,7 +12968,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "Оновлення конфігурації Wine в %s, будь-ласка, зачекайте..." -#: winecfg.rc:139 +#: winecfg.rc:141 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 " @@ -12979,23 +12979,23 @@ "умов GNU Lesser General Public License, яка опублікована Free Software " "Foundation; версії 2.1 Ліцензії, чи (на ваш розсуд) новішої версії." -#: winecfg.rc:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "Реєстраційна інформація Windows" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "&Власник:" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "Органі&зація:" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "Налаштування програми" -#: winecfg.rc:153 +#: winecfg.rc:155 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 " @@ -13005,55 +13005,55 @@ "пов'язана з вкладками Бібліотеки та Графіка, що дозволяє зміну налаштувань в " "цих вкладках як для окремої програми, так і глобально." -#: winecfg.rc:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "&Додати програму..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "&Видалити програму" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "&Версія Windows:" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "Параметри вікна" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "Автоматично захоплювати &мишу у повноекранних вікнах" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "Дозволити менеджеру вікон &декорувати вікна" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "Дозволити менеджеру вікон &керувати вікнами" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "&Емулювати віртуальний робочий стіл" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "Розмір робочого &столу:" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "Розширення екрану" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "Приклад тексту. Шрифт Tahoma 10 пунктів" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "Заміщення DLL" -#: winecfg.rc:190 +#: winecfg.rc:192 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -13062,55 +13062,55 @@ "Тут вказується, яку динамічно під'єднувану бібліотеку (DLL) використовувати: " "вбудовану в Wine або сторонню (з Windows, чи надану разом з програмою)." -#: winecfg.rc:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "&Нове заміщення для бібліотеки:" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "&Додати" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "Існуючі &заміщення:" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "&Змінити..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "Змінити заміщення" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "Порядок завантаження" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "&Вбудована (Wine)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "&Стороння (Windows)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "В&будована, потім стороння" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "С&тороння, потім вбудована" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "Виберіть букву диску" -#: winecfg.rc:230 +#: winecfg.rc:232 msgid "Drive configuration" msgstr "Налаштування привода" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." @@ -13118,107 +13118,103 @@ "Неможливо з'єднатися з менеджером монтування, конфігурація дисків не буде " "редагуватися." -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "&Додати..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "Автови&значення" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "&Шлях:" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "Показати &Додаткове" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "&Привід:" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "О&гляд..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "&Мітка:" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "&Сер.ном:" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "Показати &файли, що починаються з крапки" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "Діагностика драйвера" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "Типове" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "Пристрій виводу:" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "Пристрій виводу голосу:" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "Пристрій вводу:" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "Пристрій вводу голосу:" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "&Тест звуку" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 msgid "Speaker configuration" msgstr "Налаштування динаміків" -#: winecfg.rc:276 -msgid "Device:" -msgstr "&Пристрій:" - -#: winecfg.rc:278 +#: winecfg.rc:280 msgid "Speakers:" msgstr "Канали:" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "Вигляд" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "&Тема:" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "&Встановити тему..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "Е&лемент:" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "Ко&лір:" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "Теки" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "&Направити:" @@ -13298,19 +13294,19 @@ msgid "(System default)" msgstr "(Типовий системний)" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "Багатоканальний 5.1" -#: winecfg.rc:90 +#: winecfg.rc:92 msgid "Quadraphonic" msgstr "Квадрофонічний" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "Стерео" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "Моно" @@ -13428,127 +13424,127 @@ "\n" "Натисніть 'Додати' в закладці Диски щоб створити його!\n" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "Елементи керування - фон" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "Елементи керування - текст" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "Меню - фон" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "Меню - текст" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "Смуга прокручування" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "Виділення - фон" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "Виділення - текст" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "Підказка - фон" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "Підказка - текст" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "Вікно - фон" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "Вікно - текст" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "Заголовок акт. вікна" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "Заголовок акт. - текст" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "Заголовок неак. вікна" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "Заголовок неак. вікна - текст" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "Вікно повідомлення - текст" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "Робоче поле програми" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "Вікно - рамка" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "Активна рамка" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "Неактивна рамка" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "Елементи керування - тінь" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "Недоступний елемент - текст" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "Ел-ти керув. - світла рамка" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "Ел-ти керув. - темна тінь" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "Елементи керування - світло" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "Ел-ти керув. - інший фон" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "Посилання, Підсвічування" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "Градієнт заголовка акт. вікна" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "Град. заголовка неакт. вікна" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "Меню - підсвічування" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "Рядок меню" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/wa.po wine-staging-1.7.41~ubuntu12.04.1/po/wa.po --- wine-staging-1.7.40~ubuntu12.04.1/po/wa.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/wa.po 2015-04-18 23:36:02.000000000 +0000 @@ -45,8 +45,8 @@ msgid "&Modify..." msgstr "&Copyî..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "&Grandeu:" @@ -548,7 +548,7 @@ msgid "&Underline" msgstr "&Sorligné" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "&Coleur:" @@ -721,7 +721,7 @@ msgid "&to:" msgstr "" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 msgid "Si&ze:" msgstr "" @@ -2195,7 +2195,7 @@ msgid "&File name:" msgstr "&Fitchî" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "" @@ -2915,7 +2915,7 @@ msgid "Player" msgstr "" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "" @@ -3437,7 +3437,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "" @@ -6738,7 +6738,7 @@ msgid "Hyperlink Information" msgstr "Informåcion" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "" @@ -7489,7 +7489,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "" @@ -7997,7 +7997,7 @@ msgid "&Open:" msgstr "&Drovî:" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "" @@ -8044,7 +8044,7 @@ msgid "Date deleted" msgstr "&Rafacer\tDel" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "" @@ -9328,7 +9328,7 @@ msgid "Digi&tal" msgstr "&Limerike" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 #, fuzzy msgid "&Font..." msgstr "" @@ -12438,7 +12438,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "" -#: winecfg.rc:139 +#: winecfg.rc:141 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 " @@ -12446,249 +12446,245 @@ "option) any later version." msgstr "" -#: winecfg.rc:141 +#: winecfg.rc:143 #, fuzzy msgid "Windows registration information" msgstr "Informåcion" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "" -#: winecfg.rc:153 +#: winecfg.rc:155 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:157 +#: winecfg.rc:159 #, fuzzy msgid "&Add application..." msgstr "&Options" -#: winecfg.rc:158 +#: winecfg.rc:160 #, fuzzy msgid "&Remove application" msgstr "&Sicrîre..." -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "" -#: winecfg.rc:190 +#: winecfg.rc:192 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:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "" -#: winecfg.rc:197 +#: winecfg.rc:199 #, fuzzy msgid "&Edit..." msgstr "&Candjî" -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "" -#: winecfg.rc:208 +#: winecfg.rc:210 #, fuzzy msgid "&Native (Windows)" msgstr "Å dfait di &Wine..." -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "" -#: winecfg.rc:230 +#: winecfg.rc:232 #, fuzzy msgid "Drive configuration" msgstr "Informåcion" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "" -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "" -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:267 #, fuzzy msgid "Defaults" msgstr "Pådje &p" -#: winecfg.rc:266 +#: winecfg.rc:268 #, fuzzy msgid "Output device:" msgstr "&Fitchî" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 #, fuzzy msgid "Speaker configuration" msgstr "Informåcion" -#: winecfg.rc:276 -msgid "Device:" -msgstr "" - -#: winecfg.rc:278 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "" -#: winecfg.rc:289 +#: winecfg.rc:291 #, fuzzy msgid "&Install theme..." msgstr "&Sicrîre..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "" @@ -12769,19 +12765,19 @@ msgid "(System default)" msgstr "" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 msgid "Quadraphonic" msgstr "" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -12886,128 +12882,128 @@ "Remember to click 'Add' in the Drives tab to create one!\n" msgstr "" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "" -#: winecfg.rc:109 +#: winecfg.rc:111 #, fuzzy msgid "Active Title Bar" msgstr "Sin bår di &Tite" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/wine.pot wine-staging-1.7.41~ubuntu12.04.1/po/wine.pot --- wine-staging-1.7.40~ubuntu12.04.1/po/wine.pot 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/wine.pot 2015-04-18 23:36:02.000000000 +0000 @@ -39,8 +39,8 @@ msgid "&Modify..." msgstr "" -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "" @@ -529,7 +529,7 @@ msgid "&Underline" msgstr "" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "" @@ -696,7 +696,7 @@ msgid "&to:" msgstr "" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 msgid "Si&ze:" msgstr "" @@ -2143,7 +2143,7 @@ msgid "&File name:" msgstr "" -#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "" @@ -2842,7 +2842,7 @@ msgid "Player" msgstr "" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "" @@ -3344,7 +3344,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "" @@ -6616,7 +6616,7 @@ msgid "Hyperlink Information" msgstr "" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "" @@ -7353,7 +7353,7 @@ msgid "b" msgstr "" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "" @@ -7849,7 +7849,7 @@ msgid "&Open:" msgstr "" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "" @@ -7894,7 +7894,7 @@ msgid "Date deleted" msgstr "" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "" @@ -9161,7 +9161,7 @@ msgid "Digi&tal" msgstr "" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "" @@ -12226,7 +12226,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "" -#: winecfg.rc:139 +#: winecfg.rc:141 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 " @@ -12234,239 +12234,235 @@ "option) any later version." msgstr "" -#: winecfg.rc:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "" -#: winecfg.rc:153 +#: winecfg.rc:155 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:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "" -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "" -#: winecfg.rc:190 +#: winecfg.rc:192 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:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "" -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "" -#: winecfg.rc:230 +#: winecfg.rc:232 msgid "Drive configuration" msgstr "" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "" -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "" -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "" -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 msgid "Speaker configuration" msgstr "" -#: winecfg.rc:276 -msgid "Device:" -msgstr "" - -#: winecfg.rc:278 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "" -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "" @@ -12546,19 +12542,19 @@ msgid "(System default)" msgstr "" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 msgid "Quadraphonic" msgstr "" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -12663,127 +12659,127 @@ "Remember to click 'Add' in the Drives tab to create one!\n" msgstr "" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/zh_CN.po wine-staging-1.7.41~ubuntu12.04.1/po/zh_CN.po --- wine-staging-1.7.40~ubuntu12.04.1/po/zh_CN.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/zh_CN.po 2015-04-18 23:36:02.000000000 +0000 @@ -42,8 +42,8 @@ msgid "&Modify..." msgstr "" -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "大小(&S):" @@ -540,7 +540,7 @@ msgid "&Underline" msgstr "下划线(&U)" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "配色(&C):" @@ -707,7 +707,7 @@ msgid "&to:" msgstr "到(&T):" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 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:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "浏览(&R)..." @@ -2873,7 +2873,7 @@ msgid "Player" msgstr "播放" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "设备" @@ -3377,7 +3377,7 @@ msgid "Joysticks" msgstr "" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "停用(&D)" @@ -6672,7 +6672,7 @@ msgid "Hyperlink Information" msgstr "超链接信息" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "类型(&T):" @@ -7454,7 +7454,7 @@ msgid "b" msgstr "b" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "dpi" @@ -7950,7 +7950,7 @@ msgid "&Open:" msgstr "打开(&O):" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "浏览(&B)..." @@ -7995,7 +7995,7 @@ msgid "Date deleted" msgstr "删除日期" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "桌面" @@ -9274,7 +9274,7 @@ msgid "Digi&tal" msgstr "数字时钟(&T)" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "字体(&F)..." @@ -12397,7 +12397,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "正在更新位于 %s 的 Wine 配置,请稍候……" -#: winecfg.rc:139 +#: winecfg.rc:141 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 " @@ -12408,23 +12408,23 @@ "(LGPL)来对其进行添加、修改和重新发布。许可协议版本为2.1,您也可以选择采用更" "新的版本。" -#: winecfg.rc:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "Windows 注册信息" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "姓名:" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "单位:" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "应用程序设置" -#: winecfg.rc:153 +#: winecfg.rc:155 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 " @@ -12433,55 +12433,55 @@ "对不同的程序,可以让 Wine 假装成不同版本的 Windows,也可以在“函数库”与“显" "示”标签页中作不同的设置。" -#: winecfg.rc:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "增加程序设置(&A)..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "删除程序设置(&R)" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "&Windows 版本:" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "窗口设置" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "全屏模式下自动捕获光标(&M)" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "允许窗口管理器装饰窗口(&D)" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "允许窗口管理器控制窗口(&W)" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "虚拟桌面(&D)" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "桌面大小(&S):" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "屏幕分辨率" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "这是使用 10 号 Tahoma 字体的示例文本" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "DLL 顶替" -#: winecfg.rc:190 +#: winecfg.rc:192 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12490,167 +12490,161 @@ "对各个动态链接库,可以选择使用 Wine 提供的内建版本,还是使用取自 Windows 或程" "序所提供的原装版本。" -#: winecfg.rc:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "新增函数库顶替(&N):" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "添加(&A)" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "已有的函数库顶替(&O):" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "编辑(&E)..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "编辑顶替" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "载入顺序" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "内建(Wine)(&B)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "原装(Windows)(&N)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "内建先于原装(&L)" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "原装先于内建(&V)" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "选择驱动器盘符" -#: winecfg.rc:230 +#: winecfg.rc:232 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Wine 设置" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "无法连接到挂载管理器。不能修改驱动器配置。" -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "添加(&A)..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "自动侦测(&D)" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "路径(&P):" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "显示高级选项(&A)" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "设备(&V):" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "浏览(&W)..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "卷标(&L):" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "序列号(&E):" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "显示隐藏文件(&D)" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "驱动程序诊断" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "默认值" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "输出设备:" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "语音输出设备:" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "输入设备:" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "语音输入设备:" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "测试音频(&T)" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 #, fuzzy #| msgid "Wine configuration" msgid "Speaker configuration" msgstr "Wine 设置" -#: winecfg.rc:276 -#, fuzzy -#| msgid "De&vice:" -msgid "Device:" -msgstr "设备(&V):" - -#: winecfg.rc:278 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "外观" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "主题(&T):" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "安装主题(&I)..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "物件(&E):" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "颜色(&O):" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "文件夹" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "映射至(&L):" @@ -12730,21 +12724,21 @@ msgid "(System default)" msgstr "(系统默认)" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 #, fuzzy #| msgid "Graphics" msgid "Quadraphonic" msgstr "显示" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -12863,127 +12857,127 @@ "\n" "请记得点选“驱动器”标签的“添加”来建立它!\n" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "控件背景" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "控件文字" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "菜单背景" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "菜单文字" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "滚动条" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "选中的文字背景" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "选中的文字" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "工具提示背景" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "工具提示文字" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "窗口背景" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "窗口文字" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "活动窗口标题栏" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "活动窗口标题栏文字" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "非活动窗口标题栏" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "非活动窗口标题栏" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "消息框文字" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "应用程序工作区" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "焦点控件框架" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "活动窗口边界" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "非活动窗口边界" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "控件阴影" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "灰色文字" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "控件高亮" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "控件灰暗" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "控件光亮" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "控件切换背景" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "鼠标拖选框" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "活动窗口标题栏渐进目标色" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "非活动窗口标题栏渐进目标色" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "菜单高亮" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "菜单栏" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/po/zh_TW.po wine-staging-1.7.41~ubuntu12.04.1/po/zh_TW.po --- wine-staging-1.7.40~ubuntu12.04.1/po/zh_TW.po 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/po/zh_TW.po 2015-04-18 23:36:02.000000000 +0000 @@ -45,8 +45,8 @@ msgid "&Modify..." msgstr "修改(&M)..." -#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:198 -#: winecfg.rc:235 wordpad.rc:248 +#: appwiz.rc:69 appwiz.rc:45 cryptui.rc:346 msacm32.rc:40 winecfg.rc:200 +#: winecfg.rc:237 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:212 winecfg.rc:222 wineconsole.rc:134 +#: taskmgr.rc:517 winecfg.rc:214 winecfg.rc:224 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:213 winecfg.rc:223 wineconsole.rc:135 winefile.rc:132 +#: winecfg.rc:215 winecfg.rc:225 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:292 +#: comdlg32.rc:258 comdlg32.rc:435 winecfg.rc:294 msgid "&Size:" msgstr "大小(&S):" @@ -545,7 +545,7 @@ msgid "&Underline" msgstr "底線(&U)" -#: comdlg32.rc:268 winecfg.rc:290 +#: comdlg32.rc:268 winecfg.rc:292 msgid "&Color:" msgstr "配色(&C):" @@ -712,7 +712,7 @@ msgid "&to:" msgstr "到(&T):" -#: comdlg32.rc:415 winecfg.rc:298 +#: comdlg32.rc:415 winecfg.rc:300 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:307 +#: cryptui.rc:296 cryptui.rc:318 cryptui.rc:432 winecfg.rc:309 msgid "B&rowse..." msgstr "瀏覽(&R)..." @@ -2920,7 +2920,7 @@ msgid "Player" msgstr "玩家" -#: dinput.rc:52 +#: dinput.rc:52 winecfg.rc:89 msgid "Device" msgstr "裝置" @@ -3434,7 +3434,7 @@ msgid "Joysticks" msgstr "搖桿" -#: joy.rc:39 winecfg.rc:211 +#: joy.rc:39 winecfg.rc:213 msgid "&Disable" msgstr "停用(&D)" @@ -6722,7 +6722,7 @@ msgid "Hyperlink Information" msgstr "超連結資訊" -#: mshtml.rc:43 winecfg.rc:243 +#: mshtml.rc:43 winecfg.rc:245 msgid "&Type:" msgstr "類型(&T):" @@ -7538,7 +7538,7 @@ msgid "b" msgstr "位元" -#: sane.rc:34 wineps.rc:49 winecfg.rc:181 +#: sane.rc:34 wineps.rc:49 winecfg.rc:183 msgctxt "unit: dots/inch" msgid "dpi" msgstr "點/英吋" @@ -8036,7 +8036,7 @@ msgid "&Open:" msgstr "開啟(&O):" -#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:241 +#: shell32.rc:342 progman.rc:182 progman.rc:201 progman.rc:218 winecfg.rc:243 #: winefile.rc:133 msgid "&Browse..." msgstr "瀏覽(&B)..." @@ -8081,7 +8081,7 @@ msgid "Date deleted" msgstr "日期已刪除" -#: shell32.rc:156 winecfg.rc:99 winefile.rc:100 +#: shell32.rc:156 winecfg.rc:101 winefile.rc:100 msgctxt "display name" msgid "Desktop" msgstr "桌面" @@ -9431,7 +9431,7 @@ msgid "Digi&tal" msgstr "數位時鐘(&T)" -#: clock.rc:35 notepad.rc:53 winecfg.rc:301 winefile.rc:63 wordpad.rc:84 +#: clock.rc:35 notepad.rc:53 winecfg.rc:303 winefile.rc:63 wordpad.rc:84 msgid "&Font..." msgstr "字型(&F)..." @@ -12789,7 +12789,7 @@ msgid "The Wine configuration in %s is being updated, please wait..." msgstr "正在更新 %s 的 Wine 設定,請稍候..." -#: winecfg.rc:139 +#: winecfg.rc:141 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 " @@ -12799,23 +12799,23 @@ "這個程式是自由軟體; 您可以遵照自由軟體基金會所制定的 GNU LGPL 2.1 版或者更新" "版本的許可條款, 來修改和重新散布這個程式。" -#: winecfg.rc:141 +#: winecfg.rc:143 msgid "Windows registration information" msgstr "Windows 註冊資訊" -#: winecfg.rc:142 +#: winecfg.rc:144 msgid "&Owner:" msgstr "姓名(&O):" -#: winecfg.rc:144 +#: winecfg.rc:146 msgid "Organi&zation:" msgstr "組織(&Z):" -#: winecfg.rc:152 +#: winecfg.rc:154 msgid "Application settings" msgstr "應用程式設定" -#: winecfg.rc:153 +#: winecfg.rc:155 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 " @@ -12824,55 +12824,55 @@ "Wine 可以對不同程式偽裝成不同版本的 Windows。 「函式庫」與「顯示」分頁將連結" "到這個分頁, 除了調整預設設定, 也能調整個別程式的設定。" -#: winecfg.rc:157 +#: winecfg.rc:159 msgid "&Add application..." msgstr "新增程式設定(&A)..." -#: winecfg.rc:158 +#: winecfg.rc:160 msgid "&Remove application" msgstr "移除程式設定(&R)" -#: winecfg.rc:159 +#: winecfg.rc:161 msgid "&Windows Version:" msgstr "&Windows 版本:" -#: winecfg.rc:167 +#: winecfg.rc:169 msgid "Window settings" msgstr "視窗設定" -#: winecfg.rc:168 +#: winecfg.rc:170 msgid "Automatically capture the &mouse in full-screen windows" msgstr "自動在全螢幕視窗中捕捉滑鼠(&M)" -#: winecfg.rc:169 +#: winecfg.rc:171 msgid "Allow the window manager to &decorate the windows" msgstr "允許視窗管理器裝飾視窗(&D)" -#: winecfg.rc:170 +#: winecfg.rc:172 msgid "Allow the &window manager to control the windows" msgstr "允許視窗管理器控制視窗(&W)" -#: winecfg.rc:171 +#: winecfg.rc:173 msgid "&Emulate a virtual desktop" msgstr "模擬一個虛擬桌面(&E)" -#: winecfg.rc:173 +#: winecfg.rc:175 msgid "Desktop &size:" msgstr "桌面大小(&S):" -#: winecfg.rc:178 +#: winecfg.rc:180 msgid "Screen resolution" msgstr "螢幕解析度" -#: winecfg.rc:182 +#: winecfg.rc:184 msgid "This is a sample text using 10 point Tahoma" msgstr "這是使用 10 點 Tahoma 字型的範例文字" -#: winecfg.rc:189 +#: winecfg.rc:191 msgid "DLL overrides" msgstr "DLL 覆載" -#: winecfg.rc:190 +#: winecfg.rc:192 msgid "" "Dynamic Link Libraries can be specified individually to be either builtin " "(provided by Wine) or native (taken from Windows or provided by the " @@ -12881,167 +12881,161 @@ "動態連結函式庫可以個別設定,來指定要使用 Wine 提供的內建版本,還是使用取自 " "Windows 或程式所提供的原生版本。" -#: winecfg.rc:192 +#: winecfg.rc:194 msgid "&New override for library:" msgstr "新增函式庫覆載(&N):" -#: winecfg.rc:194 wordpad.rc:247 +#: winecfg.rc:196 wordpad.rc:247 msgid "&Add" msgstr "新增(&A)" -#: winecfg.rc:195 +#: winecfg.rc:197 msgid "Existing &overrides:" msgstr "已有的函式庫覆載(&O):" -#: winecfg.rc:197 +#: winecfg.rc:199 msgid "&Edit..." msgstr "編輯(&E)..." -#: winecfg.rc:203 +#: winecfg.rc:205 msgid "Edit Override" msgstr "編輯覆載設定" -#: winecfg.rc:206 +#: winecfg.rc:208 msgid "Load order" msgstr "載入順序" -#: winecfg.rc:207 +#: winecfg.rc:209 msgid "&Builtin (Wine)" msgstr "內建(Wine)(&B)" -#: winecfg.rc:208 +#: winecfg.rc:210 msgid "&Native (Windows)" msgstr "原生(Windows)(&N)" -#: winecfg.rc:209 +#: winecfg.rc:211 msgid "Bui<in then Native" msgstr "內建先於原生(&L)" -#: winecfg.rc:210 +#: winecfg.rc:212 msgid "Nati&ve then Builtin" msgstr "原生先於內建(&V)" -#: winecfg.rc:218 +#: winecfg.rc:220 msgid "Select Drive Letter" msgstr "選擇儲存裝置代號" -#: winecfg.rc:230 +#: winecfg.rc:232 #, fuzzy #| msgid "Wine configuration" msgid "Drive configuration" msgstr "Wine 設定" -#: winecfg.rc:231 +#: winecfg.rc:233 msgid "" "Failed to connect to the mount manager, the drive configuration cannot be " "edited." msgstr "連線到掛載管理員時失敗,無法編輯磁碟組態。" -#: winecfg.rc:234 +#: winecfg.rc:236 msgid "&Add..." msgstr "加入(&A)..." -#: winecfg.rc:236 +#: winecfg.rc:238 msgid "Auto&detect" msgstr "自動偵測(&D)" -#: winecfg.rc:239 +#: winecfg.rc:241 msgid "&Path:" msgstr "路徑(&P):" -#: winecfg.rc:246 winecfg.rc:38 +#: winecfg.rc:248 winecfg.rc:38 msgid "Show &Advanced" msgstr "顯示進階選項(&A)" -#: winecfg.rc:247 +#: winecfg.rc:249 msgid "De&vice:" msgstr "裝置(&V):" -#: winecfg.rc:249 +#: winecfg.rc:251 msgid "Bro&wse..." msgstr "瀏覽(&W)..." -#: winecfg.rc:251 +#: winecfg.rc:253 msgid "&Label:" msgstr "標貼(&L):" -#: winecfg.rc:253 +#: winecfg.rc:255 msgid "S&erial:" msgstr "序號(&E):" -#: winecfg.rc:256 +#: winecfg.rc:258 msgid "Show &dot files" msgstr "顯示隱藏檔案(&D)" -#: winecfg.rc:263 +#: winecfg.rc:265 msgid "Driver diagnostics" msgstr "驅動程式資訊" -#: winecfg.rc:265 +#: winecfg.rc:267 msgid "Defaults" msgstr "預設" -#: winecfg.rc:266 +#: winecfg.rc:268 msgid "Output device:" msgstr "輸出裝置:" -#: winecfg.rc:267 +#: winecfg.rc:269 msgid "Voice output device:" msgstr "語音輸出裝置:" -#: winecfg.rc:268 +#: winecfg.rc:270 msgid "Input device:" msgstr "輸入裝置:" -#: winecfg.rc:269 +#: winecfg.rc:271 msgid "Voice input device:" msgstr "語音輸入裝置:" -#: winecfg.rc:274 +#: winecfg.rc:276 msgid "&Test Sound" msgstr "測試音效(&T)" -#: winecfg.rc:275 +#: winecfg.rc:277 winecfg.rc:90 #, fuzzy #| msgid "Wine configuration" msgid "Speaker configuration" msgstr "Wine 設定" -#: winecfg.rc:276 -#, fuzzy -#| msgid "De&vice:" -msgid "Device:" -msgstr "裝置(&V):" - -#: winecfg.rc:278 +#: winecfg.rc:280 msgid "Speakers:" msgstr "" -#: winecfg.rc:286 +#: winecfg.rc:288 msgid "Appearance" msgstr "外觀" -#: winecfg.rc:287 +#: winecfg.rc:289 msgid "&Theme:" msgstr "布景主題(&T):" -#: winecfg.rc:289 +#: winecfg.rc:291 msgid "&Install theme..." msgstr "安裝布景主題(&I)..." -#: winecfg.rc:294 +#: winecfg.rc:296 msgid "It&em:" msgstr "項目(&E):" -#: winecfg.rc:296 +#: winecfg.rc:298 msgid "C&olor:" msgstr "顏色(&O):" -#: winecfg.rc:302 +#: winecfg.rc:304 msgid "Folders" msgstr "資料夾" -#: winecfg.rc:305 +#: winecfg.rc:307 msgid "&Link to:" msgstr "連結至(&L):" @@ -13121,21 +13115,21 @@ msgid "(System default)" msgstr "(系統預設值)" -#: winecfg.rc:89 +#: winecfg.rc:91 msgid "5.1 Surround" msgstr "" -#: winecfg.rc:90 +#: winecfg.rc:92 #, fuzzy #| msgid "graphic" msgid "Quadraphonic" msgstr "圖形" -#: winecfg.rc:91 +#: winecfg.rc:93 msgid "Stereo" msgstr "" -#: winecfg.rc:92 +#: winecfg.rc:94 msgid "Mono" msgstr "" @@ -13255,127 +13249,127 @@ "\n" "請記得點選「儲存裝置」分頁的「加入」來建立一個新磁碟!\n" -#: winecfg.rc:97 +#: winecfg.rc:99 msgid "Controls Background" msgstr "按鈕背景" -#: winecfg.rc:98 +#: winecfg.rc:100 msgid "Controls Text" msgstr "按鈕文字" -#: winecfg.rc:100 +#: winecfg.rc:102 msgid "Menu Background" msgstr "功能表背景" -#: winecfg.rc:101 +#: winecfg.rc:103 msgid "Menu Text" msgstr "功能表文字" -#: winecfg.rc:102 +#: winecfg.rc:104 msgid "Scrollbar" msgstr "捲軸" -#: winecfg.rc:103 +#: winecfg.rc:105 msgid "Selection Background" msgstr "選擇區背景" -#: winecfg.rc:104 +#: winecfg.rc:106 msgid "Selection Text" msgstr "選擇區文字" -#: winecfg.rc:105 +#: winecfg.rc:107 msgid "Tooltip Background" msgstr "工具提示背景" -#: winecfg.rc:106 +#: winecfg.rc:108 msgid "Tooltip Text" msgstr "工具提示文字" -#: winecfg.rc:107 +#: winecfg.rc:109 msgid "Window Background" msgstr "視窗背景" -#: winecfg.rc:108 +#: winecfg.rc:110 msgid "Window Text" msgstr "視窗文字" -#: winecfg.rc:109 +#: winecfg.rc:111 msgid "Active Title Bar" msgstr "使用中標題列" -#: winecfg.rc:110 +#: winecfg.rc:112 msgid "Active Title Text" msgstr "使用中標題列文字" -#: winecfg.rc:111 +#: winecfg.rc:113 msgid "Inactive Title Bar" msgstr "非使用中標題列" -#: winecfg.rc:112 +#: winecfg.rc:114 msgid "Inactive Title Text" msgstr "非使用中標題列文字" -#: winecfg.rc:113 +#: winecfg.rc:115 msgid "Message Box Text" msgstr "訊息方塊文字" -#: winecfg.rc:114 +#: winecfg.rc:116 msgid "Application Workspace" msgstr "應用程式工作區" -#: winecfg.rc:115 +#: winecfg.rc:117 msgid "Window Frame" msgstr "視窗邊框" -#: winecfg.rc:116 +#: winecfg.rc:118 msgid "Active Border" msgstr "使用中邊框" -#: winecfg.rc:117 +#: winecfg.rc:119 msgid "Inactive Border" msgstr "非使用中邊框" -#: winecfg.rc:118 +#: winecfg.rc:120 msgid "Controls Shadow" msgstr "按鈕背景" -#: winecfg.rc:119 +#: winecfg.rc:121 msgid "Gray Text" msgstr "灰色文字" -#: winecfg.rc:120 +#: winecfg.rc:122 msgid "Controls Highlight" msgstr "按鈕高亮度" -#: winecfg.rc:121 +#: winecfg.rc:123 msgid "Controls Dark Shadow" msgstr "按鈕陰影" -#: winecfg.rc:122 +#: winecfg.rc:124 msgid "Controls Light" msgstr "按鈕亮度" -#: winecfg.rc:123 +#: winecfg.rc:125 msgid "Controls Alternate Background" msgstr "按鈕替換背景" -#: winecfg.rc:124 +#: winecfg.rc:126 msgid "Hot Tracked Item" msgstr "熱門軌段的項目" -#: winecfg.rc:125 +#: winecfg.rc:127 msgid "Active Title Bar Gradient" msgstr "使用中標題列梯度" -#: winecfg.rc:126 +#: winecfg.rc:128 msgid "Inactive Title Bar Gradient" msgstr "非使用中標題列梯度" -#: winecfg.rc:127 +#: winecfg.rc:129 msgid "Menu Highlight" msgstr "選單高亮度" -#: winecfg.rc:128 +#: winecfg.rc:130 msgid "Menu Bar" msgstr "選單列" diff -Nru wine-staging-1.7.40~ubuntu12.04.1/programs/rpcss/epmp.c wine-staging-1.7.41~ubuntu12.04.1/programs/rpcss/epmp.c --- wine-staging-1.7.40~ubuntu12.04.1/programs/rpcss/epmp.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/programs/rpcss/epmp.c 2015-04-18 23:36:02.000000000 +0000 @@ -252,6 +252,8 @@ } LeaveCriticalSection(&csEpm); + + I_RpcFree(protseq); } void __cdecl ept_lookup_handle_free(handle_t h, diff -Nru wine-staging-1.7.40~ubuntu12.04.1/programs/winecfg/appdefaults.c wine-staging-1.7.41~ubuntu12.04.1/programs/winecfg/appdefaults.c --- wine-staging-1.7.40~ubuntu12.04.1/programs/winecfg/appdefaults.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/programs/winecfg/appdefaults.c 2015-04-18 23:36:02.000000000 +0000 @@ -326,7 +326,7 @@ static const WCHAR pathC[] = { 'c',':','\\',0 }; OPENFILENAMEW ofn = { sizeof(OPENFILENAMEW), - 0, /*hInst*/0, 0, NULL, 0, 0, NULL, + dialog, /*hInst*/0, 0, NULL, 0, 0, NULL, 0, NULL, 0, pathC, 0, OFN_SHOWHELP | OFN_HIDEREADONLY | OFN_ENABLESIZING, 0, 0, NULL, 0, NULL }; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/programs/winecfg/audio.c wine-staging-1.7.41~ubuntu12.04.1/programs/winecfg/audio.c --- wine-staging-1.7.40~ubuntu12.04.1/programs/winecfg/audio.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/programs/winecfg/audio.c 2015-04-18 23:36:02.000000000 +0000 @@ -225,6 +225,10 @@ BOOL have_driver = FALSE; HRESULT hr; UINT i; + LVCOLUMNW lvcol; + WCHAR colW[64], speaker_str[256]; + RECT rect; + DWORD width; WINE_TRACE("\n"); @@ -271,8 +275,6 @@ 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)); @@ -282,19 +284,35 @@ i++; } + GetClientRect(GetDlgItem(hDlg, IDC_LIST_AUDIO_DEVICES), &rect); + width = (rect.right - rect.left) * 3 / 5; + + LoadStringW(GetModuleHandleW(NULL), IDS_AUDIO_DEVICE, colW, sizeof(colW)/sizeof(*colW)); + lvcol.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM; + lvcol.pszText = colW; + lvcol.cchTextMax = lstrlenW(colW); + lvcol.cx = width; + SendDlgItemMessageW(hDlg, IDC_LIST_AUDIO_DEVICES, LVM_INSERTCOLUMNW, 0, (LPARAM)&lvcol); + + LoadStringW(GetModuleHandleW(NULL), IDS_AUDIO_SPEAKER_CONFIG, colW, sizeof(colW)/sizeof(*colW)); + lvcol.pszText = colW; + lvcol.cchTextMax = lstrlenW(colW); + lvcol.cx = rect.right - rect.left - width; + SendDlgItemMessageW(hDlg, IDC_LIST_AUDIO_DEVICES, LVM_INSERTCOLUMNW, 1, (LPARAM)&lvcol); + + EnableWindow(GetDlgItem(hDlg, IDC_SPEAKERCONFIG_SPEAKERS), 0); + if(have_driver){ WCHAR *reg_out_dev, *reg_vout_dev, *reg_in_dev, *reg_vin_dev; - 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){ + LVITEMW lvitem; + if(!render_devs[i].id) continue; @@ -303,14 +321,9 @@ SendDlgItemMessageW(hDlg, IDC_AUDIOOUT_DEVICE, CB_SETITEMDATA, i + 1, (LPARAM)&render_devs[i]); - 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, @@ -319,11 +332,26 @@ i + 1, (LPARAM)&render_devs[i]); if(reg_vout_dev && !lstrcmpW(render_devs[i].id, reg_vout_dev)) 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); + lvitem.mask = LVIF_TEXT | LVIF_PARAM; + lvitem.iItem = i; + lvitem.iSubItem = 0; + lvitem.pszText = render_devs[i].name.u.pwszVal; + lvitem.cchTextMax = lstrlenW(lvitem.pszText); + lvitem.lParam = (LPARAM)&render_devs[i]; + + SendDlgItemMessageW(hDlg, IDC_LIST_AUDIO_DEVICES, LVM_INSERTITEMW, 0, (LPARAM)&lvitem); + + LoadStringW(GetModuleHandleW(NULL), speaker_configs[render_devs[i].speaker_config].text_id, + speaker_str, sizeof(speaker_str) / sizeof(*speaker_str)); + + lvitem.mask = LVIF_TEXT; + lvitem.iItem = i; + lvitem.iSubItem = 1; + lvitem.pszText = speaker_str; + lvitem.cchTextMax = lstrlenW(lvitem.pszText); + + SendDlgItemMessageW(hDlg, IDC_LIST_AUDIO_DEVICES, LVM_SETITEMW, 0, (LPARAM)&lvitem); } for(i = 0; i < num_capture_devs; ++i){ @@ -436,6 +464,22 @@ IMMDeviceEnumerator_Release(devenum); } +static void listview_changed(HWND hDlg) +{ + int idx; + + idx = SendDlgItemMessageW(hDlg, IDC_LIST_AUDIO_DEVICES, LVM_GETNEXTITEM, -1, LVNI_SELECTED); + if(idx < 0) { + EnableWindow(GetDlgItem(hDlg, IDC_SPEAKERCONFIG_SPEAKERS), 0); + return; + } + + SendDlgItemMessageW(hDlg, IDC_SPEAKERCONFIG_SPEAKERS, CB_SETCURSEL, + render_devs[idx].speaker_config, 0); + + EnableWindow(GetDlgItem(hDlg, IDC_SPEAKERCONFIG_SPEAKERS), 1); +} + INT_PTR CALLBACK AudioDlgProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { @@ -469,26 +513,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); + dev = SendDlgItemMessageW(hDlg, IDC_LIST_AUDIO_DEVICES, LVM_GETNEXTITEM, -1, LVNI_SELECTED); if(dev < num_render_devs){ + WCHAR speaker_str[256]; + LVITEMW lvitem; + render_devs[dev].speaker_config = idx; + + LoadStringW(GetModuleHandleW(NULL), speaker_configs[idx].text_id, + speaker_str, sizeof(speaker_str) / sizeof(*speaker_str)); + + lvitem.mask = LVIF_TEXT; + lvitem.iItem = dev; + lvitem.iSubItem = 1; + lvitem.pszText = speaker_str; + lvitem.cchTextMax = lstrlenW(lvitem.pszText); + + SendDlgItemMessageW(hDlg, IDC_LIST_AUDIO_DEVICES, LVM_SETITEMW, 0, (LPARAM)&lvitem); + SendMessageW(GetParent(hDlg), PSM_CHANGED, 0, 0); } } @@ -512,6 +560,9 @@ break; case PSN_SETACTIVE: break; + case LVN_ITEMCHANGED: + listview_changed(hDlg); + break; } break; case WM_INITDIALOG: diff -Nru wine-staging-1.7.40~ubuntu12.04.1/programs/winecfg/resource.h wine-staging-1.7.41~ubuntu12.04.1/programs/winecfg/resource.h --- wine-staging-1.7.40~ubuntu12.04.1/programs/winecfg/resource.h 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/programs/winecfg/resource.h 2015-04-18 23:36:02.000000000 +0000 @@ -149,12 +149,14 @@ #define IDS_AUDIO_TEST_FAILED 1309 #define IDS_AUDIO_TEST_FAILED_TITLE 1310 #define IDS_AUDIO_SYSDEFAULT 1311 -#define IDC_SPEAKERCONFIG_DEVICE 1312 +#define IDS_AUDIO_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 +#define IDC_LIST_AUDIO_DEVICES 1318 +#define IDS_AUDIO_SPEAKER_CONFIG 1319 /* desktop integration tab */ #define IDC_THEME_COLORCOMBO 1401 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/programs/winecfg/theme.c wine-staging-1.7.41~ubuntu12.04.1/programs/winecfg/theme.c --- wine-staging-1.7.40~ubuntu12.04.1/programs/winecfg/theme.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/programs/winecfg/theme.c 2015-04-18 23:36:02.000000000 +0000 @@ -635,7 +635,7 @@ title, sizeof (title) / sizeof (title[0])); ofn.lStructSize = sizeof(OPENFILENAMEW); - ofn.hwndOwner = 0; + ofn.hwndOwner = dialog; ofn.hInstance = 0; ofn.lpstrFilter = filter; ofn.lpstrCustomFilter = NULL; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/programs/winecfg/winecfg.rc wine-staging-1.7.41~ubuntu12.04.1/programs/winecfg/winecfg.rc --- wine-staging-1.7.40~ubuntu12.04.1/programs/winecfg/winecfg.rc 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/programs/winecfg/winecfg.rc 2015-04-18 23:36:02.000000000 +0000 @@ -85,6 +85,8 @@ IDS_AUDIO_TEST_FAILED "Audio test failed!" IDS_AUDIO_TEST_FAILED_TITLE "Error" IDS_AUDIO_SYSDEFAULT "(System default)" + IDS_AUDIO_DEVICE "Device" + IDS_AUDIO_SPEAKER_CONFIG "Speaker configuration" IDS_AUDIO_SPEAKER_5POINT1 "5.1 Surround" IDS_AUDIO_SPEAKER_QUAD "Quadraphonic" IDS_AUDIO_SPEAKER_STEREO "Stereo" @@ -271,11 +273,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 + GROUPBOX "Speaker configuration",IDC_STATIC,8,132,244,86 + CONTROL "",IDC_LIST_AUDIO_DEVICES,"SysListView32",LVS_REPORT | LVS_AUTOARRANGE | LVS_ALIGNLEFT | + LVS_SINGLESEL | WS_BORDER | WS_TABSTOP | LVS_NOSORTHEADER, 15,146,230,52 + LTEXT "Speakers:",IDC_STATIC,18,202,230,8 + COMBOBOX IDC_SPEAKERCONFIG_SPEAKERS,110,200,135,14,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP END IDD_DESKTOP_INTEGRATION DIALOG 0, 0, 260, 220 diff -Nru wine-staging-1.7.40~ubuntu12.04.1/programs/wineconsole/wineconsole.c wine-staging-1.7.41~ubuntu12.04.1/programs/wineconsole/wineconsole.c --- wine-staging-1.7.40~ubuntu12.04.1/programs/wineconsole/wineconsole.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/programs/wineconsole/wineconsole.c 2015-04-18 23:36:02.000000000 +0000 @@ -830,13 +830,24 @@ break; case from_process_name: { - WCHAR buffer[256]; + int len; + WCHAR *buffer; - MultiByteToWideChar(CP_ACP, 0, wci.ptr, -1, buffer, sizeof(buffer) / sizeof(buffer[0])); + len = MultiByteToWideChar(CP_ACP, 0, wci.ptr, -1, NULL, 0); + + buffer = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); + if (!buffer) + return 0; + + MultiByteToWideChar(CP_ACP, 0, wci.ptr, -1, buffer, len); if (!(data = WINECON_Init(hInst, GetCurrentProcessId(), buffer, wci.backend, nCmdShow))) + { + HeapFree(GetProcessHeap(), 0, buffer); return 0; + } ret = WINECON_Spawn(data, buffer); + HeapFree(GetProcessHeap(), 0, buffer); if (!ret) { WINECON_Delete(data); diff -Nru wine-staging-1.7.40~ubuntu12.04.1/README.md wine-staging-1.7.41~ubuntu12.04.1/README.md --- wine-staging-1.7.40~ubuntu12.04.1/README.md 2015-04-05 00:10:08.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/README.md 2015-04-18 23:54:01.000000000 +0000 @@ -39,7 +39,7 @@ Included bug fixes and improvements ----------------------------------- -**Bug fixes and features in Wine Staging 1.7.40 [220]:** +**Bug fixes and features in Wine Staging 1.7.41 [218]:** *Note: The following list only contains features and bug fixes which are not yet available in vanilla Wine. They are removed from the list as soon as they @@ -49,8 +49,10 @@ for more details.* * Add Dynamic DST exceptions for Israel Standard Time ([Wine Bug #36374](https://bugs.winehq.org/show_bug.cgi?id=36374)) +* Add a ProfileList\ registry subkey ([Wine Bug #15670](https://bugs.winehq.org/show_bug.cgi?id=15670)) * Add default ACLs for user shell folders * Add implementation for CreateThreadpool ([Wine Bug #35192](https://bugs.winehq.org/show_bug.cgi?id=35192)) +* Add implementation for mfplat.MFTRegister ([Wine Bug #37811](https://bugs.winehq.org/show_bug.cgi?id=37811)) * 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 semi-stub for GetFileVersionInfoExA/W ([Wine Bug #38098](https://bugs.winehq.org/show_bug.cgi?id=38098)) @@ -60,7 +62,7 @@ * Add stub for D3DXComputeTangentFrameEx ([Wine Bug #31984](https://bugs.winehq.org/show_bug.cgi?id=31984)) * Add stub for D3DXIntersect * Add stub for NtSetLdtEntries/ZwSetLdtEntries ([Wine Bug #26268](https://bugs.winehq.org/show_bug.cgi?id=26268)) -* Add stub for PowerCreateRequest +* Add stub for WinSqmIsOptedIn ([Wine Bug #38388](https://bugs.winehq.org/show_bug.cgi?id=38388)) * Add stub for gdiplus.GdipCreateEffect ([Wine Bug #32163](https://bugs.winehq.org/show_bug.cgi?id=32163)) * Add stub for ntoskrnl.ExAcquireResourceExclusiveLite * Add stub for ntoskrnl.ExDeleteResourceLite @@ -71,11 +73,11 @@ * Add stub for setupapi.SetupDiSelectBestCompatDrv ([Wine Bug #32088](https://bugs.winehq.org/show_bug.cgi?id=32088)) * Add stub for wininet.ParseX509EncodedCertificateForListBoxEntry ([Wine Bug #29842](https://bugs.winehq.org/show_bug.cgi?id=29842)) * Add stubs for D3DXCreateAnimationController interface -* Add stubs for Power[Set|Clear]Request * Add support for CopyFileEx progress callback ([Wine Bug #22692](https://bugs.winehq.org/show_bug.cgi?id=22692)) * Add support for GetPropValue to PulseAudio backend +* Add support for process specific debug channels +* Add support for wbemprox Win32_SystemEnclosure table ([Wine Bug #34517](https://bugs.winehq.org/show_bug.cgi?id=34517)) * Adobe Reader needs ITextSelection_fnGetDuplicate implementation -* Allow NULL pointer as keystate argument in ToUnicodeEx ([Wine Bug #38353](https://bugs.winehq.org/show_bug.cgi?id=38353)) * Allow selection of audio device for PulseAudio backend * Allow special characters in pipe names ([Wine Bug #28995](https://bugs.winehq.org/show_bug.cgi?id=28995)) * Allow to cancel a file operation via progress callback ([Wine Bug #22690](https://bugs.winehq.org/show_bug.cgi?id=22690)) @@ -84,22 +86,21 @@ * Allow to override number of quality levels for D3DMULTISAMPLE_NONMASKABLE. ([Wine Bug #12652](https://bugs.winehq.org/show_bug.cgi?id=12652)) * Anno 1602 installer depends on Windows 98 behavior of SHFileOperationW ([Wine Bug #37916](https://bugs.winehq.org/show_bug.cgi?id=37916)) * Audio stuttering and performance drops in multiple applications ([Wine Bug #30639](https://bugs.winehq.org/show_bug.cgi?id=30639)) +* Avoid crash when trying to bind mshtml event scripts to window ([Wine Bug #38419](https://bugs.winehq.org/show_bug.cgi?id=38419)) * Avoid crashing when broken app tries to release surface although refcount is zero ([Wine Bug #18477](https://bugs.winehq.org/show_bug.cgi?id=18477)) * Avoid race-conditions in NtReadFile() operations with write watches. * Avoid race-conditions of async WSARecv() operations with write watches. * Avoid race-conditions with write watches in WS2_async_accept. -* Avoid spam of FIXME messages for PsLookupProcessByProcessId stub ([Wine Bug #36821](https://bugs.winehq.org/show_bug.cgi?id=36821)) * Avseq crashes when multisampling is enabled ([Wine Bug #31998](https://bugs.winehq.org/show_bug.cgi?id=31998)) * Basic handling of write watches triggered while we're on the signal stack. * Basic support for CUDA * Black & White needs DXTn software decoding support ([Wine Bug #14939](https://bugs.winehq.org/show_bug.cgi?id=14939)) * CPU-Z fails to start because GetLogicalProcessorInformationEx returns FALSE +* Calculate msvcrt exponential math operations with higher precision ([Wine Bug #37149](https://bugs.winehq.org/show_bug.cgi?id=37149)) * 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 return an error in WS_select when EINTR happens during timeout -* EA Origin needs support for job objects ([Wine Bug #33723](https://bugs.winehq.org/show_bug.cgi?id=33723)) * Emulate access to KI_USER_SHARED_DATA kernel page on x86_64 ([Wine Bug #33849](https://bugs.winehq.org/show_bug.cgi?id=33849)) * Enforce that surfaces are flushed after ReleaseDC * Ensure NtProtectVirtualMemory and NtCreateSection are on separate pages ([Wine Bug #33162](https://bugs.winehq.org/show_bug.cgi?id=33162)) @@ -111,10 +112,8 @@ * 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 black screen on startup introduced by pixelformat changes. ([Wine Bug #35950](https://bugs.winehq.org/show_bug.cgi?id=35950)) -* Fix calculation of 3D sound source ([Wine Bug #38041](https://bugs.winehq.org/show_bug.cgi?id=38041)) * Fix caps lock state issues with multiple processes ([Wine Bug #35907](https://bugs.winehq.org/show_bug.cgi?id=35907)) * Fix comparison of punctuation characters in lstrcmp ([Wine Bug #10767](https://bugs.winehq.org/show_bug.cgi?id=10767)) -* Fix compatibility of Uplay with gnutls28 ([Wine Bug #38134](https://bugs.winehq.org/show_bug.cgi?id=38134)) * 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)) * Fix crash in clip_cursor_notify caused by uninitialized TLS ([Wine Bug #36915](https://bugs.winehq.org/show_bug.cgi?id=36915)) @@ -130,13 +129,14 @@ * Fix handling of ANSI NTLM credentials ([Wine Bug #37063](https://bugs.winehq.org/show_bug.cgi?id=37063)) * 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)) +* Fix handling of opening read-only files for FILE_DELETE_ON_CLOSE ([Wine Bug #38417](https://bugs.winehq.org/show_bug.cgi?id=38417)) * Fix handling of window attributes for WS_EX_LAYERED | WS_EX_COMPOSITED ([Wine Bug #37876](https://bugs.winehq.org/show_bug.cgi?id=37876)) -* Fix invalid memory access in get_registry_locale_info ([Wine Bug #38344](https://bugs.winehq.org/show_bug.cgi?id=38344)) * 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 multithreading issues with fullscreen clipping ([Wine Bug #38087](https://bugs.winehq.org/show_bug.cgi?id=38087)) * Fix possible segfault in pulse_rd_loop of PulseAudio backend * Fix race-condition when threads are killed during shutdown +* Fix regression caused by blacklisting supported OpenGL extensions ([Wine Bug #38264](https://bugs.winehq.org/show_bug.cgi?id=38264)) * Fix return value of ScrollWindowEx for invisible windows ([Wine Bug #37706](https://bugs.winehq.org/show_bug.cgi?id=37706)) * Fix texture corruption in CSI: Fatal Conspiracy ([Wine Bug #33768](https://bugs.winehq.org/show_bug.cgi?id=33768)) * Fix unintentional leaks with ntdll internals @@ -153,7 +153,6 @@ * Hearthstone fails to start ([Wine Bug #36216](https://bugs.winehq.org/show_bug.cgi?id=36216)) * IOCTL_DVD_READ_STRUCTURE expects the wrong size of output buffer for some requests ([Wine Bug #37767](https://bugs.winehq.org/show_bug.cgi?id=37767)) * Ignore unsupported flags for CoInternetSetFeatureEnabled ([Wine Bug #35197](https://bugs.winehq.org/show_bug.cgi?id=35197)) -* Ignore unsupported job object restrictions ([Wine Bug #38351](https://bugs.winehq.org/show_bug.cgi?id=38351)) * Implement D3DXGetShaderOutputSemantics * Implement DDENUMSURFACES_CANBECREATED in IDirectDraw7::EnumSurfaces ([Wine Bug #17233](https://bugs.winehq.org/show_bug.cgi?id=17233)) * Implement ID3DXEffect::FindNextValidTechnique ([Wine Bug #34101](https://bugs.winehq.org/show_bug.cgi?id=34101)) @@ -182,8 +181,6 @@ * Improve stubs for AEV_{Get,Set}MasterVolumeLevel * Improve stubs for AEV_{Get,Set}Mute * Improvement for heap allocation performance -* Increase wineconsole commandline buffer size ([Wine Bug #34814](https://bugs.winehq.org/show_bug.cgi?id=34814)) -* Invalidate key state cache globally after calling LL hooks ([Wine Bug #29871](https://bugs.winehq.org/show_bug.cgi?id=29871)) * 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)) * Lockfree algorithm for filedescriptor cache (improves file access speed) @@ -199,14 +196,15 @@ * Prevent window managers from grouping all wine programs together ([Wine Bug #32699](https://bugs.winehq.org/show_bug.cgi?id=32699)) * Process APC calls before starting process * Process Hacker 2.x needs ntoskrnl.ProbeForRead ([Wine Bug #38103](https://bugs.winehq.org/show_bug.cgi?id=38103)) -* Properly track handle count of wineserver objects +* Properly handle closing sockets during a select call ([Wine Bug #38399](https://bugs.winehq.org/show_bug.cgi?id=38399)) * Python PIP needs better NtQueryInformationJobObject stub +* Recognize localhost as local machine in wbemprox * Reduced SetTimer minimum value from 10 ms to 5 ms (improves Silverlight framerates) +* Reset device state in SysKeyboard*Impl_Acquire ([Wine Bug #11607](https://bugs.winehq.org/show_bug.cgi?id=11607)) * Return an error when trying to open a terminated process ([Wine Bug #37087](https://bugs.winehq.org/show_bug.cgi?id=37087)) * Return correct IMediaSeeking stream positions in quartz ([Wine Bug #23174](https://bugs.winehq.org/show_bug.cgi?id=23174)) * Return correct device type for cd devices without medium * Return correct values for GetThreadTimes function ([Wine Bug #20230](https://bugs.winehq.org/show_bug.cgi?id=20230)) -* Return more context attributes in schan_InitializeSecurityContextW ([Wine Bug #37527](https://bugs.winehq.org/show_bug.cgi?id=37527)) * SO_CONNECT_TIME returns the appropriate time * 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)) diff -Nru wine-staging-1.7.40~ubuntu12.04.1/server/process.c wine-staging-1.7.41~ubuntu12.04.1/server/process.c --- wine-staging-1.7.40~ubuntu12.04.1/server/process.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/server/process.c 2015-04-18 23:36:02.000000000 +0000 @@ -64,6 +64,7 @@ static unsigned int process_map_access( struct object *obj, unsigned int access ); static void process_poll_event( struct fd *fd, int event ); static void process_destroy( struct object *obj ); +static void terminate_process( struct process *process, struct thread *skip, int exit_code ); static const struct object_ops process_ops = { @@ -147,6 +148,8 @@ struct list process_list; /* list of all processes */ int num_processes; /* count of running processes */ unsigned int limit_flags; /* limit flags */ + int terminating; /* job is terminating */ + int signaled; /* job is signaled */ struct completion *completion_port; /* associated completion port */ apc_param_t completion_key; /* key to send with completion messages */ }; @@ -188,6 +191,8 @@ list_init( &job->process_list ); job->num_processes = 0; job->limit_flags = 0; + job->terminating = 0; + job->signaled = 0; job->completion_port = NULL; job->completion_key = 0; } @@ -251,12 +256,37 @@ assert( job->num_processes ); job->num_processes--; - add_job_completion( job, JOB_OBJECT_MSG_EXIT_PROCESS, get_process_id(process) ); + if (!job->terminating) + add_job_completion( job, JOB_OBJECT_MSG_EXIT_PROCESS, get_process_id(process) ); if (!job->num_processes) add_job_completion( job, JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO, 0 ); } +static void terminate_job( struct job *job, int exit_code ) +{ + /* don't report completion events for terminated processes */ + job->terminating = 1; + + for (;;) /* restart from the beginning of the list every time */ + { + struct process *process; + + /* find the first process associated with this job and still running */ + LIST_FOR_EACH_ENTRY( process, &job->process_list, struct process, job_entry ) + { + if (process->running_threads) break; + } + if (&process->job_entry == &job->process_list) break; /* no process found */ + assert( process->job == job ); + terminate_process( process, NULL, exit_code ); + } + + job->terminating = 0; + job->signaled = 1; + wake_up( &job->obj, 0 ); +} + static void job_destroy( struct object *obj ) { struct job *job = (struct job *)obj; @@ -277,7 +307,8 @@ static int job_signaled( struct object *obj, struct wait_queue_entry *entry ) { - return 0; + struct job *job = (struct job *)obj; + return job->signaled; } struct ptid_entry @@ -1543,6 +1574,17 @@ release_object( process ); } +/* terminate all processes associated with the job */ +DECL_HANDLER(terminate_job) +{ + struct job *job = get_job_obj( current->process, req->handle, JOB_OBJECT_TERMINATE ); + + if (!job) return; + + terminate_job( job, req->status ); + release_object( job ); +} + /* update limits of the job object */ DECL_HANDLER(set_job_limits) { diff -Nru wine-staging-1.7.40~ubuntu12.04.1/server/process.h wine-staging-1.7.41~ubuntu12.04.1/server/process.h --- wine-staging-1.7.40~ubuntu12.04.1/server/process.h 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/server/process.h 2015-04-18 23:36:02.000000000 +0000 @@ -26,6 +26,7 @@ struct atom_table; struct handle_table; struct startup_info; +struct job; /* process startup state */ enum startup_state { STARTUP_IN_PROGRESS, STARTUP_DONE, STARTUP_ABORTED }; diff -Nru wine-staging-1.7.40~ubuntu12.04.1/server/protocol.def wine-staging-1.7.41~ubuntu12.04.1/server/protocol.def --- wine-staging-1.7.40~ubuntu12.04.1/server/protocol.def 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/server/protocol.def 2015-04-18 23:36:02.000000000 +0000 @@ -3544,3 +3544,10 @@ obj_handle_t port; /* handle to the completion port */ client_ptr_t key; /* key to send with completion messages */ @END + + +/* Terminate all processes associated with the job */ +@REQ(terminate_job) + obj_handle_t handle; /* handle to the job */ + int status; /* process exit code */ +@END diff -Nru wine-staging-1.7.40~ubuntu12.04.1/server/request.h wine-staging-1.7.41~ubuntu12.04.1/server/request.h --- wine-staging-1.7.40~ubuntu12.04.1/server/request.h 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/server/request.h 2015-04-18 23:36:02.000000000 +0000 @@ -367,6 +367,7 @@ DECL_HANDLER(process_in_job); DECL_HANDLER(set_job_limits); DECL_HANDLER(set_job_completion_port); +DECL_HANDLER(terminate_job); #ifdef WANT_REQUEST_HANDLERS @@ -634,6 +635,7 @@ (req_handler)req_process_in_job, (req_handler)req_set_job_limits, (req_handler)req_set_job_completion_port, + (req_handler)req_terminate_job, }; C_ASSERT( sizeof(affinity_t) == 8 ); @@ -2233,6 +2235,9 @@ C_ASSERT( FIELD_OFFSET(struct set_job_completion_port_request, port) == 16 ); C_ASSERT( FIELD_OFFSET(struct set_job_completion_port_request, key) == 24 ); C_ASSERT( sizeof(struct set_job_completion_port_request) == 32 ); +C_ASSERT( FIELD_OFFSET(struct terminate_job_request, handle) == 12 ); +C_ASSERT( FIELD_OFFSET(struct terminate_job_request, status) == 16 ); +C_ASSERT( sizeof(struct terminate_job_request) == 24 ); #endif /* WANT_REQUEST_HANDLERS */ diff -Nru wine-staging-1.7.40~ubuntu12.04.1/server/token.c wine-staging-1.7.41~ubuntu12.04.1/server/token.c --- wine-staging-1.7.40~ubuntu12.04.1/server/token.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/server/token.c 2015-04-18 23:36:02.000000000 +0000 @@ -265,6 +265,10 @@ sid = (const SID *)&((const SYSTEM_ALARM_ACE *)ace)->SidStart; sid_size = ace->AceSize - FIELD_OFFSET(SYSTEM_ALARM_ACE, SidStart); break; + case SYSTEM_MANDATORY_LABEL_ACE_TYPE: + sid = (const SID *)&((const SYSTEM_MANDATORY_LABEL_ACE *)ace)->SidStart; + sid_size = ace->AceSize - FIELD_OFFSET(SYSTEM_MANDATORY_LABEL_ACE, SidStart); + break; default: return FALSE; } diff -Nru wine-staging-1.7.40~ubuntu12.04.1/server/trace.c wine-staging-1.7.41~ubuntu12.04.1/server/trace.c --- wine-staging-1.7.40~ubuntu12.04.1/server/trace.c 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/server/trace.c 2015-04-18 23:36:02.000000000 +0000 @@ -914,6 +914,12 @@ fprintf( stderr, "SYSTEM_ALARM_ACE_TYPE,Mask=%x", ((const SYSTEM_ALARM_ACE *)ace)->Mask ); break; + case SYSTEM_MANDATORY_LABEL_ACE_TYPE: + sid = (const SID *)&((const SYSTEM_MANDATORY_LABEL_ACE *)ace)->SidStart; + sid_size = ace->AceSize - FIELD_OFFSET(SYSTEM_MANDATORY_LABEL_ACE, SidStart); + fprintf( stderr, "SYSTEM_MANDATORY_LABEL_ACE_TYPE,Mask=%x", + ((const SYSTEM_MANDATORY_LABEL_ACE *)ace)->Mask ); + break; default: fprintf( stderr, "unknown<%d>", ace->AceType ); break; @@ -4133,6 +4139,12 @@ dump_uint64( ", key=", &req->key ); } +static void dump_terminate_job_request( const struct terminate_job_request *req ) +{ + fprintf( stderr, " handle=%04x", req->handle ); + fprintf( stderr, ", status=%d", req->status ); +} + static const dump_func req_dumpers[REQ_NB_REQUESTS] = { (dump_func)dump_new_process_request, (dump_func)dump_get_new_process_info_request, @@ -4395,6 +4407,7 @@ (dump_func)dump_process_in_job_request, (dump_func)dump_set_job_limits_request, (dump_func)dump_set_job_completion_port_request, + (dump_func)dump_terminate_job_request, }; static const dump_func reply_dumpers[REQ_NB_REQUESTS] = { @@ -4659,6 +4672,7 @@ NULL, NULL, NULL, + NULL, }; static const char * const req_names[REQ_NB_REQUESTS] = { @@ -4923,6 +4937,7 @@ "process_in_job", "set_job_limits", "set_job_completion_port", + "terminate_job", }; static const struct diff -Nru wine-staging-1.7.40~ubuntu12.04.1/VERSION wine-staging-1.7.41~ubuntu12.04.1/VERSION --- wine-staging-1.7.40~ubuntu12.04.1/VERSION 2015-04-04 23:53:39.000000000 +0000 +++ wine-staging-1.7.41~ubuntu12.04.1/VERSION 2015-04-18 23:36:02.000000000 +0000 @@ -1 +1 @@ -Wine version 1.7.40 +Wine version 1.7.41