Devilution
Diablo devolved - magic behind the 1996 computer game
Source
tmsg.cpp
Go to the documentation of this file.
1
#include "
all.h
"
2
3
DEVILUTION_BEGIN_NAMESPACE
4
5
static
TMsg
*
sgpTimedMsgHead
;
6
7
int
tmsg_get
(BYTE *pbMsg, DWORD dwMaxLen)
8
{
9
int
len;
10
TMsg
*head;
11
12
if
(!
sgpTimedMsgHead
)
13
return
0;
14
15
if
((
int
)(
sgpTimedMsgHead
->
hdr
.
dwTime
- SDL_GetTicks()) >= 0)
16
return
0;
17
head =
sgpTimedMsgHead
;
18
sgpTimedMsgHead
= head->
hdr
.
pNext
;
19
len = head->
hdr
.
bLen
;
20
// BUGFIX: ignores dwMaxLen
21
memcpy(pbMsg, head->
body
, len);
22
mem_free_dbg
(head);
23
return
len;
24
}
25
26
void
tmsg_add
(BYTE *pbMsg, BYTE bLen)
27
{
28
TMsg
**tail;
29
30
TMsg
*msg = (
TMsg
*)
DiabloAllocPtr
(bLen +
sizeof
(*msg));
31
msg->
hdr
.
pNext
= NULL;
32
msg->
hdr
.
dwTime
= SDL_GetTicks() + 500;
33
msg->
hdr
.
bLen
= bLen;
34
memcpy(msg->
body
, pbMsg, bLen);
35
for
(tail = &
sgpTimedMsgHead
; *tail; tail = &(*tail)->
hdr
.
pNext
) {
36
;
37
}
38
*tail = msg;
39
}
40
41
void
tmsg_start
()
42
{
43
assert
(!
sgpTimedMsgHead
);
44
}
45
46
void
tmsg_cleanup
()
47
{
48
TMsg
*next;
49
50
while
(
sgpTimedMsgHead
) {
51
next =
sgpTimedMsgHead
->
hdr
.
pNext
;
52
MemFreeDbg
(
sgpTimedMsgHead
);
53
sgpTimedMsgHead
= next;
54
}
55
}
56
57
DEVILUTION_END_NAMESPACE
tmsg_start
void tmsg_start()
Definition:
tmsg.cpp:41
tmsg_cleanup
void tmsg_cleanup()
Definition:
tmsg.cpp:46
tmsg_get
int tmsg_get(BYTE *pbMsg, DWORD dwMaxLen)
Definition:
tmsg.cpp:7
MemFreeDbg
#define MemFreeDbg(p)
Definition:
defs.h:157
all.h
TMsg::hdr
TMsgHdr hdr
Definition:
structs.h:1461
assert
#define assert(exp)
Definition:
defs.h:168
DEVILUTION_END_NAMESPACE
#define DEVILUTION_END_NAMESPACE
Definition:
types.h:10
TMsg
Definition:
structs.h:1460
TMsgHdr::bLen
BYTE bLen
Definition:
structs.h:1457
TMsgHdr::pNext
TMsg * pNext
Definition:
structs.h:1455
DiabloAllocPtr
BYTE * DiabloAllocPtr(DWORD dwBytes)
Multithreaded safe malloc.
Definition:
engine.cpp:765
TMsg::body
unsigned char body[3]
Definition:
structs.h:1464
TMsgHdr::dwTime
int dwTime
Definition:
structs.h:1456
mem_free_dbg
void mem_free_dbg(void *p)
Multithreaded safe memfree.
Definition:
engine.cpp:786
DEVILUTION_BEGIN_NAMESPACE
Definition:
sha.cpp:10
tmsg_add
void tmsg_add(BYTE *pbMsg, BYTE bLen)
Definition:
tmsg.cpp:26
sgpTimedMsgHead
static DEVILUTION_BEGIN_NAMESPACE TMsg * sgpTimedMsgHead
Definition:
tmsg.cpp:5
Generated by
1.8.17