- } else if (result == 0) {
- /* do nothing. reserved for future purposes */
- } else {
- /* we have input */
- if (FD_ISSET(fd, &readset)) {
- /* read input */
- readResult = read(fd, ev, sizeof(EV) * 64);
- if (readResult < 0) {
- if (num_warnings % 10000 == 0) {
- /* if device is not available anymore - dead or disconnected */
- fprintf(stderr, "Failed to read event from Jog Shuttle FILE DESCRIPTOR (repeated %d times)\n", num_warnings + 1);
- }
- /* exit if device is not available or the error occurs to long */
- if (errno == ENODEV) {
- perror("Failed to read from Jog Shuttle FILE DESCRIPTOR. Stop thread");
- /* stop thread */
- stop_me = true;
- } else if (num_warnings > 1000000) {
- perror("Failed to read from Jog Shuttle FILE DESCRIPTOR. Limit reached. Stop thread");
- /* stop thread */
- stop_me = true;
- }
- num_warnings++;
- } else if (readResult < (int)sizeof(EV)) {
- fprintf(stderr, "readResult < (int)sizeof(EV)\n");
- /* stop thread */
- stop_me = true;
- } else if (readResult % (int)sizeof(EV) != 0) {
- fprintf(stderr, "readResult mod (int)sizeof(EV) != 0\n");
- /* stop thread */
- stop_me = true;
- } else {
- for (int i = 0; i < readResult / (int)sizeof(EV); i++) {
- /* process event */
- handle_event(ev[i]);
- }
- }
+ } else if (result > 0) {
+ // we have input
+ if (FD_ISSET(mc.fd, &readset)) {
+ struct media_ctrl_event mev;
+ mev.type = MEDIA_CTRL_EVENT_NONE;
+ // read input
+ media_ctrl_read_event(&mc, &mev);
+ // process event
+ handle_event(mev);