diff options
author | Kaleb Keithley <kaleb@freedesktop.org> | 2003-11-14 16:49:23 +0000 |
---|---|---|
committer | Kaleb Keithley <kaleb@freedesktop.org> | 2003-11-14 16:49:23 +0000 |
commit | cf123a1c2e624e7b4908a03870ca0a48420a3c43 (patch) | |
tree | 3f41d5e5a19a9de4f3ff8cf5ba363f8bc7b0f2fa /main.c |
Initial revisionXORG-STABLE
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 142 |
1 files changed, 142 insertions, 0 deletions
@@ -0,0 +1,142 @@ +/* $XConsortium: main.c,v 2.30 95/01/25 14:33:57 swick Exp $ + * + * + * COPYRIGHT 1987, 1989 + * DIGITAL EQUIPMENT CORPORATION + * MAYNARD, MASSACHUSETTS + * ALL RIGHTS RESERVED. + * + * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND + * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. + * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE FOR + * ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY. + * + * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT + * RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN + * ADDITION TO THAT SET FORTH ABOVE. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, provided + * that the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of Digital Equipment Corporation not be + * used in advertising or publicity pertaining to distribution of the software + * without specific, written prior permission. + */ +/* $XFree86: xc/programs/xmh/main.c,v 1.3 2002/04/05 21:06:28 dickey Exp $ */ + +#define MAIN 1 /* Makes global.h actually declare vars */ +#include "xmh.h" +#include "actions.h" + +/*ARGSUSED*/ +static void NeedToCheckScans( + XtPointer client_data, + XtIntervalId *id) /* unused */ +{ + 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); +} + +/*ARGSUSED*/ +static void Checkpoint( + XtPointer client_data, + XtIntervalId *id) /* unused */ +{ + 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); +} + +/*ARGSUSED*/ +static void CheckMail( + XtPointer client_data, + XtIntervalId *id) /* unused */ +{ + 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); +} + +/* Main loop. */ + +#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; /* nothing mapped yet */ +#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); +} |