[Bug: 21.4.12] xemacs: X Error of failed request:BadWindow(invalid Window parameter)

Glynn Clements glynn at gclements.plus.com
Mon Nov 22 19:55:45 EST 2004


tbennett at nvidia.com wrote:

> > If the selection is too large to be transferred in a single chunk, an
> > incremental selection is used, and it's incremental selections which
> > are causing the problem.
> >
> > You can determine the limit from the "maximum request size" value in
> > the output from "xdpyinfo".
> 
> $ xdpyinfo | grep -i maximum
> maximum request size:  4194300 bytes

Right, so anything larger than ~4Mb will result in the use of an
incremental transfer. This is the case where wait_delaying_user_input()
gets called, and that's where the problem appears to lie.

Incremental selections involve the selection owner storing a chunk of
the selection on a property, waiting for the requestor to delete it,
storing the next chunk, and so on.

The owner has to wait for a PropertyNotify event indicating that the
requestor has deleted the property before storing the next chunk. To do
this, XEmacs calls next_event_internal() to obtain the next event. If
it is a command event or an eval or magic_eval event, it enqueues it
for later processing, otherwise it dispatches it.

One issue is that dispatching events may have consequences which the
incremental selection code wasn't expecting. E.g. further
SelectionRequest events may be processed while an existing transfer is
underway (pasting into an xterm results in multiple requests, for
UTF8_STRING, TEXT and COMPOUND_TEXT).

-- 
Glynn Clements <glynn at gclements.plus.com>




More information about the XEmacs-Beta mailing list