All are native ones — only VNC on fast hardware in local network and Debian 11:I didn't do a mixed test (R14.1.0 and R14.0.13), just R14.1.0 to R14.1.0. KRDC (vnc) to KRFB did show some slowness in updating, like 500ms or so and it seemed weird to me since this was over a local wifi network. I don't know if R14.0.13 was quicker, you have definitely more experience on this than I have.
1. KRDC(14.0.13) > KRFB(14.1.0) = dead-cycling KRFB without a possibility even connect more
2. KRDC(14.1.0) > KRFB(14.0.13) = very slow KRDC screen with no possibility of closing
And all this works only with 14.0.13.
If you talk that works, I'll see what is happening with krfb in my case.
It is definitely good to look into those issues you highlighted and I think it would also be good to make sure mixed configuration connection (R14.0.13 to R14.1.0 or viceversa) still work.
The switch to standalone libtdevnc was done many years ago in master. I am not sure of the details but in any case if it does not behave as well as R14.0.x we have to look into this, since regressions are not good.
So, the KRFB hungs at wrong passwords and crashes at the session
closing are from one source and that is the thread force closing
and that I have fixed long ago by the patch krfb-crash_at_disconnect.patch
— http://bugs.pearsoncomputing.net/show_bug.cgi?id=2972.
And the performance decreasing is a real regression of the VNC
libraries due to switching to some hungrier compression algorithms
what causes:
• removing support of the "Low quality" in the server library,
when the client one still works and fast;
• high CPU load on server, especially for the "High quality";
• high CPU load on client at enabling the scale.
Once I am going to compare performance of the new libraries in
14.1 and old ones in 14.0 and maybe return the old one at very
high difference taking in account of missing any advantage in the
new ones.
The second patch krfb-new_symbols_appending.patch is for many special symbols support, which are also all symbols different from ASCII-Latin, especially the Cyrillic ones which I can enter only about 10 and next I get only ASCII. This code is missing in the VNC server library, hosted in vncserver and I have adapted it long ago for KRDC with notifying in Bugzilla — http://bugs.pearsoncomputing.net/show_bug.cgi?id=3014
Regards, Roman
--- tdenetwork-trinity-14.1.0/libtdevnc/libvncserver/main.cpp~ 2023-05-17 20:33:17.212805257 +0300 +++ tdenetwork-trinity-14.1.0/libtdevnc/libvncserver/main.cpp 2023-05-17 20:33:29.887210661 +0300 @@ -1098,14 +1098,14 @@ rfbReleaseClientIterator(i); if (mOnHoldClientHandlerThread) { - mOnHoldClientHandlerThread->exit(); + //mOnHoldClientHandlerThread->exit(); delete mOnHoldClientHandlerThread; mOnHoldClientHandlerThread = NULL; delete mOnHoldClientHandler; mOnHoldClientHandler = NULL; } if (mControlPipeHandlerThread) { - mControlPipeHandlerThread->exit(); + //mControlPipeHandlerThread->exit(); delete mControlPipeHandlerThread; mControlPipeHandlerThread = NULL; delete mControlPipeHandler;
--- tdenetwork-trinity-14.0.7/krfb/krfb/rfbcontroller.cpp~ 2020-01-04 08:29:05.255495511 +0200 +++ tdenetwork-trinity-14.0.7/krfb/krfb/rfbcontroller.cpp 2020-01-04 08:28:17.831628202 +0200 @@ -183,14 +183,13 @@ const int KeyboardEvent::RIGHTSHIFT = 2; const int KeyboardEvent::ALTGR = 4; char KeyboardEvent::ModifierState; - -static KeySym added_keysyms[0x100]; +KeySym KeyboardEvent::added_keysyms[0x100]; KeyboardEvent::KeyboardEvent(bool d, KeySym k) : down(d), keySym(k) { - if(k && !IsModifierKey(k)) add_keysym(k); + if(k && !IsModifierKey(k) && XKeysymToKeycode(dpy,k) == NoSymbol) add_keysym(k); } void KeyboardEvent::initKeycodes() { @@ -242,17 +241,18 @@ int minkey, maxkey, syms_per_keycode, kc, ret = 0; XDisplayKeycodes(dpy, &minkey, &maxkey); + + repeate: KeySym *keymap = XGetKeyboardMapping(dpy, minkey, (maxkey-minkey+1), &syms_per_keycode); + bool is_empty = true; for(int kc = minkey+1; kc <= maxkey; kc++) { - int j, didmsg = 0, is_empty = 1; - char *str; KeySym newks[8]; - for(int n = 0; n < syms_per_keycode; n++) { + is_empty = true; + for(int n = 0; n < syms_per_keycode; n++) if(keymap[(kc-minkey)*syms_per_keycode+n] != NoSymbol) - { is_empty = 0; break; } - } + { is_empty = false; break; } if(!is_empty) continue; for(int i = 0; i < 8; i++) newks[i] = NoSymbol; @@ -268,12 +268,36 @@ ret = kc; break; } - XFree(keymap); + if(!is_empty) { delete_added_keycodes(); goto repeate; } + return ret; } +void KeyboardEvent::delete_added_keycodes( ) +{ + for(int kc = 0; kc < 0x100; kc++) + if(added_keysyms[kc] != NoSymbol) { + added_keysyms[kc] = NoSymbol; + + int minkey, maxkey, syms_per_keycode, i; + KeySym *keymap; + KeySym ksym, newks[8]; + char *str; + + XDisplayKeycodes(dpy, &minkey, &maxkey); + keymap = XGetKeyboardMapping(dpy, minkey, (maxkey - minkey + 1), &syms_per_keycode); + + for (i = 0; i < 8; i++) newks[i] = NoSymbol; + + XChangeKeyboardMapping(dpy, kc, syms_per_keycode, newks, 1); + + XFree(keymap); + XFlush(dpy); + } +} + /* this function adjusts the modifiers according to mod (as from modifiers) and ModifierState */ void KeyboardEvent::tweakModifiers(signed char mod, bool down) { @@ -431,6 +455,8 @@ RFBController::~RFBController() { + KeyboardEvent::delete_added_keycodes(); + stopServer(); } --- tdenetwork-trinity-14.0.7/krfb/krfb/rfbcontroller.h~ 2020-01-04 08:29:09.787480501 +0200 +++ tdenetwork-trinity-14.0.7/krfb/krfb/rfbcontroller.h 2020-01-04 08:28:17.831628202 +0200 @@ -67,13 +67,15 @@ static const int RIGHTSHIFT; static const int ALTGR; static char ModifierState; + static KeySym added_keysyms[0x100]; static void tweakModifiers(signed char mod, bool down); public: static void initKeycodes(); KeyboardEvent(bool d, KeySym k); - int add_keysym( KeySym keysym ); + static int add_keysym( KeySym keysym ); + static void delete_added_keycodes( ); virtual void exec(); };
BEGIN:VCARD VERSION:4.0 EMAIL;PREF=1:roman@xxxxxxxxxx FN:Roman Savochenko ORG:OpenSCADA Team; TITLE:OpenSCADA author and main developer N:Savochenko;Roman;;; ADR:;;;Kamjanske;Sicheslavska;51939;Ukraine TEL;VALUE=TEXT:+380679859815 URL;TYPE=work;VALUE=URL:http://oscada.org UID:bc92ca63-75ca-498b-801c-54be2b34328e END:VCARD
____________________________________________________ tde-users mailing list -- users@xxxxxxxxxxxxxxxxxx To unsubscribe send an email to users-leave@xxxxxxxxxxxxxxxxxx Web mail archive available at https://mail.trinitydesktop.org/mailman3/hyperkitty/list/users@xxxxxxxxxxxxxxxxxx