s4504kr pushed to blender (master). "Fix regression for 3D mice support"

notifications at fedoraproject.org notifications at fedoraproject.org
Tue May 5 15:33:53 UTC 2015


>From 67025fbfc24161b86c5a1b47debbb594e77aa2cb Mon Sep 17 00:00:00 2001
From: Jochen Schmitt <Jochen at herr-schmitt.de>
Date: Tue, 5 May 2015 17:33:13 +0200
Subject: Fix regression for 3D mice support


diff --git a/blender-2.74-reg.patch b/blender-2.74-reg.patch
new file mode 100644
index 0000000..5200205
--- /dev/null
+++ b/blender-2.74-reg.patch
@@ -0,0 +1,153 @@
+diff --git a/intern/ghost/intern/GHOST_NDOFManagerX11.cpp b/intern/ghost/intern/GHOST_NDOFManagerX11.cpp
+index de44b36..75e476c 100644
+--- a/intern/ghost/intern/GHOST_NDOFManagerX11.cpp
++++ b/intern/ghost/intern/GHOST_NDOFManagerX11.cpp
+@@ -1,147 +1,147 @@
+ /*
+  * ***** 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)
+ {
+ 	setDeadZone(0.1f); /* how to calibrate on Linux? throw away slight motion! */
+ 
+ 	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");
++		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 */
diff --git a/blender.spec b/blender.spec
index 52d5bdb..22687f3 100644
--- a/blender.spec
+++ b/blender.spec
@@ -22,7 +22,7 @@
 Name:           blender
 Epoch:          1
 Version:        %{blender_api}
-Release:        3%{?dist}
+Release:        4%{?dist}
 
 Summary:        3D modeling, animation, rendering and post-production
 
@@ -30,6 +30,7 @@ Group:          Applications/Multimedia
 License:        GPLv2
 URL:            http://www.blender.org
 
+
 Source0:        http://download.blender.org/source/blender-%{version}.tar.gz
 Source1:        blenderplayer.1
 Source5:        blender.xml
@@ -38,6 +39,9 @@ Source10:       macros.blender
 
 Patch2:         blender-2.73-droid.patch
 
+# Regression patch taken from upstream
+Patch100:       blender-2.74-reg.patch
+
 BuildRequires:  desktop-file-utils
 BuildRequires:  gettext
 BuildRequires:  libtool
@@ -149,6 +153,8 @@ sets.
 
 %patch2 -p1 -b .droid
 
+%patch100 -p1
+
 find -name '.svn' -print | xargs rm -rf
 
 %build
@@ -351,6 +357,9 @@ fi
 %doc release/datafiles/LICENSE-bmonofont-i18n.ttf.txt
 
 %changelog
+* Tue May  5 2015 Jochen Schmitt <Jochen herr-schmitt de> - 1:2.74-4
+- Fix regression for 3D mice support
+
 * Mon May  4 2015 Jochen Schmitt <Jochen herr-schmitt de> - 1:2.74-3
 - Enable 3D mice support
 
-- 
cgit v0.10.2


	http://pkgs.fedoraproject.org/cgit/blender.git/commit/?h=master&id=67025fbfc24161b86c5a1b47debbb594e77aa2cb


More information about the scm-commits mailing list