Use GetTickCount64 instead of GetTickCountPrecise.

This commit is contained in:
Armin Novak 2019-09-02 15:44:52 +02:00
parent 12b0b9ea28
commit f93d625cde
7 changed files with 81 additions and 81 deletions

View File

@ -760,7 +760,7 @@ static UINT rdpgfx_recv_start_frame_pdu(RDPGFX_CHANNEL_CALLBACK* callback,
Stream_Read_UINT32(s, pdu.frameId); /* frameId (4 bytes) */
DEBUG_RDPGFX(gfx->log, "RecvStartFramePdu: frameId: %"PRIu32" timestamp: 0x%08"PRIX32"",
pdu.frameId, pdu.timestamp);
gfx->StartDecodingTime = GetTickCountPrecise();
gfx->StartDecodingTime = GetTickCount64();
if (context)
{
@ -845,7 +845,7 @@ static UINT rdpgfx_recv_end_frame_pdu(RDPGFX_CHANNEL_CALLBACK* callback,
if (gfx->SendQoeAck)
{
RDPGFX_QOE_FRAME_ACKNOWLEDGE_PDU qoe;
UINT32 diff = (GetTickCountPrecise() - gfx->StartDecodingTime);
UINT64 diff = (GetTickCount64() - gfx->StartDecodingTime);
if (diff > 65000)
diff = 0;

View File

@ -72,7 +72,7 @@ struct _RDPGFX_PLUGIN
ZGFX_CONTEXT* zgfx;
UINT32 UnacknowledgedFrames;
UINT32 TotalDecodedFrames;
UINT32 StartDecodingTime;
UINT64 StartDecodingTime;
BOOL suspendFrameAcks;
BOOL sendFrameAcks;

View File

@ -82,7 +82,7 @@ struct rdpsnd_plugin
BYTE waveData[4];
UINT16 waveDataSize;
UINT32 wTimeStamp;
UINT32 wArrivalTime;
UINT64 wArrivalTime;
UINT32 latency;
BOOL isOpen;
@ -388,7 +388,7 @@ static UINT rdpsnd_recv_wave_info_pdu(rdpsndPlugin* rdpsnd, wStream* s,
if (Stream_GetRemainingLength(s) < 12)
return ERROR_BAD_LENGTH;
rdpsnd->wArrivalTime = GetTickCount();
rdpsnd->wArrivalTime = GetTickCount64();
Stream_Read_UINT16(s, rdpsnd->wTimeStamp);
Stream_Read_UINT16(s, wFormatNo);
@ -440,8 +440,8 @@ static UINT rdpsnd_treat_wave(rdpsndPlugin* rdpsnd, wStream* s, size_t size)
{
BYTE* data;
AUDIO_FORMAT* format;
DWORD end;
DWORD diffMS;
UINT64 end;
UINT64 diffMS;
UINT latency = 0;
if (Stream_GetRemainingLength(s) < size)
@ -474,7 +474,7 @@ static UINT rdpsnd_treat_wave(rdpsndPlugin* rdpsnd, wStream* s, size_t size)
return status;
}
end = GetTickCount();
end = GetTickCount64();
diffMS = end - rdpsnd->wArrivalTime + latency;
return rdpsnd_send_wave_confirm_pdu(rdpsnd, rdpsnd->wTimeStamp + diffMS, rdpsnd->cBlockNo);
}
@ -518,7 +518,7 @@ static UINT rdpsnd_recv_wave2_pdu(rdpsndPlugin* rdpsnd, wStream* s, UINT16 BodyS
Stream_Read_UINT32(s, dwAudioTimeStamp);
rdpsnd->waveDataSize = BodySize - 12;
format = &rdpsnd->ClientFormats[wFormatNo];
rdpsnd->wArrivalTime = GetTickCount();
rdpsnd->wArrivalTime = GetTickCount64();
WLog_Print(rdpsnd->log, WLOG_DEBUG, "Wave2PDU: cBlockNo: %"PRIu8" wFormatNo: %"PRIu16", align=%hu",
rdpsnd->cBlockNo, wFormatNo, format->nBlockAlign);

View File

@ -1,61 +1,61 @@
/**
* FreeRDP: A Remote Desktop Protocol Implementation
* Auto-Detect PDUs
*
* Copyright 2014 Dell Software <Mike.McDonald@software.dell.com>
* Copyright 2014 Vic Lee
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef FREERDP_AUTODETECT_H
#define FREERDP_AUTODETECT_H
typedef struct rdp_autodetect rdpAutoDetect;
typedef BOOL (*pRTTMeasureRequest)(rdpContext* context, UINT16 sequenceNumber);
typedef BOOL (*pRTTMeasureResponse)(rdpContext* context, UINT16 sequenceNumber);
typedef BOOL (*pBandwidthMeasureStart)(rdpContext* context, UINT16 sequenceNumber);
typedef BOOL (*pBandwidthMeasureStop)(rdpContext* context, UINT16 sequenceNumber);
typedef BOOL (*pBandwidthMeasureResults)(rdpContext* context, UINT16 sequenceNumber);
typedef BOOL (*pNetworkCharacteristicsResult)(rdpContext* context, UINT16 sequenceNumber);
typedef BOOL (*pClientBandwidthMeasureResult)(rdpContext* context, rdpAutoDetect* data);
struct rdp_autodetect
{
ALIGN64 rdpContext* context; /* 0 */
/* RTT measurement */
ALIGN64 UINT32 rttMeasureStartTime; /* 1 */
/* Bandwidth measurement */
ALIGN64 UINT32 bandwidthMeasureStartTime; /* 2 */
ALIGN64 UINT32 bandwidthMeasureTimeDelta; /* 3 */
ALIGN64 UINT32 bandwidthMeasureByteCount; /* 4 */
/* Network characteristics (as reported by server) */
ALIGN64 UINT32 netCharBandwidth; /* 5 */
ALIGN64 UINT32 netCharBaseRTT; /* 6 */
ALIGN64 UINT32 netCharAverageRTT; /* 7 */
ALIGN64 BOOL bandwidthMeasureStarted; /* 8 */
UINT64 paddingA[16 - 9]; /* 9 */
ALIGN64 pRTTMeasureRequest RTTMeasureRequest; /* 16 */
ALIGN64 pRTTMeasureResponse RTTMeasureResponse; /* 17 */
ALIGN64 pBandwidthMeasureStart BandwidthMeasureStart; /* 18 */
ALIGN64 pBandwidthMeasureStop BandwidthMeasureStop; /* 19 */
ALIGN64 pBandwidthMeasureResults BandwidthMeasureResults; /* 20 */
ALIGN64 pNetworkCharacteristicsResult NetworkCharacteristicsResult; /* 21 */
ALIGN64 pClientBandwidthMeasureResult ClientBandwidthMeasureResult; /* 22 */
UINT64 paddingB[32 - 23]; /* 23 */
};
#endif /* FREERDP_AUTODETECT_H */
/**
* FreeRDP: A Remote Desktop Protocol Implementation
* Auto-Detect PDUs
*
* Copyright 2014 Dell Software <Mike.McDonald@software.dell.com>
* Copyright 2014 Vic Lee
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef FREERDP_AUTODETECT_H
#define FREERDP_AUTODETECT_H
typedef struct rdp_autodetect rdpAutoDetect;
typedef BOOL (*pRTTMeasureRequest)(rdpContext* context, UINT16 sequenceNumber);
typedef BOOL (*pRTTMeasureResponse)(rdpContext* context, UINT16 sequenceNumber);
typedef BOOL (*pBandwidthMeasureStart)(rdpContext* context, UINT16 sequenceNumber);
typedef BOOL (*pBandwidthMeasureStop)(rdpContext* context, UINT16 sequenceNumber);
typedef BOOL (*pBandwidthMeasureResults)(rdpContext* context, UINT16 sequenceNumber);
typedef BOOL (*pNetworkCharacteristicsResult)(rdpContext* context, UINT16 sequenceNumber);
typedef BOOL (*pClientBandwidthMeasureResult)(rdpContext* context, rdpAutoDetect* data);
struct rdp_autodetect
{
ALIGN64 rdpContext* context; /* 0 */
/* RTT measurement */
ALIGN64 UINT64 rttMeasureStartTime; /* 1 */
/* Bandwidth measurement */
ALIGN64 UINT64 bandwidthMeasureStartTime; /* 2 */
ALIGN64 UINT64 bandwidthMeasureTimeDelta; /* 3 */
ALIGN64 UINT32 bandwidthMeasureByteCount; /* 4 */
/* Network characteristics (as reported by server) */
ALIGN64 UINT32 netCharBandwidth; /* 5 */
ALIGN64 UINT32 netCharBaseRTT; /* 6 */
ALIGN64 UINT32 netCharAverageRTT; /* 7 */
ALIGN64 BOOL bandwidthMeasureStarted; /* 8 */
UINT64 paddingA[16 - 9]; /* 9 */
ALIGN64 pRTTMeasureRequest RTTMeasureRequest; /* 16 */
ALIGN64 pRTTMeasureResponse RTTMeasureResponse; /* 17 */
ALIGN64 pBandwidthMeasureStart BandwidthMeasureStart; /* 18 */
ALIGN64 pBandwidthMeasureStop BandwidthMeasureStop; /* 19 */
ALIGN64 pBandwidthMeasureResults BandwidthMeasureResults; /* 20 */
ALIGN64 pNetworkCharacteristicsResult NetworkCharacteristicsResult; /* 21 */
ALIGN64 pClientBandwidthMeasureResult ClientBandwidthMeasureResult; /* 22 */
UINT64 paddingB[32 - 23]; /* 23 */
};
#endif /* FREERDP_AUTODETECT_H */

View File

@ -73,7 +73,7 @@ static BOOL autodetect_send_rtt_measure_request(rdpContext* context, UINT16 sequ
Stream_Write_UINT8(s, TYPE_ID_AUTODETECT_REQUEST); /* headerTypeId (1 byte) */
Stream_Write_UINT16(s, sequenceNumber); /* sequenceNumber (2 bytes) */
Stream_Write_UINT16(s, requestType); /* requestType (2 bytes) */
context->rdp->autodetect->rttMeasureStartTime = GetTickCountPrecise();
context->rdp->autodetect->rttMeasureStartTime = GetTickCount64();
return rdp_send_message_channel_pdu(context->rdp, s, SEC_AUTODETECT_REQ);
}
@ -251,9 +251,9 @@ static BOOL autodetect_send_bandwidth_measure_results(rdpRdp* rdp, UINT16 respon
{
BOOL success = TRUE;
wStream* s;
UINT32 timeDelta;
UINT64 timeDelta;
/* Compute the total time */
timeDelta = GetTickCountPrecise() - rdp->autodetect->bandwidthMeasureStartTime;
timeDelta = GetTickCount64() - rdp->autodetect->bandwidthMeasureStartTime;
/* Send the result PDU to the server */
s = rdp_message_channel_pdu_init(rdp);
@ -352,7 +352,7 @@ static BOOL autodetect_recv_rtt_measure_response(rdpRdp* rdp, wStream* s,
return FALSE;
WLog_VRB(AUTODETECT_TAG, "received RTT Measure Response PDU");
rdp->autodetect->netCharAverageRTT = GetTickCountPrecise() - rdp->autodetect->rttMeasureStartTime;
rdp->autodetect->netCharAverageRTT = GetTickCount64() - rdp->autodetect->rttMeasureStartTime;
if (rdp->autodetect->netCharBaseRTT == 0 ||
rdp->autodetect->netCharBaseRTT > rdp->autodetect->netCharAverageRTT)
@ -369,10 +369,10 @@ static BOOL autodetect_recv_bandwidth_measure_start(rdpRdp* rdp, wStream* s,
if (autodetectReqPdu->headerLength != 0x06)
return FALSE;
WLog_VRB(AUTODETECT_TAG, "received Bandwidth Measure Start PDU - time=%"PRIu32"",
GetTickCountPrecise());
WLog_VRB(AUTODETECT_TAG, "received Bandwidth Measure Start PDU - time=%"PRIu64"",
GetTickCount64());
/* Initialize bandwidth measurement parameters */
rdp->autodetect->bandwidthMeasureStartTime = GetTickCountPrecise();
rdp->autodetect->bandwidthMeasureStartTime = GetTickCount64();
rdp->autodetect->bandwidthMeasureByteCount = 0;
/* Continuous Auto-Detection: mark the start of the measurement */

View File

@ -991,8 +991,8 @@ int transport_check_fds(rdpTransport* transport)
int status;
int recv_status;
wStream* received;
DWORD now = GetTickCount();
DWORD dueDate = 0;
UINT64 now = GetTickCount64();
UINT64 dueDate = 0;
if (!transport)
return -1;
@ -1056,7 +1056,7 @@ int transport_check_fds(rdpTransport* transport)
return -1;
}
now = GetTickCount();
now = GetTickCount64();
}
if (now >= dueDate)

View File

@ -101,7 +101,7 @@ BOOL MessageQueue_Dispatch(wMessageQueue* queue, wMessage* message)
queue->size++;
message = &(queue->array[queue->tail]);
message->time = (UINT64) GetTickCount();
message->time = GetTickCount64();
if (queue->size > 0)
SetEvent(queue->event);