more mmtimer questions
Oliver Stieber
oliver_stieber at yahoo.co.uk
Fri Feb 11 13:59:24 CST 2005
While people are thinking about mmtimer I've got a
question, or more a problem.
Sometimes, mainly when escape from Bink videos (or
they run to the end) the linked list in time.c is
getting corrupt. (this happens about 1 in 5 times)
i.e.
TIME_MMSysTimeCallback()
....
EnterCriticalSection(&iData->cs);
for (ptimer = &TIME_TimersList; *ptimer != NULL; )
{
/* silly test */
if((int)*ptimer < 1000){
FIXME("ptimer out of expected range,
timers list is probably corrupt %p \n", *ptimer);
break;
}
I've had a look through the code and can't spot any
problems with managing the linked list which would
point to problems with TIME_TimersList but when the
crash occurs ptimer != &TIME_TimersList
Also if the we're using a = &TIME_TimersList,
a=&(*a)->lpNext and then referencing *a in critical
sections doesn't anything that modifies
TIME_TimersList or ... lpNext also have to be in a
critical section? e.g. TIME_MMTimeStart and
TIME_MMTimeStop.
If so should the code be change to copy the values in
TIME_TimersList and ..->lpNext instead of
referencing them or should it be changed to make sure
TIME_MMTimeStart and TIME_MMTimeStop etc.. use
critical sections.
Send instant messages to your online friends http://uk.messenger.yahoo.com
More information about the wine-devel
mailing list