zocker-160 / pyQVNCWidget

VNC Widget for Python using PyQt5
GNU General Public License v3.0
14 stars 7 forks source link

Support for Qt5 QPA VNC server plugin #7

Closed p0ssi closed 7 months ago

p0ssi commented 7 months ago

While connecting to a Qt5 application redirected to Qt5 QPA VNC server plugin, it turned out that the server refuses to transmit FramebufferUpdate messages unless SetEncodings is sent.

Additionally, VNC plugin reporting version 3.3 revealed a typo in the KNOWN_VERSIONS list

zocker-160 commented 7 months ago

First thank you for this PR, the typo is so stupid I cannot believe I have not noticed that in 3 years.....

As for the other change, I am willing to merge this, but I am a bit confused for two reasons:

  1. can you confirm that the addition after line 87 does actually do anything, because you are inside the QVNCWidgetGL class which is not exposed by this module default import: https://github.com/zocker-160/pyQVNCWidget/blob/68ab6de91d3a254b8c72dcf944a0b72d1888c00f/qvncwidget/__init__.py#L1

  2. If I understood it correctly, according to RFC6143 Section 7.5.2

    Pixel data may always be sent in raw encoding even if not specified explicitly here.

sounds to me that this explicit call should not be necessary.

Can you confirm that when using the QPA VNC plugin that the communication just stops and no error is logged (like "Unsupported encoding received")?

zocker-160 commented 7 months ago

ok after some testing I can confirm that QPA VNC does indeed require sending of the encodings package for some reason.

I will however refactor this part of the code a bit, because I think this implementation detail should not be exposed to the Widget class itself, so it will carry over to any other custom widget implementation as well.

Thank you!

p0ssi commented 7 months ago

Feel free to revise as needed. Looks like it was my turn to make a stupid mistake in misplacing a single-line change.

The RFC makes clear statement that the raw encoding must be always supported. I'd primarily blame Qt interpretation.

I think the old filosophy in implementing protocols applies here as well - you should be absolutely strict on what you do, but be prepared to take whatever crap the other end thows at you.

zocker-160 commented 7 months ago

Agreed, I need to check QT source of the VNC implementation and report an issue if they still have it that way in their current master branch.

(This is just a minor issue though compared to what nonsense RealVNC is pulling with version 5.x.)

Your and a few additional changes are now available as 0.3.4 (PyPi just got updated as well),