Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/ghost/intern/GHOST_NDOFManagerX11.cpp')
-rw-r--r--intern/ghost/intern/GHOST_NDOFManagerX11.cpp145
1 files changed, 0 insertions, 145 deletions
diff --git a/intern/ghost/intern/GHOST_NDOFManagerX11.cpp b/intern/ghost/intern/GHOST_NDOFManagerX11.cpp
deleted file mode 100644
index 753321be58e..00000000000
--- a/intern/ghost/intern/GHOST_NDOFManagerX11.cpp
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * ***** BEGIN GPL LICENSE BLOCK *****
- *
- * 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.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * Contributor(s):
- * Mike Erwin
- *
- * ***** END GPL LICENSE BLOCK *****
- */
-
-#ifdef WITH_INPUT_NDOF
-
-#include "GHOST_NDOFManagerX11.h"
-#include "GHOST_SystemX11.h"
-#include <spnav.h>
-#include <stdio.h>
-
-
-GHOST_NDOFManagerX11::GHOST_NDOFManagerX11(GHOST_System& sys)
- : GHOST_NDOFManager(sys),
- m_available(false)
-{
- if (spnav_open() != -1) {
- m_available = true;
-
- /* determine exactly which device (if any) is plugged in */
-
-#define MAX_LINE_LENGTH 100
-
- /* look for USB devices with Logitech or 3Dconnexion's vendor ID */
- FILE *command_output = popen("lsusb | grep '046d:\\|256f:'", "r");
- if (command_output) {
- char line[MAX_LINE_LENGTH] = {0};
- while (fgets(line, MAX_LINE_LENGTH, command_output)) {
- unsigned short vendor_id = 0, product_id = 0;
- if (sscanf(line, "Bus %*d Device %*d: ID %hx:%hx", &vendor_id, &product_id) == 2)
- if (setDevice(vendor_id, product_id)) {
- break; /* stop looking once the first 3D mouse is found */
- }
- }
- 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_NDOFManagerX11::~GHOST_NDOFManagerX11()
-{
- if (m_available)
- spnav_close();
-}
-
-bool GHOST_NDOFManagerX11::available()
-{
- return m_available;
-}
-
-/*
- * Workaround for a problem where we don't enter the 'GHOST_kFinished' state,
- * this causes any proceeding event to have a very high 'dt' (time delta),
- * many seconds for eg, causing the view to jump.
- *
- * this workaround expects continuous events, if we miss a motion event,
- * immediately send a dummy event with no motion to ensure the finished state is reached.
- */
-#define USE_FINISH_GLITCH_WORKAROUND
-/* TODO: make this available on all platforms */
-
-#ifdef USE_FINISH_GLITCH_WORKAROUND
-static bool motion_test_prev = false;
-#endif
-
-bool GHOST_NDOFManagerX11::processEvents()
-{
- bool anyProcessed = false;
-
- if (m_available) {
- spnav_event e;
-
-#ifdef USE_FINISH_GLITCH_WORKAROUND
- bool motion_test = false;
-#endif
-
- while (spnav_poll_event(&e)) {
- switch (e.type) {
- case SPNAV_EVENT_MOTION:
- {
- /* 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};
-
- updateTranslation(t, now);
- updateRotation(r, now);
-#ifdef USE_FINISH_GLITCH_WORKAROUND
- motion_test = true;
-#endif
- break;
- }
- case SPNAV_EVENT_BUTTON:
- GHOST_TUns64 now = m_system.getMilliSeconds();
- updateButton(e.button.bnum, e.button.press, now);
- break;
- }
- anyProcessed = true;
- }
-
-#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};
-
- updateTranslation(v, now);
- updateRotation(v, now);
-
- anyProcessed = true;
- }
- motion_test_prev = motion_test;
-#endif
-
- }
-
- return anyProcessed;
-}
-
-#endif /* WITH_INPUT_NDOF */