src/SpacenavReceiver.h
branchv_0
changeset 2 21b0b2b0547e
parent 1 2a3e9f07c128
child 3 6baa91ac3199
equal deleted inserted replaced
1:2a3e9f07c128 2:21b0b2b0547e
    32 
    32 
    33 	SpacenavReceiver() : QThread() {
    33 	SpacenavReceiver() : QThread() {
    34 	}
    34 	}
    35 
    35 
    36 	virtual ~SpacenavReceiver() {
    36 	virtual ~SpacenavReceiver() {
       
    37 		std::wcout << L"calling spnav_close() in ~SpacenavReceiver()" << std::endl;
    37 		spnav_close();
    38 		spnav_close();
    38 	}
    39 	}
    39 
    40 
    40 	void run() {
    41 	void run() {
    41 		Display* display;
    42 		Display* display;
    65 			 * 	}
    66 			 * 	}
    66 			 */
    67 			 */
    67 		}
    68 		}
    68 
    69 
    69 		// For stopping this thread by pressing both buttons:
    70 		// For stopping this thread by pressing both buttons:
    70 		// bool pressed0 = false;
    71 		bool pressed0 = false;
    71 		// bool pressed1 = false;
    72 		bool pressed1 = false;
    72 
    73 
    73 		while (spnav_wait_event(&event)) {
    74 		while (spnav_wait_event(&event)) {
    74 			if (event.type == SPNAV_EVENT_MOTION) {
    75 			if (event.type == SPNAV_EVENT_MOTION) {
    75 				std::wcout << L"motion event: t(" << event.motion.x << L", " << event.motion.y << L", " << event.motion.z << L") ";
    76 				std::wcout << L"motion event: t(" << event.motion.x << L", " << event.motion.y << L", " << event.motion.z << L") ";
    76 				std::wcout << L"r(" << event.motion.rx << L", " << event.motion.ry << L", " << event.motion.rz << L")" << std::endl;
    77 				std::wcout << L"r(" << event.motion.rx << L", " << event.motion.ry << L", " << event.motion.rz << L")" << std::endl;
    77 
    78 
    78 			} else { /* SPNAV_EVENT_BUTTON */
    79 			} else { /* SPNAV_EVENT_BUTTON */
    79 				std::wcout << L"button " << (event.button.press ? "press" : "release") << L" event b(" << event.button.bnum << L")" << std::endl;
    80 				std::wcout << L"button " << (event.button.press ? "press" : "release") << L" event b(" << event.button.bnum << L")" << std::endl;
    80 
    81 
    81 				// if (sev.button.bnum == 0) pressed0 = sev.button.press;
    82 				if (event.button.bnum == 0) pressed0 = event.button.press;
    82 				// if (sev.button.bnum == 1) pressed1 = sev.button.press;
    83 				if (event.button.bnum == 1) pressed1 = event.button.press;
    83 				// if (pressed0 && pressed1) break;
    84 				if (pressed0 && pressed1) {
       
    85 					std::wcout << L"both buttons pressed → stop receiving events" << std::endl;
       
    86 					break;
       
    87 				}
    84 			}
    88 			}
    85 			emit spacenavEvent(event);
    89 			emit spacenavEvent(event);
    86 		}
    90 		}
    87 
    91 
    88 	}
    92 	}