summaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
authorKaleb Keithley <kaleb@freedesktop.org>2003-11-14 16:49:23 +0000
committerKaleb Keithley <kaleb@freedesktop.org>2003-11-14 16:49:23 +0000
commitcf123a1c2e624e7b4908a03870ca0a48420a3c43 (patch)
tree3f41d5e5a19a9de4f3ff8cf5ba363f8bc7b0f2fa /main.c
Initial revisionXORG-STABLE
Diffstat (limited to 'main.c')
-rw-r--r--main.c142
1 files changed, 142 insertions, 0 deletions
diff --git a/main.c b/main.c
new file mode 100644
index 0000000..a67b82a
--- /dev/null
+++ b/main.c
@@ -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, &params, &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);
+}