Folks,
With my latest W-series patches, the listview should now be a pleasure to work with: fast, *no* flicker, etc. It should be a lot better than before I started working on it. If this is not the case (there are regressions, there is nasty flicker *anywhere*, it's slow, or in general it's not a pleasure to interact with it, i.e. you don't get a warm and fuzzy feeling) let me know now.
Internally, the code is a lot cleaner. I have started on Sep. 9, 2002, at revision 1.138. A month and a half, and almost 150 revisions later, most of the code has changed multiple times. Large number of visible, and mostly invisible bugs have been fixed, a lot of corner cases covered, features implemented, listview has been made scalable, flicker has been eliminated by redrawing the absolute minimum, etc. We are now on solid ground to implement more stuff.
This has been an extenuating exercise. I am tired, and on top of it all, real life has knocked on my door. This does not mean I'll stop working on it, but it probably means that I will not be able to put as much time into it.
For the above mentioned reasons, I think it's best for everybody if we stabilize the code as much as possible, before we start working on the large number of missing features. For this I need your help -- the few apps that I test with work just fine now.
I would like to thank everybody that helped me with testing, patches, or reporting bugs. I couldn't have done the half of it without that support.
This sounds like this is a done deal. It's not. There's a lot of stuff that remains to be done, but I needed some closure. :)
On Mon, 21 Oct 2002 23:57:52 -0400, you wrote:
I would like to thank everybody that helped me with testing, patches, or reporting bugs. I couldn't have done the half of it without that support.
This sounds like this is a done deal. It's not. There's a lot of stuff that remains to be done, but I needed some closure. :)
Yes that seems the right way to proceed. Here is an update of newsbin status (current cvs == V18 ).
On the positive side background colouring for new messages works now.
Current show-stoppers:
- only first column displays text; this problem existed from the beginning; - when downloading headers, the messages listview doesn't get filled; this problem was introduced in rev. 1.200; I can get the list to display after the download is finished by toggling the "show only new headers" option; I have uploaded a cut of a +listview trace on www.xs4all.nl/~rklazes/nb.log.bz2 ; - crashes :(( see below.
Nit-picking:
- the green background extends as far as the text; with native comctl32 is extends the whole column; - A line that has both a green background and is marked slected will display as white text on green backgound; With native comctl32 is shows as white text on dark blue background (same as selected); - updates are from bottom to top; this gets some getting used to;
Till sofar I had two different (looking at the backtrace) crashes. I did not found a way to reproduce easily, just that it happens always shorly after a second download is requested. I will try to create debug logs when I find a way to reproduce.
Crash 1:
| err:ntdll:RtlpWaitForCriticalSection section 0x4fcf28 "?" wait timed out, retrying (60 sec) tid=087ee0b8 | Unhandled exception: page fault on write access to 0x00418082 in 32-bit code (0x400a3e2d). | In 32-bit mode. | 0x400a3e2d (INSTR_EmulateInstruction+0xaf9 [instr.c:615] in libntdll.dll.so): movl %eax,0x0(%esi) | Warning: L"/usr/home/projects/wine/mywine/dlls/ntdll/../../memory/instr.c" not accessible from a configured DOS drive | Unable to open file /usr/home/projects/wine/mywine/dlls/ntdll/../../memory/instr.c | Backtrace: | =>0 0x400a3e2d (INSTR_EmulateInstruction+0xaf9(context=0x40630a50, context=0x40630a50, context=0x40630a50, context=0x40630a50, context=0x40630a50, context=0x40630a50, context=0x40630a50, context=0x40630a50, context=0x40630a50, context=0x40630a50, context=0x40630a50, context=0x40630a50, context=0x40630a50, context=0x40630a50, context=0x40630a50, context=0x40630a50, context=0x40630a50, context=0x40630a50, context=0x40630a50, context=0x40630a50) [instr.c:615] in libntdll.dll.so) (ebp=406309c4) | 1 0x400dd289 (do_segv+0x109(context=0x40630a50, trap_code=0xd, cr2=0x0, err_code=0x0) [signal_i386.c:761] in libntdll.dll.so) (ebp=40630a2c) | 2 0x400dd762 (segv_handler+0x3a(__signal=0xb, __context=0x1587) [signal_i386.c:986] in libntdll.dll.so) (ebp=40630d1c) | 3 0x4025fb88 (NTDLL.DLL.toupper+0x59ae in libc.so.6) (ebp=414a0328) | 4 0x00000cd6 (ebp=00010023) | 5 0x18171615 (LIBFILTER.DLL..reloc+0x812e615) (ebp=14131211) | *** Invalid address 0x14131211 (LIBFILTER.DLL..reloc+0x40ee211) |
Crash 2:
| err:ntdll:RtlpWaitForCriticalSection section 0x4fcf28 "?" wait timed out, retrying (60 sec) tid=087eedb8 | Unhandled exception: page fault on write access to 0x1784562e in 32-bit code (0x4272392f). | In 32-bit mode. | 0x4272392f (_end+0xdbf6f): addb %bh,0x957c4272(%ebx,%edi,1) | Register dump: | CS:0023 SS:002b DS:002b ES:002b FS:008f GS:1587 | EIP:4272392f ESP:40741c5c EBP:40741cb4 EFLAGS:00210a86( R- 00O I S - -P1 ) | EAX:427d1354 EBX:40be1094 ECX:41a7ff3c EDX:00000002 | ESI:41a7ff3c EDI:414a0328 | Backtrace: | =>0 0x4272392f (_end+0xdbf6f) (ebp=40741cb4) | 1 0x40b7db77 (DPA_QuickSort+0xf3(lpPtrs=0x414bd320, l=0xd1, r=0xd2, pfnCompare=0x40b9728c, lParam=0x10023) [comctl32undoc.c:2077] in comctl32.dll.so) (ebp=40741ce0) | 2 0x40b7db1c (DPA_QuickSort+0x98(lpPtrs=0x414bd320, l=0xd1, r=0xd4, pfnCompare=0x40b9728c, lParam=0x10023) [comctl32undoc.c:2072] in comctl32.dll.so) (ebp=40741d14) | 3 0x40b7db35 (DPA_QuickSort+0xb1(lpPtrs=0x414bd320, l=0xcc, r=0xd4, pfnCompare=0x40b9728c, lParam=0x10023) [comctl32undoc.c:2075] in comctl32.dll.so) (ebp=40741d5c) | 4 0x40b7db1c (DPA_QuickSort+0x98(lpPtrs=0x414bd320, l=0xcc, r=0xdd, pfnCompare=0x40b9728c, lParam=0x10023) [comctl32undoc.c:2072] in comctl32.dll.so) (ebp=40741d90) | 5 0x40b7db35 (DPA_QuickSort+0xb1(lpPtrs=0x414bd320, l=0xb9, r=0xdd, pfnCompare=0x40b9728c, lParam=0x10023) [comctl32undoc.c:2075] in comctl32.dll.so) (ebp=40741dd8) | 6 0x40b7db35 (DPA_QuickSort+0xb1(lpPtrs=0x414bd320, l=0x94, r=0xdd, pfnCompare=0x40b9728c, lParam=0x10023) [comctl32undoc.c:2075] in comctl32.dll.so) (ebp=40741e20) | 7 0x40b7db1c (DPA_QuickSort+0x98(lpPtrs=0x414bd320, l=0x94, r=0x126, pfnCompare=0x40b9728c, lParam=0x10023) [comctl32undoc.c:2072] in comctl32.dll.so) (ebp=40741e54) | 8 0x40b7db35 (DPA_QuickSort+0xb1(lpPtrs=0x414bd320, l=0x0, r=0x126, pfnCompare=0x40b9728c, lParam=0x10023) [comctl32undoc.c:2075] in comctl32.dll.so) (ebp=40741e9c) | 9 0x40b7db1c (DPA_QuickSort+0x98(lpPtrs=0x414bd320, l=0x0, r=0x24c, pfnCompare=0x40b9728c, lParam=0x10023) [comctl32undoc.c:2072] in comctl32.dll.so) (ebp=40741ed0) | 10 0x40b7dc3d (DPA_Sort+0x71(hdpa=0x414a0710, pfnCompare=0x40b9728c, lParam=0x10023) [comctl32undoc.c:2117] in comctl32.dll.so) (ebp=40741ef8) | 11 0x40b973af (LISTVIEW_SortItems+0xcf(infoPtr=0x414a0328, pfnCompare=0x418140, lParamSort=0x41a114e8) [listview.c:6773] in comctl32.dll.so) (ebp=40741f54) | 12 0x40b99f7e (LISTVIEW_WindowProc+0xbfe(hwnd=0x10023, uMsg=0x1030, wParam=0x41a114e8, lParam=0x418140, hdc=0x41a114e8, hdc=0x41a114e8) [listview.c:8485] in comctl32.dll.so) (ebp=40741f88) | 13 0x4089e767 (WINPROC_wrapper+0x17 in user32.dll.so) (ebp=40741fac) | 14 0x4089e7fd (WINPROC_CallWndProc+0x8d(proc=0x40b99380, hwnd=0x10023, msg=0x1030, wParam=0x41a114e8, lParam=0x418140) [winproc.c:183] in user32.dll.so) (ebp=40741fdc) | 15 0x408a4418 (WINPROC_CallProc32ATo32W+0xbc(func=0x40b99380, hwnd=0x10023, msg=0x1030, wParam=0x41a114e8, lParam=0x418140) [winproc.c:2585] in user32.dll.so) (ebp=40742008) | 16 0x408a4957 (CallWindowProcA+0xa7(func=0x41490526, hwnd=0x10023, msg=0x1030, wParam=0x41a114e8, lParam=0x418140) [winproc.c:2792] in user32.dll.so) (ebp=40742030) | 17 0x0049f07f (nbpro.exe..text+0x9e07f in H:\binw\nbpro\nbpro.exe) (ebp=40742050) | 18 0x0049f6ab (nbpro.exe..text+0x9e6ab in H:\binw\nbpro\nbpro.exe) (ebp=4074206c) | 19 0x0049e68f (nbpro.exe..text+0x9d68f in H:\binw\nbpro\nbpro.exe) (ebp=407420cc) | 20 0x0049e897 (nbpro.exe..text+0x9d897 in H:\binw\nbpro\nbpro.exe) (ebp=407420e8) | 21 0x4089e767 (WINPROC_wrapper+0x17 in user32.dll.so) (ebp=4074210c) | 22 0x4089e7fd (WINPROC_CallWndProc+0x8d(proc=0x49e86c, hwnd=0x10023, msg=0x1030, wParam=0x41a114e8, lParam=0x418140) [winproc.c:183] in user32.dll.so) (ebp=4074213c) | 23 0x408a48eb (CallWindowProcA+0x3b(func=0x49e86c, hwnd=0x10023, msg=0x1030, wParam=0x41a114e8, lParam=0x418140) [winproc.c:2773] in user32.dll.so) (ebp=40742164) | 24 0x408b4054 (call_window_proc+0x11c(hwnd=0x10023, msg=0x1030, wparam=0x41a114e8, lparam=0x418140, unicode=0x0) [message.c:1382] in user32.dll.so) (ebp=407421b8) | 25 0x408b4cd6 (SendMessageTimeoutA+0xea(hwnd=0x10023, msg=0x1030, wparam=0x41a114e8, lparam=0x418140, flags=0x0, timeout=0xffffffff, res_ptr=0x40742240, hwnd=0x10023) [message.c:1796] in user32.dll.so) (ebp=40742210) | 26 0x408b4e3d (SendMessageA+0x39(hwnd=0x10023, msg=0x1030, wparam=0x41a114e8, lparam=0x418140) [message.c:1841] in user32.dll.so) (ebp=40742244) | 27 0x00418252 (nbpro.exe..text+0x17252 in H:\binw\nbpro\nbpro.exe) (ebp=408b4e04) | 28 0x565704ec (_end+0x13f28b2c) (ebp=83e58955) |
Rein.
On October 22, 2002 06:16 am, Rein Klazes wrote:
On the positive side background colouring for new messages works now.
;)
[snip]
- updates are from bottom to top; this gets some getting used to;
Fixed in one of the W-patches.
Crash 2: | err:ntdll:RtlpWaitForCriticalSection section 0x4fcf28 "?" wait timed out, | retrying (60 sec) tid=087eedb8 Unhandled exception: page fault on write | access to 0x1784562e in 32-bit code (0x4272392f). In 32-bit mode. | 0x4272392f (_end+0xdbf6f): addb %bh,0x957c4272(%ebx,%edi,1) | Register dump: | CS:0023 SS:002b DS:002b ES:002b FS:008f GS:1587 | EIP:4272392f ESP:40741c5c EBP:40741cb4 EFLAGS:00210a86( R- 00O I S - | -P1 ) EAX:427d1354 EBX:40be1094 ECX:41a7ff3c EDX:00000002 | ESI:41a7ff3c EDI:414a0328 | Backtrace: | =>0 0x4272392f (_end+0xdbf6f) (ebp=40741cb4) | 1 0x40b7db77 (DPA_QuickSort+0xf3(lpPtrs=0x414bd320, l=0xd1, r=0xd2, | pfnCompare=0x40b9728c, lParam=0x10023) [comctl32undoc.c:2077] in | comctl32.dll.so) (ebp=40741ce0) 2 0x40b7db1c | (DPA_QuickSort+0x98(lpPtrs=0x414bd320, l=0xd1, r=0xd4, | pfnCompare=0x40b9728c, lParam=0x10023) [comctl32undoc.c:2072] in | comctl32.dll.so) (ebp=40741d14) 3 0x40b7db35 | (DPA_QuickSort+0xb1(lpPtrs=0x414bd320, l=0xcc, r=0xd4, | pfnCompare=0x40b9728c, lParam=0x10023) [comctl32undoc.c:2075] in | comctl32.dll.so) (ebp=40741d5c) 4 0x40b7db1c
The line numbers look strage. What version of dlls/comctl32/comctl32undoc.c did you run it with?
On Tue, 22 Oct 2002 19:38:41 -0400, you wrote:
The line numbers look strage. What version of dlls/comctl32/comctl32undoc.c did you run it with?
rev 1.71, latest cvs.
Rein.
On October 22, 2002 11:45 pm, Rein Klazes wrote:
On Tue, 22 Oct 2002 19:38:41 -0400, you wrote:
The line numbers look strage. What version of dlls/comctl32/comctl32undoc.c did you run it with?
rev 1.71, latest cvs.
Interesting. Listen, can you please retry with _all_ my latest patches, there were 2 very serious bugs that might have caused those problems, in some strange ways.
Thanks.
On Tue, 22 Oct 2002 23:59:28 -0400, you wrote:
On October 22, 2002 11:45 pm, Rein Klazes wrote:
On Tue, 22 Oct 2002 19:38:41 -0400, you wrote:
The line numbers look strage. What version of dlls/comctl32/comctl32undoc.c did you run it with?
rev 1.71, latest cvs.
Interesting. Listen, can you please retry with _all_ my latest patches, there were 2 very serious bugs that might have caused those problems, in some strange ways.
That seems to solve it, no crashes for a while. Needs a lot longer testing to 100% sure though.
Here is a patch that solves the r1.200 regression: =============== --- listview.w6.c 2002-10-23 08:38:12.000000000 +0200 +++ listview.c 2002-10-23 08:40:53.000000000 +0200 @@ -4453,8 +4453,13 @@ lvItem.iSubItem = 0; if (!LISTVIEW_GetItemW(infoPtr, &lvItem)) continue;
- if (lvItem.mask & LVIF_PARAM && lpFindInfo->lParam == lvItem.lParam) - return nItem; + if (lvItem.mask & LVIF_PARAM) + { + if (lpFindInfo->lParam == lvItem.lParam) + return nItem; + else + continue; + } if (lvItem.mask & LVIF_TEXT) { ============
Rein.
On October 23, 2002 02:50 am, Rein Klazes wrote:
That seems to solve it, no crashes for a while. Needs a lot longer testing to 100% sure though.
True. Let me know if you get any more crashes.
Here is a patch that solves the r1.200 regression:
Thanks! Looks good, please submit it, or if you don't feel like, let me know, and I'll include it in my next patchset.
On October 22, 2002 06:16 am, Rein Klazes wrote:
- the green background extends as far as the text; with native
comctl32 is extends the whole column;
- A line that has both a green background and is marked slected will
display as white text on green backgound; With native comctl32 is shows as white text on dark blue background (same as selected);
I need good & bad screenshots of these things to understand what is wrong, and what needs to get done.
On October 22, 2002 06:16 am, Rein Klazes wrote:
- the green background extends as far as the text; with native
comctl32 is extends the whole column;
- A line that has both a green background and is marked slected will
display as white text on green backgound; With native comctl32 is shows as white text on dark blue background (same as selected);
X4 should solve these. Please let me know if it doesn't.
On October 22, 2002 06:16 am, Rein Klazes wrote:
- only first column displays text; this problem existed from the
beginning;
OK, X5 + X6 should fix this. Newsbin Pro is just perfect now :)
On Thu, 24 Oct 2002 02:32:51 -0400, you wrote:
On October 22, 2002 06:16 am, Rein Klazes wrote:
- only first column displays text; this problem existed from the
beginning;
OK, X5 + X6 should fix this. Newsbin Pro is just perfect now :)
Yes, I'm impressed ;-)
Rein.