NDof device: Check for socket exists before connecting to spnavd
authorSergey Sharybin <sergey.vfx@gmail.com>
Fri, 22 Apr 2016 08:14:30 +0000 (10:14 +0200)
committerSergey Sharybin <sergey.vfx@gmail.com>
Fri, 22 Apr 2016 08:14:30 +0000 (10:14 +0200)
This allows us to get rid of annoying and misleading error printed to the console
about being unable to connect to something.

intern/ghost/intern/GHOST_NDOFManagerUnix.cpp

index df516357c9eb83ebeef4f7b4961d531902b59b49..8fea2a0261bb37c9b50240f27ae2e18035ec2b61 100644 (file)
 
 #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 +64,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()