Re: [4/4] gdi32: Add a buch of CreateScalableFontResource() tests.
Hi, While running your changed tests on Windows, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check? Full results can be found at http://testbot.winehq.org/JobDetails.pl?Key=7041 Your paranoid android. === WINEBUILD (build) === Patch failed to apply
Re: [5/5] gdi32: Add a buch of CreateScalableFontResource() tests.
Hi, While running your changed tests on Windows, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check? Full results can be found at http://testbot.winehq.org/JobDetails.pl?Key=7042 Your paranoid android. === W98SE (32 bit font) === Failure running script in VM: Exceeded timeout limit of 315 sec === WNT4WSSP6 (32 bit font) === Timeout
Re: [PATCH 07/10] mshtml: Correctly handle DOCUMENT_FRAGMENT_NODE in IHTMLDOMNode::get_nodeType.
Hi, While running your changed tests on Windows, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check? Full results can be found at http://testbot.winehq.org/JobDetails.pl?Key=7045 Your paranoid android. === W98SE (32 bit) === No test summary line found === W2KPROSP4 (32 bit) === No test summary line found === WXPPROSP3 (32 bit) === No test summary line found === W2K3R2SESP2 (32 bit) === No test summary line found === WVISTAADM (32 bit) === No test summary line found === W2K8SE (32 bit) === No test summary line found === W7PRO (32 bit) === No test summary line found === W7PROX64 (32 bit) === No test summary line found === W7PROX64 (64 bit) === No test summary line found
Re: [PATCH 10/10] mshtml: Added document fragment cloneNode implementation.
Hi, While running your changed tests on Windows, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check? Full results can be found at http://testbot.winehq.org/JobDetails.pl?Key=7048 Your paranoid android. === W98SE (32 bit) === No test summary line found === W2KPROSP4 (32 bit) === No test summary line found === WXPPROSP3 (32 bit) === No test summary line found === W2K3R2SESP2 (32 bit) === No test summary line found === WVISTAADM (32 bit) === No test summary line found === W2K8SE (32 bit) === No test summary line found === W7PRO (32 bit) === No test summary line found === W7PROX64 (32 bit) === No test summary line found === W7PROX64 (64 bit) === No test summary line found
Re: [msi/tests] Cleanup properly on Win9x
Hi, While running your changed tests on Windows, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check? Full results can be found at http://testbot.winehq.org/JobDetails.pl?Key=7053 Your paranoid android. === WXPPROSP3 (32 bit install) === Timeout
Re: wined3d: remove a useless variable
On 11/14/2010 22:17, David Adam wrote: if(wined3d_settings.rendertargetlock_mode == RTL_DISABLE) { -static BOOL warned = FALSE; -if(!warned) { -ERR(The application tries to lock the render target, but render target locking is disabled\n); -warned = TRUE; -} +ERR(The application tries to lock the render target, but render target locking is disabled\n); return; } Why is it useless?
Re: wined3d: remove a useless variable
On 11/14/2010 22:41, David Adam wrote: 2010/11/14 Nikolay Sivov nsi...@codeweavers.com mailto:nsi...@codeweavers.com On 11/14/2010 22:17, David Adam wrote: if(wined3d_settings.rendertargetlock_mode == RTL_DISABLE) { -static BOOL warned = FALSE; -if(!warned) { -ERR(The application tries to lock the render target, but render target locking is disabled\n); -warned = TRUE; -} +ERR(The application tries to lock the render target, but render target locking is disabled\n); return; } Why is it useless? Maybe I missed something: Since warned= False we always enter in the if condition. Then warned=TRUE. But we leave the first if condition that is the lifetime of the variable. So the variable is destroyed ans is useless. Am I wrong? Well, yes. It's static. It's used to display error output once. A+ David
Re: wined3d: remove a useless variable
-static BOOL warned = FALSE; -if(!warned) { -ERR(The application tries to lock the render target, but render target locking is disabled\n); -warned = TRUE; -} +ERR(The application tries to lock the render target, but render target locking is disabled\n); Why is that useless? It supresses console flooding. -- Best Regards, André Hentschel
Re: crypt32/tests: Add tests for decoding enveloped messages.
Hi Alexander, On 11/02/2010 01:56 PM, Alexander Morozov wrote: +CryptAcquireContextA(hCryptProv, NULL, MS_ENHANCED_PROV_A, PROV_RSA_FULL, + CRYPT_VERIFYCONTEXT); Other calls use pCryptAcquireContextA but I guess that had to do with some platforms in the past that didn't export CryptAcquireContextA. +SetLastError(0xdeadbeef); +ret = CryptImportKey(hCryptProv, publicPrivateKeyPair, + sizeof(publicPrivateKeyPair), 0, 0,key); +ok(ret, CryptImportKey failed: %08x\n, GetLastError()); This one fails on some WinME/NT4 (80090010 aka NTE_PERM) and crashes on some Win98: http://test.winehq.org/data/tests/crypt32:msg.html Could you have a look? If you need me to test something on my boxes (pv-winme and pv-nt4srvr) let me know (not all testbot machines fail here). -- Cheers, Paul.
Re: [PATCH 2/2] ntdll: Check for case-insensitive volumes. (try 6
On 11/5/10 8:17 AM, Charles Davis wrote: Changes since try 5: o All case-sensitivity logic has been absorbed into find_file_in_dir(). o Eliminated one more stat(2) that I missed last time. o Eliminated a statfs(2) call on Linux. This is a far as I think I can take it without gutting it completely. If any of you have better ideas, I'd like to hear them. --- dlls/ntdll/directory.c | 233 +++- 1 files changed, 229 insertions(+), 4 deletions(-) diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c index 865c2fa..2891792 100644 --- a/dlls/ntdll/directory.c +++ b/dlls/ntdll/directory.c @@ -41,6 +41,9 @@ #ifdef HAVE_SYS_STAT_H # includesys/stat.h #endif +#ifdef HAVE_SYS_ATTR_H +#includesys/attr.h +#endif #ifdef HAVE_SYS_IOCTL_H #includesys/ioctl.h #endif @@ -56,6 +59,9 @@ #ifdef HAVE_SYS_MOUNT_H #includesys/mount.h #endif +#ifdef HAVE_SYS_STATFS_H +#includesys/statfs.h +#endif #includetime.h #ifdef HAVE_UNISTD_H # includeunistd.h @@ -130,6 +136,35 @@ static inline int getdents64( int fd, char *de, unsigned int size ) #endif /* linux */ +#if defined(HAVE_GETATTRLIST) + +struct get_fsid +{ +ULONG size; +dev_t dev; +fsid_t fsid; +}; + +struct fs_cache +{ +dev_t dev; +fsid_t fsid; +BOOLEAN case_sensitive; +} fs_cache[64]; + +#if defined(ATTR_VOL_CAPABILITIES) defined(VOL_CAPABILITIES_FORMAT) \ +defined(VOL_CAP_FMT_CASE_SENSITIVE) + +struct vol_caps +{ +ULONG size; +vol_capabilities_attr_t caps; +}; + +#endif /* ATTR_VOL_CAPABILITIES */ + +#endif /* HAVE_GETATTRLIST */ + #define IS_OPTION_TRUE(ch) ((ch) == 'y' || (ch) == 'Y' || (ch) == 't' || (ch) == 'T' || (ch) == '1') #define IS_SEPARATOR(ch) ((ch) == '\\' || (ch) == '/') @@ -783,6 +818,192 @@ static char *get_device_mount_point( dev_t dev ) } + +#ifdef HAVE_GETATTRLIST +/*** + * look_up_fs_cache + * + * Checks if the specified file system is in the cache. + */ +static struct fs_cache *look_up_fs_cache( dev_t dev ) +{ +int i; +for (i = 0; i sizeof(fs_cache)/sizeof(fs_cache[0]); i++) +if (fs_cache[i].dev == dev) +return fs_cache+i; +return NULL; +} + +/*** + * add_fs_cache + * + * Adds the specified file system to the cache. + */ +static void add_fs_cache( dev_t dev, fsid_t fsid, BOOLEAN case_sensitive ) +{ +int i; +struct fs_cache *entry = look_up_fs_cache( dev ); +static int once = 0; +if (entry) +{ +/* Update the cache */ +entry-fsid = fsid; +entry-case_sensitive = case_sensitive; +return; +} + +/* Add a new entry */ +for (i = 0; i sizeof(fs_cache)/sizeof(fs_cache[0]); i++) +if (fs_cache[i].dev == 0) +{ +/* This entry is empty, use it */ +fs_cache[i].dev = dev; +fs_cache[i].fsid = fsid; +fs_cache[i].case_sensitive = case_sensitive; +return; +} + +/* Cache is out of space, warn */ +if (once++) +WARN( FS cache is out of space, expect performance problems\n ); +} +#endif + +/*** + * get_dir_case_sensitivity + * + * Checks if the volume containing the specified directory is case + * sensitive or not. + */ +static BOOLEAN get_dir_case_sensitivity( const char *dir ) +{ +#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) +struct statfs stfs; +#elif defined(__NetBSD__) +struct statvfs stfs; +#elif defined(__linux__) +struct stat st; +char *cifile; +#endif + +#if defined(HAVE_GETATTRLIST) defined(ATTR_VOL_CAPABILITIES) \ +defined(VOL_CAPABILITIES_FORMAT) defined(VOL_CAP_FMT_CASE_SENSITIVE) +char *mntpoint = NULL; +struct attrlist attr; +struct vol_caps caps; +struct get_fsid get_fsid; +struct fs_cache *entry; + +/* First get the FS ID of the volume */ +attr.bitmapcount = ATTR_BIT_MAP_COUNT; +attr.reserved = 0; +attr.commonattr = ATTR_CMN_DEVID|ATTR_CMN_FSID; +attr.volattr = attr.dirattr = attr.fileattr = attr.forkattr = 0; +get_fsid.size = 0; +if (getattrlist( dir,attr,get_fsid, sizeof(get_fsid), 0 ) != 0 || +get_fsid.size != sizeof(get_fsid)) +return TRUE; +/* Try to look it up in the cache */ +entry = look_up_fs_cache( get_fsid.dev ); +if (entry !memcmp(entry-fsid,get_fsid.fsid, sizeof(fsid_t) )) +/* Cache lookup succeeded */ +return entry-case_sensitive; +/* Cache is stale at this point, we have to update it */ + +mntpoint = get_device_mount_point( get_fsid.dev ); +/* Now look up the case-sensitivity */ +attr.commonattr = 0; +attr.volattr = ATTR_VOL_INFO|ATTR_VOL_CAPABILITIES; +if (getattrlist( mntpoint,attr,caps, sizeof(caps), 0 ) == 0) +{
Re: [PATCH 5/5] d3dcompiler_43/tests: Added trigonometric function tests to HLSL test suite
On 12 November 2010 21:08, Travis Athougies iamm...@gmail.com wrote: + static struct hlsl_probe_info sin_probes[] = This should be const. As a general rule, try to pay attention to at least other patches to the same module. I fixed a couple of these about two weeks ago. Same goes for calculating the probe count. + { + {0, 0, {0.5000f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + {1, 0, {0.5975f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + {2, 0, {0.6913f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + {3, 0, {0.7778f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + {4, 0, {0.8536f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + {5, 0, {0.9157f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + {6, 0, {0.9620f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + {7, 0, {0.9904f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + {8, 0, {1.f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + {9, 0, {0.9904f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + {10, 0, {0.9619f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + {11, 0, {0.9157f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + {12, 0, {0.8536f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + {13, 0, {0.7778f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + {14, 0, {0.6913f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + {15, 0, {0.5975f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + {16, 0, {0.5000f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + {17, 0, {0.4025f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + {18, 0, {0.3087f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + {19, 0, {0.f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + {20, 0, {0.1464f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + {21, 0, {0.0843f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + {22, 0, {0.0381f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + {23, 0, {0.0096f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + {24, 0, {0.f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + {25, 0, {0.0096f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + {26, 0, {0.0381f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + {27, 0, {0.0843f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + {28, 0, {0.1464f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + {29, 0, {0.f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + {30, 0, {0.3087f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + {31, 0, {0.4025f, 0.0f, 0.0f, 0.0f}, 0.001f, sin test failed}, + }; + 32 probes is probably a bit excessive, but I guess it's not a major problem. Note that you can easily return the cosine results in the .y component though, instead of duplicating the complete test.
Re: [PATCH] d3dcompiler: Add initial reflection parsing.
2010/11/14 Rico Schüller kgbric...@web.de: +HRESULT d3dcompiler_shader_reflection_init(const void *data, SIZE_T data_size, void **reflector) Allocation and initialization are different things. Either way, it's unnecessary to make reflector void **. +if (!IsEqualGUID(riid, IID_ID3D11ShaderReflection)) { -ERR(Failed to allocate D3D compiler shader reflection object memory\n); -return E_OUTOFMEMORY; +WARN(Wrong riid %s, accept only %s!\n, debugstr_guid(riid), debugstr_guid(IID_ID3D11ShaderReflection)); +return E_FAIL; } I'm not sure if you have tests for this returning E_FAIL, but typically you'd expect E_NOINTERFACE for something like that.
Haiku talking about wine
Seems to have been a long thread recently about restarting a port of Wine to Haiku, see http://haikuware.com/bounty-discussion/1533-wine-bounty I don't think there was anything really happening, though.
Re: [1/2] opengl32/tests: Add tests for special case of SetPixelFormat
Hi Matijn, What 3D API is this game using? Is it using Direct3D or OpenGL? If it is Direct3D then I have the feeling the 'issue' is getting fixed in the wrong layer. Further I'm not really sure whether we want to allow pixel format 1 to be used at all. In case of Wine all pixel formats are hardware accelerated (okay, the bitmaps one are set to indirect rendering so might be software based depending on the GLX implementation). On Windows you essentially have two GL implementations namely the Microsoft GDI renderer and the OpenGL ICD driver. The first several pixel formats are the ones from the software based GDI renderer... So even though Windows might allow setting pixel format 1 on HDC 0, I don't think it is the right thing to do. Roderick On Sun, Nov 14, 2010 at 9:55 AM, Matijn Woudt tijn...@gmail.com wrote: Add tests for special case of SetPixelFormat Tests pass on my Windows XP laptop and Windows 7 PC. The game 'Heart's Medicine Season One' depends on this behaviour.
Re: [PATCH 2/2] ntdll: Check for case-insensitive volumes. (try 6
On 11/14/10 3:01 PM, James McKenzie wrote: On 11/5/10 8:17 AM, Charles Davis wrote: Changes since try 5: o All case-sensitivity logic has been absorbed into find_file_in_dir(). o Eliminated one more stat(2) that I missed last time. o Eliminated a statfs(2) call on Linux. This is a far as I think I can take it without gutting it completely. If any of you have better ideas, I'd like to hear them. --- dlls/ntdll/directory.c | 233 +++- 1 files changed, 229 insertions(+), 4 deletions(-) diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c index 865c2fa..2891792 100644 --- a/dlls/ntdll/directory.c +++ b/dlls/ntdll/directory.c @@ -41,6 +41,9 @@ #ifdef HAVE_SYS_STAT_H # includesys/stat.h #endif +#ifdef HAVE_SYS_ATTR_H +#includesys/attr.h +#endif #ifdef HAVE_SYS_IOCTL_H #includesys/ioctl.h #endif @@ -56,6 +59,9 @@ #ifdef HAVE_SYS_MOUNT_H #includesys/mount.h #endif +#ifdef HAVE_SYS_STATFS_H +#includesys/statfs.h +#endif #includetime.h #ifdef HAVE_UNISTD_H # includeunistd.h @@ -130,6 +136,35 @@ static inline int getdents64( int fd, char *de, unsigned int size ) #endif /* linux */ +#if defined(HAVE_GETATTRLIST) + +struct get_fsid +{ +ULONG size; +dev_t dev; +fsid_t fsid; +}; + +struct fs_cache +{ +dev_t dev; +fsid_t fsid; +BOOLEAN case_sensitive; +} fs_cache[64]; + +#if defined(ATTR_VOL_CAPABILITIES) defined(VOL_CAPABILITIES_FORMAT) \ +defined(VOL_CAP_FMT_CASE_SENSITIVE) + +struct vol_caps +{ +ULONG size; +vol_capabilities_attr_t caps; +}; + +#endif /* ATTR_VOL_CAPABILITIES */ + +#endif /* HAVE_GETATTRLIST */ + #define IS_OPTION_TRUE(ch) ((ch) == 'y' || (ch) == 'Y' || (ch) == 't' || (ch) == 'T' || (ch) == '1') #define IS_SEPARATOR(ch) ((ch) == '\\' || (ch) == '/') @@ -783,6 +818,192 @@ static char *get_device_mount_point( dev_t dev ) } + +#ifdef HAVE_GETATTRLIST +/*** + * look_up_fs_cache + * + * Checks if the specified file system is in the cache. + */ +static struct fs_cache *look_up_fs_cache( dev_t dev ) +{ +int i; +for (i = 0; i sizeof(fs_cache)/sizeof(fs_cache[0]); i++) +if (fs_cache[i].dev == dev) +return fs_cache+i; +return NULL; +} + +/*** + * add_fs_cache + * + * Adds the specified file system to the cache. + */ +static void add_fs_cache( dev_t dev, fsid_t fsid, BOOLEAN case_sensitive ) +{ +int i; +struct fs_cache *entry = look_up_fs_cache( dev ); +static int once = 0; +if (entry) +{ +/* Update the cache */ +entry-fsid = fsid; +entry-case_sensitive = case_sensitive; +return; +} + +/* Add a new entry */ +for (i = 0; i sizeof(fs_cache)/sizeof(fs_cache[0]); i++) +if (fs_cache[i].dev == 0) +{ +/* This entry is empty, use it */ +fs_cache[i].dev = dev; +fs_cache[i].fsid = fsid; +fs_cache[i].case_sensitive = case_sensitive; +return; +} + +/* Cache is out of space, warn */ +if (once++) +WARN( FS cache is out of space, expect performance problems\n ); +} +#endif + +/*** + * get_dir_case_sensitivity + * + * Checks if the volume containing the specified directory is case + * sensitive or not. + */ +static BOOLEAN get_dir_case_sensitivity( const char *dir ) +{ +#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) +struct statfs stfs; +#elif defined(__NetBSD__) +struct statvfs stfs; +#elif defined(__linux__) +struct stat st; +char *cifile; +#endif + +#if defined(HAVE_GETATTRLIST) defined(ATTR_VOL_CAPABILITIES) \ +defined(VOL_CAPABILITIES_FORMAT) defined(VOL_CAP_FMT_CASE_SENSITIVE) +char *mntpoint = NULL; +struct attrlist attr; +struct vol_caps caps; +struct get_fsid get_fsid; +struct fs_cache *entry; + +/* First get the FS ID of the volume */ +attr.bitmapcount = ATTR_BIT_MAP_COUNT; +attr.reserved = 0; +attr.commonattr = ATTR_CMN_DEVID|ATTR_CMN_FSID; +attr.volattr = attr.dirattr = attr.fileattr = attr.forkattr = 0; +get_fsid.size = 0; +if (getattrlist( dir,attr,get_fsid, sizeof(get_fsid), 0 ) != 0 || +get_fsid.size != sizeof(get_fsid)) +return TRUE; +/* Try to look it up in the cache */ +entry = look_up_fs_cache( get_fsid.dev ); +if (entry !memcmp(entry-fsid,get_fsid.fsid, sizeof(fsid_t) )) +/* Cache lookup succeeded */ +return entry-case_sensitive; +/* Cache is stale at this point, we have to update it */ + +mntpoint = get_device_mount_point(
Re: [1/2] opengl32/tests: Add tests for special case of SetPixelFormat
On Mon, Nov 15, 2010 at 12:06 AM, Roderick Colenbrander thunderbir...@gmail.com wrote: Hi Matijn, What 3D API is this game using? Is it using Direct3D or OpenGL? If it is Direct3D then I have the feeling the 'issue' is getting fixed in the wrong layer. It's using Direct3D, but I don't see how this can be fixed in Direct3D. Further I'm not really sure whether we want to allow pixel format 1 to be used at all. In case of Wine all pixel formats are hardware accelerated (okay, the bitmaps one are set to indirect rendering so might be software based depending on the GLX implementation). On Windows you essentially have two GL implementations namely the Microsoft GDI renderer and the OpenGL ICD driver. The first several pixel formats are the ones from the software based GDI renderer... So even though Windows might allow setting pixel format 1 on HDC 0, I don't think it is the right thing to do. Roderick Not setting the pixel format (e.g. just returning TRUE) won't help the game. Setting a different (hardware accelerated) format will probably work, but that doesn't feel right. I'd really like to fix this bug, but if the patch isn't right I don't have a clue how to fix it 'the right way'. Any hints? Thanks, Matijn ps. Trial for the game is available at: http://www.sandlotgames.com/w5/hearts_medicine_season_1.html (200MB), after installing run bin/prog.exe, launcher doesn't work. On Sun, Nov 14, 2010 at 9:55 AM, Matijn Woudt tijn...@gmail.com wrote: Add tests for special case of SetPixelFormat Tests pass on my Windows XP laptop and Windows 7 PC. The game 'Heart's Medicine Season One' depends on this behaviour.
Re: [PATCH 1/4] msvcp90: Added basic_stringchar::swap implementation.
On 11/11/10 18:55, Vincas Miliūnas wrote: This implementation handles cases when basic_strings are allocated using different allocators, however WINE's implementation seems to ignore allocators. It's not ignoring allocators (but it's not setting allocator field). There's no legal way of accessing it by end user, so there's no point of setting it, unless it's needed internally (and it's not needed for correct implementation of basic_string_char_swap function). +/* Helper function for MSVCP_basic_string_char_swap */ +void basic_string_char_swap_bufxptr_same_alloc(basic_string_char * lhs, basic_string_char * rhs) +{ +char * const ptr = rhs-data.ptr; +const size_t size = rhs-size; +const size_t res = rhs-res; + +memcpy(rhs-data.buf, lhs-data.buf, lhs-size * sizeof(char)); This function should work in constant time. It should only swap pointers and lengths. +/* Helper function for MSVCP_basic_string_char_swap */ +MSVCP_BOOL basic_string_char_swap_bufxptr_diff_alloc(basic_string_char * lhs, basic_string_char * rhs) +{ +char tmp[BUF_SIZE_CHAR]; +const size_t size = lhs-size; +const size_t res = lhs-res; +memcpy(tmp, lhs-data.buf, lhs-size * sizeof(char)); + +char * const ptr = MSVCP_allocator_char_allocate(lhs-allocator, rhs-res); You can't pass unknown data to MSVCP_allocator_char_allocate, this is the implementation of default char allocator. When other allocators are in use compiler will use templates. The function you're implementing is only used when two basic_string_char are swapped, because there's no legal way of modifying allocator field there's only one case - the same allocators are used. Cheers, Piotr
Re: [1/2] opengl32/tests: Add tests for special case of SetPixelFormat
It has been a while since I last looked at this area. The following bug came to my mind which is the same thing http://bugs.winehq.org/show_bug.cgi?id=9786 I would start by figuring out for what purpose and for what calls the game is using GetDC(0). Turn on some d3d debug channels and try to figure that out. You might have to write some test cases (though they might exists already in d3d, but I haven't looked at the test in a while). I don't know for sure but can Direct3D actually render to the 'root_window'? I guess you can't .. Roderick On Sun, Nov 14, 2010 at 3:33 PM, Matijn Woudt tijn...@gmail.com wrote: On Mon, Nov 15, 2010 at 12:06 AM, Roderick Colenbrander thunderbir...@gmail.com wrote: Hi Matijn, What 3D API is this game using? Is it using Direct3D or OpenGL? If it is Direct3D then I have the feeling the 'issue' is getting fixed in the wrong layer. It's using Direct3D, but I don't see how this can be fixed in Direct3D. Further I'm not really sure whether we want to allow pixel format 1 to be used at all. In case of Wine all pixel formats are hardware accelerated (okay, the bitmaps one are set to indirect rendering so might be software based depending on the GLX implementation). On Windows you essentially have two GL implementations namely the Microsoft GDI renderer and the OpenGL ICD driver. The first several pixel formats are the ones from the software based GDI renderer... So even though Windows might allow setting pixel format 1 on HDC 0, I don't think it is the right thing to do. Roderick Not setting the pixel format (e.g. just returning TRUE) won't help the game. Setting a different (hardware accelerated) format will probably work, but that doesn't feel right. I'd really like to fix this bug, but if the patch isn't right I don't have a clue how to fix it 'the right way'. Any hints? Thanks, Matijn ps. Trial for the game is available at: http://www.sandlotgames.com/w5/hearts_medicine_season_1.html (200MB), after installing run bin/prog.exe, launcher doesn't work. On Sun, Nov 14, 2010 at 9:55 AM, Matijn Woudt tijn...@gmail.com wrote: Add tests for special case of SetPixelFormat Tests pass on my Windows XP laptop and Windows 7 PC. The game 'Heart's Medicine Season One' depends on this behaviour.
Re: wined3d: remove a useless variable
2010/11/14 Nikolay Sivov nsi...@codeweavers.com On 11/14/2010 22:17, David Adam wrote: if(wined3d_settings.rendertargetlock_mode == RTL_DISABLE) { -static BOOL warned = FALSE; -if(!warned) { -ERR(The application tries to lock the render target, but render target locking is disabled\n); -warned = TRUE; -} +ERR(The application tries to lock the render target, but render target locking is disabled\n); return; } Why is it useless? Maybe I missed something: Since warned= False we always enter in the if condition. Then warned=TRUE. But we leave the first if condition that is the lifetime of the variable. So the variable is destroyed ans is useless. Am I wrong? A+ David
Re: wined3d: remove a useless variable
OK. I missed that. Sorry for the noise A+ David 2010/11/14 Nikolay Sivov nsi...@codeweavers.com On 11/14/2010 22:41, David Adam wrote: 2010/11/14 Nikolay Sivov nsi...@codeweavers.com On 11/14/2010 22:17, David Adam wrote: if(wined3d_settings.rendertargetlock_mode == RTL_DISABLE) { -static BOOL warned = FALSE; -if(!warned) { -ERR(The application tries to lock the render target, but render target locking is disabled\n); -warned = TRUE; -} +ERR(The application tries to lock the render target, but render target locking is disabled\n); return; } Why is it useless? Maybe I missed something: Since warned= False we always enter in the if condition. Then warned=TRUE. But we leave the first if condition that is the lifetime of the variable. So the variable is destroyed ans is useless. Am I wrong? Well, yes. It's static. It's used to display error output once. A+ David