rem: initProcedureTable();
context: WMCreateScreenWithRContext(Display *display, int screen, RContext *context){    W_Screen *scrPtr;    XGCValues gcv;    Pixmap stipple;    static int initialized = 0;    if (!initialized) {	initialized = 1;		initProcedureTable();	W_ReadConfigurations();	assert(W_ApplicationInitialized());    }        scrPtr = malloc(sizeof(W_Screen));    if (!scrPtr)	return NULL;    memset(scrPtr, 0, sizeof(W_Screen));        scrPtr->aflags.hasAppIcon = 1;        scrPtr->display = display;    scrPtr->screen = screen;    scrPtr->rcontext = context;    scrPtr->depth = context->depth;    scrPtr->visual = context->visual;    scrPtr->lastEventTime = 0;    scrPtr->colormap = context->cmap;    scrPtr->rootWin = RootWindow(display, screen);    scrPtr->fontCache = WMCreateHashTable(WMStringPointerHashCallbacks);    /* initially allocate some colors */    WMWhiteColor(scrPtr);    WMBlackColor(scrPtr);    WMGrayColor(scrPtr);    WMDarkGrayColor(scrPtr);        gcv.graphics_exposures = False;        gcv.function = GXxor;    gcv.foreground = W_PIXEL(scrPtr->white);    if (gcv.foreground == 0) gcv.foreground = 1;    scrPtr->xorGC = XCreateGC(display, W_DRAWABLE(scrPtr), GCFunction			      |GCGraphicsExposures|GCForeground, &gcv);    gcv.function = GXxor;    gcv.foreground = W_PIXEL(scrPtr->gray);    gcv.subwindow_mode = IncludeInferiors;    scrPtr->ixorGC = XCreateGC(display, W_DRAWABLE(scrPtr), GCFunction			       |GCGraphicsExposures|GCForeground			       |GCSubwindowMode, &gcv);    gcv.function = GXcopy;    scrPtr->copyGC = XCreateGC(display, W_DRAWABLE(scrPtr), GCFunction			       |GCGraphicsExposures, &gcv);    scrPtr->clipGC = XCreateGC(display, W_DRAWABLE(scrPtr), GCFunction			       |GCGraphicsExposures, &gcv);        stipple = XCreateBitmapFromData(display, W_DRAWABLE(scrPtr), 				    STIPPLE_BITS, STIPPLE_WIDTH, STIPPLE_HEIGHT);    gcv.foreground = W_PIXEL(scrPtr->darkGray);    gcv.background = W_PIXEL(scrPtr->gray);    gcv.fill_style = FillStippled;    gcv.stipple = stipple;    scrPtr->stippleGC = XCreateGC(display, W_DRAWABLE(scrPtr),				  GCForeground|GCBackground|GCStipple				  |GCFillStyle|GCGraphicsExposures, &gcv);    gcv.foreground = W_PIXEL(scrPtr->black);    gcv.background = W_PIXEL(scrPtr->white);    scrPtr->textFieldGC = XCreateGC(display, W_DRAWABLE(scrPtr),				    GCForeground|GCBackground, &gcv);    /* we need a 1bpp drawable for the monoGC, so borrow this one */    scrPtr->monoGC = XCreateGC(display, stipple, 0, NULL);    scrPtr->stipple = stipple;    scrPtr->normalFont = WMSystemFontOfSize(scrPtr, 12);    scrPtr->boldFont = WMBoldSystemFontOfSize(scrPtr, 12);    if (!scrPtr->boldFont)	scrPtr->boldFont = scrPtr->normalFont;    if (!scrPtr->normalFont) {	wwarning("could not load any fonts. Make sure your font installation"		 "and locale settings are correct.");	return NULL;    }    scrPtr->checkButtonImageOn = makePixmap(scrPtr, CHECK_BUTTON_ON,					    CHECK_BUTTON_ON_WIDTH,					    CHECK_BUTTON_ON_HEIGHT, False);    scrPtr->checkButtonImageOff = makePixmap(scrPtr, CHECK_BUTTON_OFF,					    CHECK_BUTTON_OFF_WIDTH,					    CHECK_BUTTON_OFF_HEIGHT, False);    scrPtr->radioButtonImageOn = makePixmap(scrPtr, RADIO_BUTTON_ON,					    RADIO_BUTTON_ON_WIDTH,					    RADIO_BUTTON_ON_HEIGHT, False);    scrPtr->radioButtonImageOff = makePixmap(scrPtr, RADIO_BUTTON_OFF,					    RADIO_BUTTON_OFF_WIDTH,					    RADIO_BUTTON_OFF_HEIGHT, False);    scrPtr->buttonArrow = makePixmap(scrPtr, BUTTON_ARROW, 				     BUTTON_ARROW_WIDTH, BUTTON_ARROW_HEIGHT, 				     False);    scrPtr->pushedButtonArrow = makePixmap(scrPtr, BUTTON_ARROW2,			           BUTTON_ARROW2_WIDTH, BUTTON_ARROW2_HEIGHT, 				   False);    scrPtr->scrollerDimple = makePixmap(scrPtr, SCROLLER_DIMPLE,					SCROLLER_DIMPLE_WIDTH,					SCROLLER_DIMPLE_HEIGHT, False);    scrPtr->upArrow = makePixmap(scrPtr, SCROLLER_ARROW_UP,				 SCROLLER_ARROW_UP_WIDTH,				 SCROLLER_ARROW_UP_HEIGHT, True);    scrPtr->downArrow = makePixmap(scrPtr, SCROLLER_ARROW_DOWN,				   SCROLLER_ARROW_DOWN_WIDTH,				   SCROLLER_ARROW_DOWN_HEIGHT, True);    scrPtr->leftArrow = makePixmap(scrPtr, SCROLLER_ARROW_LEFT,				   SCROLLER_ARROW_LEFT_WIDTH,				   SCROLLER_ARROW_LEFT_HEIGHT, True);    scrPtr->rightArrow = makePixmap(scrPtr, SCROLLER_ARROW_RIGHT,				    SCROLLER_ARROW_RIGHT_WIDTH,				    SCROLLER_ARROW_RIGHT_HEIGHT, True);    scrPtr->hiUpArrow = makePixmap(scrPtr, HI_SCROLLER_ARROW_UP,				 SCROLLER_ARROW_UP_WIDTH,				 SCROLLER_ARROW_UP_HEIGHT, True);    scrPtr->hiDownArrow = makePixmap(scrPtr, HI_SCROLLER_ARROW_DOWN,				   SCROLLER_ARROW_DOWN_WIDTH,				   SCROLLER_ARROW_DOWN_HEIGHT, True);    scrPtr->hiLeftArrow = makePixmap(scrPtr, HI_SCROLLER_ARROW_LEFT,				   SCROLLER_ARROW_LEFT_WIDTH,				   SCROLLER_ARROW_LEFT_HEIGHT, True);    scrPtr->hiRightArrow = makePixmap(scrPtr, HI_SCROLLER_ARROW_RIGHT,				    SCROLLER_ARROW_RIGHT_WIDTH,				    SCROLLER_ARROW_RIGHT_HEIGHT, True);    scrPtr->popUpIndicator = makePixmap(scrPtr, POPUP_INDICATOR,					POPUP_INDICATOR_WIDTH,					POPUP_INDICATOR_HEIGHT, True);    scrPtr->pullDownIndicator = makePixmap(scrPtr, PULLDOWN_INDICATOR,					   PULLDOWN_INDICATOR_WIDTH,					   PULLDOWN_INDICATOR_HEIGHT, True);    scrPtr->checkMark = makePixmap(scrPtr, CHECK_MARK,				   CHECK_MARK_WIDTH,				   CHECK_MARK_HEIGHT, True);    loadPixmaps(scrPtr);    scrPtr->defaultCursor = XCreateFontCursor(display, XC_left_ptr);    scrPtr->textCursor = XCreateFontCursor(display, XC_xterm);    {	XColor bla;	Pixmap blank;		blank = XCreatePixmap(display, scrPtr->stipple, 1, 1, 1);	XSetForeground(display, scrPtr->monoGC, 0);	XFillRectangle(display, blank, scrPtr->monoGC, 0, 0, 1, 1);	scrPtr->invisibleCursor = XCreatePixmapCursor(display, blank, blank,						      &bla, &bla, 0, 0);	XFreePixmap(display, blank);    }    scrPtr->internalMessage = XInternAtom(display, "_WINGS_MESSAGE", False);    scrPtr->attribsAtom = XInternAtom(display, "_GNUSTEP_WM_ATTR", False);        scrPtr->deleteWindowAtom = XInternAtom(display, "WM_DELETE_WINDOW", False);    scrPtr->protocolsAtom = XInternAtom(display, "WM_PROTOCOLS", False);        scrPtr->clipboardAtom = XInternAtom(display, "CLIPBOARD", False);        scrPtr->rootView = W_CreateRootView(scrPtr);    scrPtr->balloon = W_CreateBalloon(scrPtr);    W_InitApplication(scrPtr);        return scrPtr;}