From 5a512f2c43678b05ec51ed9cd3a12a20948253a1 Mon Sep 17 00:00:00 2001 From: Mark Olsen Date: Mon, 10 Sep 2007 14:55:36 +0000 Subject: [PATCH] Fixing Molgrum's QTV problems, part two. git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@2650 fc73d0e0-1445-4013-8a0c-d673dee63da5 --- engine/server/server.h | 2 +- engine/server/sv_mvd.c | 6 ++++-- engine/server/sv_send.c | 6 +++++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/engine/server/server.h b/engine/server/server.h index fd312376f..41628849f 100644 --- a/engine/server/server.h +++ b/engine/server/server.h @@ -1243,7 +1243,7 @@ typedef struct mvddest_s { } mvddest_t; void SV_MVDPings (void); void SV_MVDWriteToDisk(int type, int to, float time); -void MVDWrite_Begin(qbyte type, int to, int size); +qboolean MVDWrite_Begin(qbyte type, int to, int size); void MVDSetMsgBuf(demobuf_t *prev,demobuf_t *cur); void SV_MVDStop (int reason, qboolean mvdonly); void SV_MVDStop_f (void); diff --git a/engine/server/sv_mvd.c b/engine/server/sv_mvd.c index 7c0220088..a2e41b8f2 100644 --- a/engine/server/sv_mvd.c +++ b/engine/server/sv_mvd.c @@ -1009,7 +1009,7 @@ void MVDMoveBuf(void) demo.dbuf->maxsize = MAXSIZE + demo.dbuf->bufsize; } -void MVDWrite_Begin(qbyte type, int to, int size) +qboolean MVDWrite_Begin(qbyte type, int to, int size) { qbyte *p; qboolean move = false; @@ -1022,7 +1022,7 @@ void MVDWrite_Begin(qbyte type, int to, int size) move = true; if (!SV_MVDWritePackets(1)) - return; + return false; if (move && demobuffer->start > demo.dbuf->bufsize + header + size) MVDMoveBuf(); @@ -1048,6 +1048,8 @@ void MVDWrite_Begin(qbyte type, int to, int size) demo.dbuf->h->size += size; if ((demobuffer->end += size) > demobuffer->last) demobuffer->last = demobuffer->end; + + return true; } /* diff --git a/engine/server/sv_send.c b/engine/server/sv_send.c index dd7c2e2cc..1e2b9be09 100644 --- a/engine/server/sv_send.c +++ b/engine/server/sv_send.c @@ -2073,8 +2073,12 @@ void SV_SendMVDMessage(void) msg.cursize = 0; if (!demo.recorder.delta_sequence) demo.recorder.delta_sequence = -1; + SV_WriteEntitiesToClient (&demo.recorder, &msg, true); - MVDWrite_Begin(dem_all, 0, msg.cursize); + + if (!MVDWrite_Begin(dem_all, 0, msg.cursize)) + return; + SZ_Write ((sizebuf_t*)demo.dbuf, msg.data, msg.cursize); // copy the accumulated multicast datagram // for this client out to the message