Closed ToppDev closed 1 year ago
@TijZwa have you seen this?
@ToppDev Can you also post a screenshot of the developer console in Chrome? Does it report any errors?
Misread the issue; it happens when using browsers other then Chrome. I can reproduce.
Yes it is 2 things happening
but both things are solved by disabling offscreen decoding
Here a video and chrome console log for the freezing behavior.
Thanks! The issue while freezing is a throttle package not being handled the way it should. Throttle packages are queued when the VideoDecoder pipeline is not keeping up. VideoDecoder only works with chrome and secure context (localhost or SSL). Let me fix that.
As for the firefox issue: I can reproduce the issue.
@ToppDev Does PR #213 fixes the chrome issue?
Yes, the fix for chrome is working. The windows stay responsive
Cool. @totaam: Please check out the video. This filemanger is sending videoframes (as the throttle package only comes from VideoDecoder)
As for Firefox; the whole offscreen pipeline is changed since version 105. (https://www.mozilla.org/en-US/firefox/105.0/releasenotes/)
Support for the Offscreen Canvas DOM API with full context and font support. The OffscreenCanvas API provides a canvas that can be rendered off-screen in both Window and Web Worker contexts. I'm on Fedora 37 which has Firefox 107. @TijZwa does this mean that we need to disable offscreen decoding on Firefox? Or just for some versions?
As for thunar
sending video frames, perhaps we need to add a text
file mapping to https://github.com/Xpra-org/xpra/blob/master/fs/etc/xpra/content-type/50_class.conf
@TijZwa does this mean that we need to disable offscreen decoding on Firefox? Or just for some versions?
Yes, that is the safest bet for now. I did this in PR #215 @ToppDev Firefox should not flicker anymore, but the performance might be worse than Chrome.
@totaam I think we should focus on moving the paint logic to WebGL instead of fixing this issue for Firefox.
I tried to test it, Firefox does not let me edit the files in the Web Developer Tools though. So I tried to manually edit the files on my server under e.g. /usr/share/xpra/www/js/OffscreenDecodeWorker.js
and restarting the xpra and nginx service but my browser still gets the old file versions somehow. (probably the worst approach to test it, but I am not really a web developer)
However, thanks for fixing. I will just wait till the fixes make it into the next release.
@ToppDev you can just wipe /usr/share/xpra/www
and copy all the new html5
source tree there from a fresh git checkout.
(restarting xpra or nginx is a good idea)
@totaam thank you very much, that worked! And also thank you @TijZwa again for fixing this so fast.
Summary
Since updating xpra from
4.3.4-r0-1
to4.4.3-r0-1
and xpra-html5 from5.0-r1276-1
to6.1-r5-1
windows flicker in all browsers except Chrome. Additionally, windows freeze in all browsers after some time (also in Chrome). See screenshots below.offscreen decoding
the flickering is gone and also no freezes.Steps to reproduce
Screenshots
Flickering window on user input (in Firefox)
![Peek 2022-12-14 13-44](https://user-images.githubusercontent.com/17766093/207599188-a108e677-e57e-4243-8909-da5fe59e7f2e.gif)Frozen window (in Chrome)
![Peek 2022-12-14 14-17](https://user-images.githubusercontent.com/17766093/207605984-9753845a-ed69-451b-8484-9dc74b400622.gif)Relevant logs
xpra showconfig (only non-default values)
``` bandwidth-limit (used) = '0'/etc/defaults/xpra
``` BIND_TCP=0.0.0.0:10000 #BIND_TCP=0.0.0.0:80 TCP_AUTH=sqlite:filename=/etc/xpra/xpra-auth.sdb BIND=none AUTH=none HTML=on #DEBUG=auth,proxy,util,x11 #DEBUG=auth,proxy,x11 DEBUG=auth #skip datetime prefix since the log goes to a system logger: XPRA_LOG_FORMAT="%(message)s" #permissions and group ownership of /run/xpra XPRA_SOCKET_DIR_MODE=775 XPRA_SOCKET_DIR_GROUP=xpra ```/usr/lib/systemd/system/xpra.service
``` [Unit] Description=Xpra System Server Wants=avahi-daemon.socket Documentation=https://github.com/Xpra-org/xpra/blob/master/docs/Usage/Service.md man:xpra After=network.target xpra.socket Requires=xpra.socket [Service] Type=simple EnvironmentFile=-/etc/default/xpra ExecStart=/usr/bin/xpra proxy :14500 --daemon=no \ --bind-tcp=${BIND_TCP} --tcp-auth=${TCP_AUTH} \ --socket-dirs=/run/xpra --socket-permissions=666 \ --log-dir=/var/log --pidfile=/run/xpra/proxy.pid --debug=${DEBUG} \ --html=${HTML} SuccessExitStatus=0 143 Restart=on-abnormal PIDFile=/run/xpra/proxy.pid ProtectSystem=strict ReadWritePaths=/run/xpra /tmp #PrivateDevices=true ProtectKernelTunables=true ProtectControlGroups=true [Install] WantedBy=multi-user.target ```Environment info