Re: comctl32: remove unneeded todo_wine, because test pass
On Wednesday 26 September 2007 02:11:21 Lei Zhang wrote: I can pick a new coordinate to fix this, but then the new hit test will be just as brittle as the current one. Anyone have better ideas on how to make these coordinate based tests more robust? I'd say we need to ship a set of fonts with compatible metrics at some point. -Hans
Re: comctl32: remove unneeded todo_wine, because test pass
Hans Leidekker [EMAIL PROTECTED] wrote: On Wednesday 26 September 2007 02:11:21 Lei Zhang wrote: I can pick a new coordinate to fix this, but then the new hit test will be just as brittle as the current one. Anyone have better ideas on how to make these coordinate based tests more robust? I'd say we need to ship a set of fonts with compatible metrics at some point. All our bitmap fonts are from that category. -- Dmitry.
Re: shell32[1/2]: shlview: make the shell view control Unicode (fixesbuf #9767)
Mikolaj Zalewski [EMAIL PROTECTED] wrote: When the control class is Unicode the listview will be sending LVN_GETDISPINFOW instead of LVN_GETDISPINFOA and filenames with charactes outside of the ACP will display properly. I'm changing the type of a define from the include/ directory but that's a define not present in the Windows SDK. If that define doesn't present in SDK it shouldn't be in Wine either. --- a/include/shlobj.h +++ b/include/shlobj.h @@ -149,7 +149,7 @@ typedef struct */ typedef GUID SHELLVIEWID; -#define SV_CLASS_NAME (SHELLDLL_DefView) +#define SV_CLASS_NAME ((const WCHAR[]){'S','H','E','L','L','D','L','L','_','D','e','f','V','i','e','w',0}) This construct is not portable. Please move this to appropriate source file, and use 'static const WCHAR ...' syntax. -- Dmitry.
Re: Recent BiDi changes
Maarten Lankhorst wrote: On a related note - I haven't been able to get an answer to that one, not even through experimentation. Does anyone know whether Windows' Unicode is UTF-16 or UCS-2? Whether it's necessary to handle aggregates is crucially important when reordering characters. Shachar I'm guessing utf-16, not 100% sure though. Ok. Just so you know, this means the reordering code is buggy for UTF-16 aggregates. I suspect the classification code is too. From the recent changes to bidi.c: if (odd(levels[lastgood])) for (k = j - 1; k = lastgood; --k) lpOrder[done + k] = done + j - 1 - k; An aggregate in an odd level will have its two part reversed, making it meaningless at best (at worst, the trailing part will match the leading part of the previous character, creating a totally unrelated legal character). I suspect you have a similar problem in the classification part of the code. I've gone over the tables (cursory glance), and haven't been able to find characters in the aggregate area that are naturally likely to receive an odd level. I also asked on the fribidi list several times, and got the reply that there are such letters, but no specifics. This has a lot to do with my inability to empirically test whether Windows handle these. My latest test was an attempt to run a string that has RLO through GetCharacterPlacement, but even that fails at the moment (not to mention that GetCharacterPlacement is an old interface under Windows, and is slightly depracated, despite not being documented as such). While it is true that the very fact that I'm having such a hard time in finding out whether aggregates are supported on Windows means that any bug we introduce because of lack of support for aggregates will be a rare one, I still would prefer not introducing bugs into Wine if they can be avoided. Maarten Shachar
Re: pdh: add tests for XP variant of api call
Hans Leidekker wrote: I am happy with that though the tests I added relate to the following paragraph where it says that XP requires the buffer parameter as well as the size at all times and testing shows that it returns PDH_INVALID_ARGUMENT. It also returns PDH_INSUFFICIENT_BUFFER instead of PDH_MORE_DATA. Then I suggest to remove tests with a NULL buffer parameter and accept both PDH_INSUFFICIENT_BUFFER and PDH_MORE_DATA in tests where the specified buffer size is too small. I will give it a whirl. Ta Jeff
Re: RICHED20: EM_SETCHARFORMAT must return 0, not assert, on invalid struct size
[EMAIL PROTECTED] writes: Changelog: * EM_SETCHARFORMAT must not assert on invalid structure size. Instead, it should just fail and return 0. It would be better to do that in ME_ToCF2W since it already has to check the size, simply make it return NULL on error or something like that. -- Alexandre Julliard [EMAIL PROTECTED]
Re: mpr: Changes comparison of dwScope in WNetOpenEnum function
Hello! Your patch should probably fix both of those, then (and please ignore my earlier comment.) I have resent my patch, having added in it the passed corrections. I have one more question. To add realization of new function, I can add it in struct WNetProvider? For example: typedef struct _WNetProvider { HMODULE hLib; PWSTR name; PF_NPGetCaps getCaps; DWORD dwSpecVersion; DWORD dwNetType; DWORD dwEnumScopes; PF_NPOpenEnum openEnum; PF_NPEnumResource enumResource; PF_NPCloseEnumcloseEnum; PF_NPGetResourceInformation getResourceInformation; //my added function } WNetProvider, *PWNetProvider; It is correct? -- Best regards, Konstantin Kondratyuk.
Re: services.exe/advapi32[5/8]: move QueryServiceConfig to services.exe
Mikolaj Zalewski wrote: My QueryServiceConfig is not compatible with Windows one - I haven't tried hard but I couldn't tune the parameters to connect with Windows services.exe. So I'm not trying to store the structure in the on the server side buffer but pass it all through the RPC and put in into the buffer in advapi32. As I understand in near future Wine will not be a member of Windows domains so on-the-wire compatibility is not very important. You don't need to be a member of a domain to use remote interfaces like the one for services or the one for the registry. On-the-wire compatibility will be important once we get remote named pipe support, but getting the right architecture is the goal at the moment, and your patches are a step towards that. I believe that the QUERY_SERVICE_CONFIGW parameter should be a byte_count one, but this is not implemented yet, both in the RPC runtime and in widl. -- Rob Shearman
Re: [PATCH 4/6] Make ntdll I/O function to generate completion events
Andrey Turkin [EMAIL PROTECTED] writes: This has to be done in client because server does not know about actual operation details (e.g. io.Information), and moreover some operations does not use server at all. The needed information can be sent to the server along with the normal async status. We shouldn't add yet another server call for this, async I/O already requires too many server roundtrips. -- Alexandre Julliard [EMAIL PROTECTED]
Re: services.exe[2/8]: load services list from registry
Mikolaj Zalewski [EMAIL PROTECTED] writes: +buf = HeapAlloc(GetProcessHeap(), 0, size + 4); +if ((err = RegQueryValueExW(hKey, szValue, 0, type, (LPBYTE)buf, size)) != 0) +goto failed; +buf[size/2] = 0; +buf[size/2 + 1] = 0; Please use sizeof(WCHAR) instead of hardcoding values like 2 and 4. -- Alexandre Julliard [EMAIL PROTECTED]
Cannot compile wine due to recent changes
Hi, I got the following error message during compile fresh git-current wine: gcc -c -I../../../dlls/winex11.drv -I. -I../../../include -I../../include -I/usr/X11R6/include -D__WINESRC__ -D_REENTRANT -fPIC -Wall -pipe -fno-strict-aliasing -Wdeclaration-after-statement -Wwrite-strings -Wpointer-arith -g -O2 -o x11drv_main.o ../../../dlls/winex11.drv/x11drv_main.c In file included from ../../../dlls/winex11.drv/x11drv_main.c:52: ../../../dlls/winex11.drv/xcomposite.h:40: error: `XCompositeGetOverlayWindow' undeclared here (not in a function) ../../../dlls/winex11.drv/xcomposite.h:40: warning: type defaults to `int' in declaration of `pXCompositeGetOverlayWindow' ../../../dlls/winex11.drv/xcomposite.h:41: error: `XCompositeReleaseOverlayWindow' undeclared here (not in a function) ../../../dlls/winex11.drv/xcomposite.h:41: warning: type defaults to `int' in declaration of `pXCompositeReleaseOverlayWindow' ../../../dlls/winex11.drv/x11drv_main.c:389: warning: type defaults to `int' in declaration of `pXCompositeGetOverlayWindow' ../../../dlls/winex11.drv/x11drv_main.c:390: warning: type defaults to `int' in declaration of `pXCompositeReleaseOverlayWindow' make[2]: *** [x11drv_main.o] Ошибка 1 make[2]: Leaving directory `/home/lich/wine/wine/build/dlls/winex11.drv' make[1]: *** [winex11.drv] Ошибка 2 make[1]: Leaving directory `/home/lich/wine/wine/build/dlls' make: *** [dlls] Ошибка 2 X is Xorg 6.9.0 -- Kirill
Total bidi regression
Hi Maarten, It seems that since your last changes to the Bidi implementation, BiDi suffered total regression. At least on my system, no BiDi related text (neither Hebrew nor Arabic) gets reordered, at all. Placing breakpoints suggest that BIDI_Reorder is still getting called, so I can only assume that the problem is somewhere inside it (or in the classification) I haven't traced inside to see where things went wrong, nor do I know whether your work on that matter is done. I just wanted to point out that Wine, at the moment, performs no BiDi at all as far as the user is concerned. Shachar
Re: Cannot compile wine due to recent changes
Hi. Thanks, I sent a patch to wine-patches which should fix this. If anyone has an older version of XOrg with XComposite and can verify there's no other missing functions, that'd be great.
Re: Total bidi regression
Shachar Shemesh schreef: Hi Maarten, It seems that since your last changes to the Bidi implementation, BiDi suffered total regression. At least on my system, no BiDi related text (neither Hebrew nor Arabic) gets reordered, at all. Placing breakpoints suggest that BIDI_Reorder is still getting called, so I can only assume that the problem is somewhere inside it (or in the classification) I haven't traced inside to see where things went wrong, nor do I know whether your work on that matter is done. I just wanted to point out that Wine, at the moment, performs no BiDi at all as far as the user is concerned. Shachar If you want it back try replacing this in font.c: WINE_GCPW_FORCE_RTL:WINE_GCPW_FORCE_LTR change FORCE to LOOSE, it should work then. Cheers, Maarten
address space layout
Hi all! I had a user running FreeBSD 6.2, Xorg 7.3, ATI r200 DRI driver report a problem where running Warcraft3 crashed because it ran out of malloc heap space. The error was: Assertion failed: (texObj-DriverData != NULL), function r200BindTexture, file r200_tex.c, line 1098. fixme:ntdll:FILE_GetNtStatus Converting errno 12 to STATUS_UNSUCCESSFUL This error happens inside the r200 driver, errno 12 means ENOMEM. There was a bug report with a patch over at http://bugs.freedesktop.org/show_bug.cgi?id=12184 The patch gets rid of the assertion failure by doing proper error checking, but it doesn't solve the underlying problem of course, causing a NULL pointer dereference in Wine somewhat later: wine: Unhandled page fault on read access to 0x0058 at address 0x7e99cc84 (thread 0009), starting debugger... This isn't the first time such a problem appears, especially with games, so ultimately a solution has to be found. The problem is that the way Wine wants to setup the address space is really somewhat incompatible with the way FreeBSD mmap and malloc work. FreeBSD mmap allocates from the end of a process data segment upwards towards the stack. Linux mmap allocates from the stack downwards. FreeBSD (7.x) malloc doesn't fall back to mmap when it runs out of space in the data segment. Linux malloc does (I've been told). Because the wine process loads itself at 0x7bf0, this means on FreeBSD with mmap going up, both the data segment and all shared objects (like builtin dlls) sit squeezed between that address and 0x8000 since addresses above 0x8000 can't be used for builtin dlls. It's about 64Mb which is currently split 50/50 between heap space and shared objects. This works in a lot of cases, but sometimes a 32Mb heap isn't enough like in the example above, where I assume it's been taken up by textures and other graphics data. Linux doesn't have this problem because mmap allocates shared objects from 0x8000 downwards and can go beyond the address where wine is loaded if necessary. It can allocate extra heap space this way too when needed. Alexandre and I discussed this a couple weeks ago, but didn't really come up with anything. The problem back then (WoW) has since gone away (turned out to be a memory leak somewhere) so everything was left the way it was. Now it has turned up again however with a different program on a different setup, so it's something that really needs to be looked at. It could again be a memory leak in some other project's code, but then that just means the current situation isn't robust enough to deal with that, since it all does work on Linux. It appears that the only solution is to locate wine somewhere after 0x8000 instead of at 0x7bf0 and to allow mmap to allocate memory there. Then the data segment size limit can be set to 256Mb or something instead of 32Mb. The problem is then that builtin dlls are mmapped (by the runtime linker) well beyond 0x8000. Now I'm thinking, would it be possible to load dummy dlls somewhere in the first 2Gb of address space? Through which API calls can a program determine a dll is above 0x8000 by the way?
Re: RICHED20: EM_SETCHARFORMAT must return 0, not assert, on invalid struct size (try 2)
[EMAIL PROTECTED] writes: I considered doing this at first, but ME_ToCF2W is used in three other places beside handling EM_SETCHARFORMAT (all in style.c), and those places might get a null-pointer exception instead of an assert if something went wrong. A null-pointer exception serves the same purpose as an assert, and they both result in a debugger backtrace, so there's no reason to add more asserts here. -- Alexandre Julliard [EMAIL PROTECTED]
Re: [5/5] WineD3D: Add sincos support to arb shaders
On 26/09/2007, Stefan Dösinger [EMAIL PROTECTED] wrote: +/* dst.w = src[0].w * 1 / (src.x^2 + src.y^2 + src.z^2)^(1/2) according to msdn*/ That comment looks a bit out of place for sincos. Copy-paste from nrm?
Re: [PATCH 1/2] loader: Reduce data segment size in wine-pthread/kthread on FreeBSD.
On Wednesday 26 September 2007 19:17:44 Charlie wrote: This is me. I guess I called git-format-patch from a terminal where I was root.
Re: [PATCH 2/2] configure: Build wine-kthread on FreeBSD.
On Wednesday 26 September 2007 19:24:24 Charlie wrote: This is me. I guess I called git-format-patch from a terminal where I was root.
Re: Total bidi regression
Maarten Lankhorst wrote: If you want it back try replacing this in font.c: WINE_GCPW_FORCE_RTL:WINE_GCPW_FORCE_LTR change FORCE to LOOSE, it should work then. I'm not sure what you are suggesting. WINE_GCPW_FORCE_RTL only appear on line 1089 of bidi.c, which reads: case WINE_GCPW_FORCE_RTL: forcedir = R; baselevel = 1; break; I'm not sure what you are suggesting I do with it. Either way, the change you are suggesting will only affect (if I understand the code correctly) the paragraph direction setting, where as I'm experiencing total lack of BiDi reordering of any kind. All codes taken from latest git. Cheers, Maarten Thanks, Shachar
Re: [PATCH] [2/2] winhttp: stub impl of WinHttpGetIEProxyConfigForCurrentUse
On Wednesday 26 September 2007, Peter Oberndorfer wrote: --- dlls/winhttp/main.c | 25 + dlls/winhttp/winhttp.spec |2 +- 2 files changed, 26 insertions(+), 1 deletions(-) There is a 'r' missing in the patch title. it should be: winhttp: stub impl of WinHttpGetIEProxyConfigForCurrentUser Greetings Peter
Re: Total bidi regression
Shachar Shemesh schreef: Maarten Lankhorst wrote: If you want it back try replacing this in font.c: WINE_GCPW_FORCE_RTL:WINE_GCPW_FORCE_LTR change FORCE to LOOSE, it should work then. I'm not sure what you are suggesting. WINE_GCPW_FORCE_RTL only appear on line 1089 of bidi.c, which reads case WINE_GCPW_FORCE_RTL: forcedir = R; baselevel = 1; break; I'm not sure what you are suggesting I do with it. Either way, the change you are suggesting will only affect (if I understand the code correctly) the paragraph direction setting, where as I'm experiencing total lack of BiDi reordering of any kind. Before arguing, you should really give it a try, it helps. ;-) forcedir means basically force every not-control character to that direction. Cheers, Maarten
Re: Total bidi regression
Shachar Shemesh schreef: Maarten Lankhorst wrote: Shachar Shemesh schreef: Maarten Lankhorst wrote: If you want it back try replacing this in font.c: WINE_GCPW_FORCE_RTL:WINE_GCPW_FORCE_LTR change FORCE to LOOSE, it should work then. I'm not sure what you are suggesting. WINE_GCPW_FORCE_RTL only appear on line 1089 of bidi.c, which reads case WINE_GCPW_FORCE_RTL: forcedir = R; baselevel = 1; break; I'm not sure what you are suggesting I do with it. Either way, the change you are suggesting will only affect (if I understand the code correctly) the paragraph direction setting, where as I'm experiencing total lack of BiDi reordering of any kind. Before arguing, you should really give it a try, it helps. ;-) Sure thing. Just what, exactly, is it? What do you suggest I change, and what to? I am really asking you to be less ambiguous. If you mean to change the FORCE to LOOSE, then things are slightly better in that same direction runs are at least now being reordered, but things are still at a huge regression. Neutrals (at least some neutrals, like space) seem to be incorrectly handled in mixed paragraphs (I'm not sure, as this could be a font problem as well). Also, and this is confirmed, there is now no way to request a right to left paragraph, at all. Numbers I haven't checked. Again, I may have misunderstood what change you meant for me to try. If you don't want to be misunderstood, try just sending a patch. I'm more than willing to help, but not if it means trying to decrypt what code changes you are suggesting, or where in the 1200 lines file they are meant to be. forcedir means basically force every not-control character to that direction. Which doesn't ring a bell as far as the Annex 9. I don't recall any such thing there. They had a notion of paragraph direction, which did affect NEUTRALS, and only if they were placed on the border between conflicting direction runs (and also the initial nesting level, of course). The ONLY thing I recall that could cause a hard RTL or hard LTR character to be rendered in the opposite direction was an LRO/RLO, which was never used here. Thus, I say again, the change you offer seem out of place in relation to the place you offer it, and it seems to me that there is an error in your implementation of Annex 9. I may have slightly misunderstood those flags then. I was under the impression that the FORCE flags would be similar to LRO/RLO. Instead they are probably more like LRE/RLE. If that is a real problem I will send in a patch. I would still rather prefer a real bidi implementation, so that selecting and deleting characters would work properly. To my defense, there was no real clarification for them in the source. Cheers, Maarten
I need help, please
Hello All, I am new to Wine. I need to use corelDRAW for non-central reasons that I will explain if asked. I prefer to host on *nix (currently Mandriva 2007.0), but I can host on MS XP as a backup. I bought the latest and greatest corelDRAW X3 (version 13) and now have spent about a week learning Wine and trying to get corelDRAW working. There are some problems with installation, not completely solved yet; but I am hopeful that execution will be successful since earlier versions are reported in the Wine application database as running well. I have reached a point where I am beginning to understand what is going on with the hosting, and, also, I am getting a glimmer of *how* Wine works. But, as everyone knows, Wine needs a lot of study to get any siginificant grasp of *what* is happening, and I am very aware of how little I know. I need help and guidance to go further, otherwise I shall have to revert to MS XP. I should like very much to use Wine, but I am concerned that to get it going, without help, I shall have to resort to hacks that will be of no use to anyone in the long term, or become engulfed in a never-ending sea of detail. So, here I describe what has happened, and I invite anyone to point me in the right direction, etc., for further work. I am a programmer of many years, but I have not used C for a long time, my preference is for another language. I have no knowledge of Windows internals, and not much about using it except at a fairly remote C++ application programming level when I used Visual Dev Studio (name?) in the past. I have downloaded the Wine source, and have learnt how to manipulate trace messages to see what is happening. The first problem, with corelDRAW out of the box, with Wine 0.9.45 from rpm, or with my downloaded/compiled code, is summarized like this: fixme:msi:ACTION_PerformAction unhandled msi action LInstallIEFullUI err:msi:ITERATE_Actions Execution halted, action L_InstallIE returned 1602 Notice that there is a leading _ on one of these actions, and that part of the other is FullUI, which seems to relate very well with one of the MS User Interface Levels. Can anyone tell me the significance of the leading _, in particular, where does it come from? Also any help on how InstallIEFullUI is split up (my assumption) into _InstallIE and FullUI would be helpful. After much stirring around, hacking at everything in sight, what I have done to deal with this error is cut-and-paste ACTION_InstallInitialize code in msi/actions.c, and modify it suitably, to satisfy InstallIEFullUI and _InstallIE. And this gets me past the err:msg above; which may or may not enable me, ultimately, to install corelDRAW. This do-nothing-really is something of a cop-out, of course. I would make the effort to do something useful, rather than simply returning a deceptive value, but there are two reasons for not doing so. One is that I do not know enough about Wine code/structure/policy, etc., and I could see simply producing garbage, albeit working, code through ignorance. The second reason is that, I read on the Wine website, one should not try to install IE. What is more, Wine (from the rpm) puts a copy of iexplore.exe in my .wine directory anyway. So the question here is: what should I do wrt IE and InstallIEFullUI to follow Wine policy? The second problem seems to me to be rather far-reaching; I think I have run into the problem in three different ways, the last occurrence turns out to be the next fatal step for corelDRAW installation. The first run-in: I have run the distribution iexplore, also I have installed three other IEs, using ies4linux. All of these behave in the same way: they come up properly, and the right-click/wineicon menu that closes the application, moves it to different desktops, etc., also works, so exiting the application is done properly, too. My guess is that this is all done by the window manager, however. The problem is that IE displays no toolbar, so it is quite useless as a browser; it is, indeed, a software boat-anchor. The second run-in: When I ran winecfg, irfanview, regedit, etc.. under the rpm distribution they worked well enough, although the font used was, well, horrible, and almost unreadable. When I moved to the source version of Wine, the apps worked somewhat like iexplore above, except that the menus were available, but contained MangleFont - totally unreadable, with lots of Xs in the text. I posted to comp.emulators.ms-windows.wine and some kind sole suggested loading the MS core fonts, which I had never heard of; but, bingo!, not only did this - utterly magically - solve the problem, but the font(s) used is nice and readable. The third run-in: The corelDRAW installation popups (dialogs?) do not display well, in particular they appear not to refresh when appropriate. The fatal part comes with the license agreement box, where, in addition to most of the popup content not displaying (mouse intervention brings up *some* things), the
Re: [5/5] WineD3D: Add sincos support to arb shaders
Aren't most of these 2.0 and 3.0 instructions ? What's the goal of adding them to ARB - you won't be able to implement full 2.0/3.0 support in ARB. I think most of these were left unimplemented on purpose. Ivan
DInput mouse - where to go from here?
As many of you know, Wine have number of serious problems when it comes down to games when using mouse. In fact big number of games suffer one or more of the following problems: 1. Mouse pointer escapes game window (for windowed programs) or confined to arbitrary rectangle (for full-screen) - bug 6971. 2. Mouse is being constantly re-centered (number of bugs). 3. Mouse lags, moves wrong direction or doesn't move at all (number of bugs). 4. Mouse is not smooth with high graphics/system load. There are lots of reasons for these bugs: a) Wine does not grab pointer (doesn't lock it to one particular window). b) Wine's dinput still doing mouse warping while it should not c) Wine relies on an application to process messages so new input events could be received. d) Wine's x11drv is not fine grained - it has only one lock that everything uses, d3d and wgl included. e) The path from x11drv to dinput for input events is long with big overhead. f) X events come from Wine windows for the current process only not whole screen. g) Motion events Wine receives are absolute not relative. Here is what me and others tried but failed: i) XEvIE - buggy, disabled by default, requires server round trip. ii) XInput - does not allow opening of keyboard or mouse devices. iii) Event Device (EvDev) - works perfectly, solves (a,b,c,d,e,f,g) but it's a client only solution (will not work on remote X, because it will try to open remote mouse, not local). iv) Virtualizing mouse pointer in x11drv - depends on (a) moves (b) from dinput into x11drv while same issues remain. v) Writing new X extension - last I've heard about this, it didn't get anywhere past initial proposals. Anything else I missed? Are there are any better ways to solve these problems? Any other ways at all? As you see there are not much options available to solve mouse problems. However I personally do not want to turn this into another child opengl saga. We ether solving it now, or putting a big red X on any game that's using dinput mouse, that's not already working. The point I'm trying to make is: can we once put our right ways of doing things aside and fix something that never worked before? And fix it _for good_! Yes it's a limited fix it will work only for 99% of users who play games on their PC, and not remotely. Vitaliy Margolen.
Re: DInput mouse - where to go from here?
On Thursday September 27 2007 04:07, Vitaliy Margolen wrote: The point I'm trying to make is: can we once put our right ways of doing things aside and fix something that never worked before? And fix it _for good_! I strongly agree here with Vitaliy. Personally I think that using evdev for this purpose IS the right way. Yes it will not work with remote X but Windows doesn't support this too (as far as I know at least). WINE purpose is to conform with Windows behavior. Therefore use of evdev will be correct. Even if above isn't true (I think it is) full support of remote X by dinput component isn't something useful for about 100% of users anyway. Of course everything above is just my opinion.