[comp.windows.x] What's wrong with this code?

srinivas@ut-sally.UUCP (Srini Sankaran) (03/22/88)

The following code doesn't work if XTKVIEWPORT is defined.
It works (i.e., draw 10 circles) if it is not defined.

Can someone help me by explaining why?

-thanks
srinivas@sally.utexas.edu
...!ut-sally!srinivas

-----------------------BEGIN CODE-------------------------------------
#include <X11/Xlib.h>
#include <X11/Intrinsic.h>
#include <X11/Atoms.h>
#include <X11/Viewport.h>

#define XSIZE 512
#define YSIZE 512
static Arg arglist[] =
{
    {XtNwidth, (XtArgVal)XSIZE},
    {XtNheight,(XtArgVal)YSIZE},
} ;

int main(argc, argv)
    unsigned int argc;
    char **argv;
{
    Widget toplevel, viewport;
    Window win;
    Display *dpy;
    GC gc;
    XSetWindowAttributes xswa;
    int i;

    toplevel = XtInitialize("FOO", "FOO", NULL, 0, &argc, argv);
    viewport = XtCreateManagedWidget("viewport", viewportWidgetClass, toplevel,
			  arglist, XtNumber(arglist));
    XtRealizeWidget(toplevel);

    xswa.background_pixel = 0;
    xswa.border_pixel = 1;

    dpy = XtDisplay(viewport);
#ifdef XTKVIEWPORT		/* Does not work */
    win = XtWindow(viewport);
#else				/* Works */
    win = XCreateWindow(dpy, XtWindow(viewport),
			0, 0, XSIZE, YSIZE, 2, 
			DefaultDepth(dpy, DefaultScreen(dpy)), 
			InputOutput, DefaultVisual(dpy, DefaultScreen(dpy)),
			CWBackPixel | CWBorderPixel, &xswa); 
    XMapWindow(dpy, win); 
#endif

    gc = XCreateGC(dpy, win, 0, 0);
    XSetForeground(dpy, gc, 1);
    XSetBackground(dpy, gc, 0); 
    XSetLineAttributes(dpy, gc, 1, LineSolid, CapButt, JoinMiter);

    for(;;)
    {
	for(i = 0 ; i < 10 ; i ++)
	{
	    XDrawArc(dpy, win, gc, XSIZE >> 1, YSIZE >> 1,
		     i * (XSIZE >> 5) , i * (YSIZE >> 5), 0, 64*360);
	    XSync(dpy, 0);
	}
    }
}