Here are the basic -debugmsg +msvideo logs. The ones with +relay are at:
http://www.cantoris.demon.co.uk/before-relay.log.bz2 (690,270 B) http://www.cantoris.demon.co.uk/after-relay.log.bz2 (1,476,695 B)
so as not to explode anyone's mailbox. :-) They will expand to about 300MB (!) total. thanx does the attached patch fix your issue ? A+
-- Eric Pouech Index: dlls/msvideo/drawdib.c =================================================================== RCS file: /home/cvs/cvsroot/wine/wine/dlls/msvideo/drawdib.c,v retrieving revision 1.19 diff -u -r1.19 drawdib.c --- dlls/msvideo/drawdib.c 15 Dec 2002 01:14:21 -0000 1.19 +++ dlls/msvideo/drawdib.c 30 Dec 2002 14:33:18 -0000 @@ -64,11 +64,11 @@ { WINE_HDD* hdd; - for (hdd = HDD_FirstHdd; hdd != NULL && hdd->hSelf != hdd; hdd = hdd->next); + for (hdd = HDD_FirstHdd; hdd != NULL && hdd->hSelf != hd; hdd = hdd->next); return hdd; } -static DWORD HDD_HandleRef = 1; +static DWORD HDD_HandleRef = 0x1000; /*********************************************************************** * DrawDibOpen [MSVFW32.@] @@ -80,7 +80,6 @@ TRACE("(void)\n"); whdd = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WINE_HDD)); - TRACE("=> %p\n", whdd); while (MSVIDEO_GetHddPtr((HDRAWDIB)HDD_HandleRef) != NULL) HDD_HandleRef++; whdd->hSelf = (HDRAWDIB)HDD_HandleRef++; @@ -88,6 +87,8 @@ whdd->next = HDD_FirstHdd; HDD_FirstHdd = whdd; + TRACE("=> %p (%p)\n", whdd->hSelf, whdd); + return whdd->hSelf; } @@ -97,12 +98,22 @@ BOOL VFWAPI DrawDibClose(HDRAWDIB hdd) { WINE_HDD* whdd = MSVIDEO_GetHddPtr(hdd); + WINE_HDD** p; TRACE("(%p)\n", hdd); if (!whdd) return FALSE; if (whdd->begun) DrawDibEnd(hdd); + + for (p = &HDD_FirstHdd; *p != NULL; p = &((*p)->next)) + { + if (*p == whdd) + { + *p = whdd->next; + break; + } + } HeapFree(GetProcessHeap(), 0, whdd);