diff --git a/terminaloverlay.cpp b/terminaloverlay.cpp index 6ca38ac..8b44899 100644 --- a/terminaloverlay.cpp +++ b/terminaloverlay.cpp @@ -42,10 +42,6 @@ void ConditionalOverlayCell::apply( Framebuffer &fb, uint64_t confirmed_epoch, i } *(fb.get_mutable_cell( row, col )) = replacement; - uint64_t now = timestamp(); - if ( display_time >= now ) { - display_time = now; - } if ( flag ) { fb.get_mutable_cell( row, col )->renditions.underlined = true; } @@ -364,6 +360,13 @@ void PredictionEngine::cull( const Framebuffer &fb ) { uint64_t now = timestamp(); + /* control flagging with hysteresis */ + if ( send_interval > 80 ) { + flagging = true; + } else if ( send_interval < 50 ) { + flagging = false; + } + /* go through cell predictions */ auto i = overlays.begin(); @@ -436,27 +439,12 @@ void PredictionEngine::cull( const Framebuffer &fb ) } - if ( j->display_time != uint64_t(-1) ) { - if ( now - j->display_time < 75 ) { - if ( flag_score > -10 ) { - flag_score--; - } - } - } - /* no break */ case CorrectNoCredit: j->reset(); break; case Pending: - if ( j->display_time != uint64_t(-1) ) { - if ( now - j->display_time > 150 ) { - if ( flag_score < 10 ) { - flag_score++; - } - } - } break; default: break; @@ -466,13 +454,6 @@ void PredictionEngine::cull( const Framebuffer &fb ) i = inext; } - /* control flagging with hysteresis */ - if ( flag_score > 5 ) { - flagging = true; - } else if ( flag_score < -5 ) { - flagging = false; - } - /* go through cursor predictions */ for ( auto it = cursors.begin(); it != cursors.end(); it++ ) { if ( it->start_clock( local_frame_acked, now, send_interval ) ) { diff --git a/terminaloverlay.hpp b/terminaloverlay.hpp index 91d4663..9627eee 100644 --- a/terminaloverlay.hpp +++ b/terminaloverlay.hpp @@ -60,8 +60,6 @@ namespace Overlay { Cell replacement; bool unknown; - mutable uint64_t display_time; - vector original_contents; /* we don't give credit for correct predictions that match the original contents */ @@ -72,11 +70,10 @@ namespace Overlay { : ConditionalOverlay( s_exp, s_col, s_tentative ), replacement( 0 ), unknown( false ), - display_time( uint64_t(-1) ), original_contents() {} - void reset( void ) { unknown = false; display_time = uint64_t(-1); original_contents.clear(); ConditionalOverlay::reset(); } + void reset( void ) { unknown = false; original_contents.clear(); ConditionalOverlay::reset(); } void reset_with_orig( void ) { if ( (!active) || unknown ) { reset(); @@ -140,7 +137,6 @@ namespace Overlay { void newline_carriage_return( const Framebuffer &fb ); - int flag_score; bool flagging; ConditionalCursorMove & cursor( void ) { assert( !cursors.empty() ); return cursors.back(); } @@ -172,7 +168,7 @@ namespace Overlay { local_frame_sent( 0 ), local_frame_acked( 0 ), local_frame_late_acked( 0 ), prediction_epoch( 1 ), confirmed_epoch( 0 ), - flag_score( 0 ), flagging( false ), last_scheduled_timeout( 0 ), + flagging( false ), last_scheduled_timeout( 0 ), send_interval( 250 ) { }