ssize_t remaining;
snd_seq_event_t event;
score_note_t *note;
+ int need_redraw = FALSE;
remaining = read (scherzo->midi_fd, buf, MIDI_BUF_SIZE);
case SND_SEQ_EVENT_NOTEON:
note = scherzo_add_note_midi (scherzo, event.data.note.note);
_judge_note (scherzo, note);
- gtk_widget_queue_draw (scherzo->window);
+ need_redraw = TRUE;
break;
case SND_SEQ_EVENT_NOTEOFF:
scherzo_remove_note_midi (scherzo, event.data.note.note);
_score_challenge (scherzo);
- gtk_widget_queue_draw (scherzo->window);
+ need_redraw = TRUE;
break;
case SND_SEQ_EVENT_CLOCK:
/* Ignore for now as my piano sends a constant stream of these. */
break;
}
}
-
+
+ if (need_redraw)
+ gtk_widget_queue_draw (scherzo->window);
+
/* Return TRUE to continue to get called in the future. */
return TRUE;
}