|
From: Daniel J S. <dan...@ie...> - 2004-09-06 22:13:35
|
Dave Denholm wrote: >Daniel J Sebald <dan...@ie...> writes: > > > >>Someone with a clearer understanding of X and the types of X windows >>or configuration that works with what gnuplot_x11 is attempting to do >>might be able to help. >> >> >> > > >There is really only one kind of X window. (Well, ignoring input-only >windows, and the shape extension.) Usually, everything is a window in >X. (Eg all the window manager decorations). That's why xwininfo -tree >tends to show so many windows. > > >(Motif has "gadgets" as well as "widgets". I think gadgets are where > features are drawn onto a window with lines and things, rather than > being layers of windows. But I digress again) > > >Anyway... where was I... yes, windows are fundamentally very simple >things. They have size and position, as you'd expect, and depth and >colormap (based on concept of visual id) > >'xdpyinfo' tells you about your X server, and what kind of visuals it >supports. Simple servers only support one visual type, but others >support more. (I recall SGI as supporting large numbers of visuals >concurrently) > > >Windows can have background pixmaps / background colours / cursors set >onto them - by doing this, the X server can do as much redrawing as >possible when windows get moved around, rather than having to get the >client to redraw. Eg I believe gnuplot draws the plot into a pixmap >then sets it as the background. So only time it needs to get involved >is if the window is resized. > >(You may have noticed that when a gnuplot window is enlarged, you see >the plot being tiled before it gets redrawn. The Xserver first fills >new new area with the tiled background pixmap, then invites gnuplot to >repair it.) > Yes, seen that.... I understand that X windows are fundamentally the same, but obviously something isn't right here. Perhaps it has something to do with the input/output you mention... The only extra bit of info I can provide is that the window that gnuplot_x11 connects to doesn't die until in the main loop. (That doesn't mean what was done in pr_window() isn't the cause of the failure... just that it doesn't manifest itself untill later... *perhaps*.) It is the commands XFlush() and XPending() that cause the exterior window to crash. But notice those only have the display as an input. Could it be that those commands have to do with input/output, and the exterior X window is not input/output? But that doesn't make sense, X wouldn't be set up to be so fragile. Dan |