Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Some asynchronous updates lost #10153

Open
RolKau opened this issue Apr 29, 2024 · 1 comment
Open

Some asynchronous updates lost #10153

RolKau opened this issue Apr 29, 2024 · 1 comment
Milestone

Comments

@RolKau
Copy link
Contributor

RolKau commented Apr 29, 2024

If I connect using the options given by the command-line:

xfreerdp +async-update /cache:bitmap:on,offscreen:on,glyph:on /f /gfx:avc444,progressive:on /network:broadband

some updates seems to be dropped, leading to visual glitches where the old content is left behind instead of being replaced. This typically happens when cycling between partially overlapping windows.

Remote end: xrdp v0.9.23.1, with xorgxrdp v0.2.19, on Ubuntu 20.04
Local end: xfreerdp v3.5.1, compiled with libh264 v2.4.1, on Ubuntu 20.04

All versions from 3.1.0 exhibit this behaviour, but 3.0.0 does not. If I remove the +async-update flag, the artifacts disappear, but it appears to take a little longer to finish an update of the screen.

xfreerdp +buildconfig | sed -n "/^Build configuration/{s/\ /\n/2g;p}" gives:

Build configuration:
BUILD_TESTING=OFF
WINPR_HAVE_AIO_H=1
WINPR_HAVE_EXECINFO_BACKTRACE=1
WINPR_HAVE_EXECINFO_BACKTRACE_SYMBOLS=1
WINPR_HAVE_EXECINFO_BACKTRACE_SYMBOLS_FD=1
WINPR_HAVE_EXECINFO_HEADER=1
WINPR_HAVE_FCNTL_H=1
WINPR_HAVE_GETLOGIN_R=1
WINPR_HAVE_GETPWUID_R=1
WINPR_HAVE_INTTYPES_H=1
WINPR_HAVE_POLL_H=1
WINPR_HAVE_PTHREAD_MUTEX_TIMEDLOCK_LIB=1
WINPR_HAVE_PTHREAD_MUTEX_TIMEDLOCK_LIBS=
WINPR_HAVE_PTHREAD_MUTEX_TIMEDLOCK_SYMBOL=1
WINPR_HAVE_STDBOOL_H=1
WINPR_HAVE_STDINT_H=1
WINPR_HAVE_STRNDUP=1
WINPR_HAVE_SYSLOG_H=1
WINPR_HAVE_SYS_EVENTFD_H=1
WINPR_HAVE_SYS_FILIO_H=
WINPR_HAVE_SYS_SELECT_H=1
WINPR_HAVE_SYS_SOCKIO_H=
WINPR_HAVE_SYS_TIMERFD_H=1
WINPR_HAVE_TM_GMTOFF=1
WINPR_HAVE_UNISTD_H=1
WINPR_HAVE_UNWIND_H=1
WITH_AAD=OFF
WITH_ABSOLUTE_PLUGIN_LOAD_PATHS=ON
WITH_ADD_PLUGIN_TO_RPATH=OFF
WITH_ALSA=ON
WITH_BINARY_VERSIONING=OFF
WITH_CAIRO=ON
WITH_CCACHE=OFF
WITH_CHANNELS=ON
WITH_CLANG_FORMAT=OFF
WITH_CLIENT=ON
WITH_CLIENT_AVAILABLE=1
WITH_CLIENT_CHANNELS=ON
WITH_CLIENT_CHANNELS_AVAILABLE=1
WITH_CLIENT_COMMON=ON
WITH_CLIENT_INTERFACE=OFF
WITH_CLIENT_SDL=OFF
WITH_CLIENT_SDL_AVAILABLE=1
WITH_CUPS=ON
WITH_DEBUG_ALL=OFF
WITH_DEBUG_CAPABILITIES=OFF
WITH_DEBUG_CERTIFICATE=OFF
WITH_DEBUG_CHANNELS=OFF
WITH_DEBUG_CLIPRDR=OFF
WITH_DEBUG_CODECS=OFF
WITH_DEBUG_DVC=OFF
WITH_DEBUG_EVENTS=OFF
WITH_DEBUG_KBD=OFF
WITH_DEBUG_LICENSE=OFF
WITH_DEBUG_MUTEX=OFF
WITH_DEBUG_NEGO=OFF
WITH_DEBUG_NLA=OFF
WITH_DEBUG_NTLM=OFF
WITH_DEBUG_RAIL=OFF
WITH_DEBUG_RDP=OFF
WITH_DEBUG_RDPDR=OFF
WITH_DEBUG_RDPEI=OFF
WITH_DEBUG_RDPGFX=OFF
WITH_DEBUG_REDIR=OFF
WITH_DEBUG_RFX=OFF
WITH_DEBUG_RINGBUFFER=OFF
WITH_DEBUG_SCARD=OFF
WITH_DEBUG_SCHANNEL=OFF
WITH_DEBUG_SND=OFF
WITH_DEBUG_SVC=OFF
WITH_DEBUG_SYMBOLS=OFF
WITH_DEBUG_THREADS=OFF
WITH_DEBUG_TIMEZONE=OFF
WITH_DEBUG_TRANSPORT=OFF
WITH_DEBUG_TSG=OFF
WITH_DEBUG_TSMF=OFF
WITH_DEBUG_TSMF_AVAILABLE=0
WITH_DEBUG_URBDRC=OFF
WITH_DEBUG_WND=OFF
WITH_DEBUG_X11=OFF
WITH_DEBUG_X11_LOCAL_MOVESIZE=OFF
WITH_DEBUG_XV=OFF
WITH_DSP_EXPERIMENTAL=OFF
WITH_DSP_FFMPEG=ON
WITH_DSP_FFMPEG_AVAILABLE=1
WITH_EVENTFD_READ_WRITE=1
WITH_FAAC=ON
WITH_FAAD=ON
WITH_FAAD2=OFF
WITH_FFMPEG=ON
WITH_FREERDP_DEPRECATED=OFF
WITH_FREERDP_DEPRECATED_COMMANDLINE=OFF
WITH_FUSE=ON
WITH_GFX_H264=ON
WITH_GPROF=OFF
WITH_GSM=OFF
WITH_GSTREAMER_1_0=ON
WITH_INTERNAL_MD4=OFF
WITH_INTERNAL_MD5=OFF
WITH_INTERNAL_RC4=OFF
WITH_JPEG=OFF
WITH_KRB5=OFF
WITH_LAME=OFF
WITH_LIBRARY_VERSIONING=ON
WITH_LIBRESSL=OFF
WITH_LODEPNG=OFF
WITH_MACAUDIO=OFF
WITH_MACAUDIO_AVAILABLE=0
WITH_MANPAGES=ON
WITH_MBEDTLS=OFF
WITH_NATIVE_SSPI=OFF
WITH_NEON=OFF
WITH_OPENCL=OFF
WITH_OPENH264=TRUE
WITH_OPENH264=TRUE
WITH_OPENH264_LOADING=OFF
WITH_OPENSSL=ON
WITH_OPUS=OFF
WITH_OSS=ON
WITH_PCSC=ON
WITH_PKCS11=OFF
WITH_POLL=ON
WITH_PROFILER=OFF
WITH_PROXY_MODULES=OFF
WITH_PULSE=ON
WITH_SAMPLE=ON
WITH_SANITIZE_ADDRESS=OFF
WITH_SANITIZE_ADDRESS_AVAILABLE=1
WITH_SANITIZE_MEMORY=OFF
WITH_SANITIZE_MEMORY_AVAILABLE=1
WITH_SANITIZE_THREAD=OFF
WITH_SANITIZE_THREAD_AVAILABLE=1
WITH_SERVER=OFF
WITH_SERVER_INTERFACE=ON
WITH_SMARTCARD_EMULATE=ON
WITH_SMARTCARD_INSPECT=OFF
WITH_SMARTCARD_PCSC=ON
WITH_SOXR=OFF
WITH_SSE2=OFF
WITH_SWSCALE=ON
WITH_SYSTEMD=ON
WITH_THIRD_PARTY=OFF
WITH_UNICODE_BUILTIN=OFF
WITH_URIPARSER=OFF
WITH_VAAPI=OFF
WITH_VAAPI_AVAILABLE=1
WITH_VALGRIND_MEMCHECK=OFF
WITH_VALGRIND_MEMCHECK_AVAILABLE=1
WITH_VERBOSE_WINPR_ASSERT=ON
WITH_VIDEO_FFMPEG=ON
WITH_VIDEO_FFMPEG_AVAILABLE=1
WITH_WAYLAND=OFF
WITH_WINPR_DEPRECATED=OFF
WITH_WINPR_TOOLS=ON
WITH_X11=ON
WITH_XCURSOR=ON
WITH_XEXT=ON
WITH_XFIXES=ON
WITH_XI=ON
WITH_XINERAMA=ON
WITH_XRANDR=ON
WITH_XRENDER=ON
WITH_XV=ON
@akallabeth akallabeth added this to the next-3.0 milestone Apr 30, 2024
@akallabeth
Copy link
Member

most likely a sync issue:
with +async-update BeginPaint and EndPaint are processed in a separate thread.
we´ve fixed a bug in 3.1.0 that did not reset the damage area after EndPaint / before BeginPaint so that might be the reason.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants