Underline when empirical delay gets >500ms, even if SRTT hasn't (fixes #35)
This commit is contained in:
@@ -382,13 +382,18 @@ void PredictionEngine::cull( const Framebuffer &fb )
|
||||
srtt_trigger = false;
|
||||
}
|
||||
|
||||
/* control flagging with hysteresis */
|
||||
/* control underlining with hysteresis */
|
||||
if ( send_interval > FLAG_TRIGGER_HIGH ) {
|
||||
flagging = true;
|
||||
} else if ( send_interval <= FLAG_TRIGGER_LOW ) {
|
||||
flagging = false;
|
||||
}
|
||||
|
||||
/* really big glitches also activate underlining */
|
||||
if ( glitch_trigger > GLITCH_REPAIR_COUNT ) {
|
||||
flagging = true;
|
||||
}
|
||||
|
||||
/* go through cell predictions */
|
||||
|
||||
BOOST_AUTO( i, overlays.begin() );
|
||||
@@ -473,8 +478,11 @@ void PredictionEngine::cull( const Framebuffer &fb )
|
||||
case Pending:
|
||||
/* When a prediction takes a long time to be confirmed, we
|
||||
activate the predictions even if SRTT is low */
|
||||
if ( (now - j->prediction_time) >= GLITCH_THRESHOLD ) {
|
||||
glitch_trigger = GLITCH_REPAIR_COUNT;
|
||||
if ( (now - j->prediction_time) >= GLITCH_FLAG_THRESHOLD ) {
|
||||
glitch_trigger = GLITCH_REPAIR_COUNT * 2; /* display and underline */
|
||||
} else if ( ((now - j->prediction_time) >= GLITCH_THRESHOLD)
|
||||
&& (glitch_trigger < GLITCH_REPAIR_COUNT) ) {
|
||||
glitch_trigger = GLITCH_REPAIR_COUNT; /* just display */
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
@@ -152,6 +152,8 @@ namespace Overlay {
|
||||
static const uint64_t GLITCH_REPAIR_COUNT = 10; /* non-glitches required to cure glitch trigger */
|
||||
static const uint64_t GLITCH_REPAIR_MININTERVAL = 150; /* required time in between non-glitches */
|
||||
|
||||
static const uint64_t GLITCH_FLAG_THRESHOLD = 500; /* prediction outstanding this long => underline */
|
||||
|
||||
char last_byte;
|
||||
Parser::UTF8Parser parser;
|
||||
|
||||
@@ -172,7 +174,7 @@ namespace Overlay {
|
||||
|
||||
bool flagging; /* whether we are underlining predictions */
|
||||
bool srtt_trigger; /* show predictions because of slow round trip time */
|
||||
int glitch_trigger; /* show predictions temporarily because of long-pending prediction */
|
||||
unsigned int glitch_trigger; /* show predictions temporarily because of long-pending prediction */
|
||||
uint64_t last_quick_confirmation;
|
||||
|
||||
ConditionalCursorMove & cursor( void ) { assert( !cursors.empty() ); return cursors.back(); }
|
||||
|
||||
Reference in New Issue
Block a user