> "Roderick Colenbrander" <[EMAIL PROTECTED]> writes:
>
> > + if (data->client_window)
> > + {
> > + int w = data->client_rect.right - data->client_rect.left;
> > + int h = data->client_rect.bottom - data->client_rect.top;
> > +
> > + TRACE("Updating client window 0x%lx to %dx%x,%dx%d\n",
> data->client_window,
> > + data->client_rect.left, data->client_rect.top, w, h);
> > +
> > + if(w>0 && h>0)
> > + {
> > + wine_tsx11_lock();
> > + XMoveResizeWindow(display, data->client_window,
> data->client_rect.left,
> > + data->client_rect.top, w, h);
> > + wine_tsx11_unlock();
>
> You should do that only when the size has actually changed.
Is it enough to check if the dimensions changed or should I also care about the
position? (I don't think it changes)
> > +static Window create_client_window( Display *display, struct
> x11drv_win_data *data)
> > +{
> > + XSetWindowAttributes attr;
> > +
> > + attr.event_mask = ExposureMask;
> > + attr.bit_gravity = NorthWestGravity;
> > + attr.backing_store = NotUseful;
>
> Using NorthWestGravity is good but you still need to fix the valid rects
> calculation accordingly.
What's the problem in X11DRV_SetWindowPos? I have checked valid_rects there but
the contents of the two rects stored in it look ok to me. They seem to contain
the current and previous location of the whole window (the location of where
the window starts ignoring the border added by the WM). What should be done in
this part of the code?
> > +static void destroy_client_window( Display *display, struct
> x11drv_win_data *data )
> > +{
> > + if (!data->client_window) return;
> > +
> > + wine_tsx11_lock();
> > +
> > + XDeleteContext( display, data->client_window, winContext );
> > + XDestroyWindow( display, data->client_window );
> > + data->client_window = 0;
> > + XFlush(display);
> > +
> > + wine_tsx11_unlock();
>
> The XFlush shouldn't be needed.
When destroying the client window when code to recreate the client window is
there, this was needed. I guess because events hadn't arrived yet for the
destroyed window. But I can remove it for now as perhaps something else was
wrong.
Thanks,
Roderick
--
GMX FreeMail: 1 GB Postfach, 5 E-Mail-Adressen, 10 Free SMS.
Alle Infos und kostenlose Anmeldung: http://www.gmx.net/de/go/freemail