+\r
+\r
+\r
+ /* Clear any button pushes that are pending because a button bounced, or\r
+ was pressed while the dice were shaking. Again a block time of zero is \r
+ used so the function does not wait for any pushes but instead returns\r
+ immediately. */\r
+ prvButtonHit( ucIndex, 0 );\r
+\r
+ /* Delay for a short while to display the dice shake result. Use a queue\r
+ peek here instead of a vTaskDelay() allows the delay to be interrupted by\r
+ a button push. If a button is pressed xQueuePeek() will return but the\r
+ button push will remain pending to be read again at the top of this for\r
+ loop. It is safe to uses a queue function on a semaphore handle as\r
+ semaphores are implemented as macros that uses queues, so the two are \r
+ basically the same thing. */\r
+ xQueuePeek( xSemaphores[ ucIndex ], NULL, diceDELAY_WHILE_DISPLAYING_RESULT );\r
+\r
+ /* Clear the display then resume the tasks or co-routines that were using\r
+ the segments of the display. */\r
+ *pucDisplayOutput[ ucIndex ] = 0xff;\r
+ vSuspendFlashTasks( ucIndex, pdFALSE );\r