- if (rvideo && !state && /* we're turning it off */
- ticks < rvbell_timeout) { /* and it's not long since it was turned on */
+ /* turn off a previous vbell to avoid inconsistencies */
+ if (ticks - vbell_startpoint >= VBELL_TIMEOUT)
+ in_vbell = FALSE;
+ if (rvideo && !state && /* we're turning it off... */
+ (ticks - rvbell_startpoint) < VBELL_TIMEOUT) { /* ...soon */
+ /* If there's no vbell timeout already, or this one lasts
+ * longer, replace vbell_timeout with ours. */
+ if (!in_vbell ||
+ (rvbell_startpoint - vbell_startpoint < VBELL_TIMEOUT))
+ vbell_startpoint = rvbell_startpoint;