Chapter 8. Troubleshooting

If while trying to use ClusterJuggler you encounter a problem you should consult the following list of commonly seen problems. We have provided the reason why each problem occurs and how to fix it.

My old device driver does not work on the cluster.

In order to correctly serialize the input devices we had to use a different method of inheritance.

Change

public Input, public Digital, public Position

to

InputMixer<
    Input, InputMixer<Digital, Position> >

While running Performer applications swap lock does not seem to work.

Because of the way that Performer threading works, you can not use multiple processors with RIM.

To disable multi processor usage uncomment line 264 and comment out line 263 in modules/vrjuggler/vrj/Draw/Pf/PfManager.cpp and rebuild VR Juggler.

My screens exhibit a large amount of tearing.

ClusterJuggler currently only supports three methods of swap-locking.

We are looking for a very simple and easily expandable method. Our goal is to eliminate the need for specialized hardware.

I seem to be navigating differently on each screen.

All navigation must be based of timestamps returned from a input devices.

You must use timestamps to find the delta between frames. These timestamps can be acquired from any DeviceInterface that is pointing at a device that is being shared across the cluster.

static vpr::Interval last_frame; 
vpr::Interval current_frame = mHead->getTimeStamp();
vpr::Interval diff(current_frame-last_frame);
last_frame = current_frame; // You can get the delta in microseconds from 
                            // vpr::Uint64 delta = diff.usecs();