code: def showxy(self, viewer, data_x, data_y):
          
          # This is an optimization to get around slow coordinate
          # transformation by astropy and possibly other WCS packages,
          # which causes delay for other mouse tracking events, e.g.
          # the zoom plugin.
          # We only update the under cursor information every period
          # defined by (self.cursor_interval) sec.
          #
          # If the refresh interval has expired then update the info;
          # otherwise (re)set the timer until the end of the interval.
          cur_time = time.time()
          elapsed = cur_time - self._cursor_last_update
          if elapsed > self.cursor_interval:
              # cancel timer
              self._cursor_task.clear()
              self.gui_do_oneshot('field-info', self._showxy,
                                  viewer, data_x, data_y)
          else:
              # store needed data into the timer data area
              self._cursor_task.data.setvals(viewer=viewer,
                                             data_x=data_x, data_y=data_y)
              # calculate delta until end of refresh interval
              period = self.cursor_interval - elapsed
              # set timer conditionally (only if it hasn't yet been set)
              self._cursor_task.cond_set(period)
          return True
docs: Called by the mouse-tracking callback to handle reporting of
          cursor position to various plugins that subscribe to the
          'field-info' callback.