Merge branch 'blender2.7'
[blender.git] / intern / ghost / intern / GHOST_NDOFManagerUnix.cpp
index df516357c9eb83ebeef4f7b4961d531902b59b49..624d39b6347aae4418cec3bca0c54361e621a4de 100644 (file)
@@ -4,7 +4,7 @@
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
  * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version. 
+ * of the License, or (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * ***** END GPL LICENSE BLOCK *****
  */
 
-#ifdef WITH_INPUT_NDOF
-
 #include "GHOST_NDOFManagerUnix.h"
 #include "GHOST_System.h"
 
 #include <spnav.h>
 #include <stdio.h>
+#include <unistd.h>
 
+#define SPNAV_SOCK_PATH "/var/run/spnav.sock"
 
 GHOST_NDOFManagerUnix::GHOST_NDOFManagerUnix(GHOST_System& sys)
     : GHOST_NDOFManager(sys),
       m_available(false)
 {
-       if (spnav_open() != -1) {
+       if (access(SPNAV_SOCK_PATH, F_OK) != 0) {
+#ifdef DEBUG
+               /* annoying for official builds, just adds noise and most people don't own these */
+               puts("ndof: spacenavd not found");
+               /* This isn't a hard error, just means the user doesn't have a 3D mouse. */
+#endif
+       }
+       else if (spnav_open() != -1) {
                m_available = true;
 
                /* determine exactly which device (if any) is plugged in */
@@ -55,13 +62,6 @@ GHOST_NDOFManagerUnix::GHOST_NDOFManagerUnix(GHOST_System& sys)
                        pclose(command_output);
                }
        }
-       else {
-#ifdef DEBUG
-               /* annoying for official builds, just adds noise and most people don't own these */
-               puts("ndof: spacenavd not found");
-               /* This isn't a hard error, just means the user doesn't have a 3D mouse. */
-#endif
-       }
 }
 
 GHOST_NDOFManagerUnix::~GHOST_NDOFManagerUnix()
@@ -107,8 +107,8 @@ bool GHOST_NDOFManagerUnix::processEvents()
                                {
                                        /* convert to blender view coords */
                                        GHOST_TUns64 now = m_system.getMilliSeconds();
-                                       const short t[3] = {(short)e.motion.x, (short)e.motion.y, (short)-e.motion.z};
-                                       const short r[3] = {(short)-e.motion.rx, (short)-e.motion.ry, (short)e.motion.rz};
+                                       const int t[3] = {(int)e.motion.x, (int)e.motion.y, (int)-e.motion.z};
+                                       const int r[3] = {(int)-e.motion.rx, (int)-e.motion.ry, (int)e.motion.rz};
 
                                        updateTranslation(t, now);
                                        updateRotation(r, now);
@@ -128,7 +128,7 @@ bool GHOST_NDOFManagerUnix::processEvents()
 #ifdef USE_FINISH_GLITCH_WORKAROUND
                if (motion_test_prev == true && motion_test == false) {
                        GHOST_TUns64 now = m_system.getMilliSeconds();
-                       const short v[3] = {0, 0, 0};
+                       const int v[3] = {0, 0, 0};
 
                        updateTranslation(v, now);
                        updateRotation(v, now);
@@ -142,5 +142,3 @@ bool GHOST_NDOFManagerUnix::processEvents()
 
        return anyProcessed;
 }
-
-#endif /* WITH_INPUT_NDOF */