mirror of
https://github.com/moonlight-stream/moonlight-common-c.git
synced 2025-07-03 00:06:02 +00:00
Fix UBSan warning for signed integer overflow
This commit is contained in:
parent
620b4be477
commit
5e844aad08
@ -28,8 +28,8 @@ typedef struct _NVCTL_ENCRYPTED_PACKET_HEADER {
|
||||
} NVCTL_ENCRYPTED_PACKET_HEADER, *PNVCTL_ENCRYPTED_PACKET_HEADER;
|
||||
|
||||
typedef struct _QUEUED_FRAME_INVALIDATION_TUPLE {
|
||||
int startFrame;
|
||||
int endFrame;
|
||||
uint32_t startFrame;
|
||||
uint32_t endFrame;
|
||||
LINKED_BLOCKING_QUEUE_ENTRY entry;
|
||||
} QUEUED_FRAME_INVALIDATION_TUPLE, *PQUEUED_FRAME_INVALIDATION_TUPLE;
|
||||
|
||||
@ -77,9 +77,8 @@ static PLT_THREAD invalidateRefFramesThread;
|
||||
static PLT_THREAD requestIdrFrameThread;
|
||||
static PLT_THREAD controlReceiveThread;
|
||||
static PLT_THREAD asyncCallbackThread;
|
||||
static int lossCountSinceLastReport;
|
||||
static int lastGoodFrame;
|
||||
static int lastSeenFrame;
|
||||
static uint32_t lastGoodFrame;
|
||||
static uint32_t lastSeenFrame;
|
||||
static bool stopping;
|
||||
static bool disconnectPending;
|
||||
static bool encryptedControlStream;
|
||||
@ -321,7 +320,6 @@ int initializeControlStream(void) {
|
||||
|
||||
lastGoodFrame = 0;
|
||||
lastSeenFrame = 0;
|
||||
lossCountSinceLastReport = 0;
|
||||
disconnectPending = false;
|
||||
intervalGoodFrameCount = 0;
|
||||
intervalTotalFrameCount = 0;
|
||||
@ -362,7 +360,7 @@ void destroyControlStream(void) {
|
||||
PltDeleteMutex(&enetMutex);
|
||||
}
|
||||
|
||||
void queueFrameInvalidationTuple(int startFrame, int endFrame) {
|
||||
static void queueFrameInvalidationTuple(uint32_t startFrame, uint32_t endFrame) {
|
||||
LC_ASSERT(startFrame <= endFrame);
|
||||
|
||||
if (isReferenceFrameInvalidationEnabled()) {
|
||||
@ -398,12 +396,12 @@ void LiRequestIdrFrame(void) {
|
||||
}
|
||||
|
||||
// Invalidate reference frames lost by the network
|
||||
void connectionDetectedFrameLoss(int startFrame, int endFrame) {
|
||||
void connectionDetectedFrameLoss(uint32_t startFrame, uint32_t endFrame) {
|
||||
queueFrameInvalidationTuple(startFrame, endFrame);
|
||||
}
|
||||
|
||||
// When we receive a frame, update the number of our current frame
|
||||
void connectionReceivedCompleteFrame(int frameIndex) {
|
||||
void connectionReceivedCompleteFrame(uint32_t frameIndex) {
|
||||
lastGoodFrame = frameIndex;
|
||||
intervalGoodFrameCount++;
|
||||
}
|
||||
@ -424,7 +422,7 @@ void connectionSendFrameFecStatus(PSS_FRAME_FEC_STATUS fecStatus) {
|
||||
}
|
||||
}
|
||||
|
||||
void connectionSawFrame(int frameIndex) {
|
||||
void connectionSawFrame(uint32_t frameIndex) {
|
||||
LC_ASSERT_VT(!isBefore16(frameIndex, lastSeenFrame));
|
||||
|
||||
uint64_t now = PltGetMillis();
|
||||
@ -470,11 +468,6 @@ void connectionSawFrame(int frameIndex) {
|
||||
lastSeenFrame = frameIndex;
|
||||
}
|
||||
|
||||
// When we lose packets, update our packet loss count
|
||||
void connectionLostPackets(int lastReceivedPacket, int nextReceivedPacket) {
|
||||
lossCountSinceLastReport += (nextReceivedPacket - lastReceivedPacket) - 1;
|
||||
}
|
||||
|
||||
// Reads an NV control stream packet from the TCP connection
|
||||
static PNVCTL_TCP_PACKET_HEADER readNvctlPacketTcp(void) {
|
||||
NVCTL_TCP_PACKET_HEADER staticHeader;
|
||||
@ -1335,7 +1328,7 @@ static void lossStatsThreadFunc(void* context) {
|
||||
while (!PltIsThreadInterrupted(&lossStatsThread)) {
|
||||
// Construct the payload
|
||||
BbInitializeWrappedBuffer(&byteBuffer, lossStatsPayload, 0, payloadLengths[IDX_LOSS_STATS], BYTE_ORDER_LITTLE);
|
||||
BbPut32(&byteBuffer, lossCountSinceLastReport);
|
||||
BbPut32(&byteBuffer, 0);
|
||||
BbPut32(&byteBuffer, LOSS_REPORT_INTERVAL_MS);
|
||||
BbPut32(&byteBuffer, 1000);
|
||||
BbPut64(&byteBuffer, lastGoodFrame);
|
||||
@ -1356,9 +1349,6 @@ static void lossStatsThreadFunc(void* context) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Clear the transient state
|
||||
lossCountSinceLastReport = 0;
|
||||
|
||||
// Wait a bit
|
||||
PltSleepMsInterruptible(&lossStatsThread, LOSS_REPORT_INTERVAL_MS);
|
||||
}
|
||||
@ -1415,7 +1405,7 @@ static void requestIdrFrame(void) {
|
||||
Limelog("IDR frame request sent\n");
|
||||
}
|
||||
|
||||
static void requestInvalidateReferenceFrames(int startFrame, int endFrame) {
|
||||
static void requestInvalidateReferenceFrames(uint32_t startFrame, uint32_t endFrame) {
|
||||
int64_t payload[3];
|
||||
|
||||
LC_ASSERT(startFrame <= endFrame);
|
||||
@ -1444,8 +1434,8 @@ static void invalidateRefFramesFunc(void* context) {
|
||||
|
||||
while (!PltIsThreadInterrupted(&invalidateRefFramesThread)) {
|
||||
PQUEUED_FRAME_INVALIDATION_TUPLE qfit;
|
||||
int startFrame;
|
||||
int endFrame;
|
||||
uint32_t startFrame;
|
||||
uint32_t endFrame;
|
||||
|
||||
// Wait for a reference frame invalidation request or a request to shutdown
|
||||
if (LbqWaitForQueueElement(&invalidReferenceFrameTuples, (void**)&qfit) != LBQ_SUCCESS) {
|
||||
|
@ -107,10 +107,9 @@ int initializeControlStream(void);
|
||||
int startControlStream(void);
|
||||
int stopControlStream(void);
|
||||
void destroyControlStream(void);
|
||||
void connectionDetectedFrameLoss(int startFrame, int endFrame);
|
||||
void connectionReceivedCompleteFrame(int frameIndex);
|
||||
void connectionSawFrame(int frameIndex);
|
||||
void connectionLostPackets(int lastReceivedPacket, int nextReceivedPacket);
|
||||
void connectionDetectedFrameLoss(uint32_t startFrame, uint32_t endFrame);
|
||||
void connectionReceivedCompleteFrame(uint32_t frameIndex);
|
||||
void connectionSawFrame(uint32_t frameIndex);
|
||||
void connectionSendFrameFecStatus(PSS_FRAME_FEC_STATUS fecStatus);
|
||||
int sendInputPacketOnControlStream(unsigned char* data, int length, uint8_t channelId, uint32_t flags, bool moreData);
|
||||
void flushInputOnControlStream(void);
|
||||
|
Loading…
x
Reference in New Issue
Block a user