--- mountall-2.14/src/mountall.c 2010-04-26 01:37:17.000000000 +0300 +++ mountall-2.14+tmo/src/mountall.c 2010-05-03 13:07:33.033222146 +0300 @@ -2703,6 +2703,7 @@ const char *buf, size_t len) { + static int lastprogress = -1; nih_assert (mnt != NULL); nih_assert (io != NULL); nih_assert (buf != NULL); @@ -2741,7 +2742,11 @@ nih_assert_not_reached (); } + if (lastprogress == progress) + continue; + plymouth_progress (mnt, progress); + lastprogress = progress; } } diff -bur plymouth-0.8.2/src/libply/ply-event-loop.c plymouth-0.8.2+tmo/src/libply/ply-event-loop.c --- plymouth-0.8.2/src/libply/ply-event-loop.c 2010-04-27 17:13:51.613102399 +0300 +++ plymouth-0.8.2+tmo/src/libply/ply-event-loop.c 2010-05-03 12:25:00.160729566 +0300 @@ -1193,9 +1188,14 @@ ply_event_loop_timeout_watch_t *watch; watch = (ply_event_loop_timeout_watch_t *) ply_list_node_get_data (node); + next_node = ply_list_get_next_node (loop->timeout_watches, node); - if (watch->timeout <= now) + if (watch == NULL) + { + ply_list_remove_node (loop->timeout_watches, node); + } + else if (watch->timeout <= now) { assert (watch->handler != NULL); @@ -1218,7 +1218,6 @@ node = next_node; } - } void @@ -1247,8 +1245,9 @@ timeout = MAX (timeout, 0); } - number_of_received_events = epoll_wait (loop->epoll_fd, events, - sizeof (events), timeout); + number_of_received_events = epoll_wait (loop->epoll_fd, + events, PLY_EVENT_LOOP_NUM_EVENT_HANDLERS, + timeout); ply_event_loop_handle_timeouts (loop); diff -bur plymouth-0.8.2/src/libply/ply-list.c plymouth-0.8.2+tmo/src/libply/ply-list.c --- plymouth-0.8.2/src/libply/ply-list.c 2009-12-03 05:45:28.000000000 +0200 +++ plymouth-0.8.2+tmo/src/libply/ply-list.c 2010-05-03 10:30:26.050794700 +0300 @@ -223,7 +223,7 @@ node->next = NULL; list->number_of_nodes--; - assert (ply_list_find_node (list, node->data) != node); + // assert (ply_list_find_node (list, node->data) != node); } void