|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T x
Length: 2591 (0xa1f) Types: TextFile Names: »xtwoapp.c«
└─⟦8648bda34⟧ Bits:30007244 EUUGD5_II: X11R5 └─⟦2ca9b63e1⟧ »./contrib-1/contrib-1.00« └─⟦a8392fb20⟧ └─⟦this⟧ »contrib/examples/OReilly/Vol4/ch13/xtwoapp.c«
/* * Copyright 1989 O'Reilly and Associates, Inc. * See ../Copyright for complete rights and liability information. */ /* * xtwoapp.c */ /* * Include files required for all Toolkit programs */ #include <X11/Intrinsic.h> /* Intrinsics Definitions */ #include <X11/StringDefs.h> /* Standard Name-String definitions */ #include <X11/Shell.h> /* Needed for applicationShellWidgetClass */ /* * Public include file for widgets we actually use in this file. */ #include <X11/Xaw/Label.h> /* Athena Label Widget */ /* * This works, but is not elegant, since it ruins Xlib's * network optimizations. */ void OurMainLoop(app1, app2, dis1, dis2) XtAppContext app1, app2; Display *dis1, *dis2; { XEvent event; for (;;) { if (XtAppPeekEvent(app1, &event) == TRUE) { XtAppNextEvent(app1, &event); XtDispatchEvent(&event); if (XtAppPeekEvent(app2, &event) == TRUE) { XtAppNextEvent(app2, &event); XtDispatchEvent(&event); } else XFlush(dis2); } else { XFlush(dis1); if (XtAppPeekEvent(app2, &event) == TRUE) { XtAppNextEvent(app2, &event); XtDispatchEvent(&event); } else XFlush(dis2); } } } main(argc, argv) int argc; char **argv; { XtAppContext app_con1, app_con2; Widget topLevel1, topLevel2, hello, goodbye; Display *display1, *display2; XtToolkitInitialize(); app_con1 = XtCreateApplicationContext(); app_con2 = XtCreateApplicationContext(); display1 = XtOpenDisplay(app_con1, "spike:0", argv[0], "XHello", NULL, 0, &argc, argv); display2 = XtOpenDisplay(app_con2, "ncd:0", argv[0], "XGoodbye", NULL, 0, &argc, argv); topLevel1 = XtAppCreateShell(app_con1, "XHello", applicationShellWidgetClass, display1, NULL, 0); topLevel2 = XtAppCreateShell(app_con2, "XGoodbye", applicationShellWidgetClass, display2, NULL, 0); hello = XtCreateManagedWidget( "hello", /* arbitrary widget name */ labelWidgetClass, /* widget class from Label.h */ topLevel1, /* parent widget*/ NULL, /* argument list */ 0 /* arg list size */ ); goodbye = XtCreateManagedWidget( "goodbye", /* arbitrary widget name */ labelWidgetClass, /* widget class from Label.h */ topLevel2, /* parent widget*/ NULL, /* argument list */ 0 /* arg list size */ ); /* * Create windows for widgets and map them. */ XtRealizeWidget(topLevel1); XtRealizeWidget(topLevel2); /* * Loop for events. * Notice that since XtAppMainLoop only handles on * app context, we have to write our own juggling loop. * This is not easy. */ OurMainLoop(app_con1, app_con2, display1, display2); }