X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;ds=sidebyside;f=scherzo.c;h=0ff68d125d17e072ff911ac28a351c36244f3b52;hb=4000561216687a173abf597a0fd26d2c336954fc;hp=88cae44fe4cdb85bde4669a41e713f463767915c;hpb=05c28164f342656bd02bb4c6607b938bb8d3f2b1;p=scherzo diff --git a/scherzo.c b/scherzo.c index 88cae44..0ff68d1 100644 --- a/scherzo.c +++ b/scherzo.c @@ -358,6 +358,7 @@ on_midi_input (unused (GIOChannel *channel), 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); @@ -378,12 +379,12 @@ on_midi_input (unused (GIOChannel *channel), 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. */ @@ -397,7 +398,10 @@ on_midi_input (unused (GIOChannel *channel), break; } } - + + if (need_redraw) + gtk_widget_queue_draw (scherzo->window); + /* Return TRUE to continue to get called in the future. */ return TRUE; }