Path: utzoo!attcan!uunet!husc6!ukma!tut.cis.ohio-state.edu!ucbvax!bloom-beacon!bilbo.locus!jta From: jta@bilbo.locus (Jim Anderson) Newsgroups: comp.windows.x Subject: Re: uwm network use followup Message-ID: <8903220008.AA2939933@devnet> Date: 22 Mar 89 00:08:31 GMT Sender: daemon@bloom-beacon.MIT.EDU Organization: The Internet Lines: 24 At this risk of getting burned to a cinder, I think a few points are being missed in this discussion. First, uwm or any other window manager that is moving a frame around on the display is drawing into the root window using a not-clipped-by-children GC. When you do this you gotta grab the server from the time you draw the frame until you erase it or you might leave tracks in somebody's window. Uwm is trying to be a semi-nice client, so as fast as he can he is grabbing the server, drawing the frame, erasing the frame and ungrabbing the server. This shows a flashing frame, but lets other clients draw on the screen. Uwm has a freeze/nofreeze option in the .uwmrc file that controls whether it does this, or just grabs the server for the duration, but it seems to ignore the setting of this option for the initial window placement. Try setting this option either way and notice the difference on a window move. Second, a combination of PointerMotionHints and QueryPointer is the way to go. QueryPointer resets the PointerMotionHint filter, so this works quite well. Using PointerMotion events seems to work ok too, as long as you eat multiple events without redrawing the frame for each. I'll bet someone will correct me if I'm wrong about any of this.