/* idle.c */

#include "idle.h"

#include "err.h"

static WimpEventHandler *idle_handler = 0;
static void *idle_handle = 0;

void idle_on(WimpEventHandler *handler, void *handle)
{
  unsigned mask;
  E(event_get_mask(&mask));
  E(event_set_mask(mask & ~Wimp_Poll_NullMask));
  idle_handler = handler;
  idle_handle = handle;
  E(event_register_wimp_handler(-1, Wimp_ENull, handler, handle));
}

void idle_off(void)
{
  if (idle_handler)
  {
    unsigned mask;
    E(event_get_mask(&mask));
    E(event_set_mask(mask | Wimp_Poll_NullMask));
    E(event_deregister_wimp_handler(-1, Wimp_ENull, idle_handler, idle_handle));
    idle_handler = 0;
  }
}
