src/SpacenavWrapper.cpp
branchv_0
changeset 9 d3716f03efcd
parent 6 49560660d230
child 11 aaa89fe98b63
equal deleted inserted replaced
8:f351c261cbfd 9:d3716f03efcd
    18 
    18 
    19 #include <spnav.h>
    19 #include <spnav.h>
    20 #include "SpacenavWrapper.h"
    20 #include "SpacenavWrapper.h"
    21 
    21 
    22 SpacenavWrapper::SpacenavWrapper() {
    22 SpacenavWrapper::SpacenavWrapper() {
    23 	// TODO: remove logging
       
    24 	if (spnav_open() == 0) {
    23 	if (spnav_open() == 0) {
    25 		std::wcout << L"connected through: AF_UNIX socket" << std::endl;
    24 		connectionStatus = SpacenavWrapper::ConnectionStatus::DOMAIN_SOCKET;
       
    25 		return;
    26 	} else {
    26 	} else {
    27 
       
    28 		Display* display;
    27 		Display* display;
    29 		Window window;
    28 		Window window;
    30 		unsigned long blackPixel;
    29 		unsigned long blackPixel;
    31 
    30 
       
    31 		if (display = XOpenDisplay(0)) {
    32 
    32 
    33 		if (!(display = XOpenDisplay(0))) {
    33 			blackPixel = BlackPixel(display, DefaultScreen(display));
    34 			std::wcout << L"unable to connect to the X server" << std::endl;
    34 			window = XCreateSimpleWindow(display, DefaultRootWindow(display), 0, 0, 1, 1, 0, blackPixel, blackPixel);
    35 			return; // TODO: throw exception
       
    36 		}
       
    37 
    35 
    38 		blackPixel = BlackPixel(display, DefaultScreen(display));
    36 			if (spnav_x11_open(display, window) == 0) {
    39 		window = XCreateSimpleWindow(display, DefaultRootWindow(display), 0, 0, 1, 1, 0, blackPixel, blackPixel);
    37 				connectionStatus = SpacenavWrapper::ConnectionStatus::X11;
    40 
    38 				return;
    41 		if (spnav_x11_open(display, window) == 0) {
    39 			}
    42 			std::wcout << L"connected through: X11" << std::endl;
       
    43 		} else {
       
    44 			std::wcout << L"unable to connect to the space navigator daemon" << std::endl;
       
    45 			return; // TODO: throw exception
       
    46 		}
    40 		}
    47 	}
    41 	}
       
    42 
       
    43 	connectionStatus = SpacenavWrapper::ConnectionStatus::NONE;
    48 }
    44 }
    49 
    45 
    50 SpacenavWrapper::~SpacenavWrapper() {
    46 SpacenavWrapper::~SpacenavWrapper() {
    51 	// TODO: remove logging
    47 	// TODO: remove logging
    52 	std::wcout << L"calling spnav_close() in ~SpacenavReceiver()" << std::endl;
    48 	std::wcout << L"calling spnav_close() in ~SpacenavReceiver()" << std::endl;
    53 	spnav_close();
    49 	spnav_close();
       
    50 }
       
    51 
       
    52 SpacenavWrapper::ConnectionStatus SpacenavWrapper::getConnectionStatus() {
       
    53 	return connectionStatus;
    54 }
    54 }
    55 
    55 
    56 SpacenavWrapper::Event SpacenavWrapper::waitEvent() {
    56 SpacenavWrapper::Event SpacenavWrapper::waitEvent() {
    57 	SpacenavWrapper::Event e;
    57 	SpacenavWrapper::Event e;
    58 	spnav_event event;
    58 	spnav_event event;