private void eventRunner() {//synchronized 
		//long startTime=System.currentTimeMillis();
		for (int i=0;i<playing.size();i++){
			TimeLineObject tmLine=(TimeLineObject)playing.get(i);
			if ("".equals(tmLine.playMode)|| ( "l".equals(tmLine.playMode) && (tmLine.pos>=tmLine.timeLineLength)) ) {//
				Vector v = cue.checkQue(tmLine);
				if (v.size()>0) {
					for (Iterator iter = v.iterator(); iter.hasNext();) {
						Cueable cueObj = (Cueable) iter.next();
						if (cueObj.getStop()) {tmLine.playMode="";}
						if (cueObj instanceof TimeLineObject) {
							playTimeline((TimeLineObject) cueObj, cueObj.getCueMode()) ;
						} else if (cueObj instanceof TimeLineSet) {
							playTimeLines(((TimeLineSet) cueObj).getSet(), cueObj.getCueMode());
						}
					}
					cue.deCueTriger(tmLine);// to have trigger stay make flag for this. 
				}
				if ("".equals(tmLine.playMode)) {
					playing.remove(tmLine);
					i--;
					continue;
				}// remove finished objects
				
			}
			// this.executingTimeLineObject=tmLine;
			Vector events=tmLine.playEvents();
			for (int j=0;j<events.size();j++){
				Event e = (Event)events.get(j);
				if (!timeLines.contains(e.target)) {
					//remove a timeline that doesn't exist anymore.
					e.target=null;
					continue;
				} 
				playEventFromPos(e,-1);
			}
		}
		//long endTime=System.currentTimeMillis();
		//addLogEntry(startTime+":"+endTime+":"+(startTime-endTime)+" - play");
	}