Revision: 30649
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=30649
Author: merwin
Date: 2010-07-23 08:45:59 +0200 (Fri, 23 Jul 2010)
Log Message:
-----------
SpaceNav event capture for MacOS, dispatch for all platforms. To compile this,
you need their Mac driver installed and to send '-weak_framework
3DconnexionClient' to the linker. I'm also exploring a HID Manager version,
bypassing their driver (and any licensing issues).
Modified Paths:
--------------
branches/soc-2010-merwin/intern/ghost/intern/GHOST_NDOFManager.cpp
branches/soc-2010-merwin/intern/ghost/intern/GHOST_NDOFManagerCocoa.cpp
branches/soc-2010-merwin/intern/ghost/intern/GHOST_System.cpp
Modified: branches/soc-2010-merwin/intern/ghost/intern/GHOST_NDOFManager.cpp
===================================================================
--- branches/soc-2010-merwin/intern/ghost/intern/GHOST_NDOFManager.cpp
2010-07-23 06:36:08 UTC (rev 30648)
+++ branches/soc-2010-merwin/intern/ghost/intern/GHOST_NDOFManager.cpp
2010-07-23 06:45:59 UTC (rev 30649)
@@ -79,6 +79,9 @@
data->ry = scale * m_rotation[1];
data->rz = scale * m_rotation[2];
+ printf("sending T=(%.2f,%.2f,%.2f) R=(%.2f,%.2f,%.2f)\n", data->tx,
data->ty, data->tz, data->rx, data->ry, data->rz);
+ fflush(stdout);
+
m_system.pushEvent(event);
// 'at rest' test goes at the end so that the first 'rest' event gets
sent
Modified:
branches/soc-2010-merwin/intern/ghost/intern/GHOST_NDOFManagerCocoa.cpp
===================================================================
--- branches/soc-2010-merwin/intern/ghost/intern/GHOST_NDOFManagerCocoa.cpp
2010-07-23 06:36:08 UTC (rev 30648)
+++ branches/soc-2010-merwin/intern/ghost/intern/GHOST_NDOFManagerCocoa.cpp
2010-07-23 06:45:59 UTC (rev 30649)
@@ -21,9 +21,13 @@
*/
#include "GHOST_NDOFManagerCocoa.h"
-#include <3DconnexionClient/ConnexionClientAPI.h>
-#include <stdio.h>
+#include "GHOST_SystemCocoa.h"
+extern "C" {
+ #include <3DconnexionClient/ConnexionClientAPI.h>
+ #include <stdio.h>
+ }
+
static void SpaceNavAdded(io_connect_t connection)
{
printf("SpaceNav added\n");
@@ -36,7 +40,7 @@
static void SpaceNavEvent(io_connect_t connection, natural_t messageType, void
*messageArgument)
{
- GHOST_System* system = (GHOST_System*) GHOST_ISystem::getSystem();
+ GHOST_SystemCocoa* system = (GHOST_SystemCocoa*)
GHOST_ISystem::getSystem();
GHOST_NDOFManager* manager = system->getNDOFManager();
switch (messageType)
{
@@ -48,10 +52,12 @@
case kConnexionCmdHandleAxis:
manager->updateTranslation(s->axis,
s->time);
manager->updateRotation(s->axis + 3,
s->time);
+ system->notifyExternalEventProcessed();
break;
case kConnexionCmdHandleButtons:
manager->updateButtons(s->buttons,
s->time);
+ system->notifyExternalEventProcessed();
break;
}
break;
@@ -101,6 +107,7 @@
bool GHOST_NDOFManagerCocoa::available()
{
- extern OSErr InstallConnexionHandlers() __attribute__((weak_import));
+// extern OSErr InstallConnexionHandlers() __attribute__((weak_import));
+// ^-- not needed since the entire framework is weak-linked
return InstallConnexionHandlers != NULL;
}
Modified: branches/soc-2010-merwin/intern/ghost/intern/GHOST_System.cpp
===================================================================
--- branches/soc-2010-merwin/intern/ghost/intern/GHOST_System.cpp
2010-07-23 06:36:08 UTC (rev 30648)
+++ branches/soc-2010-merwin/intern/ghost/intern/GHOST_System.cpp
2010-07-23 06:45:59 UTC (rev 30649)
@@ -196,6 +196,9 @@
bool GHOST_System::dispatchEvents()
{
+ // NDOF Motion event is sent only once per dispatch, so do it now:
+ m_ndofManager->sendMotionEvent();
+
bool handled;
if (m_eventManager) {
if (m_input_fidelity_hint == LO_FI)
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs