On Friday 21 June 2002 11:55 am, John Levon wrote: > On Fri, Jun 21, 2002 at 10:04:32AM +0100, Angus Leeming wrote: > > So, the next step is to make the screen modify the work area pixmap (hide > > the work area window) and emit an expose call. > > That's what the patch I sent does (should do)
Maybe ;-) But I'm confused by XScreen::draw: XCopyArea (fl_get_display(), owner_.getWin(), // owner_.getPixmap(), owner_.getWin(), // owner_.getPixmap(), ...); // expose the area drawn expose(0, 0, owner_.workWidth(), old_first - text->first_y); Why are you changing owner_.getWin() direct, not owner_.getPixmap() and then expose()ing the change? > > Now does the associated XEvent * > > xev have info about which bit of the widow is to be redrawn or do we just > > copy the entire pixmap into the window. > > The latter, it seems, and this is what I am calling sucky. This pixmap > can get *big*. So, ideally, XWorkArea::paint should change only a small area of the window and this info will come from xev. Looking more deeply, I see that this is what it's coded up to do, as is XScreen::expose. That means that all we have to do is pass the correct coordinate info to expose(). But we seem to do that too. So, it looks to me that your patch + my xforms patch will allow us to redraw only a part of the window, with the XScreen::draw proviso above. > I've only briefly looked at the xforms double buffer stuff so I can't > really comment on how well it works ... in the end I'm not sure it's > worth the bother. the GUII code is now flexible enough to allow Qt to do > the right thing, and that matters most Let's ignore that for now. This is something that should be hidden inside WorkArea. First we should finish the interaction between the Screen and the WorkArea. It looks to me like you're almost there. Don't stop now! Angus