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;
|
srtt_trigger = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* control flagging with hysteresis */
|
/* control underlining with hysteresis */
|
||||||
if ( send_interval > FLAG_TRIGGER_HIGH ) {
|
if ( send_interval > FLAG_TRIGGER_HIGH ) {
|
||||||
flagging = true;
|
flagging = true;
|
||||||
} else if ( send_interval <= FLAG_TRIGGER_LOW ) {
|
} else if ( send_interval <= FLAG_TRIGGER_LOW ) {
|
||||||
flagging = false;
|
flagging = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* really big glitches also activate underlining */
|
||||||
|
if ( glitch_trigger > GLITCH_REPAIR_COUNT ) {
|
||||||
|
flagging = true;
|
||||||
|
}
|
||||||
|
|
||||||
/* go through cell predictions */
|
/* go through cell predictions */
|
||||||
|
|
||||||
BOOST_AUTO( i, overlays.begin() );
|
BOOST_AUTO( i, overlays.begin() );
|
||||||
@@ -473,8 +478,11 @@ void PredictionEngine::cull( const Framebuffer &fb )
|
|||||||
case Pending:
|
case Pending:
|
||||||
/* When a prediction takes a long time to be confirmed, we
|
/* When a prediction takes a long time to be confirmed, we
|
||||||
activate the predictions even if SRTT is low */
|
activate the predictions even if SRTT is low */
|
||||||
if ( (now - j->prediction_time) >= GLITCH_THRESHOLD ) {
|
if ( (now - j->prediction_time) >= GLITCH_FLAG_THRESHOLD ) {
|
||||||
glitch_trigger = GLITCH_REPAIR_COUNT;
|
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;
|
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_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_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;
|
char last_byte;
|
||||||
Parser::UTF8Parser parser;
|
Parser::UTF8Parser parser;
|
||||||
|
|
||||||
@@ -172,7 +174,7 @@ namespace Overlay {
|
|||||||
|
|
||||||
bool flagging; /* whether we are underlining predictions */
|
bool flagging; /* whether we are underlining predictions */
|
||||||
bool srtt_trigger; /* show predictions because of slow round trip time */
|
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;
|
uint64_t last_quick_confirmation;
|
||||||
|
|
||||||
ConditionalCursorMove & cursor( void ) { assert( !cursors.empty() ); return cursors.back(); }
|
ConditionalCursorMove & cursor( void ) { assert( !cursors.empty() ); return cursors.back(); }
|
||||||
|
|||||||
Reference in New Issue
Block a user