Xpra: Ticket #965: Can't restore xpra window when clicked on xpra icon (on Docs) after minimizing it.

After launching xpra, minimize it and try to restore the window by clicking on the Xpra icon from Docs. It does not restore it as it is expected to. When tried with a local browser, it works as it is supposed to.

Xpra version: 15.4 OS: Client-Mac OSX 10.10.4 and Server: Fedora 21 Revision: Client-10209



Tue, 25 Aug 2015 02:14:48 GMT - Antoine Martin: owner changed

Please provide more details. See wiki/ReportingBugs


Thu, 17 Sep 2015 21:58:42 GMT - pvenkateswaralu: owner changed

With the following versions,

Client----0.16.0----r10655----OSX 10.10.3 Server---0.16.0----r10656----Fedora 21

I launched xpra with -d window on both client and server sides. Below is the output for each ----

NOTE: I had one child xterm and one google chrome browser window during the session In all the below mentioned cases, the client side gave no logs.

  1. Had child xterm on screen, and minimized chrome browser window. Clicking on the xpra icon on Docs brought the child xterm to focus and gave the following logs on Server side.
    2015-09-17 13:36:23,483 Giving focus to %#x
    2015-09-17 13:36:23,486 ... using XSetInputFocus
    2015-09-17 13:36:23,488 focus_in_event(<X11:FocusIn {'delivered_to': '0xa00022', 'send_event': 0, 'detail': 3, 'window': '0xa00022', 'mode': 0, 'serial': '0x29c0', 'type': 9, 'display': ':13'}>) mode=NotifyNormal, detail=NotifyNonlinear
    2015-09-17 13:36:23,490 update_quality() suspended=False, mmap=None, encoding=h264
    2015-09-17 13:36:23,490 damage(<WindowModel object at 0x7fe0ec157dc0 (xpra+x11+gtk2+models+window+WindowModel at 0x1e54060)>, 203, 301, 6, 13, {})
    2015-09-17 13:36:23,491 update_quality() info={'backlog_factor': 100, 'latency_factor': 2016, 'min_quality': 30, 'batch_factor': 102}, quality=99
    2015-09-17 13:36:23,491 damage(203, 301, 6, 13, {}) wid=1, sending now with sequence 306
    2015-09-17 13:36:23,492 update_speed() info={'damage_latency.target': 35, 'damage_latency.abs_factor': 0, 'frame_delay': 0, 'mpixels': 0, 'low_limit': 157684, 'decoding_latency.target': 8000000, 'damage_latency.rel_factor': 5, 'decoding_latency.factor': 25, 'min_speed': 0, 'damage_latency.avg': 5, 'damage_latency.ref': 35}, speed=34
    2015-09-17 13:36:23,493 update_encoding_options(False) want_alpha=False, lossless threshold: 81 / 20, small_as_rgb=5068, get_best_encoding=<bound method WindowVideoSource.get_best_encoding_video of WindowVideoSource(1 : (499, 316))>
    2015-09-17 13:36:23,494 process_damage_regions: wid=1, adding pixel data to encode queue (6x13 - rgb24), elapsed time: 3.6 ms, request time: 1.0 ms
    2015-09-17 13:36:23,494 make_data_packet: image=XShmImageWrapper(BGRX: 203, 301, 6, 13), damage data: (1, 203, 301, 6, 13, 'rgb24')
    2015-09-17 13:36:23,495 rgb_encode using level=1, lz4 compressed 6x13 in rgb24/BGRX: 312 bytes down to 16
    2015-09-17 13:36:23,495 compress:   0.4ms for    6x13   pixels for wid=1     using rgb24 with ratio   5.1% (    0KB to     0KB), client_options={'lz4': 1, 'rgb_format': 'BGRX'}
    2015-09-17 13:36:23,495 free_image_wrapper(XShmImageWrapper(BGRX: 203, 301, 6, 13)) thread_safe=0
    2015-09-17 13:36:23,496 auto refresh: rgb24 screen update (quality=100), nothing to do (region=rectangle[203, 301, 6, 13], refresh regions=[])
    2015-09-17 13:36:23,498 packet decoding sequence 306 for window 1: 6x13 took 0.5ms
    2015-09-17 13:36:24,490 update_quality() suspended=False, mmap=None, encoding=h264
    2015-09-17 13:36:24,491 update_quality() info={'backlog_factor': 100, 'latency_factor': 4610, 'min_quality': 30, 'batch_factor': 102}, quality=99
    2015-09-17 13:36:24,492 update_speed() info={'damage_latency.target': 35, 'damage_latency.abs_factor': 0, 'frame_delay': 0, 'mpixels': 0, 'low_limit': 157684, 'decoding_latency.target': 8000000, 'damage_latency.rel_factor': 4, 'decoding_latency.factor': 25, 'min_speed': 0, 'damage_latency.avg': 4, 'damage_latency.ref': 35}, speed=34
    2015-09-17 13:36:24,493 update_encoding_options(False) want_alpha=False, lossless threshold: 81 / 20, small_as_rgb=5068, get_best_encoding=<bound method WindowVideoSource.get_best_encoding_video of WindowVideoSource(1 : (499, 316))>
    
  1. Had chrome browser on screen and minimized child xterm. Clicking on the xpra icon on Docs brought the browser window to focus and gave the following logs on Server side.
2015-09-17 13:38:15,531 Giving focus to %#x
2015-09-17 13:38:15,531 ... using XSetInputFocus
2015-09-17 13:38:15,536 WindowModel.do_xpra_configure_event(<X11:ConfigureNotify {'delivered_to': '0x400038', 'send_event': 0, 'height': 495, 'width': 587, 'window': '0x400038', 'above': 4194350L, 'y': 216, 'x': 1018, 'serial': '0x2b0b', 'border_width': 0, 'type': 22, 'display': ':13'}>) corral=0x400038, client=0xe00001, managed=True
2015-09-17 13:38:15,537 WindowModel.do_xpra_configure_event: event is not on the client window
2015-09-17 13:38:15,537 invalidating named pixmap
2015-09-17 13:38:15,543 focus_in_event(<X11:FocusIn {'delivered_to': '0xe00001', 'send_event': 0, 'detail': 3, 'window': '0xe00001', 'mode': 0, 'serial': '0x2b0d', 'type': 9, 'display': ':13'}>) mode=NotifyNormal, detail=NotifyNonlinear
2015-09-17 13:38:15,554 update_quality() suspended=False, mmap=None, encoding=h264
2015-09-17 13:38:15,554 damage(<WindowModel object at 0x7fe0dc201640 (xpra+x11+gtk2+models+window+WindowModel at 0x1fb9a40)>, 0, 0, 587, 111, {})
2015-09-17 13:38:15,554 update_quality() info={'backlog_factor': 100, 'latency_factor': 1940, 'min_quality': 30, 'batch_factor': 102}, quality=99
2015-09-17 13:38:15,555 damage(0, 0, 587, 111, {}) wid=2, scheduling batching expiry for sequence 213 in 0.0 ms
2015-09-17 13:38:15,555 update_speed() info={'damage_latency.target': 35, 'damage_latency.abs_factor': 0, 'frame_delay': 3, 'mpixels': 0, 'low_limit': 290565, 'decoding_latency.target': 8000000, 'damage_latency.rel_factor': 16, 'decoding_latency.factor': 17, 'min_speed': 0, 'damage_latency.avg': 19, 'damage_latency.ref': 35}, speed=17
2015-09-17 13:38:15,556 update_encoding_options(False) want_alpha=False, lossless threshold: 78 / 20, small_as_rgb=5068, get_best_encoding=<bound method WindowVideoSource.get_best_encoding_video of WindowVideoSource(2 : (587, 495))>
2015-09-17 13:38:15,556 damage(<WindowModel object at 0x7fe0dc201640 (xpra+x11+gtk2+models+window+WindowModel at 0x1fb9a40)>, 0, 111, 587, 111, {})
2015-09-17 13:38:15,557 damage(0, 111, 587, 111, {}) wid=2, using existing delayed h264 regions created 0.0ms ago
2015-09-17 13:38:15,557 damage(<WindowModel object at 0x7fe0dc201640 (xpra+x11+gtk2+models+window+WindowModel at 0x1fb9a40)>, 0, 222, 587, 111, {})
2015-09-17 13:38:15,557 damage(0, 222, 587, 111, {}) wid=2, using existing delayed h264 regions created 0.0ms ago
2015-09-17 13:38:15,558 damage(<WindowModel object at 0x7fe0dc201640 (xpra+x11+gtk2+models+window+WindowModel at 0x1fb9a40)>, 0, 333, 587, 111, {})
2015-09-17 13:38:15,558 damage(0, 333, 587, 111, {}) wid=2, using existing delayed h264 regions created 0.0ms ago
2015-09-17 13:38:15,559 damage(<WindowModel object at 0x7fe0dc201640 (xpra+x11+gtk2+models+window+WindowModel at 0x1fb9a40)>, 0, 444, 587, 51, {})
2015-09-17 13:38:15,559 damage(0, 444, 587, 51, {}) wid=2, using existing delayed h264 regions created 0.0ms ago
2015-09-17 13:38:15,560 send_delayed for wid 2, batch delay is 0, elapsed time is 7 ms
2015-09-17 13:38:15,561 send_delayed_regions: bytes_cost=295685, bytes_threshold=174339, pixel_count=290565
2015-09-17 13:38:15,561 send_delayed_regions: using full window update 587x495 with png
2015-09-17 13:38:15,561 refreshing named pixmap
2015-09-17 13:38:15,564 process_damage_regions: wid=2, adding pixel data to encode queue (587x495 - png), elapsed time: 12.0 ms, request time: 2.5 ms
2015-09-17 13:38:15,564 make_data_packet: image=XShmImageWrapper(BGRX: 0, 0, 587, 495), damage data: (2, 0, 0, 587, 495, 'png')
2015-09-17 13:38:15,570 client configured window 2 - <WindowModel object at 0x7fe0dc201640 (xpra+x11+gtk2+models+window+WindowModel at 0x1fb9a40)>, at: (1018, 216, 587, 495)
2015-09-17 13:38:15,571 Property changed on 0xe00001: _NET_WM_USER_TIME
2015-09-17 13:38:15,591 compress:  26.2ms for  587x495  pixels for wid=2     using   png with ratio   3.5% ( 1135KB to    39KB), client_options={'compress_level': 4}
2015-09-17 13:38:15,591 free_image_wrapper(XShmImageWrapper(BGRX: 0, 0, 587, 495)) thread_safe=0
2015-09-17 13:38:15,592 auto refresh:   png screen update (quality=100), nothing to do (region=rectangle[0, 0, 587, 495], refresh regions=[])
2015-09-17 13:38:15,603 packet decoding sequence 213 for window 2: 587x495 took 9.5ms
2015-09-17 13:38:15,724 damage(<WindowModel object at 0x7fe0dc201640 (xpra+x11+gtk2+models+window+WindowModel at 0x1fb9a40)>, 254, 85, 318, 206, {})
2015-09-17 13:38:15,724 damage(254, 85, 318, 206, {}) wid=2, sending now with sequence 214
2015-09-17 13:38:15,725 damage(<WindowModel object at 0x7fe0dc201640 (xpra+x11+gtk2+models+window+WindowModel at 0x1fb9a40)>, 254, 291, 318, 50, {})
2015-09-17 13:38:15,725 damage(254, 291, 318, 50, {}) wid=2, sending now with sequence 214
2015-09-17 13:38:15,726 process_damage_regions: wid=2, adding pixel data to encode queue (318x206 - webp), elapsed time: 2.2 ms, request time: 0.5 ms
2015-09-17 13:38:15,726 process_damage_regions: wid=2, adding pixel data to encode queue (318x50 - png), elapsed time: 1.8 ms, request time: 0.5 ms
  1. Had both child xterm and the browser window on screen. Clicking on the xpra icon on Docs brings both xterm and browser windows to focus, and gave the following logs on Server side.
2015-09-17 13:46:35,773 Giving focus to %#x
2015-09-17 13:46:35,775 ... using XSetInputFocus
2015-09-17 13:46:35,777 focus_in_event(<X11:FocusIn {'delivered_to': '0xe00001', 'send_event': 0, 'detail': 3, 'window': '0xe00001', 'mode': 0, 'serial': '0x39da', 'type': 9, 'display': ':13'}>) mode=NotifyNormal, detail=NotifyNonlinear
2015-09-17 13:46:35,798 damage(<WindowModel object at 0x7fe0dc201640 (xpra+x11+gtk2+models+window+WindowModel at 0x1fb9a40)>, 0, 0, 587, 111, {})
2015-09-17 13:46:35,799 damage(0, 0, 587, 111, {}) wid=2, sending now with sequence 482
2015-09-17 13:46:35,802 update_quality() suspended=False, mmap=None, encoding=h264
2015-09-17 13:46:35,803 update_quality() info={'backlog_factor': 100, 'latency_factor': 1821, 'min_quality': 30, 'batch_factor': 102}, quality=99
2015-09-17 13:46:35,804 update_speed() info={'damage_latency.target': 35, 'damage_latency.abs_factor': 0, 'frame_delay': 0, 'mpixels': 0, 'low_limit': 290565, 'decoding_latency.target': 8000000, 'damage_latency.rel_factor': 54, 'decoding_latency.factor': 59, 'min_speed': 0, 'damage_latency.avg': 33, 'damage_latency.ref': 35}, speed=56
2015-09-17 13:46:35,804 update_encoding_options(False) want_alpha=False, lossless threshold: 86 / 20, small_as_rgb=24330, get_best_encoding=<bound method WindowVideoSource.get_best_encoding_video of WindowVideoSource(2 : (587, 495))>
2015-09-17 13:46:35,805 damage(<WindowModel object at 0x7fe0dc201640 (xpra+x11+gtk2+models+window+WindowModel at 0x1fb9a40)>, 0, 111, 587, 111, {})
2015-09-17 13:46:35,810 damage(0, 111, 587, 111, {}) wid=2, sending now with sequence 482
2015-09-17 13:46:35,811 damage(<WindowModel object at 0x7fe0dc201640 (xpra+x11+gtk2+models+window+WindowModel at 0x1fb9a40)>, 0, 222, 587, 111, {})
2015-09-17 13:46:35,811 damage(0, 222, 587, 111, {}) wid=2, sending now with sequence 482
2015-09-17 13:46:35,811 damage(<WindowModel object at 0x7fe0dc201640 (xpra+x11+gtk2+models+window+WindowModel at 0x1fb9a40)>, 0, 333, 587, 111, {})
2015-09-17 13:46:35,812 damage(0, 333, 587, 111, {}) wid=2, sending now with sequence 482
2015-09-17 13:46:35,812 damage(<WindowModel object at 0x7fe0dc201640 (xpra+x11+gtk2+models+window+WindowModel at 0x1fb9a40)>, 0, 444, 587, 51, {})
2015-09-17 13:46:35,812 damage(0, 444, 587, 51, {}) wid=2, sending now with sequence 482
2015-09-17 13:46:35,813 process_damage_regions: wid=2, adding pixel data to encode queue (587x111 - webp), elapsed time: 15.5 ms, request time: 0.9 ms
2015-09-17 13:46:35,814 process_damage_regions: wid=2, adding pixel data to encode queue (587x111 - webp), elapsed time: 9.5 ms, request time: 0.2 ms
2015-09-17 13:46:35,815 process_damage_regions: wid=2, adding pixel data to encode queue (587x111 - webp), elapsed time: 4.2 ms, request time: 0.3 ms
2015-09-17 13:46:35,815 make_data_packet: image=XShmImageWrapper(BGRX: 0, 0, 587, 111), damage data: (2, 0, 0, 587, 111, 'webp')
2015-09-17 13:46:35,816 process_damage_regions: wid=2, adding pixel data to encode queue (587x111 - webp), elapsed time: 4.6 ms, request time: 0.3 ms
2015-09-17 13:46:35,817 rgb_reformat: converting XShmImageWrapper(BGRX: 0, 0, 587, 111) from BGRX to RGB using PIL
2015-09-17 13:46:35,817 process_damage_regions: wid=2, adding pixel data to encode queue (587x51 - webp), elapsed time: 5.1 ms, request time: 0.2 ms
2015-09-17 13:46:35,818 rgb_reformat(XShmImageWrapper(RGB: 0, 0, 587, 111), ['RGB', 'RGBX', 'RGBA'], True) converted from BGRX (260628 bytes) to RGB (195471 bytes) in 2.1ms, rowstride=1761
2015-09-17 13:46:35,819 using PIL fallback for webp: enc_webp=<module 'xpra.codecs.webp.encode' from '/usr/lib64/python2.7/site-packages/xpra/codecs/webp/encode.so'>, stride=1761, pixel format=RGB
2015-09-17 13:46:35,831 compress:  14.8ms for  587x111  pixels for wid=2     using  webp with ratio   5.0% (  254KB to    12KB), client_options={'quality': 99}
2015-09-17 13:46:35,831 free_image_wrapper(XShmImageWrapper(RGB: 0, 0, 587, 111)) thread_safe=0
2015-09-17 13:46:35,832 auto refresh:  webp screen update (quality= 99), scheduling refresh in 118ms (pct=22, batch=0) (region=rectangle[0, 0, 587, 111], refresh regions=[R(0, 0, 587, 111)])
2015-09-17 13:46:35,832 make_data_packet: image=XShmImageWrapper(BGRX: 0, 111, 587, 111), damage data: (2, 0, 111, 587, 111, 'webp')
2015-09-17 13:46:35,832 rgb_reformat: converting XShmImageWrapper(BGRX: 0, 111, 587, 111) from BGRX to RGB using PIL
2015-09-17 13:46:35,833 rgb_reformat(XShmImageWrapper(RGB: 0, 111, 587, 111), ['RGB', 'RGBX', 'RGBA'], True) converted from BGRX (260628 bytes) to RGB (195471 bytes) in 0.5ms, rowstride=1761
2015-09-17 13:46:35,833 using PIL fallback for webp: enc_webp=<module 'xpra.codecs.webp.encode' from '/usr/lib64/python2.7/site-packages/xpra/codecs/webp/encode.so'>, stride=1761, pixel format=RGB
2015-09-17 13:46:35,838 compress:   6.1ms for  587x111  pixels for wid=2     using  webp with ratio   0.5% (  254KB to     1KB), client_options={'quality': 99}
2015-09-17 13:46:35,839 free_image_wrapper(XShmImageWrapper(RGB: 0, 111, 587, 111)) thread_safe=0
2015-09-17 13:46:35,839 packet decoding sequence 482 for window 2: 587x111 took 6.0ms
2015-09-17 13:46:35,839 auto refresh:  webp screen update (quality= 99), re-scheduling refresh (due in 110ms, 0ms added - sched_delay=51, pct=22, batch=0) (region=rectangle[0, 111, 587, 111], refresh regions=[R(0, 0, 587, 111), R(0, 111, 587, 111)])
2015-09-17 13:46:35,840 make_data_packet: image=XShmImageWrapper(BGRX: 0, 222, 587, 111), damage data: (2, 0, 222, 587, 111, 'webp')
2015-09-17 13:46:35,840 rgb_reformat: converting XShmImageWrapper(BGRX: 0, 222, 587, 111) from BGRX to RGB using PIL
2015-09-17 13:46:35,840 rgb_reformat(XShmImageWrapper(RGB: 0, 222, 587, 111), ['RGB', 'RGBX', 'RGBA'], True) converted from BGRX (260628 bytes) to RGB (195471 bytes) in 0.5ms, rowstride=1761
2015-09-17 13:46:35,840 using PIL fallback for webp: enc_webp=<module 'xpra.codecs.webp.encode' from '/usr/lib64/python2.7/site-packages/xpra/codecs/webp/encode.so'>, stride=1761, pixel format=RGB
2015-09-17 13:46:35,850 compress:   9.9ms for  587x111  pixels for wid=2     using  webp with ratio   3.7% (  254KB to     9KB), client_options={'quality': 99}
2015-09-17 13:46:35,850 packet decoding sequence 483 for window 2: 587x111 took 3.3ms
2015-09-17 13:46:35,851 free_image_wrapper(XShmImageWrapper(RGB: 0, 222, 587, 111)) thread_safe=0
2015-09-17 13:46:35,851 auto refresh:  webp screen update (quality= 99), re-scheduling refresh (due in 98ms, 0ms added - sched_delay=51, pct=22, batch=0) (region=rectangle[0, 222, 587, 111], refresh regions=[R(0, 0, 587, 111), R(0, 111, 587, 111), R(0, 222, 587, 111)])
2015-09-17 13:46:35,852 make_data_packet: image=XShmImageWrapper(BGRX: 0, 333, 587, 111), damage data: (2, 0, 333, 587, 111, 'webp')
2015-09-17 13:46:35,852 rgb_reformat: converting XShmImageWrapper(BGRX: 0, 333, 587, 111) from BGRX to RGB using PIL
2015-09-17 13:46:35,853 rgb_reformat(XShmImageWrapper(RGB: 0, 333, 587, 111), ['RGB', 'RGBX', 'RGBA'], True) converted from BGRX (260628 bytes) to RGB (195471 bytes) in 0.7ms, rowstride=1761
2015-09-17 13:46:35,853 using PIL fallback for webp: enc_webp=<module 'xpra.codecs.webp.encode' from '/usr/lib64/python2.7/site-packages/xpra/codecs/webp/encode.so'>, stride=1761, pixel format=RGB
2015-09-17 13:46:35,859 compress:   7.3ms for  587x111  pixels for wid=2     using  webp with ratio   1.0% (  254KB to     2KB), client_options={'quality': 99}
2015-09-17 13:46:35,859 packet decoding sequence 484 for window 2: 587x111 took 4.7ms
2015-09-17 13:46:35,860 free_image_wrapper(XShmImageWrapper(RGB: 0, 333, 587, 111)) thread_safe=0
2015-09-17 13:46:35,860 auto refresh:  webp screen update (quality= 99), re-scheduling refresh (due in 89ms, 0ms added - sched_delay=51, pct=22, batch=0) (region=rectangle[0, 333, 587, 111], refresh regions=[R(0, 0, 587, 111), R(0, 111, 587, 111), R(0, 222, 587, 111), R(0, 333, 587, 111)])
2015-09-17 13:46:35,860 make_data_packet: image=XShmImageWrapper(BGRX: 0, 444, 587, 51), damage data: (2, 0, 444, 587, 51, 'webp')
2015-09-17 13:46:35,861 rgb_reformat: converting XShmImageWrapper(BGRX: 0, 444, 587, 51) from BGRX to RGB using PIL
2015-09-17 13:46:35,861 rgb_reformat(XShmImageWrapper(RGB: 0, 444, 587, 51), ['RGB', 'RGBX', 'RGBA'], True) converted from BGRX (119748 bytes) to RGB (89811 bytes) in 0.4ms, rowstride=1761
2015-09-17 13:46:35,861 using PIL fallback for webp: enc_webp=<module 'xpra.codecs.webp.encode' from '/usr/lib64/python2.7/site-packages/xpra/codecs/webp/encode.so'>, stride=1761, pixel format=RGB
2015-09-17 13:46:35,865 compress:   4.5ms for  587x51   pixels for wid=2     using  webp with ratio   1.9% (  116KB to     2KB), client_options={'quality': 99}
2015-09-17 13:46:35,865 free_image_wrapper(XShmImageWrapper(RGB: 0, 444, 587, 51)) thread_safe=0
2015-09-17 13:46:35,866 packet decoding sequence 485 for window 2: 587x111 took 3.6ms
2015-09-17 13:46:35,867 auto refresh:  webp screen update (quality= 99), re-scheduling refresh (due in 83ms, 0ms added - sched_delay=39, pct=10, batch=0) (region=rectangle[0, 444, 587, 51], refresh regions=[R(0, 0, 587, 111), R(0, 111, 587, 111), R(0, 222, 587, 111), R(0, 333, 587, 111), R(0, 444, 587, 51)])
2015-09-17 13:46:35,870 packet decoding sequence 486 for window 2: 587x51 took 2.3ms
2015-09-17 13:46:35,950 timer_full_refresh() after 118ms, regions=[R(0, 0, 587, 111), R(0, 111, 587, 111), R(0, 222, 587, 111), R(0, 333, 587, 111), R(0, 444, 587, 51)]
2015-09-17 13:46:35,951 timer_full_refresh() size=(587, 495), encoding=webp, best=webp, auto_refresh_encodings=['webp', 'jpeg', 'rgb24', 'png', 'rgb32'], refresh_encodings=['webp', 'jpeg', 'rgb24', 'png', 'rgb32'], options={'speed': 50, 'quality': 100, 'optimize': False, 'auto_refresh': True}
2015-09-17 13:46:35,952 send_delayed_regions: bytes_cost=295685, bytes_threshold=174339, pixel_count=290565
2015-09-17 13:46:35,952 send_delayed_regions: using full window update 587x495 with webp
2015-09-17 13:46:35,953 process_damage_regions: wid=2, adding pixel data to encode queue (587x495 - webp), elapsed time: 2.9 ms, request time: 0.4 ms
2015-09-17 13:46:35,954 make_data_packet: image=XShmImageWrapper(BGRX: 0, 0, 587, 495), damage data: (2, 0, 0, 587, 495, 'webp')
2015-09-17 13:46:35,955 rgb_reformat: converting XShmImageWrapper(BGRX: 0, 0, 587, 495) from BGRX to RGB using PIL
2015-09-17 13:46:35,957 rgb_reformat(XShmImageWrapper(RGB: 0, 0, 587, 495), ['RGB', 'RGBX', 'RGBA'], True) converted from BGRX (1162260 bytes) to RGB (871695 bytes) in 3.6ms, rowstride=1761
2015-09-17 13:46:35,958 using PIL fallback for webp: enc_webp=<module 'xpra.codecs.webp.encode' from '/usr/lib64/python2.7/site-packages/xpra/codecs/webp/encode.so'>, stride=1761, pixel format=RGB
2015-09-17 13:46:35,991 compress:  37.6ms for  587x495  pixels for wid=2     using  webp with ratio   2.4% ( 1135KB to    27KB), client_options={'quality': 99}
2015-09-17 13:46:35,992 free_image_wrapper(XShmImageWrapper(RGB: 0, 0, 587, 495)) thread_safe=0
2015-09-17 13:46:35,993 auto-refresh webp packet sent
2015-09-17 13:46:36,013 packet decoding sequence 487 for window 2: 587x495 took 18.7ms
2015-09-17 13:46:36,806 update_quality() suspended=False, mmap=None, encoding=h264
2015-09-17 13:46:36,807 update_quality() info={'backlog_factor': 100, 'latency_factor': 2752, 'min_quality': 30, 'batch_factor': 102}, quality=99
2015-09-17 13:46:36,808 update_speed() info={'damage_latency.target': 35, 'damage_latency.abs_factor': 0, 'frame_delay': 0, 'mpixels': 0, 'low_limit': 290565, 'decoding_latency.target': 8000000, 'damage_latency.rel_factor': 55, 'decoding_latency.factor': 53, 'min_speed': 0, 'damage_latency.avg': 34, 'damage_latency.ref': 35}, speed=54
2015-09-17 13:46:36,809 update_encoding_options(False) want_alpha=False, lossless threshold: 85 / 20, small_as_rgb=16220, get_best_encoding=<bound method WindowVideoSource.get_best_encoding_video of WindowVideoSource(2 : (587, 495))>
  1. Minimized both xterm and browser window. Clicking on the xpra icon on Docs did nothing, and gave the following logs on server side.
2015-09-17 13:48:51,554 cancel_damage() wid=1, dropping delayed region None, 0 queued encodes, and all sequences up to 395
2015-09-17 13:48:51,557 cancel_damage() wid=2, dropping delayed region None, 0 queued encodes, and all sequences up to 565
2015-09-17 13:48:51,559 cancel_damage() wid=1, dropping delayed region None, 0 queued encodes, and all sequences up to 395
2015-09-17 13:48:51,560 damage(<WindowModel object at 0x7fe0ec157dc0 (xpra+x11+gtk2+models+window+WindowModel at 0x1e54060)>, 0, 0, 499, 316, {'quality': 100})
2015-09-17 13:48:51,561 damage(0, 0, 499, 316, {'quality': 100}) wid=1, sending now with sequence 395
2015-09-17 13:48:51,562 get_default_window_icon() using ('xterm', 'XTerm')
2015-09-17 13:48:51,563 <gtk.IconTheme object at 0x7fe0dc1d0e60 (GtkIconTheme at 0x1f9e060)>.lookup_icon(xterm)=None
2015-09-17 13:48:51,564 cancel_damage() wid=2, dropping delayed region None, 0 queued encodes, and all sequences up to 565
2015-09-17 13:48:51,564 damage(<WindowModel object at 0x7fe0dc201640 (xpra+x11+gtk2+models+window+WindowModel at 0x1fb9a40)>, 0, 0, 587, 495, {'quality': 100})
2015-09-17 13:48:51,564 damage(0, 0, 587, 495, {'quality': 100}) wid=2, sending now with sequence 565
2015-09-17 13:48:51,569 process_damage_regions: wid=1, adding pixel data to encode queue (499x316 - png), elapsed time: 8.4 ms, request time: 2.3 ms
2015-09-17 13:48:51,570 make_data_packet: image=XShmImageWrapper(BGRX: 0, 0, 499, 316), damage data: (1, 0, 0, 499, 316, 'png')
2015-09-17 13:48:51,577 process_damage_regions: wid=2, adding pixel data to encode queue (587x495 - png), elapsed time: 13.4 ms, request time: 3.0 ms
2015-09-17 13:48:51,590 compress:  19.0ms for  499x316  pixels for wid=1     using   png with ratio   2.4% (  615KB to    14KB), client_options={'compress_level': 3}
2015-09-17 13:48:51,590 free_image_wrapper(XShmImageWrapper(BGRX: 0, 0, 499, 316)) thread_safe=0
2015-09-17 13:48:51,591 auto refresh:   png screen update (quality=100), nothing to do (region=rectangle[0, 0, 499, 316], refresh regions=[])
2015-09-17 13:48:51,591 make_data_packet: image=XShmImageWrapper(BGRX: 0, 0, 587, 495), damage data: (2, 0, 0, 587, 495, 'png')
2015-09-17 13:48:51,599 packet decoding sequence 395 for window 1: 499x316 took 6.2ms
2015-09-17 13:48:51,600 update_quality() suspended=False, mmap=None, encoding=h264
2015-09-17 13:48:51,601 update_quality() info={'backlog_factor': 100, 'latency_factor': 9233, 'min_quality': 30, 'batch_factor': 102}, quality=99
2015-09-17 13:48:51,601 update_speed() info={'damage_latency.target': 35, 'damage_latency.abs_factor': 0, 'frame_delay': 0, 'mpixels': 0, 'low_limit': 157684, 'decoding_latency.target': 8000000, 'damage_latency.rel_factor': 23, 'decoding_latency.factor': 31, 'min_speed': 0, 'damage_latency.avg': 21, 'damage_latency.ref': 35}, speed=32
2015-09-17 13:48:51,601 update_encoding_options(False) want_alpha=False, lossless threshold: 81 / 20, small_as_rgb=5068, get_best_encoding=<bound method WindowVideoSource.get_best_encoding_video of WindowVideoSource(1 : (499, 316))>
2015-09-17 13:48:51,615 compress:  23.6ms for  587x495  pixels for wid=2     using   png with ratio   3.8% ( 1135KB to    43KB), client_options={'compress_level': 3}
2015-09-17 13:48:51,615 free_image_wrapper(XShmImageWrapper(BGRX: 0, 0, 587, 495)) thread_safe=0
2015-09-17 13:48:51,615 auto refresh:   png screen update (quality=100), nothing to do (region=rectangle[0, 0, 587, 495], refresh regions=[])
2015-09-17 13:48:51,626 packet decoding sequence 565 for window 2: 587x495 took 9.2ms
2015-09-17 13:48:52,602 update_quality() suspended=False, mmap=None, encoding=h264
2015-09-17 13:48:52,603 update_quality() info={'backlog_factor': 100, 'latency_factor': 8687, 'min_quality': 30, 'batch_factor': 102}, quality=99
2015-09-17 13:48:52,603 update_speed() info={'damage_latency.target': 35, 'damage_latency.abs_factor': 1, 'frame_delay': 1, 'mpixels': 0, 'low_limit': 290565, 'decoding_latency.target': 8000000, 'damage_latency.rel_factor': 51, 'decoding_latency.factor': 25, 'min_speed': 0, 'damage_latency.avg': 37, 'damage_latency.ref': 35}, speed=50
2015-09-17 13:48:52,603 update_encoding_options(False) want_alpha=False, lossless threshold: 85 / 20, small_as_rgb=5068, get_best_encoding=<bound method WindowVideoSource.get_best_encoding_video of WindowVideoSource(2 : (587, 495))>

Attached the information gathered from ----> xpra info :13 | grep window -----> ticket965_grep_window_info.txt

and

Attached the information gathered during the entire session -----> ticket965_window_info.txt

Please let me know if there is any other debugging flag that I could make use of. Will be happy to provide you the info.


Thu, 17 Sep 2015 21:59:17 GMT - pvenkateswaralu: attachment set


Thu, 17 Sep 2015 21:59:38 GMT - pvenkateswaralu: attachment set


Fri, 18 Sep 2015 09:15:39 GMT - Antoine Martin: attachment set

try to use the NSApplicationDidBecomeActive signal to restore the windows


Fri, 18 Sep 2015 09:39:39 GMT - Antoine Martin: keywords, status, component, milestone changed; version deleted

In all the below mentioned cases, the client side gave no logs.


That's impossible, you must be doing something wrong. Please ask afarr to help.


The patch above attempts to use the NSApplicationDidBecomeActive signal to trigger un-minimize. It does sort-of-work, but has an undesirable side effect: "become-active" fires every time we focus one of our windows (not just when we click on the dock) and so we end up restoring the windows too often.

No easy way to fix that since the other signals are not exposed via GtkosxApplication.

Links:

I don't have time for this in this release though. Re-scheduling.


Fri, 18 Sep 2015 23:13:41 GMT - pvenkateswaralu: status changed

With the above mentioned patch, I tested the issue with -d focus and this is what I observed----

Case 1 Don't have focus on xpra, and just minimize the xpra windows. Click on xpra icon from the OSX dock. This will restore xpra windows

Client Logs:

2015-09-18 15:51:14,448 UI thread is now blocked
2015-09-18 15:51:14,449 focus-in-event for wid=1
2015-09-18 15:51:14,449 GLClientWindow(1 : gtk2.GLWindowBacking(1, (499, 316), None)) focus_change((ClientWindow(1), <GParamBoolean 'has-toplevel-focus'>)) has-toplevel-focus=True, _been_mapped=True
2015-09-18 15:51:14,449 update_focus(1, True) focused=None, grabbed=None
2015-09-18 15:51:14,450 send_focus(1)
2015-09-18 15:51:14,471 UI thread is running again, resuming
2015-09-18 15:51:14,471 focus-out-event for wid=1
2015-09-18 15:51:14,471 GLClientWindow(1 : gtk2.GLWindowBacking(1, (499, 316), None)) focus_change((ClientWindow(1), <GParamBoolean 'has-toplevel-focus'>)) has-toplevel-focus=False, _been_mapped=True
2015-09-18 15:51:14,471 update_focus(1, False) focused=1, grabbed=None
2015-09-18 15:51:14,473 focus-in-event for wid=2
2015-09-18 15:51:14,473 GLClientWindow(2 : gtk2.GLWindowBacking(2, (590, 362), YUV444P)) focus_change((ClientWindow(2), <GParamBoolean 'has-toplevel-focus'>)) has-toplevel-focus=True, _been_mapped=True
2015-09-18 15:51:14,473 update_focus(2, True) focused=None, grabbed=None
2015-09-18 15:51:14,474 send_focus(2)
2015-09-18 15:51:14,519 re-starting speaker because of overrun
2015-09-18 15:51:14,519 GLClientWindow(1 : gtk2.GLWindowBacking(1, (499, 316), None)) focus_change(('initial',)) has-toplevel-focus=False, _been_mapped=True
2015-09-18 15:51:14,519 update_focus(1, False) focused=2, grabbed=None
2015-09-18 15:51:14,519 window 1 lost a focus it did not have!? (simulating focus before losing it)
2015-09-18 15:51:14,519 send_focus(1)
2015-09-18 15:51:14,520 GLClientWindow(2 : gtk2.GLWindowBacking(2, (590, 362), YUV444P)) focus_change(('initial',)) has-toplevel-focus=True, _been_mapped=True
2015-09-18 15:51:14,520 update_focus(2, True) focused=None, grabbed=None
2015-09-18 15:51:14,521 send_focus(2)
** Message: pygobject_register_sinkfunc is deprecated (GstObject)
2015-09-18 15:51:17,007 sound-sink using audio codec: MPEG 1 Audio, Layer 3 (MP3)
2015-09-18 15:51:21,870 focus-out-event for wid=2
2015-09-18 15:51:21,871 GLClientWindow(2 : gtk2.GLWindowBacking(2, (590, 362), YUV444P)) focus_change((ClientWindow(2), <GParamBoolean 'has-toplevel-focus'>)) has-toplevel-focus=False, _been_mapped=True
2015-09-18 15:51:21,871 update_focus(2, False) focused=2, grabbed=None
2015-09-18 15:51:21,892 send_focus(0)

Server Logs:

2015-09-18 15:51:14,270 process_focus: wid=1
2015-09-18 15:51:14,271 focus wid=1 has_focus=1
2015-09-18 15:51:14,297 process_focus: wid=2
2015-09-18 15:51:14,298 focus wid=2 has_focus=1
2015-09-18 15:51:14,298 focus: giving focus to <WindowModel object at 0x7f1efc5214b0 (xpra+x11+gtk2+models+window+WindowModel at 0x22b4660)>
2015-09-18 15:51:14,299 focus: will set modified mask to ('mod2',)
2015-09-18 15:51:14,300 Giving focus to %#x
2015-09-18 15:51:14,300 ... using XSetInputFocus
2015-09-18 15:51:14,341 process_focus: wid=1
2015-09-18 15:51:14,342 focus wid=1 has_focus=2
2015-09-18 15:51:14,342 focus: giving focus to <WindowModel object at 0x7f1f04067e60 (xpra+x11+gtk2+models+window+WindowModel at 0x2259f00)>
2015-09-18 15:51:14,342 focus: will set modified mask to ('mod2',)
2015-09-18 15:51:14,343 process_focus: wid=2
2015-09-18 15:51:14,343 focus wid=2 has_focus=1
2015-09-18 15:51:14,343 focus: giving focus to <WindowModel object at 0x7f1efc5214b0 (xpra+x11+gtk2+models+window+WindowModel at 0x22b4660)>
2015-09-18 15:51:14,343 focus: will set modified mask to ('mod2',)
2015-09-18 15:51:14,345 Giving focus to %#x
2015-09-18 15:51:14,345 ... using XSetInputFocus
2015-09-18 15:51:14,351 Giving focus to %#x
2015-09-18 15:51:14,351 ... using XSetInputFocus
2015-09-18 15:51:14,607 using pulseaudio device:
2015-09-18 15:51:14,607  'Monitor of Dummy Output'
2015-09-18 15:51:21,712 process_focus: wid=0
2015-09-18 15:51:21,712 focus wid=0 has_focus=2
2015-09-18 15:51:21,713 reset_focus() 2 / <WindowModel object at 0x7f1efc5214b0 (xpra+x11+gtk2+models+window+WindowModel at 0x22b4660)> had focus (toplevel=WorldWindow(0x40001e))
2015-09-18 15:51:21,713 reset_x_focus: widget with focus: None
2015-09-18 15:51:21,714 Take Focus -> world window
2015-09-18 15:51:21,715 sending WM_TAKE_FOCUS: 0x40001e, X11 timestamp=612510867L

Attached the relevant info grabbed during the session --- ticket965_restore_without_focus.txt

=========================================================================================================================================================

Case 2

Have the focus on xpra and minimize xpra windows. Click on xpra icon from the OSX dock. This will not restore xpra windows

Client Logs:

2015-09-18 15:54:47,297 focus-in-event for wid=1
2015-09-18 15:54:47,297 GLClientWindow(1 : gtk2.GLWindowBacking(1, (499, 316), None)) focus_change((ClientWindow(1), <GParamBoolean 'has-toplevel-focus'>)) has-toplevel-focus=True, _been_mapped=True
2015-09-18 15:54:47,298 update_focus(1, True) focused=None, grabbed=None
2015-09-18 15:54:47,298 send_focus(1)
2015-09-18 15:54:47,328 GLClientWindow(1 : gtk2.GLWindowBacking(1, (499, 316), None)) focus_change(('initial',)) has-toplevel-focus=True, _been_mapped=True
2015-09-18 15:54:47,328 update_focus(1, True) focused=1, grabbed=None
2015-09-18 15:54:47,328 GLClientWindow(2 : gtk2.GLWindowBacking(2, (590, 362), YUV444P)) focus_change(('initial',)) has-toplevel-focus=False, _been_mapped=True
2015-09-18 15:54:47,329 update_focus(2, False) focused=1, grabbed=None
2015-09-18 15:54:47,329 window 2 lost a focus it did not have!? (simulating focus before losing it)
2015-09-18 15:54:47,329 send_focus(2)
2015-09-18 15:54:47,350 send_focus(0)
2015-09-18 15:54:50,797 focus-out-event for wid=1
2015-09-18 15:54:50,798 GLClientWindow(1 : gtk2.GLWindowBacking(1, (499, 316), None)) focus_change((ClientWindow(1), <GParamBoolean 'has-toplevel-focus'>)) has-toplevel-focus=False, _been_mapped=True
2015-09-18 15:54:50,798 update_focus(1, False) focused=None, grabbed=None
2015-09-18 15:54:50,811 focus-in-event for wid=2
2015-09-18 15:54:50,811 GLClientWindow(2 : gtk2.GLWindowBacking(2, (590, 362), YUV444P)) focus_change((ClientWindow(2), <GParamBoolean 'has-toplevel-focus'>)) has-toplevel-focus=True, _been_mapped=True
2015-09-18 15:54:50,812 update_focus(2, True) focused=None, grabbed=None
2015-09-18 15:54:50,812 send_focus(2)
2015-09-18 15:54:53,445 focus-out-event for wid=2
2015-09-18 15:54:53,446 GLClientWindow(2 : gtk2.GLWindowBacking(2, (590, 362), YUV444P)) focus_change((ClientWindow(2), <GParamBoolean 'has-toplevel-focus'>)) has-toplevel-focus=False, _been_mapped=True
2015-09-18 15:54:53,446 update_focus(2, False) focused=2, grabbed=None
2015-09-18 15:54:53,478 send_focus(0)
2015-09-18 15:55:02,112 _unfocus() wid=3, focused=None

Server Logs:

Sever —— 2015-09-18 15:54:47,114 process_focus: wid=1
2015-09-18 15:54:47,115 focus wid=1 has_focus=0
2015-09-18 15:54:47,115 focus: giving focus to <WindowModel object at 0x7f1f04067e60 (xpra+x11+gtk2+models+window+WindowModel at 0x2259f00)>
2015-09-18 15:54:47,115 focus: will set modified mask to ('mod2',)
2015-09-18 15:54:47,116 Giving focus to %#x
2015-09-18 15:54:47,117 ... using XSetInputFocus
2015-09-18 15:54:47,142 process_focus: wid=2
2015-09-18 15:54:47,143 focus wid=2 has_focus=1
2015-09-18 15:54:47,143 focus: giving focus to <WindowModel object at 0x7f1efc5214b0 (xpra+x11+gtk2+models+window+WindowModel at 0x22b4660)>
2015-09-18 15:54:47,143 focus: will set modified mask to ('mod2',)
2015-09-18 15:54:47,144 Giving focus to %#x
2015-09-18 15:54:47,145 ... using XSetInputFocus
2015-09-18 15:54:47,163 process_focus: wid=0
2015-09-18 15:54:47,163 focus wid=0 has_focus=2
2015-09-18 15:54:47,163 reset_focus() 2 / <WindowModel object at 0x7f1efc5214b0 (xpra+x11+gtk2+models+window+WindowModel at 0x22b4660)> had focus (toplevel=WorldWindow(0x40001e))
2015-09-18 15:54:47,164 reset_x_focus: widget with focus: None
2015-09-18 15:54:47,164 Take Focus -> world window
2015-09-18 15:54:47,165 sending WM_TAKE_FOCUS: 0x40001e, X11 timestamp=612716316L
2015-09-18 15:54:50,626 process_focus: wid=2
2015-09-18 15:54:50,627 focus wid=2 has_focus=0
2015-09-18 15:54:50,627 focus: giving focus to <WindowModel object at 0x7f1efc5214b0 (xpra+x11+gtk2+models+window+WindowModel at 0x22b4660)>
2015-09-18 15:54:50,628 focus: will set modified mask to ('mod1', 'mod2')
2015-09-18 15:54:50,631 Giving focus to %#x
2015-09-18 15:54:50,631 ... using XSetInputFocus
2015-09-18 15:54:53,291 process_focus: wid=0
2015-09-18 15:54:53,292 focus wid=0 has_focus=2
2015-09-18 15:54:53,292 reset_focus() 2 / <WindowModel object at 0x7f1efc5214b0 (xpra+x11+gtk2+models+window+WindowModel at 0x22b4660)> had focus (toplevel=WorldWindow(0x40001e))
2015-09-18 15:54:53,293 reset_x_focus: widget with focus: None
2015-09-18 15:54:53,293 Take Focus -> world window
2015-09-18 15:54:53,294 sending WM_TAKE_FOCUS: 0x40001e, X11 timestamp=612722446L

Attached the relevant info grabbed during the session --- ticket965_restore_focus.txt

Please let me know if there is any other debugging flag I could use to fetch you the logs.


Fri, 18 Sep 2015 23:15:23 GMT - pvenkateswaralu: attachment set


Fri, 18 Sep 2015 23:16:04 GMT - pvenkateswaralu: attachment set


Sat, 19 Sep 2015 03:04:42 GMT - Antoine Martin:

Like I said above, it only sort-of works and I don't have time for this in this release though. Re-scheduling. for 0.17. There are things that are scheduled for 0.16 and are actually ready for testing, this is not one of them.


Wed, 16 Mar 2016 05:50:36 GMT - Antoine Martin: status changed

Asked the gtk-osx user mailing list: https://mail.gnome.org/archives/gtk-osx-users-list/2016-March/msg00024.html.


Thu, 17 Mar 2016 15:42:13 GMT - Antoine Martin: attachment set

work in progress patch


Thu, 17 Mar 2016 15:47:07 GMT - Antoine Martin:

This reply https://github.com/quodlibet/quodlibet/blob/master/quodlibet/quodlibet/__init__.py#L678.

The patch above copies that code and adds it to the osx platform gui hooks class.

Still TODO:


Fri, 18 Mar 2016 11:43:08 GMT - Antoine Martin: owner, status changed

Done in r12162, ready for testing. (probably worth double checking #1137, maybe this has helped?)

This could be considered for backports.


Sun, 20 Mar 2016 08:19:51 GMT - Antoine Martin:

Applied to v0.16.x in r12187.


Thu, 24 Mar 2016 20:42:48 GMT - J. Max Mena:

Tested with r12162:

I get the following output from the client (Of course I got it a lot since I clicked....quite a few times to be sure.)

2016-03-24 13:46:26.980 Xpra[28730:6595163] <type 'exceptions.AttributeError'>: 'XpraClient' object has no attribute 'deiconify_windows'
2016-03-24 13:46:33.926 Xpra[28730:6595163] <type 'exceptions.AttributeError'>: 'XpraClient' object has no attribute 'deiconify_windows'
2016-03-24 13:46:34.381 Xpra[28730:6595163] <type 'exceptions.AttributeError'>: 'XpraClient' object has no attribute 'deiconify_windows'
2016-03-24 13:46:34.550 Xpra[28730:6595163] <type 'exceptions.AttributeError'>: 'XpraClient' object has no attribute 'deiconify_windows'
2016-03-24 13:46:34.725 Xpra[28730:6595163] <type 'exceptions.AttributeError'>: 'XpraClient' object has no attribute 'deiconify_windows'
2016-03-24 13:46:37.264 Xpra[28730:6595163] <type 'exceptions.AttributeError'>: 'XpraClient' object has no attribute 'deiconify_windows'
2016-03-24 13:46:37.430 Xpra[28730:6595163] <type 'exceptions.AttributeError'>: 'XpraClient' object has no attribute 'deiconify_windows'
2016-03-24 13:46:37.791 Xpra[28730:6595163] <type 'exceptions.AttributeError'>: 'XpraClient' object has no attribute 'deiconify_windows'
2016-03-24 13:46:37.965 Xpra[28730:6595163] <type 'exceptions.AttributeError'>: 'XpraClient' object has no attribute 'deiconify_windows'
2016-03-24 13:46:38.126 Xpra[28730:6595163] <type 'exceptions.AttributeError'>: 'XpraClient' object has no attribute 'deiconify_windows'

Also not sure if I should give you anything more specific. Is there an OSX equivalent to -d win32?


Fri, 25 Mar 2016 03:16:54 GMT - Antoine Martin: owner changed

Very odd. Maybe the packaging got messed up.

I've tested and uploaded a new build (no changes in this area..), maybe that will work better for you.


Fri, 25 Mar 2016 19:23:37 GMT - J. Max Mena: owner changed

Tested it with the new r12211 Build:

Passing back to you for now.


Sat, 26 Mar 2016 04:14:50 GMT - Antoine Martin: status changed; resolution set

Closing - this may get backported at some point.


Tue, 29 Mar 2016 07:19:28 GMT - Antoine Martin:

This code was changed a bit, see ticket:1137#comment:2.


Sat, 23 Jan 2021 05:11:04 GMT - migration script:

this ticket has been moved to: https://github.com/Xpra-org/xpra/issues/965