From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29734 invoked by alias); 30 Sep 2010 14:28:34 -0000 Received: (qmail 29719 invoked by uid 22791); 30 Sep 2010 14:28:32 -0000 X-SWARE-Spam-Status: No, hits=-1.3 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: sourceware.org Received: from mail-wy0-f171.google.com (HELO mail-wy0-f171.google.com) (74.125.82.171) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 30 Sep 2010 14:28:26 +0000 Received: by wyf19 with SMTP id 19so2454212wyf.2 for ; Thu, 30 Sep 2010 07:28:24 -0700 (PDT) MIME-Version: 1.0 Received: by 10.227.153.11 with SMTP id i11mr3154062wbw.150.1285856904339; Thu, 30 Sep 2010 07:28:24 -0700 (PDT) Received: by 10.227.147.67 with HTTP; Thu, 30 Sep 2010 07:28:24 -0700 (PDT) Date: Thu, 30 Sep 2010 14:28:00 -0000 Message-ID: Subject: "Paste" from clipboard can failed (XWin bug) From: rolandc To: cygwin-xfree@cygwin.com Content-Type: multipart/mixed; boundary=001636831f1003eafe04917ae401 X-IsSubscribed: yes Mailing-List: contact cygwin-xfree-help@cygwin.com; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-xfree-owner@cygwin.com Reply-To: cygwin-xfree@cygwin.com Mail-Followup-To: cygwin-xfree@cygwin.com X-SW-Source: 2010-09/txt/msg00097.txt.bz2 --001636831f1003eafe04917ae401 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 2983 Hi, >>From X application, I select some text. I switch on Windows application and I try to paste the text. I do "Ctrl-V" => nothing happens I do a second "Ctrl-V" => the text is pasted This problem depends on the X application When a "paste" occurs, XWin receives a WM_RENDERFORMAT message : (cf. winClipboardWindowProc()) step 1/ XWin try to get the selection in COMPOUND_TEXT format (cf. winProcessXEventsTimeout() calls XConvertSelection("COMPOUND_TEXT ")) step 2/ If the owner of the selection (the X app) can't handle COMPOUND_TEXT format, XWin try to get the selection in UTF8_STRING format (cf. winClipboardFlushXEvents(), on receive an SelectionNotify event with "event.xselection.property == None", XWin calls XConvertSelection("UTF8_STRING")) step 3/ If the owner of the selection (the X app) can't handle UTF8_STRING format, XWin try to get the selection in XA_STRING format (cf. winClipboardFlushXEvents(), on receive an SelectionNotify event with "event.xselection.property == None", XWin calls XConvertSelection("XA_STRING")) But there is a bug in XWin : XWin calls winProcessXEventsTimeout() only twice. If the X app handles only handles XA_STRING format, the "step 3" is never invoked ! As the result, XWin can't get "paste data" and log the message: "winClipboardWindowProc - timed out waiting for WIN_XEVENTS_NOTIFY" XWin.log with my comment: ... (receive WM_RENDER_FORMAT message) winClipboardWindowProc - WM_RENDER*FORMAT - Hello. (call XConvertSelection("COMPOUND_TEXT ")) (first call winProcessXEventsTimeout()) winClipboardFlushXEvents - SelectionNotify winClipboardFlushXEvents - SelectionNotify - ATOM: PRIMARY (receive event.xselection.target == atomCompoundText aka COMPOUND_TEXT) (the X app can't handle COMPOUND_TEXT format) winClipboardFlushXEvents - SelectionNotify - Requesting conversion of CompoundText target. (call XConvertSelection("UTF8_STRING") and return) (second call winProcessXEventsTimeout()) winClipboardFlushXEvents - SelectionNotify winClipboardFlushXEvents - SelectionNotify - ATOM: PRIMARY (receive event.xselection.target == atomUTF8String aka UTF8_STRING) (the X app can't handle UTF8_STRING format) winClipboardFlushXEvents - SelectionNotify - Requesting conversion of UTF8 target. (call XConvertSelection("XA_STRING") and return) (XWin can't get paste data, also it logs an error :) (and reset the clipboard => SetClipboardData (CF_UNICODETEXT, NULL);SetClipboardData (CF_TEXT, NULL);) winClipboardWindowProc - timed out waiting for WIN_XEVENTS_NOTIFY ... Solution 1 : Call a third time the function winProcessXEventsTimeout() (see paste_bug_solution1.patch file attached) but this is not a very elegant solution ... Solution 2 : call winProcessXEventsTimeout() only one time winProcessXEventsTimeout() must process all notification until * time out expired * getting the paste data * error occurred (see paste_bug_solution2.patch file attached) note: the actual timeout is set to 1 second. Greetings, --001636831f1003eafe04917ae401 Content-Type: application/octet-stream; name="paste_bug_solution1.patch" Content-Disposition: attachment; filename="paste_bug_solution1.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gepnpee30 Content-length: 964 ZGlmZiAtLWdpdCBhL2h3L3h3aW4vd2luY2xpcGJvYXJkd25kcHJvYy5jIGIv aHcveHdpbi93aW5jbGlwYm9hcmR3bmRwcm9jLmMKb2xkIG1vZGUgMTAwNjQ0 Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA5Mzk0YjA0Li4yMDRlYWNjCi0tLSBh L2h3L3h3aW4vd2luY2xpcGJvYXJkd25kcHJvYy5jCisrKyBiL2h3L3h3aW4v d2luY2xpcGJvYXJkd25kcHJvYy5jCkBAIC01MjEsNiArNTIxLDE5IEBAIHdp bkNsaXBib2FyZFdpbmRvd1Byb2MgKEhXTkQgaHduZCwgVUlOVCBtZXNzYWdl LAogCQkJCQkJcERpc3BsYXksCiAJCQkJCQlmQ29udmVydFRvVW5pY29kZSwK IAkJCQkJCVdJTl9QT0xMX1RJTUVPVVQpOworCQlpZiAoV0lOX1hFVkVOVFNf Q09OVkVSVCA9PSBpUmV0dXJuKQorCQl7CisJCQkvKgorCQkJKiBUaGUgc2Vs ZWN0aW9uIHdhcyBvZmZlcmVkIGZvciBjb252ZXJzaW9uIGZpcnN0LCBzbyB3 ZSBoYXZlCisJCQkqIHRvIHByb2Nlc3MgYSBzZWNvbmQgU2VsZWN0aW9uTm90 aWZ5IGV2ZW50IHRvIGdldCB0aGUgYWN0dWFsCisJCQkqIGRhdGEgaW4gdGhl IHNlbGVjdGlvbi4KKwkJCSovCisJCQlpUmV0dXJuID0gd2luUHJvY2Vzc1hF dmVudHNUaW1lb3V0IChod25kLAorCQkJCQkJaVdpbmRvdywKKwkJCQkJCXBE aXNwbGF5LAorCQkJCQkJZkNvbnZlcnRUb1VuaWNvZGUsCisJCQkJCQlXSU5f UE9MTF9USU1FT1VUKTsKKwkJfQogCSAgfQogCQogCS8qCg== --001636831f1003eafe04917ae401 Content-Type: application/octet-stream; name="paste_bug_solution2.patch" Content-Disposition: attachment; filename="paste_bug_solution2.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gepppcgj1 Content-length: 2131 ZGlmZiAtLWdpdCBhL2h3L3h3aW4vd2luY2xpcGJvYXJkd25kcHJvYy5jIGIv aHcveHdpbi93aW5jbGlwYm9hcmR3bmRwcm9jLmMKb2xkIG1vZGUgMTAwNjQ0 Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA5Mzk0YjA0Li4xODI4N2I3Ci0tLSBh L2h3L3h3aW4vd2luY2xpcGJvYXJkd25kcHJvYy5jCisrKyBiL2h3L3h3aW4v d2luY2xpcGJvYXJkd25kcHJvYy5jCkBAIC00Miw3ICs0Miw2IEBACiAgKiBD b25zdGFudHMKICAqLwogCi0jZGVmaW5lIFdJTl9DTElQQk9BUkRfUFJPUAki Y3lnX2NsaXBib2FyZF9wcm9wIgogI2RlZmluZSBXSU5fUE9MTF9USU1FT1VU CTEKIAogCkBAIC0xMjYsMTAgKzEyNSw5IEBAIHdpblByb2Nlc3NYRXZlbnRz VGltZW91dCAoSFdORCBod25kLCBpbnQgaVdpbmRvdywgRGlzcGxheSAqcERp c3BsYXksCiAJCQkJCSAgICAgIGlXaW5kb3csCiAJCQkJCSAgICAgIHBEaXNw bGF5LAogCQkJCQkgICAgICBmVXNlVW5pY29kZSk7Ci0JICBpZiAoV0lOX1hF VkVOVFNfTk9USUZZID09IGlSZXR1cm4KLQkgICAgICB8fCBXSU5fWEVWRU5U U19DT05WRVJUID09IGlSZXR1cm4pCisJICBpZiAoV0lOX1hFVkVOVFNfTk9U SUZZID09IGlSZXR1cm4pCiAJICAgIHsKLQkgICAgICAvKiBCYWlsIG91dCBp ZiBjb252ZXJ0IG9yIG5vdGlmeSBwcm9jZXNzZWQgKi8KKwkgICAgICAvKiBC YWlsIG91dCBpZiBub3RpZnkgcHJvY2Vzc2VkICovCiAJICAgICAgcmV0dXJu IGlSZXR1cm47CiAJICAgIH0KIAl9CkBAIC01MDksMjIgKzUwNyw5IEBAIHdp bkNsaXBib2FyZFdpbmRvd1Byb2MgKEhXTkQgaHduZCwgVUlOVCBtZXNzYWdl LAogCQkJCQkgICAgcERpc3BsYXksCiAJCQkJCSAgICBmQ29udmVydFRvVW5p Y29kZSwKIAkJCQkJICAgIFdJTl9QT0xMX1RJTUVPVVQpOwotCWlmIChXSU5f WEVWRU5UU19DT05WRVJUID09IGlSZXR1cm4pCi0JICB7Ci0JICAgIC8qCi0J ICAgICAqIFRoZSBzZWxlY3Rpb24gd2FzIG9mZmVyZWQgZm9yIGNvbnZlcnNp b24gZmlyc3QsIHNvIHdlIGhhdmUKLQkgICAgICogdG8gcHJvY2VzcyBhIHNl Y29uZCBTZWxlY3Rpb25Ob3RpZnkgZXZlbnQgdG8gZ2V0IHRoZSBhY3R1YWwK LQkgICAgICogZGF0YSBpbiB0aGUgc2VsZWN0aW9uLgotCSAgICAgKi8KLQkg ICAgaVJldHVybiA9IHdpblByb2Nlc3NYRXZlbnRzVGltZW91dCAoaHduZCwK LQkJCQkJCWlXaW5kb3csCi0JCQkJCQlwRGlzcGxheSwKLQkJCQkJCWZDb252 ZXJ0VG9Vbmljb2RlLAotCQkJCQkJV0lOX1BPTExfVElNRU9VVCk7Ci0JICB9 Ci0JCisKIAkvKgotCSAqIFRoZSBsYXN0IG9mIHRoZSB1cC10byB0d28gY2Fs bHMgdG8gd2luUHJvY2Vzc1hFdmVudHNUaW1lb3V0CisJICogVGhlIGxhc3Qg Y2FsbCB0byB3aW5Qcm9jZXNzWEV2ZW50c1RpbWVvdXQKIAkgKiBmcm9tIGFi b3ZlIGhhZCBiZXR0ZXIgaGF2ZSBzZWVuIGEgbm90aWZ5IGV2ZW50LCBvciBl bHNlIHdlCiAJICogYXJlIGRlYWxpbmcgd2l0aCBhIGJ1Z2d5IG9yIG9sZCBY MTEgYXBwLiAgSW4gdGhlc2UgY2FzZXMgd2UKIAkgKiBoYXZlIHRvIHBhc3Rl IHNvbWUgZmFrZSBkYXRhIHRvIHRoZSBXaW4zMiBjbGlwYm9hcmQgdG8K --001636831f1003eafe04917ae401 Content-Type: text/plain; charset=us-ascii Content-length: 223 -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://x.cygwin.com/docs/ FAQ: http://x.cygwin.com/docs/faq/ --001636831f1003eafe04917ae401--