1. A method comprising: by a first thread of execution on a computing device, receiving one or more user-input events associated with one or more user inputs on a user interface displayed on the computing device; by the first thread, identifying a second thread of execution on the computing device to process the one or more user-input events, the second thread being de-coupled from the first thread, and wherein the second thread is associated with a software application on the computing device and is configured to process the one or more user-input events for the software application; by the first thread, sending the one or more user-input events to a software buffer associated with the second thread; by the second thread, processing the one or more user-input events in the software buffer to generate a user-interface output based on the one or more user-input events; by the first thread receiving subsequent user-input events when the second thread is hung; by the first thread, sending the subsequent user-input events to the software buffer associated with the second thread; and by the first thread, providing an indication, through the user interface, of non-responsiveness with respect to user interface input; wherein when the one or more user-input events comprise a sequence of multiple user-input events each having a sequence number identifying its position in the sequence of multiple user-input events, the processing the multiple user-input events by the second thread comprises: interpreting the sequence of multiple user-input events as a single gesture on the user interface for commanding the software application; in response to interpreting the sequence of multiple user-input events as the single gesture for commanding the software application, generating the user-interface output based on the single gesture; in response to determining that an earliest user-input event in the sequence of multiple user-input events corresponds to a command for the software application, generating the user-interface output based on the earliest user-input event, the earliest user-input event having an earliest sequence number in the buffer; and clearing the sequence of multiple user-input events from the buffer.