@Override protected void doRender(DrawContext dc) { if (this.frameTimestamp != dc.getFrameTimeStamp()) { this.assembleControlPoints(dc); this.frameTimestamp = dc.getFrameTimeStamp(); } this.markerRenderer.render(dc, this.controlPoints); if (this.annotation != null && isShowAnnotation()) { this.annotation.render(dc); } }
/** * Compute label geometry, if it has not already been computed this frame, or if the label * position has changed since the extent was last computed. * * @param dc Current geometry. */ protected void computeGeometryIfNeeded(DrawContext dc) { // Re-use rendering state values already calculated this frame. If the screenExtent is null, // recompute even if // the timestamp is the same. This prevents using a stale position if the application calls // setPosition and // getBounds multiple times before the label is rendered. long timeStamp = dc.getFrameTimeStamp(); if (timeStamp != this.frameTimeStamp || this.screenExtent == null) { this.computeGeometry(dc); this.frameTimeStamp = timeStamp; } }
@Override protected synchronized void doRender(final DrawContext dc) { final long now = dc.getFrameTimeStamp(); boolean needsRedraw = false; for (final IGlobeAnimationsScheduler schedule : _schedulers) { if (schedule.doStep(now)) { needsRedraw = true; } } if (needsRedraw) { GWWUtils.redraw(dc); } GWWUtils.checkGLErrors(dc); }