/** ***************************************************************************** */
  private void updateGraph() {
    synchronized (this) {
      update_needed = false;
      if (restart_needed || history_graph == null) {
        history_graph = new HistoryGraph();
        last_update = 0;
        restart_needed = false;
      }
    }

    synchronized (history_graph) {
      for (BumpThread bt : history_data.getThreads()) {
        history_graph.addThreadItems(history_data.getItems(bt), last_update);
      }
      last_update = history_graph.finishBuild();
    }
  }