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; |