Small bug fix

do not crash UT2004 any longer, but it freze ut2004 
screen. still some problem with getdevicedata for
the mouse. it is the mouse buffer problem. more
apps will work better now. 

svn path=/trunk/; revision=13978
This commit is contained in:
Magnus Olsen 2005-03-12 20:29:51 +00:00
parent 7fd17a9a85
commit 0aa810f5e1

View file

@ -869,7 +869,7 @@ static DWORD time=0;
TRACE("(%p)->(dods=%ld,entries=%ld,fl=0x%08lx)\n",This,dodsize,*entries,flags);
#ifdef __REACTOS__
getmousesvalue(iface);
if (flags == DIGDD_PEEK ) getmousesvalue(iface);
#endif
// windows does not get any data if
@ -885,38 +885,100 @@ getmousesvalue(iface);
return DIERR_NOTACQUIRED;
}
#ifdef __REACTOS__
if (dodsize == sizeof(DIDEVICEOBJECTDATA_DX3)) {
FIXME("This is broken in Tribes, need right implant of the buffer!!!!!!!!\n");
*entries = 5;
if (GetTickCount()-time <50) return DI_OK;
time = GetTickCount();
if (GetTickCount()-time <50) {
return DI_OK;
}
time = GetTickCount();
if (*entries == 0) return DIERR_INVALIDPARAM;
if (*entries == 1) {
dod[0].dwOfs = DIMOFS_X;
dod[0].dwData = This->m_state.lX;
dod[0].dwTimeStamp = 0;
dod[0].dwTimeStamp = time +1;
dod[0].dwSequence = last_event++;
}
if (*entries == 2) {
dod[1].dwOfs = DIMOFS_Y;
dod[1].dwData = This->m_state.lY;
dod[1].dwTimeStamp = 0;
dod[1].dwTimeStamp = time +1;
dod[1].dwSequence = last_event++;
}
dod[2].dwOfs = DIMOFS_BUTTON0;
dod[2].dwData = This->m_state.rgbButtons[0];
dod[2].dwTimeStamp = 0;
if (*entries == 3) {
dod[2].dwOfs = DIMOFS_2;
dod[2].dwData = This->m_state.lZ;
dod[2].dwTimeStamp = time +1;
dod[2].dwSequence = last_event++;
}
dod[3].dwOfs = DIMOFS_BUTTON1;
dod[3].dwData = This->m_state.rgbButtons[1];
dod[3].dwTimeStamp = 0;
if (*entries == 4) {
dod[3].dwOfs = DIMOFS_BUTTON0;
dod[3].dwData = This->m_state.rgbButtons[0];
dod[3].dwTimeStamp = time +1;
dod[3].dwSequence = last_event++;
}
dod[4].dwOfs = DIMOFS_BUTTON2;
dod[4].dwData = This->m_state.rgbButtons[2];
dod[4].dwTimeStamp = 50;
if (*entries == 5) {
dod[4].dwOfs = DIMOFS_BUTTON1;
dod[4].dwData = This->m_state.rgbButtons[1];
dod[4].dwTimeStamp = time +1;
dod[4].dwSequence = last_event++;
}
if (*entries == 6) {
dod[5].dwOfs = DIMOFS_BUTTON2;
dod[5].dwData = This->m_state.rgbButtons[2];
dod[5].dwTimeStamp = time +1;
dod[5].dwSequence = last_event++;
}
if (*entries == 7) {
dod[6].dwOfs = DIMOFS_BUTTON3;
dod[6].dwData = This->m_state.rgbButtons[3];
dod[6].dwTimeStamp = time +1;
dod[6].dwSequence = last_event++;
}
if (*entries == 8) {
dod[7].dwOfs = DIMOFS_BUTTON4;
dod[7].dwData = This->m_state.rgbButtons[4];
dod[7].dwTimeStamp = time +1;
dod[7].dwSequence = last_event++;
}
if (*entries == 9) {
dod[8].dwOfs = DIMOFS_BUTTON5;
dod[8].dwData = This->m_state.rgbButtons[5];
dod[8].dwTimeStamp = time +1;
dod[8].dwSequence = last_event++;
}
if (*entries == 10) {
dod[9].dwOfs = DIMOFS_BUTTON6;
dod[9].dwData = This->m_state.rgbButtons[6];
dod[9].dwTimeStamp = time +1;
dod[9].dwSequence = last_event++;
}
}
else {
ERR("Wrong structure size !\n");
return DIERR_INVALIDPARAM;
}
//LeaveCriticalSection(&(This->crit));
#endif
#ifndef __REACTOS__