Wanted: Thread help
Assumption: this is pretty classic situation.
Assumption: this crash is due to threadA (triggered by jit.notify) and treadB (triggered by bang) attempting to access the same jit.render at the same time.
I spent all day toying around and trying things and researching threads (I'm a noob at that)
So I'm here to ask. Whats the best way to arrange things so this won't crash. In real life, This a UI like a step sequencer. So the jitter notifiable is like me editing it with a mouse (quicker), and the bangs are like the clock causing a line to go across it(slower).
I was hoping to avoid repeatedly rendering al a qmetro because:
A, it would look choppy when using it as a UI object
B, it would be cpu intensive for times when I'm not using it.
Steps to crash,
instantiate mxj TestDrawCrash
hook a metro up to it,
drag around the jit.window
import com.cycling74.jitter.*;
import com.cycling74.max.*;
public class TestDrawCrash extends MaxObject implements JitterNotifiable{
JitterListener myListener;
String name = "IwillCrash";
CrashWindow cw;
public void notify (JitterEvent e){
cw.draw();
}
public void bang(){
cw.draw();
}
public TestDrawCrash(){
myListener = new JitterListener(name,this);
cw= new CrashWindow(name,300,300 );
}
class CrashWindow {
JitterObject myWindow;
JitterObject myRender;
String name;
public CrashWindow(String name, int width, int height) {
myRender = new JitterObject("jit.gl.render", name);
myWindow = new JitterObject("jit.window", name);
myWindow.setAttr("size", new Atom[] { Atom.newAtom(width),Atom.newAtom(height) });
myWindow.setAttr("pos",new Atom[] { Atom.newAtom(0), Atom.newAtom(800) });
myWindow.call("front");
this.name = name;
}
public void draw() {
myRender.call("erase");
myRender.call("drawclients");
myRender.call("swap");
}
}
}
Amazing how you can go for 24 hours wondering about something, finally post a question and come up with the answer a couple minutes later.
DUH!!