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);