- struct main_loop_arg *arg = (struct main_loop_arg*)targ;
- char *cmd = NULL;
- pthread_t reader_thread;
-
- if (arg->usb_present == 1) {
- struct usb_receiver_arg rarg;
- rarg.run=1;
- pthread_create(&reader_thread, NULL, &usb_receiver, &rarg);
- }
-
- while(1) {
-
- cmd = readline(PROXPROMPT);
- if (cmd) {
- if (cmd[0] != 0x00) {
- CommandReceived(cmd);
- add_history(cmd);
- }
- free(cmd);
- } else {
- printf("\n");
- break;
- }
- }
-
- ExitGraphics();
- pthread_exit(NULL);
+ struct main_loop_arg *arg = (struct main_loop_arg*)targ;
+ struct usb_receiver_arg rarg;
+ char *cmd = NULL;
+ pthread_t reader_thread;
+
+ if (arg->usb_present == 1) {
+ rarg.run=1;
+ pthread_create(&reader_thread, NULL, &usb_receiver, &rarg);
+ }
+
+ while(1) {
+ cmd = readline(PROXPROMPT);
+ if (cmd) {
+ if (cmd[0] != 0x00) {
+ CommandReceived(cmd);
+ add_history(cmd);
+ }
+ free(cmd);
+ } else {
+ printf("\n");
+ break;
+ }
+ }
+
+ if (arg->usb_present == 1) {
+ rarg.run = 0;
+ pthread_join(reader_thread, NULL);
+ }
+
+ ExitGraphics();
+ pthread_exit(NULL);
+ return NULL;