ConfigureNotify messages queuing up

Mikael Lindqvist mikael at pointlab.se
Thu Dec 1 13:31:32 CST 2005


Hello dear Wine developers,

I was using Flash MX under Wine yesterday and I noticed that when I
resize the window, the contents swirl around as resize messages get
processed. I thought that maybe this could be avoided if the code in
wine that processes ConfigureNotify messages from X and passes them on
to the windows application could be made to not forward all the
messages, but just the ones that mattered. I had a look at the source
where this takes place (in dlls/x11drv/winpos.c) and put the following
code in the X11DRV_ConfigureNotify function:

XEvent more_events;

.
.
.

wine_tsx11_lock();
while(XCheckTypedWindowEvent(event->display,event->window,
  ConfigureNotify,&more_events))
{
  event=& (more_events.xconfigure);
  x = event->x, y = event->y;
}
wine_tsx11_unlock();

So what it does is that when processing ConfigureNotify messages it
checks the message queue if there are more ConfigureNotify messages
queued up, and only delivers the last one to the windows application.

And actually things ran a bit smoother with this code in place!

Maybe there are potential problems with this code, because it might mean
that messages gets delivered in the wrong order, but I have some ideas
how this could probably be taken care of. And also some other bits and
pieces should be fixed for this to work. 

But what do you think about the idea, is it worth exploring further? In
that case I could submit a proper patch for this...

-- Mikael




More information about the wine-devel mailing list