-void Input::run()
-{
- should_stop = false;
-
- // Joinable is already the default, but it's good to be certain.
- pthread_attr_t attr;
- pthread_attr_init(&attr);
- pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
- pthread_create(&worker_thread, &attr, Input::do_work_thunk, this);
-}
-
-void Input::stop()
-{
- should_stop = true;
-
- if (pthread_join(worker_thread, NULL) == -1) {
- perror("pthread_join");
- exit(1);
- }
-}
-
-void *Input::do_work_thunk(void *arg)
-{
- Input *input = static_cast<Input *>(arg);
- input->do_work();
- return NULL;
-}
-