#define MAIN 1
#include "xmh.h"
#include "actions.h"
static void NeedToCheckScans(
XtPointer client_data,
XtIntervalId *id)
{
int i;
if (!subProcessRunning) {
DEBUG("[magic toc check ...")
for (i = 0; i < numScrns; i++) {
if (scrnList[i]->toc)
TocRecheckValidity(scrnList[i]->toc);
if (scrnList[i]->msg)
TocRecheckValidity(MsgGetToc(scrnList[i]->msg));
}
DEBUG(" done]\n")
}
(void) XtAppAddTimeOut((XtAppContext)client_data,
(unsigned long) app_resources.rescan_interval,
NeedToCheckScans, client_data);
}
static void Checkpoint(
XtPointer client_data,
XtIntervalId *id)
{
if (!subProcessRunning) {
Cardinal n = 1;
String params = "wm_save_yourself";
DEBUG("(Checkpointing...")
XmhWMProtocols(NULL, NULL, ¶ms, &n);
DEBUG(" done)\n")
}
(void) XtAppAddTimeOut((XtAppContext)client_data,
(unsigned long) app_resources.checkpoint_interval,
Checkpoint, client_data);
}
static void CheckMail(
XtPointer client_data,
XtIntervalId *id)
{
if (!subProcessRunning) {
DEBUG("(Checking for new mail...")
XmhCheckForNewMail(NULL, NULL, NULL, NULL);
DEBUG(" done)\n")
}
(void) XtAppAddTimeOut((XtAppContext)client_data,
(unsigned long) app_resources.mail_interval,
CheckMail, client_data);
}
#ifdef DEBUG_CLEANUP
Boolean ExitLoop = FALSE;
#endif
int main(int argc, char **argv)
{
XtAppContext appCtx;
InitializeWorld(argc, argv);
subProcessRunning = False;
appCtx = XtWidgetToApplicationContext(toplevel);
(void) XtAppSetWarningMsgHandler(appCtx, PopupWarningHandler);
if (app_resources.new_mail_check && app_resources.mail_interval > 0) {
app_resources.mail_interval *= 60000;
(void) XtAppAddTimeOut(appCtx, (unsigned long) 0,
CheckMail, (XtPointer)appCtx);
}
if (app_resources.rescan_interval > 0) {
app_resources.rescan_interval *= 60000;
(void) XtAppAddTimeOut(appCtx,
(unsigned long) app_resources.rescan_interval,
NeedToCheckScans, (XtPointer)appCtx);
}
if (app_resources.make_checkpoints &&
app_resources.checkpoint_interval > 0) {
app_resources.checkpoint_interval *= 60000;
(void) XtAppAddTimeOut(appCtx, (unsigned long)
app_resources.checkpoint_interval,
Checkpoint, (XtPointer)appCtx);
}
lastInput.win = -1;
#ifdef DEBUG_CLEANUP
while (!ExitLoop) {
#else
for (;;) {
#endif
XEvent ev;
XtAppNextEvent( appCtx, &ev );
if (ev.type == KeyPress) {
lastInput.win = ev.xany.window;
lastInput.x = ev.xkey.x_root;
lastInput.y = ev.xkey.y_root;
} else if (ev.type == ButtonPress) {
lastInput.win = ev.xany.window;
lastInput.x = ev.xbutton.x_root;
lastInput.y = ev.xbutton.y_root;
}
XtDispatchEvent( &ev );
}
#ifdef DEBUG_CLEANUP
XtDestroyApplicationContext(appCtx);
#endif
exit(0);
}