| 25 | } |
| 26 | |
| 27 | void dthread_send_delta(int pnum, char cmd, void *pbSrc, int dwLen) |
| 28 | { |
| 29 | TMegaPkt *pkt; |
| 30 | TMegaPkt *p; |
| 31 | |
| 32 | if (gbMaxPlayers == 1) { |
| 33 | return; |
| 34 | } |
| 35 | |
| 36 | pkt = (TMegaPkt *)DiabloAllocPtr(dwLen + 20); |
| 37 | pkt->pNext = NULL; |
| 38 | pkt->dwSpaceLeft = pnum; |
| 39 | pkt->data[0] = cmd; |
| 40 | *(DWORD *)&pkt->data[4] = dwLen; |
| 41 | memcpy(&pkt->data[8], pbSrc, dwLen); |
| 42 | sgMemCrit.Enter(); |
| 43 | p = (TMegaPkt *)&sgpInfoHead; |
| 44 | while (p->pNext) { |
| 45 | p = p->pNext; |
| 46 | } |
| 47 | p->pNext = pkt; |
| 48 | |
| 49 | SetEvent(sghWorkToDoEvent); |
| 50 | sgMemCrit.Leave(); |
| 51 | } |
| 52 | |
| 53 | void dthread_start() |
| 54 | { |
no test coverage detected